Hauppauge WinTV-HVR-950: Difference between revisions
(djh - since the em28xx-new tree is no longer available, there is no value in suggesting it to users anymore.) |
|||
(7 intermediate revisions by 3 users not shown) | |||
Line 1: | Line 1: | ||
[[Image:Hauppauge_WinTV-HVR-950.jpg|thumb|250px|WinTV-HVR-950]] |
[[Image:Hauppauge_WinTV-HVR-950.jpg|thumb|250px|WinTV-HVR-950]] |
||
{{ArticleNeedsExpanding}} |
|||
A hybrid [[ATSC]] [[ATSC USB Devices|USB 2.0 device]] by [[Hauppauge]]. |
A hybrid [[ATSC]] [[ATSC USB Devices|USB 2.0 device]] by [[Hauppauge]]. |
||
Support for the digital functionality of this device was added to the 2.6.26 kernel. |
|||
It is currently unsupported by LinuxTV, however experimental support does exist (see the driver section below for details). |
|||
{{Note|This device, the HVR-950, is significantly different from the newer 950'''Q''' model, so please be sure to differentiate between the two. For information on the later model, see the [[Hauppauge WinTV-HVR-950Q|WinTV-HVR-950Q]] article.}} |
|||
==Overview/Features== |
==Overview/Features== |
||
Line 481: | Line 483: | ||
===Drivers=== |
===Drivers=== |
||
⚫ | |||
There are three potential sources of drivers for this device: |
|||
* Both analog and ATSC digital reception are supported |
|||
* There is an ancient development repo on LinuxTV, but it is highly likely that it no longer applies cleanly with newer kernels. Best to ignore this altogether (and mentioned only for the remotely curious who might want to compare the code between the various implementations) |
|||
* Read the above mentioned [[Hauppauge_WinTV-HVR-950#Firmware|Firmware]] section for details on installing the proper firmware. |
|||
* Seek out support provided by Mrec's drivers: [http://mcentral.de/wiki/index.php5/Main_Page see: mcentral] ... most users are currently using these drivers. Analog audio appears to be problematic (a conflict between the em28xx audio module and alsa drivers?) so you will likely need to employ SOX as a helper application, prior to starting the viewing app, in order to get any sound in popular apps like tvtime etc. <code>sox -r 48000 -w -c 2 -t ossdsp /dev/dsp1 -t ossdsp /dev/dsp</code> Note that there may be an associated delay (i.e. not in sync). |
|||
⚫ | |||
===Analog Audio Issue=== |
|||
** ATSC is not currently supported with such |
|||
Analog audio appears to be problematic so you will likely need to employ SOX as a helper application, prior to starting the viewing app, in order to get any sound in popular apps like tvtime etc. |
|||
** analog works if you have the firmware file xc3028-v27.fw in place (there is an perl script extracting tool, "extract_xc3028.pl", under linux/Documentation/video4linux that will aquire the V2.7 firmware from the windows driver file .... open the file in your favourite text editor view its instructions), albeit audio is likely problematic (see the discussion just above). |
|||
<code>sox -r 48000 -w -c 2 -t ossdsp /dev/dsp1 -t ossdsp /dev/dsp</code> |
|||
Note that there may be an associated delay (i.e. not in sync). |
|||
The root of the problem is that the em28xx presents itself as a USB audio device, and applications such as tvtime do not know to associate the video stream with the audio stream. |
|||
Note that Markus Rechberger maintains a version of tvtime that is patched to work around this limitation: [http://mcentral.de/wiki/index.php5/Tvtime Mcentral.de tvtime] |
|||
Marcus also provided some interesting commentary [http://marc.info/?l=linux-video&m=120044067813897&w=2 here] & [http://marc.info/?l=linux-video&m=120044089714241&w=2 here] |
|||
===Sample kernel output=== |
===Sample kernel output=== |
||
Line 494: | Line 502: | ||
===Remote Control Support=== |
===Remote Control Support=== |
||
The WinTV-HVR950 package currently does not include a remote control. One may be available as an optional-extra upgrade; Support was added for the optional remote in the LinuxTV driver in hg version 9628 (November 16, 2008). |
|||
==External Links== |
==External Links== |
||
* http://www.hauppauge.com/ |
* http://www.hauppauge.com/site/products/data_hvr950.html |
||
* [http://lunapark6.com/usb-hdtv-tuner-stick-for-windows-linux-hauppauge-wintv-hvr-950.html Contains info in regards to setting the device up under Linux] |
Latest revision as of 15:10, 29 July 2009
A hybrid ATSC USB 2.0 device by Hauppauge.
Support for the digital functionality of this device was added to the 2.6.26 kernel.
Overview/Features
This device supports ATSC (i.e. OTA Digital TV) and analog NTSC. It also has a connector on the side for an A/V cable dongle, however, such is not shipped with some versions of the device (though it apparently is in the case with the identical Elgato EyeTV Hybrid US). The package includes a small dipole antenna and a short USB extension cable.
There may be slightly different versions of this device being sold -- internally the components are the same, but minor variances in the exterior shell casing. Models listed [1] include:
- model 01139: WinTV-HVR-950 with ATSC and NTSC tuners, and portable antenna
- model 01145: WinTV-HVR-950 for Mac's and PC's. For use in North America. Bundled with Elgato EyeTV Lite for Mac's and WinTV v6 for PC's
- model 01176: WinTV-HVR-950 with ATSC and NTSC tuners plus French/Englsh manual and portable antenna
Also see the HVR-950Q, released in Q1/08, which adds support for digital cable.
Components used:
- Xceive xc3028ACQ (tuner & analog demodulator)
- LG DT3303 (digital demodulator)
- Texas Instruments tvp5150 (video decoder)
- Empiatech em2883 (USB bridge and analog audio)
Identification
This descriptor is from a unit packaged as a "WinTV HVR 950, model 1176", which is shipped with the A/V cables and toy-sized antenna but no remote:
lsusb -v Bus 001 Device 004: ID 2040:6513 Hauppauge Device Descriptor: bLength 18 bDescriptorType 1 bcdUSB 2.00 bDeviceClass 0 (Defined at Interface level) bDeviceSubClass 0 bDeviceProtocol 0 bMaxPacketSize0 64 idVendor 0x2040 Hauppauge idProduct 0x6513 bcdDevice 1.10 iManufacturer 0 iProduct 1 WinTV HVR-980 iSerial 2 4028477079 bNumConfigurations 1 Configuration Descriptor: bLength 9 bDescriptorType 2 wTotalLength 305 bNumInterfaces 1 bConfigurationValue 1 iConfiguration 0 bmAttributes 0x80 MaxPower 500mA Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 0 bNumEndpoints 4 bInterfaceClass 255 Vendor Specific Class bInterfaceSubClass 0 bInterfaceProtocol 255 iInterface 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 3 Transfer Type Interrupt Synch Type None Usage Type Data wMaxPacketSize 0x0001 1x 1 bytes bInterval 100 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x82 EP 2 IN bmAttributes 1 Transfer Type Isochronous Synch Type None Usage Type Data wMaxPacketSize 0x0000 1x 0 bytes bInterval 1 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x83 EP 3 IN bmAttributes 1 Transfer Type Isochronous Synch Type None Usage Type Data wMaxPacketSize 0x0000 1x 0 bytes bInterval 1 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x84 EP 4 IN bmAttributes 1 Transfer Type Isochronous Synch Type None Usage Type Data wMaxPacketSize 0x0000 1x 0 bytes bInterval 1 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 1 bNumEndpoints 4 bInterfaceClass 255 Vendor Specific Class bInterfaceSubClass 0 bInterfaceProtocol 255 iInterface 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 3 Transfer Type Interrupt Synch Type None Usage Type Data wMaxPacketSize 0x0001 1x 1 bytes bInterval 100 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x82 EP 2 IN bmAttributes 1 Transfer Type Isochronous Synch Type None Usage Type Data wMaxPacketSize 0x0200 1x 512 bytes bInterval 1 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x83 EP 3 IN bmAttributes 1 Transfer Type Isochronous Synch Type None Usage Type Data wMaxPacketSize 0x0000 1x 0 bytes bInterval 1 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x84 EP 4 IN bmAttributes 1 Transfer Type Isochronous Synch Type None Usage Type Data wMaxPacketSize 0x0000 1x 0 bytes bInterval 1 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 2 bNumEndpoints 4 bInterfaceClass 255 Vendor Specific Class bInterfaceSubClass 0 bInterfaceProtocol 255 iInterface 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 3 Transfer Type Interrupt Synch Type None Usage Type Data wMaxPacketSize 0x0001 1x 1 bytes bInterval 100 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x82 EP 2 IN bmAttributes 1 Transfer Type Isochronous Synch Type None Usage Type Data wMaxPacketSize 0x0280 1x 640 bytes bInterval 1 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x83 EP 3 IN bmAttributes 1 Transfer Type Isochronous Synch Type None Usage Type Data wMaxPacketSize 0x0000 1x 0 bytes bInterval 1 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x84 EP 4 IN bmAttributes 1 Transfer Type Isochronous Synch Type None Usage Type Data wMaxPacketSize 0x0000 1x 0 bytes bInterval 1 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 3 bNumEndpoints 4 bInterfaceClass 255 Vendor Specific Class bInterfaceSubClass 0 bInterfaceProtocol 255 iInterface 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 3 Transfer Type Interrupt Synch Type None Usage Type Data wMaxPacketSize 0x0001 1x 1 bytes bInterval 100 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x82 EP 2 IN bmAttributes 1 Transfer Type Isochronous Synch Type None Usage Type Data wMaxPacketSize 0x0300 1x 768 bytes bInterval 1 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x83 EP 3 IN bmAttributes 1 Transfer Type Isochronous Synch Type None Usage Type Data wMaxPacketSize 0x0000 1x 0 bytes bInterval 1 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x84 EP 4 IN bmAttributes 1 Transfer Type Isochronous Synch Type None Usage Type Data wMaxPacketSize 0x0000 1x 0 bytes bInterval 1 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 4 bNumEndpoints 4 bInterfaceClass 255 Vendor Specific Class bInterfaceSubClass 0 bInterfaceProtocol 255 iInterface 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 3 Transfer Type Interrupt Synch Type None Usage Type Data wMaxPacketSize 0x0001 1x 1 bytes bInterval 100 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x82 EP 2 IN bmAttributes 1 Transfer Type Isochronous Synch Type None Usage Type Data wMaxPacketSize 0x0340 1x 832 bytes bInterval 1 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x83 EP 3 IN bmAttributes 1 Transfer Type Isochronous Synch Type None Usage Type Data wMaxPacketSize 0x0000 1x 0 bytes bInterval 1 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x84 EP 4 IN bmAttributes 1 Transfer Type Isochronous Synch Type None Usage Type Data wMaxPacketSize 0x0000 1x 0 bytes bInterval 1 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 5 bNumEndpoints 4 bInterfaceClass 255 Vendor Specific Class bInterfaceSubClass 0 bInterfaceProtocol 255 iInterface 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 3 Transfer Type Interrupt Synch Type None Usage Type Data wMaxPacketSize 0x0001 1x 1 bytes bInterval 100 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x82 EP 2 IN bmAttributes 1 Transfer Type Isochronous Synch Type None Usage Type Data wMaxPacketSize 0x0380 1x 896 bytes bInterval 1 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x83 EP 3 IN bmAttributes 1 Transfer Type Isochronous Synch Type None Usage Type Data wMaxPacketSize 0x0000 1x 0 bytes bInterval 1 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x84 EP 4 IN bmAttributes 1 Transfer Type Isochronous Synch Type None Usage Type Data wMaxPacketSize 0x0000 1x 0 bytes bInterval 1 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 6 bNumEndpoints 4 bInterfaceClass 255 Vendor Specific Class bInterfaceSubClass 0 bInterfaceProtocol 255 iInterface 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 3 Transfer Type Interrupt Synch Type None Usage Type Data wMaxPacketSize 0x0001 1x 1 bytes bInterval 100 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x82 EP 2 IN bmAttributes 1 Transfer Type Isochronous Synch Type None Usage Type Data wMaxPacketSize 0x03c0 1x 960 bytes bInterval 1 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x83 EP 3 IN bmAttributes 1 Transfer Type Isochronous Synch Type None Usage Type Data wMaxPacketSize 0x0000 1x 0 bytes bInterval 1 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x84 EP 4 IN bmAttributes 1 Transfer Type Isochronous Synch Type None Usage Type Data wMaxPacketSize 0x0000 1x 0 bytes bInterval 1 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 7 bNumEndpoints 4 bInterfaceClass 255 Vendor Specific Class bInterfaceSubClass 0 bInterfaceProtocol 255 iInterface 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 3 Transfer Type Interrupt Synch Type None Usage Type Data wMaxPacketSize 0x0001 1x 1 bytes bInterval 100 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x82 EP 2 IN bmAttributes 1 Transfer Type Isochronous Synch Type None Usage Type Data wMaxPacketSize 0x03fc 1x 1020 bytes bInterval 1 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x83 EP 3 IN bmAttributes 1 Transfer Type Isochronous Synch Type None Usage Type Data wMaxPacketSize 0x0000 1x 0 bytes bInterval 1 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x84 EP 4 IN bmAttributes 1 Transfer Type Isochronous Synch Type None Usage Type Data wMaxPacketSize 0x0000 1x 0 bytes bInterval 1 Device Qualifier (for other device speed): bLength 10 bDescriptorType 6 bcdUSB 2.00 bDeviceClass 0 (Defined at Interface level) bDeviceSubClass 0 bDeviceProtocol 0 bMaxPacketSize0 64 bNumConfigurations 1
Subsystem ID
Making it Work
Firmware
In order to use the LinuxTV driver, you need to download and install the firmware. Here is the procedure to follow (taken from the help found in extract_xc3028.pl):
Download the windows driver with something like:
wget http://www.steventoth.net/linux/xc5000/HVR-12x0-14x0-17x0_1_25_25271_WHQL.zip
Extract the file hcw85bda.sys from the zip into the current dir:
unzip -j HVR-12x0-14x0-17x0_1_25_25271_WHQL.zip Driver85/hcw85bda.sys
run the extract_xc3028.pl script found in linux/Documentation/video4linux:
./extract_xc3028.pl
copy the generated file so it can be picked up by the Linux kernel:
cp xc3028-v27.fw /lib/firmware
Drivers
Use a recent snapshot of LinuxTV's v4l-dvb drivers
- Both analog and ATSC digital reception are supported
- Read the above mentioned Firmware section for details on installing the proper firmware.
Analog Audio Issue
Analog audio appears to be problematic so you will likely need to employ SOX as a helper application, prior to starting the viewing app, in order to get any sound in popular apps like tvtime etc.
sox -r 48000 -w -c 2 -t ossdsp /dev/dsp1 -t ossdsp /dev/dsp
Note that there may be an associated delay (i.e. not in sync).
The root of the problem is that the em28xx presents itself as a USB audio device, and applications such as tvtime do not know to associate the video stream with the audio stream.
Note that Markus Rechberger maintains a version of tvtime that is patched to work around this limitation: Mcentral.de tvtime
Sample kernel output
provide the relevant portion of dmesg here
Remote Control Support
The WinTV-HVR950 package currently does not include a remote control. One may be available as an optional-extra upgrade; Support was added for the optional remote in the LinuxTV driver in hg version 9628 (November 16, 2008).