Hauppauge DualHD not found on Vero4K

Hi,
just received my new Vero4K+ to replace RPi3B+, as RPi didn’t have enough power for DVB-T2. Just started, but so far impressed, thanks for such a great product.
Everything seems to be working so far, except my Hauppauge DualHD USB stick. dmesg is reporting only new device:

[ 449.690406] usb 1-1: new high-speed USB device number 7 using xhci-hcd
[ 449.830967] usb 1-1: New USB device found, idVendor=2040, idProduct=8265
[ 449.830992] usb 1-1: New USB device strings: Mfr=3, Product=1, SerialNumber=2
[ 449.831006] usb 1-1: Product: dualHD
[ 449.831020] usb 1-1: Manufacturer: HCW
[ 449.831033] usb 1-1: SerialNumber: 0014105122

I have searched the forum and found it should work, but it doesn’t :-). On first sight, I can see the USB id is slightly different. In other reports, idProduct was reported as 0265, mine is 8265. Looking around the web, seems it should be the same HW, just different id.
Any suggestions what to do? Maybe just updating some udev rule to allow the driver to load?

When did you purchase this dongle? I’ve heard the new Hauppage’s have a new chipset which isn’t supported under Linux yet.

A link to the product page will be great.

Cheers

Sam

Quite recently, maybe a month ago. This is where I bought it from:

I believe it is this product:
https://webstore.hauppauge.de/WinTV-dualHD

Anyway, I am sure it is supported on at least some Linux versions, it was running fine on RPi3B+ (just too jerky to be usable, but both tuners were found and working). I can post logs from RPi, if it helps.

Looking for the IDs on the net, I found this:

Hauppauge is mentioned there with both IDs, and from quick look, it does not look they would be handled separately.

  • 2040:0265 Hauppauge WinTV-dualHD DVB Isoc
  • 2040:8265 Hauppauge WinTV-dualHD DVB Bulk

Edit: there are differences in the code to handle bulk transfer, supported by the newer cards, I was wrong, sorry. So probably driver update is needed?

Here is the log from RPi after inserting the stick:

[   80.842959] usb 1-1.2: new high-speed USB device number 6 using dwc_otg
[   80.973979] usb 1-1.2: New USB device found, idVendor=2040, idProduct=8265
[   80.973996] usb 1-1.2: New USB device strings: Mfr=3, Product=1, SerialNumber=2
[   80.974005] usb 1-1.2: Product: dualHD
[   80.974013] usb 1-1.2: Manufacturer: HCW
[   80.974021] usb 1-1.2: SerialNumber: 0014105122
[   80.974780] em28xx 1-1.2:1.0: New device HCW dualHD @ 480 Mbps (2040:8265, interface 0, class 0)
[   80.974793] em28xx 1-1.2:1.0: DVB interface 0 found: bulk
[   80.974943] em28xx 1-1.2:1.0: chip ID is em28174
[   82.290191] em28xx 1-1.2:1.0: EEPROM ID = 26 00 01 00, EEPROM hash = 0x59e7ce4c
[   82.290205] em28xx 1-1.2:1.0: EEPROM info:
[   82.290215] em28xx 1-1.2:1.0: 	microcode start address = 0x0004, boot configuration = 0x01
[   82.297348] em28xx 1-1.2:1.0: 	AC97 audio (5 sample rates)
[   82.297363] em28xx 1-1.2:1.0: 	500mA max power
[   82.297375] em28xx 1-1.2:1.0: 	Table at offset 0x27, strings=0x0e6a, 0x1888, 0x087e
[   82.297581] em28xx 1-1.2:1.0: Identified as Hauppauge WinTV-dualHD DVB (card=99)
[   82.302305] tveeprom: Hauppauge model 204209, rev C2I6, serial# 14105122
[   82.302317] tveeprom: tuner model is SiLabs Si2157 (idx 186, type 4)
[   82.302326] tveeprom: TV standards PAL(B/G) NTSC(M) PAL(I) SECAM(L/L') PAL(D/D1/K) ATSC/DVB Digital (eeprom 0xfc)
[   82.302333] tveeprom: audio processor is None (idx 0)
[   82.302340] tveeprom: has no radio, has IR receiver, has no IR transmitter
[   82.302357] em28xx 1-1.2:1.0: dvb set to bulk mode.
[   82.302515] em28xx 1-1.2:1.0: chip ID is em28174
[   83.610373] em28xx 1-1.2:1.0: EEPROM ID = 26 00 01 00, EEPROM hash = 0x59e7ce4c
[   83.610389] em28xx 1-1.2:1.0: EEPROM info:
[   83.610399] em28xx 1-1.2:1.0: 	microcode start address = 0x0004, boot configuration = 0x01
[   83.617572] em28xx 1-1.2:1.0: 	AC97 audio (5 sample rates)
[   83.617585] em28xx 1-1.2:1.0: 	500mA max power
[   83.617598] em28xx 1-1.2:1.0: 	Table at offset 0x27, strings=0x0e6a, 0x1888, 0x087e
[   83.617835] em28xx 1-1.2:1.0: Identified as Hauppauge WinTV-dualHD DVB (card=99)
[   83.622281] tveeprom: Hauppauge model 204209, rev C2I6, serial# 14105122
[   83.622294] tveeprom: tuner model is SiLabs Si2157 (idx 186, type 4)
[   83.622304] tveeprom: TV standards PAL(B/G) NTSC(M) PAL(I) SECAM(L/L') PAL(D/D1/K) ATSC/DVB Digital (eeprom 0xfc)
[   83.622310] tveeprom: audio processor is None (idx 0)
[   83.622317] tveeprom: has no radio, has IR receiver, has no IR transmitter
[   83.622333] em28xx 1-1.2:1.0: dvb ts2 set to bulk mode.
[   83.842761] em28xx 1-1.2:1.0: Binding DVB extension
[   83.862530] i2c i2c-4: Added multiplexed i2c bus 7
[   83.862544] si2168 4-0064: Silicon Labs Si2168-B40 successfully identified
[   83.862548] si2168 4-0064: firmware version: B 4.0.2
[   83.867988] si2157 7-0060: Silicon Labs Si2147/2148/2157/2158 successfully attached
[   83.868074] dvbdev: DVB: registering new adapter (1-1.2:1.0)
[   83.868083] em28xx 1-1.2:1.0: DVB: registering adapter 0 frontend 0 (Silicon Labs Si2168)...
[   83.868950] em28xx 1-1.2:1.0: DVB extension successfully initialized
[   83.868960] em28xx 1-1.2:1.0: Binding DVB extension
[   83.882269] i2c i2c-6: Added multiplexed i2c bus 8
[   83.882284] si2168 6-0067: Silicon Labs Si2168-B40 successfully identified
[   83.882288] si2168 6-0067: firmware version: B 4.0.2
[   83.888460] si2157 8-0063: Silicon Labs Si2147/2148/2157/2158 successfully attached
[   83.888531] dvbdev: DVB: registering new adapter (1-1.2:1.0)
[   83.888540] em28xx 1-1.2:1.0: DVB: registering adapter 1 frontend 0 (Silicon Labs Si2168)...
[   83.889360] em28xx 1-1.2:1.0: DVB extension successfully initialized
[   83.889374] em28xx 1-1.2:1.0: Registering input extension
[   83.889728] Registered IR keymap rc-hauppauge
[   83.890304] rc rc0: 1-1.2:1.0 IR as /devices/platform/soc/3f980000.usb/usb1/1-1/1-1.2/1-1.2:1.0/rc/rc0
[   83.890432] input: 1-1.2:1.0 IR as /devices/platform/soc/3f980000.usb/usb1/1-1/1-1.2/1-1.2:1.0/rc/rc0/input2
[   83.890757] em28xx 1-1.2:1.0: Input extension successfully initialized
[   83.890768] em28xx 1-1.2:1.0: Remote control support is not available for this card.

Just to ensure I give you the right command. Can you give the output of lsmod on the pi?

Try this on the Vero4K:

Unplug the dongle, then run the commands:
sudo modprobe em28xx
echo "2040 8265" | sudo tee "/sys/module/em28xx/drivers/usb:em28xx/new_id"
Plug in the dongle

1 Like

Thanks for the hint. This made a change, but it’s not enough. The LED on the tuner is now lit, so it at least gets power, but dmesg reports:

[162655.745812] usb 1-2: new high-speed USB device number 9 using xhci-hcd
[162655.886338] usb 1-2: New USB device found, idVendor=2040, idProduct=8265
[162655.886351] usb 1-2: New USB device strings: Mfr=3, Product=1, SerialNumber=2
[162655.886356] usb 1-2: Product: dualHD
[162655.886361] usb 1-2: Manufacturer: HCW
[162655.886365] usb 1-2: SerialNumber: 0014105122
[162655.888007] em28xx 1-2:1.0: New device HCW dualHD @ 480 Mbps (2040:8265, interface 0, class 0)
[162655.888019] em28xx 1-2:1.0: DVB interface 0 found: bulk
[162655.888415] em28xx 1-2:1.0: chip ID is em28174
[162656.025835] em28xx 1-2:1.0: failed to read eeprom (err=-110)
[162656.025850] em28xx 1-2:1.0: em28xx_i2c_register: em28xx_i2_eeprom failed! retval [-110]
[162656.025857] em28xx 1-2:1.0: em28xx_init_dev: em28xx_i2c_register bus 0 - error [-110]!
[162656.025884] em28xx: probe of 1-2:1.0 failed with error -110

I am afraid a newer driver will be needed.

Sure:

osmc@osmc:~$ lsmod
Module                  Size  Used by
arc4                   16384  0
md4                    16384  0
nls_utf8               16384  1
cifs                  466944  2
ccm                    20480  0
uinput                 20480  0
evdev                  24576  2
rc_hauppauge           16384  0
em28xx_rc              20480  0
rc_core                45056  3 rc_hauppauge,em28xx_rc
si2157                 16384  2
si2168                 20480  2
i2c_mux                16384  1 si2168
em28xx_dvb             36864  2
dvb_core              114688  1 em28xx_dvb
8021q                  32768  0
garp                   20480  1 8021q
stp                    16384  1 garp
llc                    16384  2 garp,stp
iptable_nat            16384  0
nf_conntrack_ipv4      16384  1
nf_defrag_ipv4         16384  1 nf_conntrack_ipv4
nf_nat_ipv4            16384  1 iptable_nat
nf_nat                 32768  1 nf_nat_ipv4
nf_conntrack          139264  3 nf_conntrack_ipv4,nf_nat_ipv4,nf_nat
iptable_mangle         16384  0
bnep                   20480  2
iptable_filter         16384  0
hci_uart               20480  1
bluetooth             409600  23 hci_uart,bnep
ecdh_generic           36864  1 bluetooth
brcmfmac              262144  0
brcmutil               16384  1 brcmfmac
em28xx                 94208  2 em28xx_rc,em28xx_dvb
cfg80211              626688  1 brcmfmac
tveeprom               20480  1 em28xx
v4l2_common            16384  1 em28xx
rfkill                 28672  5 bluetooth,cfg80211
videodev              212992  1 v4l2_common
media                  36864  3 videodev,em28xx,si2157
snd_bcm2835            32768  1
snd_pcm               114688  2 snd_bcm2835
snd_timer              36864  1 snd_pcm
snd                    86016  4 snd_timer,snd_bcm2835,snd_pcm
bcm2835_thermal        16384  0
bcm2835_gpiomem        16384  0
uio_pdrv_genirq        16384  0
uio                    20480  1 uio_pdrv_genirq
fixed                  16384  0
ip_tables              24576  3 iptable_mangle,iptable_filter,iptable_nat
x_tables               36864  3 iptable_mangle,ip_tables,iptable_filter
ipv6                  475136  40
osmc@osmc:~$

Just for completeness, on RPi, the kernel version is:
Linux osmc 4.14.78-4-osmc #1 SMP PREEMPT Wed Dec 12 17:58:11 UTC 2018 armv7l GNU/Linux
on the Vero:
Linux vero4k 3.14.29-156-osmc #1 SMP Tue Oct 15 20:21:25 UTC 2019 aarch64 GNU/Linux

Modinfo on the em28xx module gives version 0.2.2 both on the Vero and RPi, but the src version hash is different, F51222A423F006A25AA455A on Vero, 223A218F99372888D6B5037 on RPi. But that may not be important, it’s a backport on Vero, so there may be some other changes after all.

Does this device need firmware to be installed?

To save repeated questions, could you provide logs: grab-logs -A an post the URL.

They’ve probably issued a new PID as they’re using a different demodulator. I don’t know a lot about these devices. Is there a datasheet somewhere?

The VID:PID (2040:8265) is recognised by the Pi’s driver, but not by the Vero4K’s – even though they both claim to be on version 0.2.2.

OP seems to suggest that the device worked on a Pi3B+.

We’ll probably need to pick this up after we move to 4.9.

Logs from RPi (booted, after couple of seconds inserted the stick):
https://paste.osmc.tv/jopoxabahu

The same on Vero (without adding the PID, delay before inserting the stick slightly longer):
https://paste.osmc.tv/isanoruyaf

Where can I find the kernel sources for Vero? When building the image, is vero3 the correct target?

So, I have backported some parts of the em28xx driver from RPi to Vero and my USB tuner is now working. (Only one tuner at this moment, still looking into that.)
Are you interested in these changes, should I clean it up and submit? Or is switch to the new kernel imminent and updating the old one is no longer worth it?
BTW, learning to work with the OSMC source code and build system is a pain. Don’t take this as a complain, I am really happy you guys created all this, it’s rather a suggestion where to make some future improvements. But I spent most of the time not in the code, that was so far quite quick, but finding the place where to make the changes (the kernel repo contains multiple instances of the driver, but only one, the most hidden, is being compiled) and hacking the build system not to delete my changes and to compile just the modules instead of the whole kernel (including re-download of everything), that was the real challenge… And missing developer documentation does not help either :-).

Improvements are still good, as we are using 4.9 media build drivers.

I assume your problems stem from the media build tarball. This will be removed in the next kernel and you have simply run in to being a victim of our aggressive backports to modernise 3.14.

The original media build and the new are compiled, with new modules in a backport directory.

Happy to take any suggestions on board,

Sam

Great, then two followup questions :slight_smile: :

  • How to submit the changes? As the files are tarred in the github repo, simple PR with diffs won’t make much sense. Should I do a PR for a patch file to the “backports” folder to be applied on top of the tar? Or a PR against the 4.9 kernel branch? Or both? :slight_smile:
  • Should I try preparing a set of minimal changes which works for my HW to keep the risk of regressions low, or should I try backporting most of the em28xx driver from RPi source tree to add also other HW present there, but which I can’t test?
  • If you can update the tarball, but also post a diff here, then I’ll add it in for 4.9
  • Keep changes as minimal as possible

PR created for the tarball on github.
How should I post the diff? Can’t attach, only images allowed, can’t inline, body limit exceeded…