OTA digital TV notes

Did you know TV shows are broadcast for free over the airwaves? It’s amazing; no need to pay the cableman or satellitelady their rent. At least, if you want to watch ad supported non-premium programming.

OTA digital TV has gotten pretty simple. Basically there’s just MPEG-2 streams floating around at ~600MHz for the taking. I just got a tuner and antenna to pick them up. An HDHomeRun Connect Duo for the tuner and a Clearstream Eclipse antenna. Total cost: $100 to $150. There’s other options, see Wirecutter.

So far so good; without any effort to set up the antenna right, in San Francisco I can get 46 channels. Really it’s 12 channels, but there’s multiplexing so where channel 2.1 is KTVU in HD, channel 2.2 is KTVU-SD and channel 2.3 is a random movies channel.

The diversity of channels is pretty neat. I’m enthralled by channel 60.5 PJKFNX which is showing First Nations Experience, a whole channel of indigenous peoples programming. I think YouTube is the only other place I could find content like that.


The antenna is nothing exciting. Some flat piece of floppy vinyl with some very stiff coax cable coming out. This particular Eclipse antenna has a 20 dB amplifier attached to it. No idea if the amplification is necessary, or if more would be better.

I like the HomeRun tuner. It takes power and antenna in, has ethernet out. That’s it. The device serves MPEG streams and some diagnostic info via a web interface. Very simple and hackable.


I’m currently watching via the HDHomeRun Windows app. It’s a fine bare-bones viewer, backed with some sort of program guide. They run a DVR service too; I wonder if they even bother recording anything or if it’s more of a Sling-like setup. There’s mobile apps too and I think a new Roku app.

The HDHomeRun includes a basic HTTP API for programmatically getting a list of channels and watching MPEG-TS streams. This caveat is fascinating

The client will have a slightly different concept of how long one second is due to slight differences in the client clock timebase vs the broadcaster clock timebase. The client must adjust its concept of real time to match the incoming video stream

No one watches live TV anymore though. I bought this in part because I finally got a Plex Pass and one of the value-adds for that is Plex has DVR software. Setup of the Plex DVR was easy, the program guide is good, and it seems to record OK. Recording seems to run a transcoder stream at 150% CPU on my system which is odd, I have both commercial skipping and transcoding compression disabled. Maybe it’s just having to collect and assemble the chunks. The final output is a .ts container that has what looks like the broadcast MPEG-2 and AC3 streams in it. I’ve set up recording a show regularly, we’ll see how it does.

One thing I’ve noticed is a lot of the older video I’m seeing is interlaced. And I guess decombing isn’t a standard feature. It’s ugly.

Update the DVR seems to work great. I also enabled commercials skipping and transcoding for smaller storage. It seems to work OK. Commercials skipped even in a live news broadcast, which suggests they’re doing some live detection mechanism and not relying on a content database.

Transcoded to 6Mbps 720p (H.264) using about 1.5 CPU cores out of my system’s 8, so the impact isn’t too bad. Resulting file is 3GB/hour for 720p, which is not great, but for a fast transcode it’s not bad. You can see the settings they’re using here; as the commenter points out, a lower CRF would be a nice space / quality tradeoff. Right now it’s not configurable.

Channel availability

I’m currently getting channels 2, 4, 5, 7, 9, 38, 42, 44, 50, 54, 60, and 66 (with many variants). That’s the major “broadcast” networks (ABC, CBS, NBC, and regretfully FOX) plus a bunch of other random stuff. Most channels have 99%+ signal quality, but 60.5 is only 84%. Still looks fine to watch. Note this testing is being done right before the FCC repack when stations get renumbered to free up some bandwidth.

There’s several sites that’ll let you check what channels you should expect. Results below. To simplify things I’m assuming if I get one channel I get all the other related multiplexed ones.

Note each test has a different list of stations. I think what my antenna auto-detected is a strict subset of all of those. What these online sites tell me is I can probably get a few more channels with better antenna placement. I will note I did a second scan and got the exact same result of 46 channels, so at least it’s stable.

AntennaWeb: 2, 4, 5, 7, 9, 11, 12, 22, 38, 42, 44, 45, 50, 52, 54, 60, 66

FCC: 1, 2, 4, 5, 6, 7, 8, 9, 10, 11, 14, 22, 26, 28, 36, 38, 44, 48, 54, 60, 65, 66, 68

TabloTV: 2, 3, 4, 5, 7, 9, 11, 12, 38, 42, 44, 45, 48, 50, 52, 54, 60, 65, 66

TVFool: see picture below. I’m not sure their database is current, but I love this nerdy visualization.