two similar DVB-T2 tuners with conflicting modules

Kernels & Hardware, configuring network, installing services

two similar DVB-T2 tuners with conflicting modules

Postby piotrusch » 2019-01-08 11:20

Hi everybody,

I'm having trouble with two DVB-T2 tuners that have similar hardware and work well separately but cause trouble when attached at the same time. These are the two receviers:

1. TechnoTrend TVStick CT2-4400 (bus ID 0b48:3014)
2. Hauppauge WinTV SoloHD (bus ID 2040:8268)

Booting with both devices attached shows the following lines in dmesg:

Code: Select all
[Di Jan  8 12:45:41 2019] em28xx 1-4:1.0: New device HCW soloHD @ 480 Mbps (2040:8268, interface 0, class 0)
[Di Jan  8 12:45:41 2019] em28xx 1-4:1.0: DVB interface 0 found: bulk
[Di Jan  8 12:45:41 2019] em28xx 1-4:1.0: chip ID is em28178
[Di Jan  8 12:45:41 2019] usb 1-3: dvb_usb_v2: found a 'TechnoTrend TVStick CT2-4400' in warm state
[Di Jan  8 12:45:41 2019] usb 1-3: dvb_usb_v2: will pass the complete MPEG2 transport stream to the software demuxer
[Di Jan  8 12:45:41 2019] dvbdev: DVB: registering new adapter (TechnoTrend TVStick CT2-4400)
[Di Jan  8 12:45:41 2019] usb 1-3: dvb_usb_v2: MAC address: bc:ea:2b:44:0f:89
[Di Jan  8 12:45:41 2019] i2c i2c-6: Added multiplexed i2c bus 7
[Di Jan  8 12:45:41 2019] si2168 6-0064: Silicon Labs Si2168-B40 successfully identified
[Di Jan  8 12:45:41 2019] si2168 6-0064: firmware version: B 4.0.2
[Di Jan  8 12:45:41 2019] si2157 7-0060: Silicon Labs Si2147/2148/2157/2158 successfully attached
[Di Jan  8 12:45:41 2019] usb 1-3: DVB: registering adapter 0 frontend 0 (Silicon Labs Si2168)...
[Di Jan  8 12:45:41 2019] usb 1-3: dvb_usb_v2: 'TechnoTrend TVStick CT2-4400' successfully initialized and connected
[Di Jan  8 12:45:41 2019] usbcore: registered new interface driver dvb_usb_dvbsky
[Di Jan  8 12:45:43 2019] em28xx 1-4:1.0: EEPROM ID = 26 00 01 00, EEPROM hash = 0xccc2c180
[Di Jan  8 12:45:43 2019] em28xx 1-4:1.0: EEPROM info:
[Di Jan  8 12:45:43 2019] em28xx 1-4:1.0:    microcode start address = 0x0004, boot configuration = 0x01
[Di Jan  8 12:45:43 2019] em28xx 1-4:1.0:    AC97 audio (5 sample rates)
[Di Jan  8 12:45:43 2019] em28xx 1-4:1.0:    500mA max power
[Di Jan  8 12:45:43 2019] em28xx 1-4:1.0:    Table at offset 0x27, strings=0x0e6a, 0x1888, 0x087e
[Di Jan  8 12:45:43 2019] em28xx 1-4:1.0: Identified as PCTV tripleStick (292e) (card=94)
[Di Jan  8 12:45:43 2019] em28xx 1-4:1.0: dvb set to bulk mode.
[Di Jan  8 12:45:43 2019] usbcore: registered new interface driver em28xx
[Di Jan  8 12:45:43 2019] em28xx 1-4:1.0: Binding DVB extension
[Di Jan  8 12:45:43 2019] i2c i2c-9: Added multiplexed i2c bus 10
[Di Jan  8 12:45:43 2019] si2168 9-0064: Silicon Labs Si2168-B40 successfully identified
[Di Jan  8 12:45:43 2019] si2168 9-0064: firmware version: B 4.0.2
[Di Jan  8 12:45:43 2019] si2157 10-0060: Silicon Labs Si2147/2148/2157/2158 successfully attached
[Di Jan  8 12:45:43 2019] dvbdev: DVB: registering new adapter (1-4:1.0)
[Di Jan  8 12:45:43 2019] em28xx 1-4:1.0: DVB: registering adapter 1 frontend 0 (Silicon Labs Si2168)...
[Di Jan  8 12:45:43 2019] em28xx 1-4:1.0: DVB extension successfully initialized
[Di Jan  8 12:45:43 2019] em28xx: Registered (Em28xx dvb Extension) extension
[Di Jan  8 12:45:45 2019] e1000e: enp0s25 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: Rx/Tx
[Di Jan  8 12:45:45 2019] IPv6: ADDRCONF(NETDEV_CHANGE): enp0s25: link becomes ready
[Di Jan  8 12:45:45 2019] si2168 6-0064: firmware: direct-loading firmware dvb-demod-si2168-b40-01.fw
[Di Jan  8 12:45:45 2019] si2168 6-0064: downloading firmware from file 'dvb-demod-si2168-b40-01.fw'
[Di Jan  8 12:45:46 2019] si2168 6-0064: firmware version: B 4.0.11
[Di Jan  8 12:45:46 2019] si2157 7-0060: found a 'Silicon Labs Si2157-A30'
[Di Jan  8 12:45:46 2019] si2157 7-0060: firmware version: 3.0.5
[Di Jan  8 12:45:46 2019] si2168 9-0064: firmware: direct-loading firmware dvb-demod-si2168-b40-01.fw
[Di Jan  8 12:45:46 2019] si2168 9-0064: downloading firmware from file 'dvb-demod-si2168-b40-01.fw'
[Di Jan  8 12:45:46 2019] si2168 9-0064: firmware version: B 4.0.11
[Di Jan  8 12:45:46 2019] si2157 10-0060: found a 'Silicon Labs Si2157-A30'
[Di Jan  8 12:45:46 2019] si2157 10-0060: firmware version: 3.0.5
[Di Jan  8 12:46:46 2019] dmxdev: DVB (dvb_dmxdev_filter_start): could not set feed
[Di Jan  8 12:46:46 2019] dvb_demux: dvb_demux_feed_del: feed not in list (type=1 state=0 pid=ffff)

As you can see firmware is loaded for both correctly. The last two lines indicate the issue. When i.e. I add the first tuner later I get such beautiful message in the journal:

Code: Select all
Jan 08 12:36:08 mypc kernel: sysfs: cannot create duplicate filename '/devices/pci0000:00/0000:00:14.0/usb1/1-3/dvb'
Jan 08 12:36:08 mypc kernel: CPU: 2 PID: 19877 Comm: modprobe Not tainted 4.19.0-1-amd64 #1 Debian 4.19.12-1
Jan 08 12:36:08 mypc kernel: Hardware name:  /NUC5i3RYB, BIOS RYBDWi35.86A.0371.2018.0709.1155 07/09/2018
Jan 08 12:36:08 mypc kernel: Call Trace:
Jan 08 12:36:08 mypc kernel:  dump_stack+0x5c/0x80
Jan 08 12:36:08 mypc kernel:  sysfs_warn_dup.cold.4+0x17/0x2a
Jan 08 12:36:08 mypc kernel:  sysfs_create_dir_ns+0xa7/0xd0
Jan 08 12:36:08 mypc kernel:  kobject_add_internal+0xbc/0x270
Jan 08 12:36:08 mypc kernel:  kobject_add+0x7d/0xb0
Jan 08 12:36:08 mypc kernel:  ? _cond_resched+0x15/0x30
Jan 08 12:36:08 mypc kernel:  ? kmem_cache_alloc_trace+0x155/0x1d0
Jan 08 12:36:08 mypc kernel:  get_device_parent.isra.29+0x197/0x1c0
Jan 08 12:36:08 mypc kernel:  device_add+0xea/0x690
Jan 08 12:36:08 mypc kernel:  device_create_groups_vargs+0xd1/0xf0
Jan 08 12:36:08 mypc kernel:  device_create+0x49/0x60
Jan 08 12:36:08 mypc kernel:  ? _cond_resched+0x15/0x30
Jan 08 12:36:08 mypc kernel:  ? kmem_cache_alloc_trace+0x155/0x1d0
Jan 08 12:36:08 mypc kernel:  dvb_register_device+0x229/0x2c0 [dvb_core]
Jan 08 12:36:08 mypc kernel:  dvb_usbv2_probe+0x54d/0x10d0 [dvb_usb_v2]
Jan 08 12:36:08 mypc kernel:  ? __pm_runtime_set_status+0x247/0x260
Jan 08 12:36:08 mypc kernel:  usb_probe_interface+0xe4/0x2f0 [usbcore]
Jan 08 12:36:08 mypc kernel:  really_probe+0x235/0x3a0
Jan 08 12:36:08 mypc kernel:  driver_probe_device+0xb3/0xf0
Jan 08 12:36:08 mypc kernel:  __driver_attach+0xdd/0x110
Jan 08 12:36:08 mypc kernel:  ? driver_probe_device+0xf0/0xf0
Jan 08 12:36:08 mypc kernel:  bus_for_each_dev+0x76/0xc0
Jan 08 12:36:08 mypc kernel:  ? klist_add_tail+0x3b/0x70
Jan 08 12:36:08 mypc kernel:  bus_add_driver+0x152/0x230
Jan 08 12:36:08 mypc kernel:  driver_register+0x6b/0xb0
Jan 08 12:36:08 mypc kernel:  usb_register_driver+0x7a/0x130 [usbcore]
Jan 08 12:36:08 mypc kernel:  ? 0xffffffffc09e5000
Jan 08 12:36:08 mypc kernel:  do_one_initcall+0x46/0x1c3
Jan 08 12:36:08 mypc kernel:  ? free_unref_page_commit+0x91/0x100
Jan 08 12:36:08 mypc kernel:  ? _cond_resched+0x15/0x30
Jan 08 12:36:08 mypc kernel:  ? kmem_cache_alloc_trace+0x155/0x1d0
Jan 08 12:36:08 mypc kernel:  do_init_module+0x5a/0x210
Jan 08 12:36:08 mypc kernel:  load_module+0x215c/0x2380
Jan 08 12:36:08 mypc kernel:  ? __do_sys_finit_module+0xad/0x110
Jan 08 12:36:08 mypc kernel:  __do_sys_finit_module+0xad/0x110
Jan 08 12:36:08 mypc kernel:  do_syscall_64+0x53/0x100
Jan 08 12:36:08 mypc kernel:  entry_SYSCALL_64_after_hwframe+0x44/0xa9
Jan 08 12:36:08 mypc kernel: RIP: 0033:0x7f3029f62309
Jan 08 12:36:08 mypc kernel: Code: 00 c3 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 44 00 00 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff
Jan 08 12:36:08 mypc kernel: RSP: 002b:00007ffefc69b4c8 EFLAGS: 00000246 ORIG_RAX: 0000000000000139
Jan 08 12:36:08 mypc kernel: RAX: ffffffffffffffda RBX: 0000555d0528bde0 RCX: 00007f3029f62309
Jan 08 12:36:08 mypc kernel: RDX: 0000000000000000 RSI: 0000555d0528ebd0 RDI: 0000000000000006
Jan 08 12:36:08 mypc kernel: RBP: 0000555d0528ebd0 R08: 0000000000000000 R09: 0000000000000000
Jan 08 12:36:08 mypc kernel: R10: 0000000000000006 R11: 0000000000000246 R12: 0000000000000000
Jan 08 12:36:08 mypc kernel: R13: 0000555d0528be60 R14: 0000000000040000 R15: 0000555d0528bde0
Jan 08 12:36:08 mypc kernel: kobject_add_internal failed for dvb with -EEXIST, don't try to register things with the same name in the same directory.
Jan 08 12:36:08 mypc kernel: dvbdev: dvb_register_device: failed to create device dvb0.net0 (-17)
Jan 08 12:36:08 mypc kernel: usb 1-3: dvb_usb_v2: dvb_net_init() failed=-17
Jan 08 12:36:08 mypc kernel: dvb_usb_dvbsky: probe of 1-3:1.0 failed with error -17

The involved modules are:

Code: Select all
dvb_usb_v2
dvb_usb_dvbsky
em28xx
em28xx_dvb
dvb_core
m88ds3103
si2157
si2168

where dvb_usb_dvbsky and em28xx_dvb seem to cause the conflict addressing one resource at the same time.

I have no idea how to solve this. Unfortunately the first tuner isn't available any more and I could only return the second one.

Regards, Piotrusch
piotrusch
 
Posts: 6
Joined: 2018-11-04 11:57

Re: two similar DVB-T2 tuners with conflicting modules

Postby milomak » 2019-01-08 20:58

interesting

how are they attached? usb or pci?

maybe output of lsusb or lspci?

edit - it seems the one that is not hauppage is usb.

nothing you've posted suggests the hauppage is detected.
Desktop: iMac Late-2015 27" 5K Retina (17,1 - 3.3GHz) - MacOS and Windows 10 (Bootcamp)/ Debian Sid (External SSD)
Laptop: Lenovo ideapad Y700 [nVidia Optimus] (64-bit) - Debian Sid, Win10,
Kodi Box: AMD Athlon 5150 APU w/Radeon HD 8400 - Debian Sid
milomak
 
Posts: 1867
Joined: 2009-06-09 22:20

Re: two similar DVB-T2 tuners with conflicting modules

Postby Segfault » 2019-01-08 22:07

Usually such conflict can be solved by building one set of drivers statically into kernel and the other as modules. However, if you do not want to use custom kernel you may get away by blacklisting the conflicting module(s) - so they won't be auto-loaded at boot and then loading them from a post-startup script. You probably need to experiment to see in what order the modules need to be loaded to avoid conflict.
Segfault
 
Posts: 851
Joined: 2005-09-24 12:24

Re: two similar DVB-T2 tuners with conflicting modules

Postby piotrusch » 2019-01-09 20:26

milomak wrote:interesting
how are they attached? usb or pci?

usb
maybe output of lsusb or lspci?

Code: Select all
Bus 001 Device 004: ID 0b48:3014 TechnoTrend AG TT-TVStick CT2-4400
Bus 001 Device 003: ID 2040:8268 Hauppauge

edit - it seems the one that is not hauppage is usb.

The bus ID is also related to a PCTV tripleStick 292e where the company behind is somehow related to Hauppauge. As the board of triplestick and soloHD seem to be the same the kernel log now and then also reports that a triplestick was connected. Still it's labeled Hauppauge and one line of dmesg shows "New device HCW soloHD".

Segfault wrote:Usually such conflict can be solved by building one set of drivers statically into kernel and the other as modules. However, if you do not want to use custom kernel you may get away by blacklisting the conflicting module(s) - so they won't be auto-loaded at boot and then loading them from a post-startup script. You probably need to experiment to see in what order the modules need to be loaded to avoid conflict.


The issue is that for DVB-T2 all available receivers seem to use one chip that uses modules si2168 and si2157. Only the usb (connector, splitter or whatever) on it seems to differ. I fiddled with a different procedure of activating the devices but it all comes down to dvb_usb_dvbsky and em28xx_dvb which seem to set the required devices /dev/dvb/... As soon as one is loaded the other one doesn't fire up correctly. But you're right, I could also try the option of compiling one directly into the kernel.

Today I received a DVBSky T330 which uses the same modules as the Technotrend (even for the part that is different on the Hauppauge). I ordered it hoping that there won't be any collision because of the same driver. Unfortunately the issue remains. Here are the logs:

Code: Select all
[Mi Jan  9 21:59:48 2019] usb 1-3: dvb_usb_v2: found a 'DVBSky T330' in warm state
[Mi Jan  9 21:59:48 2019] usb 1-3: dvb_usb_v2: will pass the complete MPEG2 transport stream to the software demuxer
[Mi Jan  9 21:59:48 2019] dvbdev: DVB: registering new adapter (DVBSky T330)
[Mi Jan  9 21:59:48 2019] usb 1-3: dvb_usb_v2: MAC address: 00:cc:10:a5:33:0c
[Mi Jan  9 21:59:48 2019] i2c i2c-6: Added multiplexed i2c bus 7
[Mi Jan  9 21:59:48 2019] si2168 6-0064: Silicon Labs Si2168-B40 successfully identified
[Mi Jan  9 21:59:48 2019] si2168 6-0064: firmware version: B 4.0.2
[Mi Jan  9 21:59:48 2019] media: Linux media interface: v0.10
[Mi Jan  9 21:59:48 2019] si2157 7-0060: Silicon Labs Si2147/2148/2157/2158 successfully attached
[Mi Jan  9 21:59:48 2019] usb 1-3: DVB: registering adapter 0 frontend 0 (Silicon Labs Si2168)...
[Mi Jan  9 21:59:48 2019] usb 1-3: dvb_usb_v2: 'DVBSky T330' successfully initialized and connected
[Mi Jan  9 21:59:48 2019] usb 1-4: dvb_usb_v2: found a 'TechnoTrend TVStick CT2-4400' in warm state
[Mi Jan  9 21:59:48 2019] usb 1-4: dvb_usb_v2: will pass the complete MPEG2 transport stream to the software demuxer
[Mi Jan  9 21:59:48 2019] dvbdev: DVB: registering new adapter (TechnoTrend TVStick CT2-4400)
[Mi Jan  9 21:59:48 2019] usb 1-4: dvb_usb_v2: MAC address: bc:ea:2b:44:0f:89
[Mi Jan  9 21:59:48 2019] i2c i2c-8: Added multiplexed i2c bus 9
[Mi Jan  9 21:59:48 2019] si2168 8-0064: Silicon Labs Si2168-B40 successfully identified
[Mi Jan  9 21:59:48 2019] si2168 8-0064: firmware version: B 4.0.2
[Mi Jan  9 21:59:48 2019] si2157 9-0060: Silicon Labs Si2147/2148/2157/2158 successfully attached
[Mi Jan  9 21:59:48 2019] usb 1-4: DVB: registering adapter 1 frontend 0 (Silicon Labs Si2168)...
[Mi Jan  9 21:59:48 2019] usb 1-4: dvb_usb_v2: 'TechnoTrend TVStick CT2-4400' successfully initialized and connected
[Mi Jan  9 21:59:48 2019] usbcore: registered new interface driver dvb_usb_dvbsky
[Mi Jan  9 22:00:03 2019] si2168 6-0064: firmware: direct-loading firmware dvb-demod-si2168-b40-01.fw
[Mi Jan  9 22:00:03 2019] si2168 6-0064: downloading firmware from file 'dvb-demod-si2168-b40-01.fw'
[Mi Jan  9 22:00:03 2019] si2168 6-0064: firmware version: B 4.0.11
[Mi Jan  9 22:00:03 2019] si2157 7-0060: found a 'Silicon Labs Si2157-A30'
[Mi Jan  9 22:00:04 2019] si2157 7-0060: firmware version: 3.0.5
[Mi Jan  9 22:00:04 2019] si2168 8-0064: firmware: direct-loading firmware dvb-demod-si2168-b40-01.fw
[Mi Jan  9 22:00:04 2019] si2168 8-0064: downloading firmware from file 'dvb-demod-si2168-b40-01.fw'
[Mi Jan  9 22:00:04 2019] si2168 8-0064: firmware version: B 4.0.11
[Mi Jan  9 22:00:04 2019] si2157 9-0060: found a 'Silicon Labs Si2157-A30'
[Mi Jan  9 22:00:04 2019] si2157 9-0060: firmware version: 3.0.5
[Mi Jan  9 22:00:04 2019] fuse init (API version 7.28)
[Mi Jan  9 22:01:01 2019] dmxdev: DVB (dvb_dmxdev_filter_start): could not set feed
[Mi Jan  9 22:01:01 2019] dvb_demux: dvb_demux_feed_del: feed not in list (type=1 state=0 pid=ffff)

Code: Select all
Bus 001 Device 004: ID 0b48:3014 TechnoTrend AG TT-TVStick CT2-4400
Bus 001 Device 003: ID 0572:0320 Conexant Systems (Rockwell), Inc. DVBSky T330 DVB-T2/C tuner

It seems I'll have to join the mailing list of linux-media. Thanks for your ideas anyway.
piotrusch
 
Posts: 6
Joined: 2018-11-04 11:57


Return to System configuration

Who is online

Users browsing this forum: No registered users and 7 guests

fashionable