TV is Working, More or Less

So I’ve gotten the TV working on the new system. It’s kind of a convoluted set up, but it works just about perfectly so far. I have coaxial cable coming into the office from the ONT in the basement, and that goes into a Ceton InfiniTV 6 Eth cable card TV tuner. The tuner is connected by ethernet to the Cisco switch and in turn to an ethernet port on the server. To my surprise, the tuner was plug and play with the switch. I was expecting to have to adjust some settings, but it worked right out of the box.

The tuner is accessed directly by a Windows 10 VM running a piece of software called cetonproxy. This makes the Ceton tuner appear to be an HDHomerun to other programs. It’s a Windows-only thing right now unfortunately, so I have 3 cores and 5GB of memory dedicated to a VM just to run this little utility. I’ve never used a container, but this seems like a good use case for one. I don’t know if it’s feasible to run Windows stuff inside a container, but I’ll have to do a little research.

After cetonproxy works its magic, the tuner is usable as an HDHomerun on everything. I initially wanted Jellyfin to handle all the TV tuning stuff, but it turned out the Jellyfin plugin for Kodi doesn’t really do live TV. It lets you watch channels, but there’s no guide or access to recordings, so it’s kind of useless in my opinion. This meant I had to use NextPVR to do my TV tuning.

I generally like NPVR, and I’ve been using it as my TV solution for about a year and a half. It does everything I need a PVR package to do, but it always felt a little bit rough around the edges to me. That’s probably because it’s developed largely by one person, and he can only do so much. It’s closed source, so no one else can contribute. I personally feel like the developer could have a much more robust package if he open-sourced it, but whatever. In the fall, he released a huge update to the program, and created a version for Linux.

After a couple false starts, I had the Linux version installed. The documentation for NPVR v5 is very sparse, and almost nonexistent for the Linux version. The web interface that’s now used to control the program seems to include fewer settings than the old set up, and the descriptions of the settings are very brief. This is something that could be vastly improved in an open source project. I’ll be researching to see if tvheadend can replace NPVR for me.

Yesterday, I recorded a bunch of shows. NPVR, and I assume most other PVR programs, record shows to a .ts file. I’m not sure what kind of encoding these files use, but it results in huge file sizes. A two hour-ish recording of the move Tangled resulted in a ~15GB file. That’s not a whole lot smaller than a similar-length Blu-Ray rip with multiple DTS and AC3 audio tracks. Handily, NPVR includes an option to automatically re-encode recordings after they finish. There is a choice between CPU and VAAPI (graphics card) encoding. Since I had the GPU set up for Jellyfin, I figured that would be the thing to use. I set it, and it didn’t work. I got some help from a rather brusque forum member. Turns out the developer omitted a line or two of code that is needed when selecting the VAAPI option. Again, something that probably wouldn’t happen in an open source project. So for now, VAAPI is useless. Additionally, either VAAPI sucks or my GPU (an RX480 4GB) does, because it can only process one of those .ts files at half speed, which means it takes 10 minutes to encode 5 minutes of video. I’m very disappointed because my RTX 2080 Super, which I know is a significantly better GPU, can plow through a 2 hour Blu-Ray rip in 20 minutes or so using NVENC. The CPU encoding option is much faster, at double speed, meaning a 5 minute video would take 2.5 minutes to encode. This uses 20 virtual cores though. I’ll have to see how it works with multiple simultaneous encoding jobs. I only have 32 cores to give, and the rest of the VMs need some too. For now though, I don’t have a choice.

Another fly in the ointment is Jellyfin and its NPVR plugin, which allows Jellyfin to use NPVR as a backend for TV services. I had it going in a test when I was using the old PCI tuner, but since I set up and then removed the tuners on Jellyfin, I can’t get it working again. There’s an update to Jellyfin out that I’ll probably install next week, so we’ll see if that fixes it. That successful test also used an older version of NPVR, which might have something to do with it. I don’t want to use the old version though. Overall, I’m satisfied. I get TV on my TVs, so I guess I can’t complain too much.

Leave a Reply

Your email address will not be published. Required fields are marked *