3 min read

Plex DVR & the Microsoft Xbox TV Tuner

How a £5 CEX find replaced an HDHomeRun, plus the Ubuntu tweaks that make the Xbox One Digital TV Tuner actually work with Plex.

Plex DVR and TV tuner setup

I don’t know who needs to hear this, but I couldn’t find any useful information online that helped me out, so here goes.

I have a Plex Lifetime pass and had been using an HDHomeRun Connect Duo to record Freeview to a Linux media server with Plex DVR. The HDHomeRun cost about £80 around 2018 and it was… fine. Not terrible, not great. Whenever a stream stuttered or dropped frames (which was quite often), I blamed Plex DVR. It felt like the natural culprit.

Then the HDHomeRun stopped working. (I attached a 20V charger instead of a 5V one and deaded it like a numpty.) A replacement these days is about £150, and I didn’t want to spend that on something that only sort of worked 60% of the time.

Then I saw a Microsoft Xbox One Digital TV Tuner on CEX for £5. It isn’t officially listed on Plex’s compatible tuner page, but for a fiver it seemed worth a go, seeing as it’s basically a rebranded Hauppauge Xbox TV Tuner, which is listed as compatible. I plugged it into the server over USB and it turns out Plex wasn’t the issue at all.

The Xbox tuner is absurdly good value. It’s only a single tuner, but how often are you trying to watch or record two Freeview channels at the exact same time anyway? It handles HD (DVB-T2) well, lock-on is rock solid, and performance is brilliant.

Getting it to behave properly on Ubuntu takes a few specific tweaks. Linux recognises the device immediately, but there are a few extra steps.

1. Download the Panasonic demodulator firmware

The kernel natively recognises the tuner’s USB bridge, but the Panasonic MN88472 demodulator chip needs a small firmware file that doesn’t always ship out of the box.

Check the kernel logs:

dmesg | grep -i dvb

If it complains about a missing dvb-demod-mn88472-02.fw file, fetch it and drop it into the system firmware directory:

sudo wget https://palosaari.fi/linux/v4l-dvb/firmware/MN88472/02/dvb-demod-mn88472-02.fw -O /lib/firmware/dvb-demod-mn88472-02.fw

Unplug the tuner and plug it back in so the kernel loads the firmware cleanly.

2. Watch out for signal overload (the attenuator trick)

The Panasonic chip is extremely sensitive. If you live near a strong transmitter (Sutton Coldfield, in my case), a strong amplified aerial signal can blind the tuner front-end, throwing massive uncorrected block errors (UCB) and a terrible carrier-to-noise ratio (C/N ~ 2.00dB).

  • If your scan fails or drops tables: screw an inline attenuator between the aerial coax and the tuner micro-adapter. Attenuating an overpowered signal brings the noise floor down and lets the tuner lock onto clean data.
  • Avoid port noise: keep the USB tuner off the back motherboard ports if you can. A short USB extension cable helps isolate it from server EMI.

3. Scan for channels using DVB-T2

Standard w_scan tools struggle with modern Linux DVB APIs on this chip, and dvbv5-scan defaults to older DVB-T unless told otherwise.

Install the tools and frequency tables:

sudo apt update && sudo apt install dvb-tools dtv-scan-tables

Force DVB-T2 so UK HD multiplexes are picked up properly:

sudo dvbv5-scan -S dvbt2 -t 15 -timeout 15 -v /usr/share/dvb/dvb-t/uk-SuttonColdfield -o channels.conf

Replace uk-SuttonColdfield with your local transmitter file from /usr/share/dvb/dvb-t/.

4. Hook it up to your media server

Once the OS sees /dev/dvb/adapter0, point your DVR software at it:

  • Tvheadend: it should appear under Configuration → DVB Inputs → TV Adapters. Enable the Panasonic MN88472 tuner, assign the DVB-T network, and trigger a scan. Pass the stream to Plex via the Tvheadend plugin or a local IPTV proxy.
  • Plex Pass (native): if Plex is running on the host, go to Settings → Live TV & DVR. Plex should auto-detect the tuner as a local DVB device, pull down the Freeview EPG, and you’re good to go.

Works like a charm. Happy Plex-ing.