I got one of these TV capture devices so I could watch and record TV using my compy. Out of the box, it didn’t work on Ubuntu 🙁
Ok, so here’s what I did to get it working
- Power the device using the wall wart
- plug in USB
- run `$ dmesg` in ubuntu terminal
- notice the errors:
[132760.270414] usb 2-1.2: new high-speed USB device number 3 using ehci-pci [132760.366715] usb 2-1.2: New USB device found, idVendor=2040, idProduct=7501 [132760.366720] usb 2-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3 [132760.366723] usb 2-1.2: Product: WinTV [132760.366726] usb 2-1.2: Manufacturer: Hauppauge [132760.366728] usb 2-1.2: SerialNumber: 7300-00-F06EFF6D [132760.456404] pvrusb2: Hardware description: WinTV HVR-1950 Model 751xx [132760.456643] usbcore: registered new interface driver pvrusb2 [132760.456645] pvrusb2: V4L in-tree version:Hauppauge WinTV-PVR-USB2 MPEG2 Encoder/Tuner [132760.456647] pvrusb2: Debug mask is 31 (0x1f) [132761.455769] usb 2-1.2: Direct firmware load for v4l-pvrusb2-73xxx-01.fw failed with error -2 [132761.455782] pvrusb2: ***WARNING*** Device fx2 controller firmware seems to be missing. [132761.455786] pvrusb2: Did you install the pvrusb2 firmware files in their proper location? [132761.455790] pvrusb2: request_firmware unable to locate fx2 controller file v4l-pvrusb2-73xxx-01.fw [132761.455793] pvrusb2: Failure uploading firmware1 [132761.455797] pvrusb2: Device initialization was not successful. [132761.455800] pvrusb2: Giving up since device microcontroller firmware appears to be missing.
Aight, so I think I have an issue with a missing driver, or firmware?? I don’t know what to call it yet, but I think I need pvrusb2 available here: http://www.isely.net/pvrusb2/firmware.html
found some great notes here: http://www.isely.net/pvrusb2/setup.html#Firmware On this page, the author points out some notes related to the HVR-1950. The important takeaway is that the HVR-1950 is an exception, and can not use this firmware without renaming files (the author says to not rename the files unless you know what you are doing)
Instead, I need some sort of tarball from here: http://dl.ivtvdriver.org/ivtv/firmware/
DANG BIT ROTTING 404s!! This is why the internet is broken and it needs the Inter-Planetary-File-System PRONTO. Good information is out there, but the link to it is BROKEN because someone’s site is now down. GRRR IM SO SALTY!!!!!
Ok, that download is still out there, I just gotta find a mirror.
Or it’s not even that hard! Apparently there was an issue with linux kernel 2.6.x (noted here) where the firmware size for the HVR-1950 had to be exactly 16KB. There was a fix released in a later kernel which makes using an 8KB firmware just fine in Ubuntu 14.04 with linux kernel 3.19. YAY.
I think I got it working now. I simply just needed firmware. Apparently, DVB support is baked into the 3.19 kernel, and all I had to do was install firmware. It’s simple, just download and extract v4l-pvrusb2-73xxx-01.fw to /lib/firmware. Here is the file, with mirrors and MD5SUM. I had to put my copy in a tar.gz to satisfy wordpress:
Now, lets set up some TV! First, I unplugged and replugged my HVR-1950. Then I ran dmesg to make sure all was good:
[137505.566262] usb 2-1.2: new high-speed USB device number 6 using ehci-pci [137505.668506] usb 2-1.2: New USB device found, idVendor=2040, idProduct=7501 [137505.668517] usb 2-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3 [137505.668522] usb 2-1.2: Product: WinTV [137505.668527] usb 2-1.2: Manufacturer: Hauppauge [137505.668532] usb 2-1.2: SerialNumber: 7300-00-F06EFF6D [137505.669818] pvrusb2: Hardware description: WinTV HVR-1950 Model 751xx [137505.702122] pvrusb2: Binding ir_rx_z8f0811_haup to i2c address 0x71. [137505.702226] pvrusb2: Binding ir_tx_z8f0811_haup to i2c address 0x70. [137505.755568] cx25840 7-0044: cx25843-24 found @ 0x88 (pvrusb2_a) [137505.766831] pvrusb2: Attached sub-driver cx25840 [137505.797116] tuner 7-0042: Tuner -1 found with type(s) Radio TV. [137505.797133] pvrusb2: Attached sub-driver tuner [137507.988863] cx25840 7-0044: loaded v4l-cx25840.fw firmware (16382 bytes) [137508.087188] tveeprom 7-00a2: Hauppauge model 75111, rev D2F5, serial# 4033806189 [137508.087199] tveeprom 7-00a2: MAC address is 00:0d:fe:6e:ff:6d [137508.087205] tveeprom 7-00a2: tuner model is NXP 18271C2 (idx 155, type 54) [137508.087211] tveeprom 7-00a2: TV standards NTSC(M) ATSC/DVB Digital (eeprom 0x88) [137508.087216] tveeprom 7-00a2: audio processor is CX25843 (idx 37) [137508.087221] tveeprom 7-00a2: decoder processor is CX25843 (idx 30) [137508.087225] tveeprom 7-00a2: has radio, has IR receiver, has IR transmitter [137508.087247] pvrusb2: Supported video standard(s) reported available in hardware: PAL-M/N/Nc;NTSC-M/Mj/Mk;ATSC-8VSB/16VSB [137508.087249] pvrusb2: Initial video standard (determined by device type): NTSC-M [137508.087258] pvrusb2: Device initialization completed successfully. [137510.318590] cx25840 7-0044: loaded v4l-cx25840.fw firmware (16382 bytes) [137510.435132] tda829x 7-0042: setting tuner address to 60 [137510.478862] tda18271 7-0060: creating new instance [137510.519199] TDA18271HD/C2 detected @ 7-0060 [137511.163781] tda18271: performing RF tracking filter calibration [137525.219532] tda18271: RF tracking filter calibration complete [137525.267557] tda829x 7-0042: type set to tda8295+18271 [137528.356452] pvrusb2: registered device video1 [mpeg] [137528.356472] DVB: registering new adapter (pvrusb2-dvb) [137530.399856] cx25840 7-0044: 0x0000 is not a valid video input! [137530.515731] usb 2-1.2: DVB: registering adapter 0 frontend 0 (Samsung S5H1411 QAM/8VSB Frontend)... [137530.517220] tda829x 7-0042: type set to tda8295 [137530.552403] tda18271 7-0060: attaching existing instance [137549.507512] cx25840 7-0044: loaded v4l-cx25840.fw firmware (16382 bytes) [137553.012734] cx25840 7-0044: 0x0 is not a valid size! [137563.259875] cx25840 7-0044: 0x0000 is not a valid video input!
Bad-ass, that’s looking like it’s working. There are some warnings, but I don’t think it’s anything that’ll prevent me from watching TV.
Now I want to scan for channels in my area, and create a document with channel information. For my testing, I tried and had success with Kaffeine and w-scan. I ended up using Kaffeine exclusively because it has scanning, recording, and viewing built-in. w-scan is just a scanner that creates channel databases to be used by other programs (mplayer/kaffeine/vlc/etc.)
Kaffeine is a GUI app so it’s self explanitory. Here’s a little guide on w-scan:
$ sudo apt-get install w-scan
K now run the w-scan. I want to create a Kaffeine channel database so I use the -k flag, but if you’re using mplayer or VLC, check the output of w_scan –help to see which flags you should use.
$ w_scan -c US -k > ~/.channels.dvb
This errored for me at first. It said something about my capture device not being able to read terrestrial sources or something. It was because I had VLC open, and I just had to close VLC before running the command successfully.
The scan took awhile for me. It took about 7 minutes. At first, I called it without redirecting stdout to a file. I was assuming w_scan would create the playlist for me either in the working directory, or my home folder, but it did not. I read some of the examples on the official w_scan website and realized that w_scan outputs to stdout.
Anyway, I just ended up running Kaffeine and used it’s built-in scanning. AND NOW IM WATCHING TV ON MY COMPUTER, HOLY CRAPOLY!