---
title: "One antenna, live TV in Plex on every TV in the house"
description: "One antenna and a USB tuner pull 62 NYC channels into Plex through Tvheadend and Threadfin's virtual HDHomeRun, so the family gets live TV on every Apple TV in the house."
url: "https://michael.zazon.us/notes/plex-tvheadend-and-threadfins-virtual-hdhomerun"
published: "2026-08-06T12:00:00-04:00"
kind: "build-log"
subject: "homelab"
tags: ["media"]
series: "OTA TV"
part: 1
---
OTA TV and DVR without putting an antenna on every TV. One antenna on the 3rd floor pulls in NYC stations.. I got it working with a Pi and the old Hauppauge tuner first, then picked up a $40 tuner on eBay.

I started this on a Sunday in June, in my basement. I had an old Hauppauge WinTV-HVR-955Q USB tuner in my home server, with an antenna connected at the rack. The first scan locked 0 channels, but I blamed the weak signal on the antenna's position, not the tuner. I moved the antenna and rescanned, locking 62 channels: the entire NYC market except ABC 7.

[Tvheadend](https://tvheadend.org/) runs the tuner in a Docker stack and serves channels as streams. It doesn't show anything on a TV, so the real decision is what app the house will watch in. I deployed Channels DVR Server first, but learned later it's subscription-only and removed it the same day. The commit message for removing it was "Channels DVR is subscription-only; using Plex Pass (lifetime) + Threadfin's HDHomeRun emulation instead." I already owned a lifetime Plex Pass, so [Plex Live TV and DVR](https://support.plex.tv/articles/225877347-live-tv-dvr/) came at no extra cost.

Plex doesn't speak Tvheadend directly, so [Threadfin](https://github.com/Threadfin/Threadfin) bridges the gap. It's a maintained fork of the abandoned [xTeVe](https://github.com/xteve-project/xTeVe) project, which takes Tvheadend's channel list and pretends to be an HDHomeRun on the network. In Plex, I clicked "Have an HDHomeRun?", added it like a store-bought network tuner, and Plex started supplying its own guide data. Plex has no idea it's not real, and when it tunes a channel, Threadfin just redirects to the Tvheadend stream. The Threadfin status page shows 62 channels and 1118 programs.

[Image: Threadfin's guide page: the Tvheadend EPG at 100% availability with 62 channels and 1118 programs](https://michael.zazon.us/notes/plex-tvheadend-and-threadfins-virtual-hdhomerun)

[Diagram: Signal path from one antenna through Tvheadend and Threadfin to Plex on Apple TVs](https://michael.zazon.us/notes/plex-tvheadend-and-threadfins-virtual-hdhomerun)

The goal was "Live TV on the Apple TVs." OTA video is MPEG-2, so Plex needs to transcode to H.264 for the Apple TVs, which it does via Intel QuickSync on the server's i7-10700 at near-zero CPU cost. By the end of the first day, I had end-to-end live TV working in the Plex app on my iPhone (picture and sound).

ABC 7 was the only station I couldn't get. They broadcast on VHF and the antenna I have is biased toward UHF, so I never locked the scan. I was curious if there was somewhere in the house where I'd have to put it to pick up channel 7. I was going to look up the towers on [rabbitears.info](https://www.rabbitears.info/) and try to move the antenna to a window or outside.

The move took the next few weeks, and the antenna made it up to the 3rd floor, where I proved the setup with the old Hauppauge tuner on a Pi up there. By the time I had the DVR working in July, Plex could record as well as play live. The $40 eBay HDHomeRun Duo made it simple, since it was the real version of the network tuner Threadfin had imitated.

The family can watch and record live TV on any TV in the house now since Plex is available on all Apple TVs and iOS devices.