Get free-to-air TV from an antenna and USB DVB-T tuner into Jellyfin, with a guide, using Tvheadend as the backend. This follows the "Integrating TVHeadend without a plugin" section of the Jellyfin Live TV setup guide. That guide says this method needs more CPU and that the Jellyfin Tvheadend plugin is recommended; the no-plugin route is meant as a backup if the plugin doesn't work. I have not built this exact setup, so go step by step. Background concepts are in the M3U/XMLTV basics thread I posted in this forum.
You need: a Linux box or similar with a supported DVB-T tuner and antenna, Tvheadend installed, and Jellyfin running on your LAN.
Step 1: Get channels into Tvheadend
- Install Tvheadend and open its web interface (check the Tvheadend docs for the port on your install).
- Add your tuner under Configuration > DVB Inputs and set up a network of the right type for your tuner (DVB-T for Australian free-to-air).
- Choose a pre-defined mux list for your area. Tvheadend's scan files come from the dtv-scan-tables repository; see also the scan file docs. Confirm the Australian files cover your region.
- Let it scan, then map services to channels. Check a channel plays using the built-in web player or VLC.
Create a dedicated Tvheadend user for Jellyfin with only streaming permission, not an admin account. The Tvheadend URL docs describe the playlist and stream endpoints and the authentication choices: HTTP auth (the default), a temporary ticket valid for 5 minutes, or a permanent auth code enabled in the password table. Because Jellyfin needs a stable URL, the practical choice is HTTP auth or a permanent code for this limited user. Keep it on your LAN only.
Step 3: Add the tuner in Jellyfin
- In Jellyfin go to the Admin dashboard > Live TV > Tuner Devices and add an M3U Tuner.
- Use this URL form (from the Jellyfin guide), replacing your server and port:
Code: Select all
http://your.tvheadend.server:port/playlist/channels.m3u - Save. If your Tvheadend requires authentication, you will need to supply credentials in a form that Tvheadend accepts. Check its docs and test the URL in a browser or with curl first.
- Admin dashboard > Live TV > TV Guide Data Providers > add XMLTV.
- Use the URL form from the Jellyfin guide:
Code: Select all
http://your.tvheadend.server:port/xmltv/channels - Save and wait for the guide to refresh. If channels lack a guide, use the Map Channels screen in Jellyfin to link them manually.
Step 5: Tune it
- If the CPU is struggling on playback, that is expected with this route (the Jellyfin docs warn about it). Try the Tvheadend plugin.
- Set a simultaneous stream limit on the M3U tuner if your hardware is modest.
- Test on the Live TV page, then the guide, then a recording.
- Playlist loads, no channels play: test the stream URL directly in VLC and check the user's permissions.
- No guide: let Tvheadend run for a while to collect the over-the-air guide, then refresh in Jellyfin.
- Wrong times: check the server time zone on both machines.
- Use a limited Tvheadend user, not admin.
- Don't expose Tvheadend or Jellyfin directly to the internet.
- Playlist URLs with passwords in them are secrets, so don't paste them into posts.
- Only use content you are entitled to watch and record.