Skip to contentSkip to conversation

multiple em28xx devices doesn't work (well)

linux-dvb Sneake 3 participants 4 messages Jun 6, 2008 – Jun 9, 2008 Media (V4L/DVB)

lore
Share & tools
lore

Sneake

author
#0 lore raw

I have 2 em28xx USB capture devices - a Hauppauge Win-HVR-950 and a Pinnacle HD stick:

Bus 001 Device 007: ID 2304:0227 Pinnacle Systems, Inc. [hex] Pinnacle TV for Mac, HD Stick Bus 001 Device 004: ID 2040:6513 Hauppauge

Both of which are em28xx devices.
I am running the latest HG pull of the v4l-dvb drivers as of today (6th June 2008).

Quoted 1 line

From a cold start, both devices are seen by the USB probe, however only one gets a /dev/dvb/adapter entry. If I remove the one that did not, I get the following warning:

==========

Jun  6 18:00:15 Deathwish kernel: usb 1-3: new high speed USB device using ehci_hcd and address 7
Jun  6 18:00:15 Deathwish kernel: usb 1-3: configuration #1 chosen from 1 choice
Jun  6 18:00:15 Deathwish kernel: em28xx new video device (2304:0227): interface 0, class 255
Jun  6 18:00:15 Deathwish kernel: em28xx Doesn't have usb audio class
Jun  6 18:00:15 Deathwish kernel: em28xx #0: Alternate settings: 8
Jun  6 18:00:15 Deathwish kernel: em28xx #0: Alternate setting 0, max size= 0
Jun  6 18:00:15 Deathwish kernel: em28xx #0: Alternate setting 1, max size= 0
Jun  6 18:00:15 Deathwish kernel: em28xx #0: Alternate setting 2, max size= 1448
Jun  6 18:00:15 Deathwish kernel: em28xx #0: Alternate setting 3, max size= 2048
Jun  6 18:00:15 Deathwish kernel: em28xx #0: Alternate setting 4, max size= 2304
Jun  6 18:00:15 Deathwish kernel: em28xx #0: Alternate setting 5, max size= 2580
Jun  6 18:00:15 Deathwish kernel: em28xx #0: Alternate setting 6, max size= 2892
Jun  6 18:00:15 Deathwish kernel: em28xx #0: Alternate setting 7, max size= 3072
Jun  6 18:00:15 Deathwish kernel: em28xx #0: chip ID is em2882/em2883
Jun  6 18:00:15 Deathwish kernel: tuner' 1-0061: chip found @ 0xc2 (em28xx #0)
Jun  6 18:00:15 Deathwish kernel: em28xx #0: i2c eeprom 00: 1a eb 67 95 04 23 27 02 d0 12 5c 03 8e 16 a4 1c
Jun  6 18:00:15 Deathwish kernel: em28xx #0: i2c eeprom 10: 6a 24 27 57 46 07 01 00 00 00 00 00 00 00 00 00
Jun  6 18:00:15 Deathwish kernel: em28xx #0: i2c eeprom 20: 46 00 01 00 f0 10 02 00 b8 00 00 00 5b 1c 00 00
Jun  6 18:00:15 Deathwish kernel: em28xx #0: i2c eeprom 30: 00 00 20 40 20 80 02 20 01 01 00 00 00 00 00 00
Jun  6 18:00:15 Deathwish kernel: em28xx #0: i2c eeprom 40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Jun  6 18:00:15 Deathwish kernel: em28xx #0: i2c eeprom 50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Jun  6 18:00:15 Deathwish kernel: em28xx #0: i2c eeprom 60: 00 00 00 00 00 00 00 00 00 00 24 03 50 00 69 00
Jun  6 18:00:15 Deathwish kernel: em28xx #0: i2c eeprom 70: 6e 00 6e 00 61 00 63 00 6c 00 65 00 20 00 53 00
Jun  6 18:00:15 Deathwish kernel: em28xx #0: i2c eeprom 80: 79 00 73 00 74 00 65 00 6d 00 73 00 00 00 16 03
Jun  6 18:00:15 Deathwish kernel: em28xx #0: i2c eeprom 90: 50 00 43 00 54 00 56 00 20 00 38 00 30 00 30 00
Jun  6 18:00:15 Deathwish kernel: em28xx #0: i2c eeprom a0: 65 00 00 00 1c 03 30 00 37 00 30 00 38 00 30 00
Jun  6 18:00:15 Deathwish kernel: em28xx #0: i2c eeprom b0: 31 00 30 00 36 00 31 00 33 00 37 00 33 00 00 00
Jun  6 18:00:15 Deathwish kernel: em28xx #0: i2c eeprom c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Jun  6 18:00:15 Deathwish kernel: em28xx #0: i2c eeprom d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Jun  6 18:00:15 Deathwish kernel: em28xx #0: i2c eeprom e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 54 00
Jun  6 18:00:15 Deathwish kernel: em28xx #0: i2c eeprom f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Jun  6 18:00:15 Deathwish kernel: EEPROM ID= 0x9567eb1a, hash = 0x2de5f5bf
Jun  6 18:00:15 Deathwish kernel: Vendor/Product ID= 2304:0227
Jun  6 18:00:15 Deathwish kernel: AC97 audio (5 sample rates)
Jun  6 18:00:15 Deathwish kernel: 500mA max power
Jun  6 18:00:15 Deathwish kernel: Table at 0x27, strings=0x168e, 0x1ca4, 0x246a
Jun  6 18:00:15 Deathwish kernel: xc2028 1-0061: creating new instance
Jun  6 18:00:15 Deathwish kernel: xc2028 1-0061: type set to XCeive xc2028/xc3028 tuner
Jun  6 18:00:15 Deathwish kernel: xc2028 1-0061: Loading 80 firmware images from xc3028-v27.fw, type: xc2028 firmware, ver 2.7
Jun  6 18:00:15 Deathwish kernel: xc2028 1-0061: Loading firmware for type=BASE MTS (5), id 0000000000000000.
Jun  6 18:00:16 Deathwish kernel: xc2028 1-0061: Loading firmware for type=MTS (4), id 000000000000b700.
Jun  6 18:00:16 Deathwish kernel: tvp5150 1-005c: tvp5150am1 detected.
Jun  6 18:00:17 Deathwish kernel: em28xx #0: V4L2 device registered as /dev/video0 and /dev/vbi0
Jun  6 18:00:17 Deathwish kernel: em28xx-audio.c: probing for em28x1 non standard usbaudio
Jun  6 18:00:17 Deathwish kernel: em28xx-audio.c: Copyright (C) 2006 Markus Rechberger
Jun  6 18:00:17 Deathwish kernel: proc_dir_entry 'Em28xx Audio' already registered
Jun  6 18:00:17 Deathwish kernel: Pid: 135, comm: khubd Not tainted 2.6.25 #1
Jun  6 18:00:17 Deathwish kernel:  [<c04935cf>] proc_register+0xa3/0xfd
Jun  6 18:00:17 Deathwish kernel:  [<c04937ce>] proc_symlink+0x55/0x70
Jun  6 18:00:17 Deathwish kernel:  [<f899d848>] snd_info_card_register+0x31/0x47 [snd]
Jun  6 18:00:17 Deathwish kernel:  [<f899c9e8>] snd_card_register+0x1af/0x204 [snd]
Jun  6 18:00:17 Deathwish kernel:  [<f9a15144>] em28xx_audio_init+0xf2/0x120 [em28xx_alsa]
Jun  6 18:00:17 Deathwish kernel:  [<f9a27a7c>] em28xx_usb_probe+0x607/0x6a0 [em28xx]
Jun  6 18:00:17 Deathwish kernel:  [<c054c80f>] usb_autopm_do_device+0xaa/0xb1
Jun  6 18:00:17 Deathwish kernel:  [<c054d1be>] usb_probe_interface+0xba/0xfa
Jun  6 18:00:17 Deathwish kernel:  [<c05382fd>] driver_probe_device+0xb5/0x126
Jun  6 18:00:17 Deathwish kernel:  [<c053836e>] __device_attach+0x0/0x5
Jun  6 18:00:17 Deathwish kernel:  [<c05377c6>] bus_for_each_drv+0x36/0x5e
Jun  6 18:00:17 Deathwish kernel:  [<c05383fa>] device_attach+0x6c/0x7f
Jun  6 18:00:17 Deathwish kernel:  [<c053836e>] __device_attach+0x0/0x5
Jun  6 18:00:17 Deathwish kernel:  [<c0537763>] bus_attach_device+0x25/0x52
Jun  6 18:00:17 Deathwish kernel:  [<c053697b>] device_add+0x30b/0x45f
Jun  6 18:00:17 Deathwish kernel:  [<c054bc16>] usb_set_configuration+0x3c4/0x432
Jun  6 18:00:17 Deathwish kernel:  [<c0551dc4>] generic_probe+0x48/0x7c
Jun  6 18:00:17 Deathwish kernel:  [<c054cfd8>] usb_probe_device+0x2f/0x34
Jun  6 18:00:17 Deathwish kernel:  [<c05382fd>] driver_probe_device+0xb5/0x126
Jun  6 18:00:17 Deathwish kernel:  [<c053836e>] __device_attach+0x0/0x5
Jun  6 18:00:17 Deathwish kernel:  [<c05377c6>] bus_for_each_drv+0x36/0x5e
Jun  6 18:00:17 Deathwish kernel:  [<c05383fa>] device_attach+0x6c/0x7f
Jun  6 18:00:17 Deathwish kernel:  [<c053836e>] __device_attach+0x0/0x5
Jun  6 18:00:17 Deathwish kernel:  [<c0537763>] bus_attach_device+0x25/0x52
Jun  6 18:00:17 Deathwish kernel:  [<c053697b>] device_add+0x30b/0x45f
Jun  6 18:00:17 Deathwish kernel:  [<c054c80f>] usb_autopm_do_device+0xaa/0xb1
Jun  6 18:00:17 Deathwish kernel:  [<c05477e1>] usb_new_device+0x4a/0x7c
Jun  6 18:00:17 Deathwish kernel:  [<c0548ac8>] hub_thread+0x687/0xa4b
Jun  6 18:00:17 Deathwish kernel:  [<c0429e51>] autoremove_wake_function+0x0/0x2d
Jun  6 18:00:17 Deathwish kernel:  [<c0548441>] hub_thread+0x0/0xa4b
Jun  6 18:00:17 Deathwish kernel:  [<c0429d6f>] kthread+0x36/0x5b
Jun  6 18:00:17 Deathwish kernel:  [<c0429d39>] kthread+0x0/0x5b
Jun  6 18:00:17 Deathwish kernel:  [<c04051cf>] kernel_thread_helper+0x7/0x10
Jun  6 18:00:17 Deathwish kernel:  =======================
Jun  6 18:00:17 Deathwish kernel: xc2028 1-0061: attaching existing instance
Jun  6 18:00:17 Deathwish kernel: xc2028 1-0061: type set to XCeive xc2028/xc3028 tuner
Jun  6 18:00:17 Deathwish kernel: em28xx #0/2: xc3028 attached
Jun  6 18:00:17 Deathwish kernel: DVB: registering new adapter (em28xx #0)
Jun  6 18:00:17 Deathwish kernel: DVB: registering frontend 2 (LG Electronics LGDT3303 VSB/QAM Frontend)...
Jun  6 18:00:17 Deathwish kernel: Successfully loaded em28xx-dvb
Jun  6 18:00:17 Deathwish kernel: em28xx #0: Found Pinnacle PCTV HD Pro Stick

=======
at which point both devices have /dev/dvb/adapter entries.

It would seem that the code as it is is not multiple-device friendly.

_______________________________________________
linux-dvb mailing list
[email protected]
http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb

#1 lore raw

Hello,

Thanks for the heads up. I just got a second device this week, noticed the same thing, and was planning to work on it this weekend.

The driver is designed to handle multiple devices, but there is apparently a bug in there somewhere...

Devin

Quoted 109 lines · Sneake

I have 2 em28xx USB capture devices - a Hauppauge Win-HVR-950 and a Pinnacle HD stick:

Bus 001 Device 007: ID 2304:0227 Pinnacle Systems, Inc. [hex] Pinnacle TV for Mac, HD Stick Bus 001 Device 004: ID 2040:6513 Hauppauge

Both of which are em28xx devices.
I am running the latest HG pull of the v4l-dvb drivers as of today (6th June 2008).

From a cold start, both devices are seen by the USB probe, however only one gets a /dev/dvb/adapter entry. If I remove the one that did not, I get the following warning:

==========

Jun  6 18:00:15 Deathwish kernel: usb 1-3: new high speed USB device using ehci_hcd and address 7
Jun  6 18:00:15 Deathwish kernel: usb 1-3: configuration #1 chosen from 1 choice
Jun  6 18:00:15 Deathwish kernel: em28xx new video device (2304:0227): interface 0, class 255
Jun  6 18:00:15 Deathwish kernel: em28xx Doesn't have usb audio class
Jun  6 18:00:15 Deathwish kernel: em28xx #0: Alternate settings: 8
Jun  6 18:00:15 Deathwish kernel: em28xx #0: Alternate setting 0, max size= 0
Jun  6 18:00:15 Deathwish kernel: em28xx #0: Alternate setting 1, max size= 0
Jun  6 18:00:15 Deathwish kernel: em28xx #0: Alternate setting 2, max size= 1448
Jun  6 18:00:15 Deathwish kernel: em28xx #0: Alternate setting 3, max size= 2048
Jun  6 18:00:15 Deathwish kernel: em28xx #0: Alternate setting 4, max size= 2304
Jun  6 18:00:15 Deathwish kernel: em28xx #0: Alternate setting 5, max size= 2580
Jun  6 18:00:15 Deathwish kernel: em28xx #0: Alternate setting 6, max size= 2892
Jun  6 18:00:15 Deathwish kernel: em28xx #0: Alternate setting 7, max size= 3072
Jun  6 18:00:15 Deathwish kernel: em28xx #0: chip ID is em2882/em2883
Jun  6 18:00:15 Deathwish kernel: tuner' 1-0061: chip found @ 0xc2 (em28xx #0)
Jun  6 18:00:15 Deathwish kernel: em28xx #0: i2c eeprom 00: 1a eb 67 95 04 23 27 02 d0 12 5c 03 8e 16 a4 1c
Jun  6 18:00:15 Deathwish kernel: em28xx #0: i2c eeprom 10: 6a 24 27 57 46 07 01 00 00 00 00 00 00 00 00 00
Jun  6 18:00:15 Deathwish kernel: em28xx #0: i2c eeprom 20: 46 00 01 00 f0 10 02 00 b8 00 00 00 5b 1c 00 00
Jun  6 18:00:15 Deathwish kernel: em28xx #0: i2c eeprom 30: 00 00 20 40 20 80 02 20 01 01 00 00 00 00 00 00
Jun  6 18:00:15 Deathwish kernel: em28xx #0: i2c eeprom 40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Jun  6 18:00:15 Deathwish kernel: em28xx #0: i2c eeprom 50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Jun  6 18:00:15 Deathwish kernel: em28xx #0: i2c eeprom 60: 00 00 00 00 00 00 00 00 00 00 24 03 50 00 69 00
Jun  6 18:00:15 Deathwish kernel: em28xx #0: i2c eeprom 70: 6e 00 6e 00 61 00 63 00 6c 00 65 00 20 00 53 00
Jun  6 18:00:15 Deathwish kernel: em28xx #0: i2c eeprom 80: 79 00 73 00 74 00 65 00 6d 00 73 00 00 00 16 03
Jun  6 18:00:15 Deathwish kernel: em28xx #0: i2c eeprom 90: 50 00 43 00 54 00 56 00 20 00 38 00 30 00 30 00
Jun  6 18:00:15 Deathwish kernel: em28xx #0: i2c eeprom a0: 65 00 00 00 1c 03 30 00 37 00 30 00 38 00 30 00
Jun  6 18:00:15 Deathwish kernel: em28xx #0: i2c eeprom b0: 31 00 30 00 36 00 31 00 33 00 37 00 33 00 00 00
Jun  6 18:00:15 Deathwish kernel: em28xx #0: i2c eeprom c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Jun  6 18:00:15 Deathwish kernel: em28xx #0: i2c eeprom d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Jun  6 18:00:15 Deathwish kernel: em28xx #0: i2c eeprom e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 54 00
Jun  6 18:00:15 Deathwish kernel: em28xx #0: i2c eeprom f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Jun  6 18:00:15 Deathwish kernel: EEPROM ID= 0x9567eb1a, hash = 0x2de5f5bf
Jun  6 18:00:15 Deathwish kernel: Vendor/Product ID= 2304:0227
Jun  6 18:00:15 Deathwish kernel: AC97 audio (5 sample rates)
Jun  6 18:00:15 Deathwish kernel: 500mA max power
Jun  6 18:00:15 Deathwish kernel: Table at 0x27, strings=0x168e, 0x1ca4, 0x246a
Jun  6 18:00:15 Deathwish kernel: xc2028 1-0061: creating new instance
Jun  6 18:00:15 Deathwish kernel: xc2028 1-0061: type set to XCeive xc2028/xc3028 tuner
Jun  6 18:00:15 Deathwish kernel: xc2028 1-0061: Loading 80 firmware images from xc3028-v27.fw, type: xc2028 firmware, ver 2.7
Jun  6 18:00:15 Deathwish kernel: xc2028 1-0061: Loading firmware for type=BASE MTS (5), id 0000000000000000.
Jun  6 18:00:16 Deathwish kernel: xc2028 1-0061: Loading firmware for type=MTS (4), id 000000000000b700.
Jun  6 18:00:16 Deathwish kernel: tvp5150 1-005c: tvp5150am1 detected.
Jun  6 18:00:17 Deathwish kernel: em28xx #0: V4L2 device registered as /dev/video0 and /dev/vbi0
Jun  6 18:00:17 Deathwish kernel: em28xx-audio.c: probing for em28x1 non standard usbaudio
Jun  6 18:00:17 Deathwish kernel: em28xx-audio.c: Copyright (C) 2006 Markus Rechberger
Jun  6 18:00:17 Deathwish kernel: proc_dir_entry 'Em28xx Audio' already registered
Jun  6 18:00:17 Deathwish kernel: Pid: 135, comm: khubd Not tainted 2.6.25 #1
Jun  6 18:00:17 Deathwish kernel:  [<c04935cf>] proc_register+0xa3/0xfd
Jun  6 18:00:17 Deathwish kernel:  [<c04937ce>] proc_symlink+0x55/0x70
Jun  6 18:00:17 Deathwish kernel:  [<f899d848>] snd_info_card_register+0x31/0x47 [snd]
Jun  6 18:00:17 Deathwish kernel:  [<f899c9e8>] snd_card_register+0x1af/0x204 [snd]
Jun  6 18:00:17 Deathwish kernel:  [<f9a15144>] em28xx_audio_init+0xf2/0x120 [em28xx_alsa]
Jun  6 18:00:17 Deathwish kernel:  [<f9a27a7c>] em28xx_usb_probe+0x607/0x6a0 [em28xx]
Jun  6 18:00:17 Deathwish kernel:  [<c054c80f>] usb_autopm_do_device+0xaa/0xb1
Jun  6 18:00:17 Deathwish kernel:  [<c054d1be>] usb_probe_interface+0xba/0xfa
Jun  6 18:00:17 Deathwish kernel:  [<c05382fd>] driver_probe_device+0xb5/0x126
Jun  6 18:00:17 Deathwish kernel:  [<c053836e>] __device_attach+0x0/0x5
Jun  6 18:00:17 Deathwish kernel:  [<c05377c6>] bus_for_each_drv+0x36/0x5e
Jun  6 18:00:17 Deathwish kernel:  [<c05383fa>] device_attach+0x6c/0x7f
Jun  6 18:00:17 Deathwish kernel:  [<c053836e>] __device_attach+0x0/0x5
Jun  6 18:00:17 Deathwish kernel:  [<c0537763>] bus_attach_device+0x25/0x52
Jun  6 18:00:17 Deathwish kernel:  [<c053697b>] device_add+0x30b/0x45f
Jun  6 18:00:17 Deathwish kernel:  [<c054bc16>] usb_set_configuration+0x3c4/0x432
Jun  6 18:00:17 Deathwish kernel:  [<c0551dc4>] generic_probe+0x48/0x7c
Jun  6 18:00:17 Deathwish kernel:  [<c054cfd8>] usb_probe_device+0x2f/0x34
Jun  6 18:00:17 Deathwish kernel:  [<c05382fd>] driver_probe_device+0xb5/0x126
Jun  6 18:00:17 Deathwish kernel:  [<c053836e>] __device_attach+0x0/0x5
Jun  6 18:00:17 Deathwish kernel:  [<c05377c6>] bus_for_each_drv+0x36/0x5e
Jun  6 18:00:17 Deathwish kernel:  [<c05383fa>] device_attach+0x6c/0x7f
Jun  6 18:00:17 Deathwish kernel:  [<c053836e>] __device_attach+0x0/0x5
Jun  6 18:00:17 Deathwish kernel:  [<c0537763>] bus_attach_device+0x25/0x52
Jun  6 18:00:17 Deathwish kernel:  [<c053697b>] device_add+0x30b/0x45f
Jun  6 18:00:17 Deathwish kernel:  [<c054c80f>] usb_autopm_do_device+0xaa/0xb1
Jun  6 18:00:17 Deathwish kernel:  [<c05477e1>] usb_new_device+0x4a/0x7c
Jun  6 18:00:17 Deathwish kernel:  [<c0548ac8>] hub_thread+0x687/0xa4b
Jun  6 18:00:17 Deathwish kernel:  [<c0429e51>] autoremove_wake_function+0x0/0x2d
Jun  6 18:00:17 Deathwish kernel:  [<c0548441>] hub_thread+0x0/0xa4b
Jun  6 18:00:17 Deathwish kernel:  [<c0429d6f>] kthread+0x36/0x5b
Jun  6 18:00:17 Deathwish kernel:  [<c0429d39>] kthread+0x0/0x5b
Jun  6 18:00:17 Deathwish kernel:  [<c04051cf>] kernel_thread_helper+0x7/0x10
Jun  6 18:00:17 Deathwish kernel:  =======================
Jun  6 18:00:17 Deathwish kernel: xc2028 1-0061: attaching existing instance
Jun  6 18:00:17 Deathwish kernel: xc2028 1-0061: type set to XCeive xc2028/xc3028 tuner
Jun  6 18:00:17 Deathwish kernel: em28xx #0/2: xc3028 attached
Jun  6 18:00:17 Deathwish kernel: DVB: registering new adapter (em28xx #0)
Jun  6 18:00:17 Deathwish kernel: DVB: registering frontend 2 (LG Electronics LGDT3303 VSB/QAM Frontend)...
Jun  6 18:00:17 Deathwish kernel: Successfully loaded em28xx-dvb
Jun  6 18:00:17 Deathwish kernel: em28xx #0: Found Pinnacle PCTV HD Pro Stick

=======
at which point both devices have /dev/dvb/adapter entries.

It would seem that the code as it is is not multiple-device friendly.

_______________________________________________
linux-dvb mailing list
[email protected]
http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb

Signature · 8 lines
Devin J. Heitmueller
http://www.devinheitmueller.com
AIM: devinheitmueller

_______________________________________________
linux-dvb mailing list
[email protected]
http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb
#2 lore raw

Hi,

Quoted 5 lines · Devin Heitmueller

Hello,

Thanks for the heads up. I just got a second device this week, noticed the same thing, and was planning to work on it this weekend.

Quoted 110 lines

The driver is designed to handle multiple devices, but there is apparently a bug in there somewhere...

Devin

Quoted 104 lines · Sneake

I have 2 em28xx USB capture devices - a Hauppauge Win-HVR-950 and a Pinnacle HD stick:

Bus 001 Device 007: ID 2304:0227 Pinnacle Systems, Inc. [hex] Pinnacle TV for Mac, HD Stick Bus 001 Device 004: ID 2040:6513 Hauppauge

Both of which are em28xx devices.
I am running the latest HG pull of the v4l-dvb drivers as of today (6th June 2008).

From a cold start, both devices are seen by the USB probe, however only one gets a /dev/dvb/adapter entry. If I remove the one that did not, I get the following warning:

==========

Jun  6 18:00:15 Deathwish kernel: usb 1-3: new high speed USB device using ehci_hcd and address 7
Jun  6 18:00:15 Deathwish kernel: usb 1-3: configuration #1 chosen from 1 choice
Jun  6 18:00:15 Deathwish kernel: em28xx new video device (2304:0227): interface 0, class 255
Jun  6 18:00:15 Deathwish kernel: em28xx Doesn't have usb audio class
Jun  6 18:00:15 Deathwish kernel: em28xx #0: Alternate settings: 8
Jun  6 18:00:15 Deathwish kernel: em28xx #0: Alternate setting 0, max size= 0
Jun  6 18:00:15 Deathwish kernel: em28xx #0: Alternate setting 1, max size= 0
Jun  6 18:00:15 Deathwish kernel: em28xx #0: Alternate setting 2, max size= 1448
Jun  6 18:00:15 Deathwish kernel: em28xx #0: Alternate setting 3, max size= 2048
Jun  6 18:00:15 Deathwish kernel: em28xx #0: Alternate setting 4, max size= 2304
Jun  6 18:00:15 Deathwish kernel: em28xx #0: Alternate setting 5, max size= 2580
Jun  6 18:00:15 Deathwish kernel: em28xx #0: Alternate setting 6, max size= 2892
Jun  6 18:00:15 Deathwish kernel: em28xx #0: Alternate setting 7, max size= 3072
Jun  6 18:00:15 Deathwish kernel: em28xx #0: chip ID is em2882/em2883
Jun  6 18:00:15 Deathwish kernel: tuner' 1-0061: chip found @ 0xc2 (em28xx #0)
Jun  6 18:00:15 Deathwish kernel: em28xx #0: i2c eeprom 00: 1a eb 67 95 04 23 27 02 d0 12 5c 03 8e 16 a4 1c
Jun  6 18:00:15 Deathwish kernel: em28xx #0: i2c eeprom 10: 6a 24 27 57 46 07 01 00 00 00 00 00 00 00 00 00
Jun  6 18:00:15 Deathwish kernel: em28xx #0: i2c eeprom 20: 46 00 01 00 f0 10 02 00 b8 00 00 00 5b 1c 00 00
Jun  6 18:00:15 Deathwish kernel: em28xx #0: i2c eeprom 30: 00 00 20 40 20 80 02 20 01 01 00 00 00 00 00 00
Jun  6 18:00:15 Deathwish kernel: em28xx #0: i2c eeprom 40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Jun  6 18:00:15 Deathwish kernel: em28xx #0: i2c eeprom 50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Jun  6 18:00:15 Deathwish kernel: em28xx #0: i2c eeprom 60: 00 00 00 00 00 00 00 00 00 00 24 03 50 00 69 00
Jun  6 18:00:15 Deathwish kernel: em28xx #0: i2c eeprom 70: 6e 00 6e 00 61 00 63 00 6c 00 65 00 20 00 53 00
Jun  6 18:00:15 Deathwish kernel: em28xx #0: i2c eeprom 80: 79 00 73 00 74 00 65 00 6d 00 73 00 00 00 16 03
Jun  6 18:00:15 Deathwish kernel: em28xx #0: i2c eeprom 90: 50 00 43 00 54 00 56 00 20 00 38 00 30 00 30 00
Jun  6 18:00:15 Deathwish kernel: em28xx #0: i2c eeprom a0: 65 00 00 00 1c 03 30 00 37 00 30 00 38 00 30 00
Jun  6 18:00:15 Deathwish kernel: em28xx #0: i2c eeprom b0: 31 00 30 00 36 00 31 00 33 00 37 00 33 00 00 00
Jun  6 18:00:15 Deathwish kernel: em28xx #0: i2c eeprom c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Jun  6 18:00:15 Deathwish kernel: em28xx #0: i2c eeprom d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Jun  6 18:00:15 Deathwish kernel: em28xx #0: i2c eeprom e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 54 00
Jun  6 18:00:15 Deathwish kernel: em28xx #0: i2c eeprom f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Jun  6 18:00:15 Deathwish kernel: EEPROM ID= 0x9567eb1a, hash = 0x2de5f5bf
Jun  6 18:00:15 Deathwish kernel: Vendor/Product ID= 2304:0227
Jun  6 18:00:15 Deathwish kernel: AC97 audio (5 sample rates)
Jun  6 18:00:15 Deathwish kernel: 500mA max power
Jun  6 18:00:15 Deathwish kernel: Table at 0x27, strings=0x168e, 0x1ca4, 0x246a
Jun  6 18:00:15 Deathwish kernel: xc2028 1-0061: creating new instance
Jun  6 18:00:15 Deathwish kernel: xc2028 1-0061: type set to XCeive xc2028/xc3028 tuner
Jun  6 18:00:15 Deathwish kernel: xc2028 1-0061: Loading 80 firmware images from xc3028-v27.fw, type: xc2028 firmware, ver 2.7
Jun  6 18:00:15 Deathwish kernel: xc2028 1-0061: Loading firmware for type=BASE MTS (5), id 0000000000000000.
Jun  6 18:00:16 Deathwish kernel: xc2028 1-0061: Loading firmware for type=MTS (4), id 000000000000b700.
Jun  6 18:00:16 Deathwish kernel: tvp5150 1-005c: tvp5150am1 detected.
Jun  6 18:00:17 Deathwish kernel: em28xx #0: V4L2 device registered as /dev/video0 and /dev/vbi0
Jun  6 18:00:17 Deathwish kernel: em28xx-audio.c: probing for em28x1 non standard usbaudio
Jun  6 18:00:17 Deathwish kernel: em28xx-audio.c: Copyright (C) 2006 Markus Rechberger
Jun  6 18:00:17 Deathwish kernel: proc_dir_entry 'Em28xx Audio' already registered
Jun  6 18:00:17 Deathwish kernel: Pid: 135, comm: khubd Not tainted 2.6.25 #1
Jun  6 18:00:17 Deathwish kernel:  [<c04935cf>] proc_register+0xa3/0xfd
Jun  6 18:00:17 Deathwish kernel:  [<c04937ce>] proc_symlink+0x55/0x70
Jun  6 18:00:17 Deathwish kernel:  [<f899d848>] snd_info_card_register+0x31/0x47 [snd]
Jun  6 18:00:17 Deathwish kernel:  [<f899c9e8>] snd_card_register+0x1af/0x204 [snd]
Jun  6 18:00:17 Deathwish kernel:  [<f9a15144>] em28xx_audio_init+0xf2/0x120 [em28xx_alsa]
Jun  6 18:00:17 Deathwish kernel:  [<f9a27a7c>] em28xx_usb_probe+0x607/0x6a0 [em28xx]
Jun  6 18:00:17 Deathwish kernel:  [<c054c80f>] usb_autopm_do_device+0xaa/0xb1
Jun  6 18:00:17 Deathwish kernel:  [<c054d1be>] usb_probe_interface+0xba/0xfa
Jun  6 18:00:17 Deathwish kernel:  [<c05382fd>] driver_probe_device+0xb5/0x126
Jun  6 18:00:17 Deathwish kernel:  [<c053836e>] __device_attach+0x0/0x5
Jun  6 18:00:17 Deathwish kernel:  [<c05377c6>] bus_for_each_drv+0x36/0x5e
Jun  6 18:00:17 Deathwish kernel:  [<c05383fa>] device_attach+0x6c/0x7f
Jun  6 18:00:17 Deathwish kernel:  [<c053836e>] __device_attach+0x0/0x5
Jun  6 18:00:17 Deathwish kernel:  [<c0537763>] bus_attach_device+0x25/0x52
Jun  6 18:00:17 Deathwish kernel:  [<c053697b>] device_add+0x30b/0x45f
Jun  6 18:00:17 Deathwish kernel:  [<c054bc16>] usb_set_configuration+0x3c4/0x432
Jun  6 18:00:17 Deathwish kernel:  [<c0551dc4>] generic_probe+0x48/0x7c
Jun  6 18:00:17 Deathwish kernel:  [<c054cfd8>] usb_probe_device+0x2f/0x34
Jun  6 18:00:17 Deathwish kernel:  [<c05382fd>] driver_probe_device+0xb5/0x126
Jun  6 18:00:17 Deathwish kernel:  [<c053836e>] __device_attach+0x0/0x5
Jun  6 18:00:17 Deathwish kernel:  [<c05377c6>] bus_for_each_drv+0x36/0x5e
Jun  6 18:00:17 Deathwish kernel:  [<c05383fa>] device_attach+0x6c/0x7f
Jun  6 18:00:17 Deathwish kernel:  [<c053836e>] __device_attach+0x0/0x5
Jun  6 18:00:17 Deathwish kernel:  [<c0537763>] bus_attach_device+0x25/0x52
Jun  6 18:00:17 Deathwish kernel:  [<c053697b>] device_add+0x30b/0x45f
Jun  6 18:00:17 Deathwish kernel:  [<c054c80f>] usb_autopm_do_device+0xaa/0xb1
Jun  6 18:00:17 Deathwish kernel:  [<c05477e1>] usb_new_device+0x4a/0x7c
Jun  6 18:00:17 Deathwish kernel:  [<c0548ac8>] hub_thread+0x687/0xa4b
Jun  6 18:00:17 Deathwish kernel:  [<c0429e51>] autoremove_wake_function+0x0/0x2d
Jun  6 18:00:17 Deathwish kernel:  [<c0548441>] hub_thread+0x0/0xa4b
Jun  6 18:00:17 Deathwish kernel:  [<c0429d6f>] kthread+0x36/0x5b
Jun  6 18:00:17 Deathwish kernel:  [<c0429d39>] kthread+0x0/0x5b
Jun  6 18:00:17 Deathwish kernel:  [<c04051cf>] kernel_thread_helper+0x7/0x10
Jun  6 18:00:17 Deathwish kernel:  =======================
Jun  6 18:00:17 Deathwish kernel: xc2028 1-0061: attaching existing instance
Jun  6 18:00:17 Deathwish kernel: xc2028 1-0061: type set to XCeive xc2028/xc3028 tuner
Jun  6 18:00:17 Deathwish kernel: em28xx #0/2: xc3028 attached
Jun  6 18:00:17 Deathwish kernel: DVB: registering new adapter (em28xx #0)
Jun  6 18:00:17 Deathwish kernel: DVB: registering frontend 2 (LG Electronics LGDT3303 VSB/QAM Frontend)...
Jun  6 18:00:17 Deathwish kernel: Successfully loaded em28xx-dvb
Jun  6 18:00:17 Deathwish kernel: em28xx #0: Found Pinnacle PCTV HD Pro Stick

=======
at which point both devices have /dev/dvb/adapter entries.

It would seem that the code as it is is not multiple-device friendly.

please use the driver which is offered on mcentral.de and supported by Empiatech, there's also a mailinglist available which helps solving various problems.

regards,
Markus

_______________________________________________
linux-dvb mailing list
[email protected]
http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb

#3 lore raw
In reply to Sneake

Hello there,

Quoted 10 lines · Sneake

I have 2 em28xx USB capture devices - a Hauppauge Win-HVR-950 and a Pinnacle HD stick:

Bus 001 Device 007: ID 2304:0227 Pinnacle Systems, Inc. [hex] Pinnacle TV for Mac, HD Stick Bus 001 Device 004: ID 2040:6513 Hauppauge

Both of which are em28xx devices.
I am running the latest HG pull of the v4l-dvb drivers as of today (6th June 2008).

From a cold start, both devices are seen by the USB probe, however only one gets a /dev/dvb /adapter entry. If I remove the one that did not, I get the following warning:

I was able to reproduce the behavior you were seeing (I actually have the exact same two devices).

Attached is a patch that will address the problem (based off of the latest hg). There was a race condition in the module loading process which caused only the last device to be initialized by the driver.

I will submit the patch to Mauro for inclusion.

Thanks for your help,

Devin

Signature · 3 lines
Devin J. Heitmueller
http://www.devinheitmueller.com
AIM: devinheitmueller

From: Devin Heitmueller <[email protected]>

em28xx-video.c
- Properly handle loading of the module when multiple devices are already connected (such as at bootup). Before we were only calling dvb_init() against the last device in the list, so while we were handling subsequent adds properly, if there were multiple devices present on driver load, everybody except the last device would not get initialized.

linux/drivers/media/video/em28xx/em28xx-video.c +10 -14
diff -r 3f7d664a285d linux/drivers/media/video/em28xx/em28xx-video.c
@@ -1934,32 +1934,28 @@ static DEFINE_MUTEX(em28xx_extension_dev
 
 int em28xx_register_extension(struct em28xx_ops *ops)
 {
-	struct em28xx *h, *dev = NULL;
-
-	list_for_each_entry(h, &em28xx_devlist, devlist)
-		dev = h;
+	struct em28xx *dev = NULL;
 
 	mutex_lock(&em28xx_extension_devlist_lock);
 	list_add_tail(&ops->next, &em28xx_extension_devlist);
-	if (dev)
-		ops->init(dev);
-
+	list_for_each_entry(dev, &em28xx_devlist, devlist) {
+		if (dev)
+			ops->init(dev);
+	}
 	printk(KERN_INFO "Em28xx: Initialized (%s) extension\n", ops->name);
 	mutex_unlock(&em28xx_extension_devlist_lock);
-
 	return 0;
 }
 EXPORT_SYMBOL(em28xx_register_extension);
 
 void em28xx_unregister_extension(struct em28xx_ops *ops)
 {
-	struct em28xx *h, *dev = NULL;
+	struct em28xx *dev = NULL;
 
-	list_for_each_entry(h, &em28xx_devlist, devlist)
-		dev = h;
-
-	if (dev)
-		ops->fini(dev);
+	list_for_each_entry(dev, &em28xx_devlist, devlist) {
+		if (dev)
+			ops->fini(dev);
+	}
 
 	mutex_lock(&em28xx_extension_devlist_lock);
 	printk(KERN_INFO "Em28xx: Removed (%s) extension\n", ops->name);

_______________________________________________
linux-dvb mailing list
[email protected]
http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb