What I’ve Been Doing

Last I left off, I was going to put an extra manifold gasket on my Triumph. I did that, and it definitely fixed the sucking noise issue, but I still didn’t have any luck with the idle problem. More expensive and pressing car problems came up, so that’s where things are still sitting. I haven’t driven the car in a few weeks. Before the summer is over, I’m going to get new diaphragms for the bypass valves and a new ground wire for the distributor. I have a friend with a shop that will soon be able to do state inspections, so I’ll have him inspect it when he’s able, and maybe I’ll borrow his compression tester while I’m there to see how the engine is doing inside. But after that, I’m done spending money on the car for the season. I have other things that need my money and time, and an annoying car can be put on the back burner.

In tech news, my Ceton TV tuner died about a month ago. Just overnight, poof, it didn’t work. There was no obvious damage to the hardware or software, and I spent two hours with Verizon support diagnosing the problem. I initially ordered another used Ceton tuner from eBay, then decided to return it and get a new HDHomerun Prime for about the same price. The HDHomerun is a sort of re-run of a tuner that originally came out like 10 years ago, so it only has three tuners to the Ceton’s six, which is a disappointment. On the bright side, it actually works, has a warranty, and the company still exists. Plus, it works with whatever software, so I don’t need to run a whole Windows VM just for CetonProxy anymore. Which brings me to my next item:

I finally plugged my server into a Kill-a-Watt, and (probably unsurprisingly) it uses a ton of power at idle, which is most of the time. Right now it only runs a couple of fairly light VMs, so processor utilization is almost always in the low single digits, but it uses 200 watts of power. I explored a few options to get rid of the whole server, including hosting Jellyfin on a Raspberry Pi, but it’s just impossible to beat the cost per terabyte on the big server. My six 3TB hard drives in a ZFS array give me 12TB of usable storage, and a failure tolerance of up to three disks (or two, I can’t remember now). Anyways, even getting just 6TB of total storage (two 6TB drives with RAID 1) would cost about $300 for new ones, and I’m still left with only half the storage space that I have now. And while that Raspberry Pi runs Jellyfin very nicely (thanks to the hardware accelerated video playback), NextPVR can’t take advantage of that same acceleration, so web browser viewing of live TV is impossible. So I’d have to purchase new hardware. Prices for crap office desktops are seemingly up from last year, which bites. Factoring in selling the server components, I’d probably come out about even switching to lower power consumer hardware. So rather than do all that stuff, I bought some different processors, a pair of Xeon E5-2450Ls, the 65 watt version of my current 95 watt 2450s. This should give some decent power savings I think, plus I’m going to take out the graphics card that I never could get working for transcoding. The processors should be in by early next week, so I’ll make an update when I get them installed.

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.