Hauppauge DualHD not found on Vero4K

There are serveral images for the dreambox available for years, f.e. OpenATV, which was originally iniciated to get the dream-clones work. Unfortunately OpenAtv themselfs are not very “open” with their sources and feeds. So theoretically I can do it. But looking around on the net I found nothing next to my needs. What is dicussed around GitHub is somewhat for “freaks”. To understand evrything delivered there, my Linux-experience is too low. I knew that you are talking about the Vero-kernel being upgraded, but for the dream there should be something similar coming in the near future - hopefully. I have to look around in my neighbourhood to find someone with armfh-hardware which could run debian. Again, thanks a lot.

Yes, that is the plan.

1 Like

Well, if you are thinking about compiling the module for the dreambox, then you don’t need armhf hardware, you can cross-compile for armhf on any linux PC. Bigger issue is that it might be difficult to build working driver without proper kernel configuration or sources matching your kernel…

Thanks for the reply! I’ll keep my eye out

Hello KickerTom,

I hope you’re still well and not been hit by corona in any way…

It’s quiet a while working around with crosscompiling on different installations. But at all nothing works really well, depending on my rare knowledge on linux. So I forgot this target a bit. Now, as I got the time because of corona, I got Debian buster running on my dreambox. So I want to give it another try of compiling the source directly for the armhf platform. Therefor it would be quiet helpful if you could send me the source for em28xx , em28xx-dvb - if that would be possible after 1 year of silence? Thank you very much in advance. Stay healthy…

best regards

Well, everything is possible :-), but I am unsure what are you asking me to do. The files you mention are not my creation, I just merged some changes from newer version of linux (version running on Raspberry Pi) into Vero kernel sources. So you can check the files in either raspberry pi (kernel I used was Linux osmc 4.14.78-4-osmc), or in new vero 4.9 kernel. Also, the two files mentioned are not enough to get the thing running. there are more changes in more files needed.
You wrote you have debian buster running on the dreambox. Which kernel version do you have? Is there a newer version of debian for dreambox? If you manage to get newer kernel, the driver should be there by default, saving you a lot of work…

FYI, support for VID:PID 2040:8265 was introduced in kernel 4.17: Linux Kernel Driver DataBase: CONFIG_VIDEO_EM28XX: Empia EM28xx USB devices support

Hi,
I’m not sure about the final result of the above efforts, and if the WinTV dualHD should be working out of the box by now on the Vero 4K+. However, for me it seems to do not as no adapters are shown in tvheadend (see also here).
For what I can see in dmesg the adapter seems to be recognized correctly:

[184272.252929] usb 1-1: new high-speed USB device number 25 using xhci-hcd
[184272.423476] usb 1-1: New USB device found, idVendor=2040, idProduct=0265
[184272.423485] usb 1-1: New USB device strings: Mfr=3, Product=1, SerialNumber=2
[184272.423489] usb 1-1: Product: dualHD
[184272.423493] usb 1-1: Manufacturer: HCW
[184272.423496] usb 1-1: SerialNumber: 0014316376
[184272.424575] em28xx: New device HCW dualHD @ 480 Mbps (2040:0265, interface 0, class 0)
[184272.424582] em28xx: DVB interface 0 found: isoc
[184272.493027] em28xx: chip ID is em28174
[184273.809765] em28174 #0: EEPROM ID = 26 00 01 00, EEPROM hash = 0x05e2cac8
[184273.809771] em28174 #0: EEPROM info:
[184273.809774] em28174 #0: 	microcode start address = 0x0004, boot configuration = 0x01
[184273.815945] em28174 #0: 	AC97 audio (5 sample rates)
[184273.815952] em28174 #0: 	500mA max power
[184273.815956] em28174 #0: 	Table at offset 0x27, strings=0x0e6a, 0x1888, 0x087e
[184273.882898] em28174 #0: Identified as Hauppauge WinTV-dualHD DVB (card=99)
[184273.890001] tveeprom 1-0050: Hauppauge model 204109, rev C3I6, serial# 14316376
[184273.890008] tveeprom 1-0050: tuner model is SiLabs Si2157 (idx 186, type 4)
[184273.890013] tveeprom 1-0050: TV standards PAL(B/G) NTSC(M) PAL(I) SECAM(L/L') PAL(D/D1/K) ATSC/DVB Digital (eeprom 0xfc)
[184273.890016] tveeprom 1-0050: audio processor is None (idx 0)
[184273.890020] tveeprom 1-0050: has no radio, has IR receiver, has no IR transmitter
[184273.890025] em28174 #0: dvb set to isoc mode.
[184273.952941] em28xx: chip ID is em28174
[184275.269657] em28174 #1: EEPROM ID = 26 00 01 00, EEPROM hash = 0x05e2cac8
[184275.269663] em28174 #1: EEPROM info:
[184275.269666] em28174 #1: 	microcode start address = 0x0004, boot configuration = 0x01
[184275.275881] em28174 #1: 	AC97 audio (5 sample rates)
[184275.275887] em28174 #1: 	500mA max power
[184275.275891] em28174 #1: 	Table at offset 0x27, strings=0x0e6a, 0x1888, 0x087e
[184275.342900] em28174 #1: Identified as Hauppauge WinTV-dualHD DVB (card=99)
[184275.356711] tveeprom 3-0050: Hauppauge model 204109, rev C3I6, serial# 14316376
[184275.356719] tveeprom 3-0050: tuner model is SiLabs Si2157 (idx 186, type 4)
[184275.356724] tveeprom 3-0050: TV standards PAL(B/G) NTSC(M) PAL(I) SECAM(L/L') PAL(D/D1/K) ATSC/DVB Digital (eeprom 0xfc)
[184275.356727] tveeprom 3-0050: audio processor is None (idx 0)
[184275.356731] tveeprom 3-0050: has no radio, has IR receiver, has no IR transmitter
[184275.356736] em28174 #0: dvb ts2 set to isoc mode.
[184275.557953] em28174 #0: Binding DVB extension
[184275.573950] em28174 #1: Binding DVB extension
[184275.586088] em28174 #0: Registering input extension
[184275.586288] Registered IR keymap rc-hauppauge
[184275.586650] input: em28xx IR (em28174 #0) as /devices/platform/c9000000.dwc3/xhci-hcd.0.auto/usb1/1-1/rc/rc1/input26
[184275.586897] rc rc1: em28xx IR (em28174 #0) as /devices/platform/c9000000.dwc3/xhci-hcd.0.auto/usb1/1-1/rc/rc1
[184275.587095] em28174 #0: Input extension successfully initalized
[184275.587102] em28174 #1: Remote control support is not available for this card.

Also the driver seems to be loaded - lsmod:

Module                  Size  Used by
algif_hash             16384  1
algif_skcipher         20480  1
af_alg                 20480  6 algif_hash,algif_skcipher
8021q                  36864  0
xpad                   24576  0
em28xx_rc              20480  0
si2168                 20480  0
em28xx_dvb             36864  0
pl2303                 20480  0
em28xx                102400  2 em28xx_rc,em28xx_dvb
tveeprom               24576  1 em28xx
aes_ce_blk             20480  3
ablk_helper            16384  1 aes_ce_blk
aes_ce_cipher          16384  4 aes_ce_blk
ghash_ce               16384  0
sha2_ce                16384  0
sha1_ce                16384  0
dhd                  1368064  0
mali                  323584  1
ir_lirc_codec          16384  3
lirc_dev               24576  1 ir_lirc_codec
meson_ir               16384  0
amvdec_ports          233472  0
amvdec_mmpeg4          40960  0
amvdec_mh264          155648  0
amvdec_h264mvc         69632  0
amvdec_mmpeg12         49152  0
amvdec_vp9            114688  0
amvdec_vc1             65536  0
amvdec_h265           147456  0
stream_input          192512  8 amvdec_h265,amvdec_mh264,amvdec_h264mvc,amvdec_ports,amvdec_vp9,amvdec_mmpeg12
decoder_common        200704  9 amvdec_h265,amvdec_mh264,amvdec_mmpeg4,amvdec_h264mvc,amvdec_ports,stream_input,amvdec_vp9,amvdec_vc1,amvdec_mmpeg12
firmware               28672  9 amvdec_h265,amvdec_mh264,amvdec_mmpeg4,amvdec_h264mvc,decoder_common,stream_input,amvdec_vp9,amvdec_vc1,amvdec_mmpeg12
media_clock            49152  8 amvdec_h265,amvdec_mh264,decoder_common,amvdec_ports,firmware,stream_input,amvdec_vp9,amvdec_vc1

Latest firmware was copied to /lib/firmware/dvb-demod-si2168-b40-01.fw but no change…

Any further suggestions?

Hi,
looking at the kernel messages, this is different tuner than the one I have. My kernel reports:

[ 6.771566] em28xx: New device HCW dualHD @ 480 Mbps (2040:8265, interface 0, class 0)
[ 6.771574] em28xx: DVB interface 0 found: bulk
[ 6.844519] em28xx: chip ID is em28174

The USB id is slightly different (8265 vs 0265), and the DVB interface is different (bulk vs isoc). Isoc is, AFAIK, older inteface, and was present in the code for much longer.

I don’t see any tuner messages in your kernel log, mine reports:

[ 9.948562] si2168 1-0064: Silicon Labs Si2168-B40 successfully identified
[ 9.948565] si2168 1-0064: firmware version: B 4.0.2
[ 9.966189] si2157 4-0060: Silicon Labs Si2147/2148/2157/2158 successfully attached
[ 9.966226] DVB: registering new adapter (em28174 #0)
[ 9.966239] usb 1-2: DVB: registering adapter 0 frontend 0 (Silicon Labs Si2168)…
[ 9.972975] em28174 #0: DVB extension successfully initialized

This is there twice again, for each tuner. I see in your lsmod that si2168 is loaded, so it is possible you just cut that part off while posting.

Can you check your /dev/dvb folder, if the device is created? Mine is:

osmc@vero4k:~$ ls -la /dev/dvb/*
/dev/dvb/adapter0:
total 0
drwxr-xr-x 2 root root 120 May 6 11:30 .
drwxr-xr-x 4 root root 80 May 6 11:30 …
crw-rw---- 1 root video 212, 4 May 6 11:30 demux0
crw-rw---- 1 root video 212, 5 May 6 11:30 dvr0
crw-rw---- 1 root video 212, 3 May 6 11:30 frontend0
crw-rw---- 1 root video 212, 7 May 6 11:30 net0

/dev/dvb/adapter1:
total 0
drwxr-xr-x 2 root root 120 May 6 11:30 .
drwxr-xr-x 4 root root 80 May 6 11:30 …
crw-rw---- 1 root video 212, 68 May 6 11:30 demux0
crw-rw---- 1 root video 212, 69 May 6 11:30 dvr0
crw-rw---- 1 root video 212, 67 May 6 11:30 frontend0
crw-rw---- 1 root video 212, 71 May 6 11:30 net0

Tomas

isoc verus bulk seems to be changeable with the windows tools but based on this report it only impacts the artifacts issue should not impacting finding the tuners

https://www.linuxtv.org/wiki/index.php/Hauppauge_WinTV-dualHD

Nice, didn’t know that you can change it :-). But I agree this should not affect detection, just performance. Well, as long as the driver code is correct, as the two modes use slightly different code paths. But I would expect it is correct, unless proven otherwise :-).

No, that’s everything in dmesg after plugging in the stick…

Seems there is no /dev/dvb/ on my Vero…

~$ ls -al /dev/dvb*
ls: cannot access '/dev/dvb*': No such file or directory

Are you using a powered hub to connect the Stick? Could be it’s not getting enough powe. Did you try it on another device?

Can you also try leaving the stick plugged in and restarting vero? Then post the kernel log, maybe it will show more. I suspect there may be some udev rules missing for proper plug’n’play…

Nothing seems to have changed after rebooting with the stick attached…
Kernel Log

Tried with only the stick directly attached to the Vero (was also directly attached before but I removed all other USB devices now), no difference…
It apparently works on my NAS (Debian Bullseye).

Comparing your kernel log with mine, I see that yours is missing i2c messages and si2168/2157 initialization. These are messages from my log, which are not present in yours:

[    9.859970] em28174 #0: Binding DVB extension
[    9.888508] i2c i2c-1: Added multiplexed i2c bus 4
[    9.888520] si2168 1-0064: Silicon Labs Si2168-B40 successfully identified
[    9.888524] si2168 1-0064: firmware version: B 4.0.2
[    9.903993] si2157 4-0060: Silicon Labs Si2147/2148/2157/2158 successfully attached
[    9.904033] DVB: registering new adapter (em28174 #0)
[    9.904045] usb 1-2: DVB: registering adapter 0 frontend 0 (Silicon Labs Si2168)...
[    9.907522] em28174 #0: DVB extension successfully initialized

Now the question is why. Either your stick is somehow “special” that it is not identified correctly, or there is a bug in the driver code (possibly introduced by me, when I ported the support for bulk devices). I will look in the code if something raises a flag, but in the meantime, you can try switching your tuner to bulk mode (as referenced by @fzinken here), maybe it would help.

Hi Tomas,

sorry to bring this up again, but I just found some time to look into and test it once more after using the stick for the last half year on my NAS. Unfortunately, nothing has changed on the Vero with latest updates. Even tried a full reinstallation of the Vero from image, but without success. The i2c messages are still missing in my dmesg. Same with bulk mode.
Did you have time to look at your code?

What may be of interest: my NAS seems to identify dvb-demod-si2168-d60-01.fw instead of dvb-demod-si2168-b40-01.fw as the correct firmware. However, copying the firmware files from the NAS didn’t change anything either.

dmesg from NAS

[7919178.673489] usb 1-4: new high-speed USB device number 5 using xhci_hcd
[7919178.822827] usb 1-4: New USB device found, idVendor=2040, idProduct=0265, bcdDevice= 1.00
[7919178.822847] usb 1-4: New USB device strings: Mfr=3, Product=1, SerialNumber=2
[7919178.822855] usb 1-4: Product: dualHD
[7919178.822861] usb 1-4: Manufacturer: HCW
[7919178.822866] usb 1-4: SerialNumber: 0014316376
[7919178.823672] em28xx 1-4:1.0: New device HCW dualHD @ 480 Mbps (2040:0265, interface 0, class 0)
[7919178.823688] em28xx 1-4:1.0: DVB interface 0 found: isoc
[7919178.881631] em28xx 1-4:1.0: chip ID is em28174
[7919180.084936] em28xx 1-4:1.0: EEPROM ID = 26 00 01 00, EEPROM hash = 0x05e2cac8
[7919180.084957] em28xx 1-4:1.0: EEPROM info:
[7919180.084963] em28xx 1-4:1.0: 	microcode start address = 0x0004, boot configuration = 0x01
[7919180.092355] em28xx 1-4:1.0: 	AC97 audio (5 sample rates)
[7919180.092367] em28xx 1-4:1.0: 	500mA max power
[7919180.092373] em28xx 1-4:1.0: 	Table at offset 0x27, strings=0x0e6a, 0x1888, 0x087e
[7919180.149405] em28xx 1-4:1.0: Identified as Hauppauge WinTV-dualHD DVB (card=99)
[7919180.161014] tveeprom: Hauppauge model 204109, rev C3I6, serial# 14316376
[7919180.161028] tveeprom: tuner model is SiLabs Si2157 (idx 186, type 4)
[7919180.161034] tveeprom: TV standards PAL(B/G) NTSC(M) PAL(I) SECAM(L/L') PAL(D/D1/K) ATSC/DVB Digital (eeprom 0xfc)
[7919180.161042] tveeprom: audio processor is None (idx 0)
[7919180.161046] tveeprom: has no radio, has IR receiver, has no IR transmitter
[7919180.161055] em28xx 1-4:1.0: We currently don't support analog TV or stream capture on dual tuners.
[7919180.161078] em28xx 1-4:1.0: dvb set to isoc mode.
[7919180.217615] em28xx 1-4:1.0: chip ID is em28174
[7919181.429027] em28xx 1-4:1.0: EEPROM ID = 26 00 01 00, EEPROM hash = 0x05e2cac8
[7919181.429048] em28xx 1-4:1.0: EEPROM info:
[7919181.429053] em28xx 1-4:1.0: 	microcode start address = 0x0004, boot configuration = 0x01
[7919181.436650] em28xx 1-4:1.0: 	AC97 audio (5 sample rates)
[7919181.436662] em28xx 1-4:1.0: 	500mA max power
[7919181.436667] em28xx 1-4:1.0: 	Table at offset 0x27, strings=0x0e6a, 0x1888, 0x087e
[7919181.493491] em28xx 1-4:1.0: Identified as Hauppauge WinTV-dualHD DVB (card=99)
[7919181.500535] tveeprom: Hauppauge model 204109, rev C3I6, serial# 14316376
[7919181.500550] tveeprom: tuner model is SiLabs Si2157 (idx 186, type 4)
[7919181.500555] tveeprom: TV standards PAL(B/G) NTSC(M) PAL(I) SECAM(L/L') PAL(D/D1/K) ATSC/DVB Digital (eeprom 0xfc)
[7919181.500564] tveeprom: audio processor is None (idx 0)
[7919181.500568] tveeprom: has no radio, has IR receiver, has no IR transmitter
[7919181.500577] em28xx 1-4:1.0: dvb ts2 set to isoc mode.
[7919181.701541] em28xx 1-4:1.0: Binding DVB extension
[7919181.712642] i2c i2c-11: Added multiplexed i2c bus 14
[7919181.712656] si2168 11-0064: Silicon Labs Si2168-D60 successfully identified
[7919181.712661] si2168 11-0064: firmware version: D 6.0.1
[7919181.721279] si2157 14-0060: Silicon Labs Si2157 successfully attached
[7919181.721349] dvbdev: DVB: registering new adapter (1-4:1.0)
[7919181.721358] em28xx 1-4:1.0: DVB: registering adapter 1 frontend 0 (Silicon Labs Si2168)...
[7919181.721369] dvbdev: dvb_create_media_entity: media entity 'Silicon Labs Si2168' registered.
[7919181.722622] dvbdev: dvb_create_media_entity: media entity 'dvb-demux' registered.
[7919181.726046] em28xx 1-4:1.0: DVB extension successfully initialized
[7919181.726061] em28xx 1-4:1.0: Binding DVB extension
[7919181.735064] i2c i2c-13: Added multiplexed i2c bus 15
[7919181.735077] si2168 13-0067: Silicon Labs Si2168-D60 successfully identified
[7919181.735082] si2168 13-0067: firmware version: D 6.0.1
[7919181.741213] si2157 15-0063: Silicon Labs Si2157 successfully attached
[7919181.741287] dvbdev: DVB: registering new adapter (1-4:1.0)
[7919181.741294] em28xx 1-4:1.0: DVB: registering adapter 2 frontend 0 (Silicon Labs Si2168)...
[7919181.741305] dvbdev: dvb_create_media_entity: media entity 'Silicon Labs Si2168' registered.
[7919181.742444] dvbdev: dvb_create_media_entity: media entity 'dvb-demux' registered.
[7919181.744419] em28xx 1-4:1.0: DVB extension successfully initialized
[7919181.744433] em28xx 1-4:1.0: Registering input extension
[7919181.744571] Registered IR keymap rc-hauppauge
[7919181.744822] rc rc1: Hauppauge WinTV-dualHD DVB as /devices/pci0000:00/0000:00:15.0/usb1/1-4/1-4:1.0/rc/rc1
[7919181.744928] rc rc1: lirc_dev: driver em28xx registered at minor = 1, scancode receiver, no transmitter
[7919181.745022] input: Hauppauge WinTV-dualHD DVB as /devices/pci0000:00/0000:00:15.0/usb1/1-4/1-4:1.0/rc/rc1/input20
[7919181.746714] em28xx 1-4:1.0: Input extension successfully initialized
[7919181.746726] em28xx 1-4:1.0: Remote control support is not available for this card.
[7919181.825773] si2168 11-0064: firmware: direct-loading firmware dvb-demod-si2168-d60-01.fw
[7919181.825792] si2168 11-0064: downloading firmware from file 'dvb-demod-si2168-d60-01.fw'
[7919182.326947] si2168 11-0064: firmware version: D 6.0.13
[7919182.333249] si2157 14-0060: found a 'Silicon Labs Si2157-A30 ROM 0x50'
[7919182.333317] si2157 14-0060: firmware: failed to load dvb_driver_si2157_rom50.fw (-2)
[7919182.333371] si2157 14-0060: firmware: failed to load dvb-tuner-si2157-a30-01.fw (-2)
[7919182.333451] si2157 14-0060: Using ROM firmware.
[7919182.382268] si2157 14-0060: firmware version: 3.0.5
[7919182.386878] em28xx 1-4:1.0: DVB: adapter 1 frontend 0 frequency 0 out of range (48000000..870000000)
[7919182.392202] si2168 11-0064: firmware: direct-loading firmware dvb-demod-si2168-d60-01.fw
[7919182.392221] si2168 11-0064: downloading firmware from file 'dvb-demod-si2168-d60-01.fw'
[7919182.393273] si2168 13-0067: downloading firmware from file 'dvb-demod-si2168-d60-01.fw'
[7919183.012456] si2168 13-0067: firmware version: D 6.0.13
[7919183.015787] si2168 11-0064: firmware version: D 6.0.13
[7919183.019057] si2157 15-0063: found a 'Silicon Labs Si2157-A30 ROM 0x50'
[7919183.019126] si2157 15-0063: firmware: failed to load dvb_driver_si2157_rom50.fw (-2)
[7919183.019179] si2157 15-0063: firmware: failed to load dvb-tuner-si2157-a30-01.fw (-2)
[7919183.019197] si2157 15-0063: Using ROM firmware.
[7919183.068702] si2157 15-0063: firmware version: 3.0.5
[7919183.072827] em28xx 1-4:1.0: DVB: adapter 2 frontend 0 frequency 0 out of range (48000000..870000000)
[7919183.076467] si2168 13-0067: firmware: direct-loading firmware dvb-demod-si2168-d60-01.fw
[7919183.076490] si2168 13-0067: downloading firmware from file 'dvb-demod-si2168-d60-01.fw'
[7919183.530171] si2168 13-0067: firmware version: D 6.0.13

Any further ideas?

Hello,
sorry, I didn’t have much time and I admit I also forgot about this. So no progress on my side. I will try to find some time over the Christmas.
Did you try switching the tuner to bulk mode, as described here? It may be worth a try, as the isoc mode is quite limited and you may have a bandwidth problem using both tuners simultaneously. And it may also resolve this issue :-).

Same for me, so no worries.

Yep, already tried that, but makes no difference, unfortunately.

Finally found some time to look into this a bit. The issue is your frontend chip revision is too new :-). This line in your log shows the revision:

Silicon Labs Si2168-D60 successfully identified

The driver I was porting to vero was from linux 4.9, which supports only older revisions, SI2168_CHIP_ID_A20, SI2168_CHIP_ID_A30, SI2168_CHIP_ID_B40 only. Support for the D60 version seems to be added somewhere around linux 4.12. BTW, what kernel version is your NAS running?

I will check how difficult it would be to backport support for this new version…

@sam_nazarko, where can I find the latest kernel sources for vero, please? I looked around the web and github, but didn’t find any link…

Edit: the changes are trivial, just adding check for this new revision and link to different firmware, few lines of code.