explaingit

stephenhoos/hdhomerun-jellyfin-guide

12C#Audience · ops devopsComplexity · 3/5ActiveLicenseSetup · moderate

TLDR

MIT-licensed Jellyfin plugin in C# that downloads the official SiliconDust XMLTV feed and keeps Live TV guide data working for HDHomeRun network tuners.

Mindmap

mindmap
  root((hdhomerun-jellyfin-guide))
    Inputs
      HDHomeRun tuners
      XMLTV feed
      DeviceAuth token
    Outputs
      M3U channel list
      XMLTV guide file
      Refreshed listings
    Use Cases
      Self host Live TV guide
      Sync paid 14 day guide
      Schedule background refresh
    Tech Stack
      C#
      .NET
      Jellyfin
      XMLTV

Things people build with this

USE CASE 1

Install the plugin in a self-hosted Jellyfin to get HDHomeRun guide data

USE CASE 2

Add tuners through the dashboard with automatic network discovery or a subnet scan

USE CASE 3

Enable the paid 14-day SiliconDust guide for a DVR subscription account

USE CASE 4

Schedule background refreshes of the M3U and XMLTV files

Tech stack

C#.NETJellyfin

Getting it running

Difficulty · moderate Time to first run · 30min

Requires a working Jellyfin server, the .NET SDK to build, and an HDHomeRun tuner reachable on the local network.

MIT lets you use, modify, and distribute the code commercially as long as you keep the copyright notice.

In plain English

This repository is a Jellyfin plugin that keeps Live TV guide data working for SiliconDust HDHomeRun tuners. Jellyfin is an open-source media server, and HDHomeRun is a network-attached TV tuner that lets you watch over-the-air channels through your home network. The plugin runs inside the Jellyfin server, downloads the official XMLTV guide feed from SiliconDust, and writes the channel and listing files that Jellyfin needs to show a working TV guide. Earlier versions of the plugin used a render-oriented API, but at SiliconDust's request the project was changed to use only the official XMLTV endpoint. SiliconDust provides 2 days of guide data for everyone and 14 days for accounts with a paid DVR guide subscription. The plugin reads a fresh DeviceAuth token from the tuner each time it runs, so it does not need to store any SiliconDust account details. An optional email-plus-DeviceID access path is also supported for users who prefer it. On the Jellyfin admin dashboard, the plugin adds its own settings page. An Add My Tuners button uses Jellyfin's built-in HDHomeRun discovery to find tuners on the network, with an optional subnet scan as a fallback. There are checkboxes for the paid 14-day guide request, a field for SiliconDust account email, and a refresh interval. Saving the page triggers an immediate refresh, and the plugin also exposes a manual scheduled task called Refresh HDHomeRun Guide. Behind the scenes, the plugin keeps Jellyfin's Live TV M3U and XMLTV paths in sync, clears stale guide cache entries before each import, and reports the correct tuner count to Jellyfin. The refresh runs in the background on a randomized schedule, defaulting to 36 hours in free mode and 68 hours in paid mode. The DeviceAuth token is never written to plugin settings or logs. The repository is C# code that builds with the .NET SDK, and the README walks through the dotnet build command, the files to copy into Jellyfin's plugin directory, and typical plugin paths on Linux and macOS. A legacy Python script and an example macOS LaunchAgent are also included for users who do not want to run the plugin inside Jellyfin. The project is MIT licensed.

Copy-paste prompts

Prompt 1
Walk me through dotnet build and copying the DLLs into Jellyfin's plugin directory
Prompt 2
Show me how to enable the paid 14-day guide option for my SiliconDust DVR account
Prompt 3
Explain how the DeviceAuth token is fetched from the tuner without storing account details
Prompt 4
Set up the Refresh HDHomeRun Guide scheduled task with a custom interval
Open on GitHub → Explain another repo

Generated 2026-05-22 · Model: sonnet-4-6 · Verify against the repo before relying on details.