Post

Plex DVR with the Official Xbox One Digital TV Tuner - The Direct (and working!) Approach

Plex DVR with the Official Xbox One Digital TV Tuner - Working without TVheadend!!

Series: Plex DVR with the Official Xbox One Digital TV Tuner Part 4

  1. Plex DVR with the Official Xbox One Digital TV Tuner - Introduction
  2. Plex DVR with the Official Xbox One Digital TV Tuner - The direct approach
  3. Plex DVR with the Official Xbox One Digital TV Tuner - The indirect approach
  4. Plex DVR with the Official Xbox One Digital TV Tuner - The Direct (and working!) Approach
  5. Plex DVR on Docker with the Official Xbox One Digital TV Tuner
Plex DVR with the Official Xbox One Digital TV Tuner - The Direct (and working!) Approach

With the recent release of version 4.16 of the linux kernel, the drivers needed to use the Xbox One Tuner are now distributed with the kernel.

At the time of writing, the only mainstream distribution using this version of the kernel is the Fedora 28 beta (due for mainstream release early May).

With this driver now part of the kernel, Plex appears to recognise the tuner as a community supported tuner and functions correctly using it directly. We still need to download and install the “dvb-demod-mn88472-02.fw” firmware file however as without this, while the tuner will be recognised in Plex, scanning for channels will always return zero results.

The VM Setup

As in the previous parts I am using Vagrant to create a VM for testing. The Vagrantfile should be customised with any required shared directories.

This Vagrantfile requires the installation of the vagrant-reload plugin.

vagrant plugin install vagrant-reload

This is required for the config.vm.provision :reload line, which we need as we are upgrading the kernel as part of the initial updates stage, and the version of kernel-modules which is installed matches the updated kernel instead of the running kernel. This should hopefully not be required once we out out of the beta distribution.

After running vagrant up from the directory with the following two files, you should be able to configure the Live TV & DVR feature using the steps for a community supported tuner.

The Plex web interface will be available at http://192.168.0.88:32400/web/.

Vagrantfile

# -*- mode: ruby -*- # vi: set ft=ruby : # Vagrantfile API/syntax version. Don't touch unless you know what you're doing! VAGRANTFILE_API_VERSION = "2" Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| # Every Vagrant virtual environment requires a box to build off of. config.vm.box = "fedora/28-beta-cloud-base" # set up the VM as a bridged network with a fixed IP config.vm.network "public_network", bridge: 'eno1', ip: "192.168.0.88" # Configure the memory and CPU requirements for Virtualbox - was starting with 512M! config.vm.provider "virtualbox" do |v| v.memory = 2048 v.cpus = 1 end # Pass through our USB device config.vm.provider "virtualbox" do |vb| vb.customize ["modifyvm", :id, "--usb", "on"] vb.customize ["modifyvm", :id, "--usbxhci", "on"] vb.customize ["usbfilter", "add", "0", "--target", :id, "--name", "MicrosoftUSB", "--serialnumber", "0123456789"] end # Disable the default share. config.vm.synced_folder '.', '/vagrant', disabled: true # Provision the VM using a shell script config.vm.provision :shell, path: "Vagrant_bootstrap.sh" config.vm.provision :reload end

Vagrant_bootstrap.sh

#!/usr/bin/env bash set -euo pipefail IFS=$'\n\t' # Make sure we are up to date dnf update -y # Add the udev configuration file if [ -f /etc/udev/rules.d/99-usb-tv.rules ]; then echo 'Udev already condifigured' else echo 'ACTION=="add", ATTR{serial}=="007287190615", SYMLINK+="usbMicrosoftTV"' > /etc/udev/rules.d/99-usb-tv.rules fi # Install the kernel modules if [ dnf list --installed kernel-modules > /dev/null 2>&1 ]; then dnf install -y kernel-modules else echo 'Kernel modules already installed' fi # Add additional firmware files # Without this, the tuner will still be recognised by plex, but trying to scan # for channels will always find none. if [ ! -f /lib/firmware/dvb-demod-mn88472-02.fw ]; then curl --silent http://palosaari.fi/linux/v4l-dvb/firmware/MN88472/02/088b891ac9273ff8c6818fca27b24d81/dvb-demod-mn88472-02.fw --output /lib/firmware/dvb-demod-mn88472-02.fw restorecon -r /lib/firmware/ fi # Install Plex dnf install -y "https://downloads.plex.tv/plex-media-server/1.12.3.4973-215c28d86/plexmediaserver-1.12.3.4973-215c28d86.x86_64.rpm"
This post is licensed under CC BY 4.0 by the author.