Community plugin gives each Jellyfin user their own Live TV tuner

A Jellyfin user built a plugin that maps each account to a single M3U tuner, so users only see their own channels and guide. It targets Jellyfin 10.11.11 and is still early.

Sharing Live TV on a single Jellyfin server has always been an all-or-nothing affair. As the plugin's author describes it in a post on r/jellyfin, anyone granted Live TV access sees every tuner's channels, and nothing prevents one person from occupying a tuner another person needs. That is a real problem when your M3U providers allow only one stream per connection.

What the plugin does

The plugin assigns each user to exactly one M3U tuner. User A sees only tuner 1's channels and guide, User B sees only tuner 2's, and a user with no tuner assignment gets no Live TV at all. It runs on a single Jellyfin instance and works in the official apps, with no proxy and no second server. Because each user only ever sees their own tuner's list, there are no duplicate channels, and a user cannot open a second tuner to start a second stream. Recordings and DVR are denied for non-admins.

It also hides upstream stream URLs from non-admins. The author points out that many M3U playlists carry provider credentials inside the URLs, and stock Jellyfin hands those URLs to every user who can play a channel.

Administration happens on a settings page under Dashboard → Plugins, where you edit tuners and user mappings and see a health check. A startup self-check fails closed: if a Jellyfin update breaks something the plugin depends on, non-admins lose Live TV rather than channels silently leaking.

How it works, and what to watch for

An action filter in front of Jellyfin's API inspects every request from a non-admin or anonymous caller. The plugin also tags each tuner's channels and sets matching blocked tags on users, which Jellyfin enforces natively for lists and the guide.

The author is upfront about the limits. It is built and tested for Jellyfin 10.11.11 only, so pin your image version. Testing used fake local tuners against a real server plus the web client, with limited coverage on Android TV and iOS, and a real second tuner does not exist yet. Two tuners must not list the same stream URL. The code was written with heavy AI assistance and checked against the Jellyfin source and live tests, but the author recommends reading it yourself if you plan to rely on it for access control.

Commentary for self-hosters

This is the kind of gap that shows up once more than one household or friend group shares a server. The honest status notes are a good sign, but access control is exactly where you want to be conservative: run it on a test instance first, review the code, and pin Jellyfin to the tested version. If you would rather not depend on internals that can change between releases, our Jellyfin plugins cover user management and auditing without touching Live TV plumbing.

This post was written with AI assistance from our product documentation or the sources listed and checked automatically before publication.

Read next

Running Emby, Jellyfin or Nextcloud?

Our plugins and apps add Live TV, subtitles, sign-up and security to your own server, with a free trial.