In light of some of the posts above I've been experimenting with a minimal Media Build for this tuner on a Raspberry Pi 2B. After some serious pruning via "make menuconfig" I've reduced the "make" time from >4 hours / 593 modules down to 7 minutes / 32 modules (on a non-overclocked original Pi 2B), which could be worthwhile as the RPi people are about to bump the default kernel to 4.14, most likely to requiring the whole Media Build process to be repeated after the next major apt-get upgrade from their PPA. Note that this will produce a kernel media stack with ONLY support for this tuner (and perhaps some near-relatives), so if you need more extensive support, for example for DVB-S tuners, remote controls, CEC etc. then you will either need to select further options at the "make menuconfig" step or use the default full build process from CvH's post above. Note that trying to remove ALL Remote Control support failed to produce a workable .config file for some reason, so the attached file is the least I could get to work.
I've attached the saved .config file from my menuconfig and provide detailed instructions below, assuming a build under Raspian Stretch Lite on a Pi2B using the default "pi" user. The starting point is a clean, up-to-date Raspbian Stretch Lite Micro-SD card (16GB in my case, although 2GB or more should work)
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install git git-man libdigest-sha-perl liberror-perl libncurses5-dev libproc-processtable-perl libtinfo-dev patchutils raspberrypi-kernel-headers
sudo reboot
git clone --depth=1 git://linuxtv.org/media_build.git
cd media_build/linux
make download
make untar
cd ..
make distclean
Now create / copy the attached file "PiXboxMBConfig.txt" as "PiXboxMBconfig" into /home/pi/media_build/v4l/
Run "sudo make menuconfig", first <Load> PiXBoxMBconfig, make any changes if you want to add further support, then <Save> as ".config" (note the leading period!) and then <Exit>.
sudo make menuconfig
make -j5
sudo make install
cd /lib/firmware
sudo wget http://palosaari.fi/linux/v4l-dvb/firmware/MN88472/02/latest/dvb-demod-mn88472-02.fw
sudo reboot
And all should be working, with dmesg output after plugging in the tuner to a USB port looking something like:
[ 256.297050] usb 1-1.2: new high-speed USB device number 5 using dwc_otg
[ 256.428185] usb 1-1.2: New USB device found, idVendor=045e, idProduct=02d5
[ 256.428202] usb 1-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 256.428214] usb 1-1.2: Product: Xbox USB Tuner
[ 256.428224] usb 1-1.2: Manufacturer: Microsoft Corp.
[ 256.428235] usb 1-1.2: SerialNumber: 004610010415
[ 256.485777] media: loading out-of-tree module taints kernel.
[ 256.489024] media: Linux media interface: v0.10
[ 256.499082] WARNING: You are using an experimental version of the media stack.
As the driver is backported to an older kernel, it doesn't offer
enough quality for its usage in production.
Use it with care.
Latest git patches (needed if you report a bug to linux-media@vger.kernel.org):
d83a8243aaefe62ace433e4384a4f077bed86acb media: v4l2-compat-ioctl32.c: don't copy back the result for certain errors
[ 256.515090] WARNING: You are using an experimental version of the media stack.
As the driver is backported to an older kernel, it doesn't offer
enough quality for its usage in production.
Use it with care.
Latest git patches (needed if you report a bug to linux-media@vger.kernel.org):
d83a8243aaefe62ace433e4384a4f077bed86acb media: v4l2-compat-ioctl32.c: don't copy back the result for certain errors
[ 256.565052] dvb-usb: found a 'Microsoft Xbox One Digital TV Tuner' in cold state, will try to load a firmware
[ 256.569453] dvb-usb: downloading firmware from file 'dvb-usb-dib0700-1.20.fw'
[ 256.678032] dib0700: firmware started successfully.
[ 257.197240] dvb-usb: found a 'Microsoft Xbox One Digital TV Tuner' in warm state.
[ 257.197634] dvb-usb: will pass the complete MPEG2 transport stream to the software demuxer.
[ 257.197836] dvbdev: DVB: registering new adapter (Microsoft Xbox One Digital TV Tuner)
[ 257.197867] usb 1-1.2: media controller created
[ 257.200214] dvbdev: dvb_create_media_entity: media entity 'dvb-demux' registered.
[ 257.470630] mn88472 3-0018: Panasonic MN88472 successfully identified
[ 257.485709] tda18250 3-0060: NXP TDA18250BHN/M successfully identified
[ 257.489261] usb 1-1.2: DVB: registering adapter 0 frontend 0 (Panasonic MN88472)...
[ 257.489323] dvbdev: dvb_create_media_entity: media entity 'Panasonic MN88472' registered.
[ 257.492239] dvb-usb: Microsoft Xbox One Digital TV Tuner successfully initialized and connected.
[ 257.492784] usbcore: registered new interface driver dvb_usb_dib0700
Note that the MN88472 firmware (which you still need to manually retrieve, as in the wget above) doesn't get downloaded to the stick until an application attempts to use it.