GNOME Bugzilla – Bug 473038
If two v4l devices exist there is no way to choose the correct one
Last modified: 2008-08-05 14:16:06 UTC
Please describe the problem: I have a TV card and a webcam installed. Cheese connects to my TV card (/dev/video0) instead of the webcam (/d.ev/video1). There is no way to change that (command line, rc file or gnome setting) Steps to reproduce: 1. install a TV card and a web-cam 2. launch cheese 3. Actual results: I see the tv program (silent) instead of what the webcam is pointing at. Expected results: See what the webcam is pointing at. Does this happen every time? Yes. Other information: This may have to do with the priority of v4l devices. In my case tv - /dev/video0, webcam - /dev/video1. It may be that if the order was reversed, cheese would grab the webcam. Either way it should be possible to select the video source in the preferences.
thanks for reporting this!
Oh, and please use HAL for device discovery. Just look for all devices with a capability of "video4linux". However you'd have to filter out "vbi" devices. Which however, might be something that should better be filtered out by HAL itself.
please execute "hal-device" on a terminal and paste your relevant output (video4linux) here. (it should start with a number and end with an empty line ;) )
This is the tv card: ------------------------------ 656: 25: udi = '/org/freedesktop/Hal/devices/pci_14f1_8800_video4linux_1' 657: linux.device_file = '/dev/video0' (string) 658: video4linux.device = '/dev/video0' (string) 659: info.capabilities = { 'video4linux' } (string list) 660: info.udi = '/org/freedesktop/Hal/devices/pci_14f1_8800_video4linux_1' (string) 661: linux.subsystem = 'video4linux' (string) 662: info.product = 'Video Device' (string) 663: linux.hotplug_type = 2 (0x2) (int) 664: linux.sysfs_path = '/sys/class/video4linux/video0' (string) 665: info.category = 'video4linux' (string) 666: info.parent = '/org/freedesktop/Hal/devices/pci_14f1_8800' (string) As it turns out this is the Logitech USB webcam: ------------------------------ 1: 0: udi = '/org/freedesktop/Hal/devices/usb_device_46d_870_noserial_usbraw' 2: linux.device_file = '/dev/bus/usb/005/003' (string) 3: usbraw.device = '/dev/bus/usb/005/003' (string) 4: info.capabilities = { 'usbraw' } (string list) 5: info.udi = '/org/freedesktop/Hal/devices/usb_device_46d_870_noserial_usbraw' (string) 6: linux.subsystem = 'usb_device' (string) 7: info.product = 'USB Raw Device Access' (string) 8: linux.hotplug_type = 2 (0x2) (int) 9: linux.sysfs_path = '/sys/class/usb_device/usbdev5.3' (string) 10: info.category = 'usbraw' (string) 11: info.parent = '/org/freedesktop/Hal/devices/usb_device_46d_870_noserial' (string) 12: 13: 1: udi = '/org/freedesktop/Hal/devices/usb_device_ffffffff_ffffffff_noserial' 14: usb.bus_number = 5 (0x5) (int) 15: usb.linux.device_number = 3 (0x3) (int) 16: info.bus = 'usb' (string) 17: usb.device_subclass = 255 (0xff) (int) 18: usb.is_self_powered = false (bool) 19: info.udi = '/org/freedesktop/Hal/devices/usb_device_ffffffff_ffffffff_noserial' (string) 20: usb.speed = 12 (double) 21: linux.subsystem = 'usb' (string) 22: usb.device_class = 255 (0xff) (int) 23: usb.version_bcd = 272 (0x110) (int) 24: usb.device_protocol = 255 (0xff) (int) 25: info.subsystem = 'usb' (string) 26: usb.max_power = 90 (0x5a) (int) 27: info.product = 'USB Interface' (string) 28: linux.hotplug_type = 2 (0x2) (int) 29: linux.sysfs_path = '/sys/devices/pci0000:00/0000:00:0a.1/usb5/5-2/5-2:1.0' (string) 30: usb.version = 1.1 (double) 31: usb.device_revision_bcd = 256 (0x100) (int) 32: usb.product_id = 2160 (0x870) (int) 33: usb.speed_bcd = 4608 (0x1200) (int) 34: usb.linux.sysfs_path = '/sys/devices/pci0000:00/0000:00:0a.1/usb5/5-2/5-2:1.0' (string) 35: usb.configuration_value = 1 (0x1) (int) 36: usb.vendor_id = 1133 (0x46d) (int) 37: usb.num_ports = 0 (0x0) (int) 38: info.parent = '/org/freedesktop/Hal/devices/usb_device_46d_870_noserial' (string) 39: usb.num_interfaces = 1 (0x1) (int) 40: usb.can_wake_up = false (bool) 41: usb.product = 'USB Interface' (string) 42: usb.num_configurations = 1 (0x1) (int) 43: info.linux.driver = 'quickcam' (string) 44: 45: 2: udi = '/org/freedesktop/Hal/devices/usb_device_46d_870_noserial' 46: usb_device.num_interfaces = 1 (0x1) (int) 47: usb_device.device_class = 255 (0xff) (int) 48: usb_device.version = 1.1 (double) 49: usb_device.device_revision_bcd = 256 (0x100) (int) 50: usb_device.version_bcd = 272 (0x110) (int) 51: info.bus = 'usb_device' (string) 52: usb_device.device_subclass = 255 (0xff) (int) 53: usb_device.speed_bcd = 4608 (0x1200) (int) 54: usb_device.can_wake_up = false (bool) 55: usb_device.bus_number = 5 (0x5) (int) 56: usb_device.configuration_value = 1 (0x1) (int) 57: usb_device.product = 'Camera' (string) 58: usb_device.speed = 12 (double) 59: info.udi = '/org/freedesktop/Hal/devices/usb_device_46d_870_noserial' (string) 60: usb_device.max_power = 90 (0x5a) (int) 61: linux.subsystem = 'usb' (string) 62: usb_device.device_protocol = 255 (0xff) (int) 63: info.vendor = 'Unknown (0x046d)' (string) 64: info.subsystem = 'usb_device' (string) 65: usb_device.num_configurations = 1 (0x1) (int) 66: info.product = 'Camera' (string) 67: linux.hotplug_type = 2 (0x2) (int) 68: linux.sysfs_path = '/sys/devices/pci0000:00/0000:00:0a.1/usb5/5-2' (string) 69: usb_device.vendor_id = 1133 (0x46d) (int) 70: usb_device.num_ports = 0 (0x0) (int) 71: usb_device.is_self_powered = false (bool) 72: usb_device.linux.sysfs_path = '/sys/devices/pci0000:00/0000:00:0a.1/usb5/5-2' (string) 73: usb_device.product_id = 2160 (0x870) (int) 74: info.parent = '/org/freedesktop/Hal/devices/usb_device_0_0_0000_00_0a_1' (string) 75: info.linux.driver = 'usb' (string) 76: usb_device.linux.device_number = 3 (0x3) (int)
It seems HAL does not recognize your webcam at all. It's missing both video4linux.device and info.capabilities properties. Are you sure all needed drivers are loaded? Did the camera actually work at the time of taking this log? We need a more complete log (with proper capabilities advertised) before being able to filter out your TV card.
What kind of log do you need ?
The HAL dump as above but containing proper capabilities and video4linux keys for camera.
Well in fact I have the same sort of output from hal-device : video4linux.device = '/dev/video0' (string) info.capabilities = { 'video4linux' } (string list) video4linux.device = '/dev/video1' (string) info.capabilities = { 'video4linux' } (string list) And my webcam work well with camorama -d /dev/video1
I have exactly the same problem : You can see here the 3 v4l devices named with udev rules, 2 for TV (/dev/videotv and /dev/vbi0) and one for Webcam (/dev/webcam) $>lshal | grep video4linux udi = '/org/freedesktop/Hal/devices/pci_109e_36e_video4linux_0' info.capabilities = {'video4linux'} (string list) info.category = 'video4linux' (string) info.udi = '/org/freedesktop/Hal/devices/pci_109e_36e_video4linux_0' (string) linux.subsystem = 'video4linux' (string) linux.sysfs_path = '/sys/class/video4linux/video1' (string) video4linux.device = '/dev/videotv' (string) udi = '/org/freedesktop/Hal/devices/pci_109e_36e_video4linux' info.capabilities = {'video4linux'} (string list) info.category = 'video4linux' (string) info.udi = '/org/freedesktop/Hal/devices/pci_109e_36e_video4linux' (string) linux.subsystem = 'video4linux' (string) linux.sysfs_path = '/sys/class/video4linux/vbi0' (string) video4linux.device = '/dev/vbi0' (string) udi = '/org/freedesktop/Hal/devices/usb_device_471_311_01690000A5000000_video4linux' info.capabilities = {'video4linux'} (string list) info.category = 'video4linux' (string) info.udi = '/org/freedesktop/Hal/devices/usb_device_471_311_01690000A5000000_video4linux' (string) linux.subsystem = 'video4linux' (string) linux.sysfs_path = '/sys/class/video4linux/video0' (string) video4linux.device = '/dev/webcam' (string)
Elrik, did you write your own udev rules for renaming the webcam video device to /dev/webcam? You shouldn't been doing that. Since HAL doesn't distuingish the vbi devices from the normal devices by any property in the dvice tree, by renaming your devices you make it very difficult to tell the difference between a vbi and a video device. Instead, use symlinks (SYMLINK=), but keep the kernel name intact! Daniel, until sysfs/HAL is able to properly recognize vbi devices you should be checking whether video4linux.device starts with /dev/video, and ignore all devices that don't. It's a pity that sysfs/HAL don't make a sensible "info.product" field avalable for video devices.
(In reply to comment #10) > Elrik, did you write your own udev rules for renaming the webcam video device > to /dev/webcam? > > You shouldn't been doing that. Since HAL doesn't distuingish the vbi devices > from the normal devices by any property in the dvice tree, by renaming your > devices you make it very difficult to tell the difference between a vbi and a > video device. > > Instead, use symlinks (SYMLINK=), but keep the kernel name intact! > I have to write my own udev rules because if my webcam isn't plugged at boot time, my tvcard is video0, else it's video1 ! I use also SYMLINK to make the video0->/dev/webcam and video1->/dev/videotv So I have always video1 for the TV and video0 for the cam and then Cheese works !
Then it seems we have a problem here. I'd like to get video device support integrated with HAL (and I'm working on a script that generates useful FDI files but it needs to be finished first and the output needs to be merged with hal-info).
(In reply to comment #0) > Please describe the problem: > I have a TV card and a webcam installed. Cheese connects to my TV card > (/dev/video0) instead of the webcam (/d.ev/video1). There is no way to change > that (command line, rc file or gnome setting) > > Steps to reproduce: > 1. install a TV card and a web-cam > 2. launch cheese > 3. > > > Actual results: > I see the tv program (silent) instead of what the webcam is pointing at. > > Expected results: > See what the webcam is pointing at. > > Does this happen every time? > Yes. > > Other information: > This may have to do with the priority of v4l devices. In my case tv - > /dev/video0, > webcam - /dev/video1. It may be that if the order was reversed, cheese would > grab the webcam. Either way it should be possible to select the video source in > the preferences. > I have the inverse problem. Cheese works well, but I can't get the TVTime or any other TV application to show the TV, because it will not change the input video source. Instead, it is stuck with a message Format unsupported by Logitech QuickCam EC Cannot open capture device /dev/video0 " hal-device says: info.subsystem = 'usb' (string) usb.device_class = 9 (0x9) (int) usb.can_wake_up = true (bool) usb.linux.sysfs_path = '/sys/devices/pci0000:00/0000:00:10.1/usb2/2-0:1.0' (string) usb.serial = '0000:00:10.1' (string) usb.speed = 12 (double) usb.num_ports = 2 (0x2) (int) usb.speed_bcd = 4608 (0x1200) (int) usb.max_power = 0 (0x0) (int) info.udi = '/org/freedesktop/Hal/devices/usb_device_0_0_0000_00_10_1_if0' (string) info.bus = 'usb' (string) linux.hotplug_type = 2 (0x2) (int) usb.interface.number = 0 (0x0) (int) linux.sysfs_path = '/sys/devices/pci0000:00/0000:00:10.1/usb2/2-0:1.0' (string) usb.product_id = 0 (0x0) (int) usb.interface.protocol = 0 (0x0) (int) 109: udi = '/org/freedesktop/Hal/devices/usb_device_0_0_0000_00_10_1' linux.subsystem = 'usb' (string) info.product = 'UHCI Host Controller' (string) usb_device.device_revision_bcd = 518 (0x206) (int) usb_device.product = 'UHCI Host Controller' (string) usb_device.product_id = 0 (0x0) (int) usb_device.speed = 12 (double) usb_device.vendor = 'Linux 2.6.22-14-generic uhci_hcd' (string) usb_device.can_wake_up = true (bool) usb_device.configuration_value = 1 (0x1) (int) usb_device.linux.device_number = 1 (0x1) (int) info.linux.driver = 'usb' (string) usb_device.serial = '0000:00:10.1' (string) usb_device.device_class = 9 (0x9) (int) info.parent = '/org/freedesktop/Hal/devices/pci_1106_3038_0' (string) usb_device.bus_number = 2 (0x2) (int) usb_device.device_protocol = 0 (0x0) (int) usb_device.is_self_powered = true (bool) info.subsystem = 'usb_device' (string) info.vendor = 'Linux 2.6.22-14-generic uhci_hcd' (string) usb_device.version = 1.1 (double) usb_device.num_interfaces = 1 (0x1) (int) usb_device.vendor_id = 0 (0x0) (int) usb_device.speed_bcd = 4608 (0x1200) (int) usb_device.version_bcd = 272 (0x110) (int) info.udi = '/org/freedesktop/Hal/devices/usb_device_0_0_0000_00_10_1' (string) usb_device.linux.sysfs_path = '/sys/devices/pci0000:00/0000:00:10.1/usb2' (string) usb_device.num_configurations = 1 (0x1) (int) info.bus = 'usb_device' (string) linux.device_file = '/dev/usb2' (string) usb_device.num_ports = 2 (0x2) (int) usb_device.max_power = 0 (0x0) (int) linux.hotplug_type = 2 (0x2) (int) usb_device.device_subclass = 0 (0x0) (int) linux.sysfs_path = '/sys/devices/pci0000:00/0000:00:10.1/usb2' (string) 110: udi = '/org/freedesktop/Hal/devices/pci_1106_3038_0' pci.product = 'VT82xxxxx UHCI USB 1.1 Controller' (string) pci.subsys_vendor = 'Lenovo' (string) info.bus = 'pci' (string) pci.device_protocol = 0 (0x0) (int) info.udi = '/org/freedesktop/Hal/devices/pci_1106_3038_0' (string) pci.linux.sysfs_path = '/sys/devices/pci0000:00/0000:00:10.1' (string) pci.subsys_product_id = 4104 (0x1008) (int) linux.subsystem = 'pci' (string) info.vendor = 'VIA Technologies, Inc.' (string) info.subsystem = 'pci' (string) pci.product_id = 12344 (0x3038) (int) pci.vendor = 'VIA Technologies, Inc.' (string) info.product = 'VT82xxxxx UHCI USB 1.1 Controller' (string) linux.hotplug_type = 2 (0x2) (int) linux.sysfs_path = '/sys/devices/pci0000:00/0000:00:10.1' (string) pci.vendor_id = 4358 (0x1106) (int) info.parent = '/org/freedesktop/Hal/devices/computer' (string) info.linux.driver = 'uhci_hcd' (string) pci.subsys_vendor_id = 6058 (0x17aa) (int) pci.device_class = 12 (0xc) (int) pci.device_subclass = 3 (0x3) (int) 111: udi = '/org/freedesktop/Hal/devices/usb_device_0_0_0000_00_10_0_if0' usb.version_bcd = 272 (0x110) (int) usb.is_self_powered = true (bool) usb.linux.device_number = 1 (0x1) (int) usb.product = 'USB Hub Interface' (string) usb.device_protocol = 0 (0x0) (int) linux.subsystem = 'usb' (string) usb.device_revision_bcd = 518 (0x206) (int) info.product = 'USB Hub Interface' (string) usb.bus_number = 1 (0x1) (int) usb.interface.class = 9 (0x9) (int) usb.configuration_value = 1 (0x1) (int) info.linux.driver = 'hub' (string) usb.num_interfaces = 1 (0x1) (int) info.parent = '/org/freedesktop/Hal/devices/usb_device_0_0_0000_00_10_0' (string) usb.interface.subclass = 0 (0x0) (int) usb.num_configurations = 1 (0x1) (int) usb.device_subclass = 0 (0x0) (int) usb.version = 1.1 (double) usb.vendor_id = 0 (0x0) (int) usb.vendor = 'Linux 2.6.22-14-generic uhci_hcd' (string) info.subsystem = 'usb' (string) usb.device_class = 9 (0x9) (int) usb.can_wake_up = true (bool) usb.linux.sysfs_path = '/sys/devices/pci0000:00/0000:00:10.0/usb1/1-0:1.0' (string) usb.serial = '0000:00:10.0' (string) usb.speed = 12 (double) usb.num_ports = 2 (0x2) (int) usb.speed_bcd = 4608 (0x1200) (int) usb.max_power = 0 (0x0) (int) info.udi = '/org/freedesktop/Hal/devices/usb_device_0_0_0000_00_10_0_if0' (string) info.bus = 'usb' (string) linux.hotplug_type = 2 (0x2) (int) usb.interface.number = 0 (0x0) (int) linux.sysfs_path = '/sys/devices/pci0000:00/0000:00:10.0/usb1/1-0:1.0' (string) usb.product_id = 0 (0x0) (int) usb.interface.protocol = 0 (0x0) (int) 112: udi = '/org/freedesktop/Hal/devices/usb_device_0_0_0000_00_10_0' linux.subsystem = 'usb' (string) info.product = 'UHCI Host Controller' (string) usb_device.device_revision_bcd = 518 (0x206) (int) usb_device.product = 'UHCI Host Controller' (string) usb_device.product_id = 0 (0x0) (int) usb_device.speed = 12 (double) usb_device.vendor = 'Linux 2.6.22-14-generic uhci_hcd' (string) usb_device.can_wake_up = true (bool) usb_device.configuration_value = 1 (0x1) (int) usb_device.linux.device_number = 1 (0x1) (int) info.linux.driver = 'usb' (string) usb_device.serial = '0000:00:10.0' (string) usb_device.device_class = 9 (0x9) (int) info.parent = '/org/freedesktop/Hal/devices/pci_1106_3038' (string) usb_device.bus_number = 1 (0x1) (int) usb_device.device_protocol = 0 (0x0) (int) usb_device.is_self_powered = true (bool) info.subsystem = 'usb_device' (string) info.vendor = 'Linux 2.6.22-14-generic uhci_hcd' (string) usb_device.version = 1.1 (double) usb_device.num_interfaces = 1 (0x1) (int) usb_device.vendor_id = 0 (0x0) (int) usb_device.speed_bcd = 4608 (0x1200) (int) usb_device.version_bcd = 272 (0x110) (int) info.udi = '/org/freedesktop/Hal/devices/usb_device_0_0_0000_00_10_0' (string) usb_device.linux.sysfs_path = '/sys/devices/pci0000:00/0000:00:10.0/usb1' (string) usb_device.num_configurations = 1 (0x1) (int) info.bus = 'usb_device' (string) linux.device_file = '/dev/usb1' (string) usb_device.num_ports = 2 (0x2) (int) usb_device.max_power = 0 (0x0) (int) linux.hotplug_type = 2 (0x2) (int) usb_device.device_subclass = 0 (0x0) (int) linux.sysfs_path = '/sys/devices/pci0000:00/0000:00:10.0/usb1' (string) 113: udi = '/org/freedesktop/Hal/devices/pci_1106_3038' pci.product = 'VT82xxxxx UHCI USB 1.1 Controller' (string) pci.subsys_vendor = 'Lenovo' (string) info.bus = 'pci' (string) pci.device_protocol = 0 (0x0) (int) info.udi = '/org/freedesktop/Hal/devices/pci_1106_3038' (string) pci.linux.sysfs_path = '/sys/devices/pci0000:00/0000:00:10.0' (string) pci.subsys_product_id = 4104 (0x1008) (int) linux.subsystem = 'pci' (string) info.vendor = 'VIA Technologies, Inc.' (string) info.subsystem = 'pci' (string) pci.product_id = 12344 (0x3038) (int) pci.vendor = 'VIA Technologies, Inc.' (string) info.product = 'VT82xxxxx UHCI USB 1.1 Controller' (string) linux.hotplug_type = 2 (0x2) (int) linux.sysfs_path = '/sys/devices/pci0000:00/0000:00:10.0' (string) pci.vendor_id = 4358 (0x1106) (int) info.parent = '/org/freedesktop/Hal/devices/computer' (string) info.linux.driver = 'uhci_hcd' (string) pci.subsys_vendor_id = 6058 (0x17aa) (int) pci.device_class = 12 (0xc) (int) pci.device_subclass = 3 (0x3) (int) 114: udi = '/org/freedesktop/Hal/devices/pci_1106_571_ide_0_0' info.bus = 'ide' (string) ide.channel = 0 (0x0) (int) info.udi = '/org/freedesktop/Hal/devices/pci_1106_571_ide_0_0' (string) linux.subsystem = 'ide' (string) ide.host = 0 (0x0) (int) info.subsystem = 'ide' (string) info.product = 'IDE device (master)' (string) linux.hotplug_type = 2 (0x2) (int) linux.sysfs_path = '/sys/devices/pci0000:00/0000:00:0f.1/ide0/0.0' (string) info.parent = '/org/freedesktop/Hal/devices/pci_1106_571' (string) info.linux.driver = 'ide-cdrom' (string) 115: udi = '/org/freedesktop/Hal/devices/pci_1106_571' pci.product = 'VT82C586A/B/VT82C686/A/B/VT823x/A/C PIPC Bus Master IDE' (string) pci.subsys_vendor = 'Lenovo' (string) info.bus = 'pci' (string) pci.device_protocol = 138 (0x8a) (int) info.udi = '/org/freedesktop/Hal/devices/pci_1106_571' (string) pci.linux.sysfs_path = '/sys/devices/pci0000:00/0000:00:0f.1' (string) pci.subsys_product_id = 4104 (0x1008) (int) linux.subsystem = 'pci' (string) info.vendor = 'VIA Technologies, Inc.' (string) info.subsystem = 'pci' (string) pci.product_id = 1393 (0x571) (int) pci.vendor = 'VIA Technologies, Inc.' (string) info.product = 'VT82C586A/B/VT82C686/A/B/VT823x/A/C PIPC Bus Master IDE' (string) linux.hotplug_type = 2 (0x2) (int) linux.sysfs_path = '/sys/devices/pci0000:00/0000:00:0f.1' (string) pci.vendor_id = 4358 (0x1106) (int) info.parent = '/org/freedesktop/Hal/devices/computer' (string) info.linux.driver = 'VIA_IDE' (string) pci.subsys_vendor_id = 6058 (0x17aa) (int) pci.device_class = 1 (0x1) (int) pci.device_subclass = 1 (0x1) (int) 116: udi = '/org/freedesktop/Hal/devices/pci_1106_3149_scsi_host_scsi_device_lun0' scsi.vendor = 'ATA' (string) scsi.bus = 0 (0x0) (int) info.bus = 'scsi' (string) scsi.target = 0 (0x0) (int) scsi.lun = 0 (0x0) (int) info.udi = '/org/freedesktop/Hal/devices/pci_1106_3149_scsi_host_scsi_device_lun0' (string) linux.subsystem = 'scsi' (string) info.subsystem = 'scsi' (string) info.product = 'SCSI Device' (string) scsi.model = 'WDC WD2500JS-08N' (string) linux.hotplug_type = 2 (0x2) (int) linux.sysfs_path = '/sys/devices/pci0000:00/0000:00:0f.0/host0/target0:0:0/0:0:0:0' (string) scsi.host = 0 (0x0) (int) scsi.type = 'disk' (string) info.parent = '/org/freedesktop/Hal/devices/pci_1106_3149_scsi_host' (string) info.linux.driver = 'sd' (string) 117: udi = '/org/freedesktop/Hal/devices/pci_1106_3149_scsi_host' scsi_host.host = 0 (0x0) (int) info.capabilities = { 'scsi_host' } (string list) info.udi = '/org/freedesktop/Hal/devices/pci_1106_3149_scsi_host' (string) linux.subsystem = 'scsi_host' (string) info.product = 'SCSI Host Adapter' (string) linux.hotplug_type = 2 (0x2) (int) linux.sysfs_path = '/sys/devices/pci0000:00/0000:00:0f.0/host0' (string) info.category = 'scsi_host' (string) info.parent = '/org/freedesktop/Hal/devices/pci_1106_3149' (string) 118: udi = '/org/freedesktop/Hal/devices/pci_1106_3149' pci.product = 'VIA VT6420 SATA RAID Controller' (string) pci.subsys_vendor = 'Lenovo' (string) info.bus = 'pci' (string) pci.device_protocol = 143 (0x8f) (int) info.udi = '/org/freedesktop/Hal/devices/pci_1106_3149' (string) pci.linux.sysfs_path = '/sys/devices/pci0000:00/0000:00:0f.0' (string) pci.subsys_product_id = 4104 (0x1008) (int) linux.subsystem = 'pci' (string) info.vendor = 'VIA Technologies, Inc.' (string) info.subsystem = 'pci' (string) pci.product_id = 12617 (0x3149) (int) pci.vendor = 'VIA Technologies, Inc.' (string) info.product = 'VIA VT6420 SATA RAID Controller' (string) linux.hotplug_type = 2 (0x2) (int) linux.sysfs_path = '/sys/devices/pci0000:00/0000:00:0f.0' (string) pci.vendor_id = 4358 (0x1106) (int) info.parent = '/org/freedesktop/Hal/devices/computer' (string) info.linux.driver = 'sata_via' (string) pci.subsys_vendor_id = 6058 (0x17aa) (int) pci.device_class = 1 (0x1) (int) pci.device_subclass = 1 (0x1) (int) 119: udi = '/org/freedesktop/Hal/devices/pci_109e_878' pci.product = 'Bt878 Audio Capture' (string) pci.subsys_vendor = 'Hauppauge computer works Inc.' (string) info.bus = 'pci' (string) pci.device_protocol = 0 (0x0) (int) info.udi = '/org/freedesktop/Hal/devices/pci_109e_878' (string) pci.linux.sysfs_path = '/sys/devices/pci0000:00/0000:00:09.1' (string) pci.subsys_product_id = 5099 (0x13eb) (int) linux.subsystem = 'pci' (string) info.vendor = 'Brooktree Corporation' (string) info.subsystem = 'pci' (string) pci.product_id = 2168 (0x878) (int) pci.vendor = 'Brooktree Corporation' (string) info.product = 'Bt878 Audio Capture' (string) pci.subsys_product = 'WinTV Series' (string) linux.hotplug_type = 2 (0x2) (int) linux.sysfs_path = '/sys/devices/pci0000:00/0000:00:09.1' (string) pci.vendor_id = 4254 (0x109e) (int) info.parent = '/org/freedesktop/Hal/devices/computer' (string) info.linux.driver = 'Bt87x' (string) pci.subsys_vendor_id = 112 (0x70) (int) pci.device_class = 4 (0x4) (int) pci.device_subclass = 128 (0x80) (int) 120: udi = '/org/freedesktop/Hal/devices/pci_109e_36e' pci.product = 'Bt878 Video Capture' (string) pci.subsys_vendor = 'Hauppauge computer works Inc.' (string) info.bus = 'pci' (string) pci.device_protocol = 0 (0x0) (int) info.udi = '/org/freedesktop/Hal/devices/pci_109e_36e' (string) pci.linux.sysfs_path = '/sys/devices/pci0000:00/0000:00:09.0' (string) pci.subsys_product_id = 5099 (0x13eb) (int) linux.subsystem = 'pci' (string) info.vendor = 'Brooktree Corporation' (string) info.subsystem = 'pci' (string) pci.product_id = 878 (0x36e) (int) pci.vendor = 'Brooktree Corporation' (string) info.product = 'Bt878 Video Capture' (string) pci.subsys_product = 'WinTV Series' (string) linux.hotplug_type = 2 (0x2) (int) linux.sysfs_path = '/sys/devices/pci0000:00/0000:00:09.0' (string) pci.vendor_id = 4254 (0x109e) (int) info.parent = '/org/freedesktop/Hal/devices/computer' (string) info.linux.driver = 'bttv' (string) pci.subsys_vendor_id = 112 (0x70) (int) pci.device_class = 4 (0x4) (int) pci.device_subclass = 0 (0x0) (int) 121: udi = '/org/freedesktop/Hal/devices/pci_10de_221' pci.product = 'NV44A [GeForce 6200]' (string) pci.subsys_vendor = 'XFX Pine Group Inc.' (string) info.bus = 'pci' (string) pci.device_protocol = 0 (0x0) (int) info.udi = '/org/freedesktop/Hal/devices/pci_10de_221' (string) pci.linux.sysfs_path = '/sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0' (string) pci.subsys_product_id = 8530 (0x2152) (int) linux.subsystem = 'pci' (string) info.vendor = 'nVidia Corporation' (string) info.subsystem = 'pci' (string) pci.product_id = 545 (0x221) (int) pci.vendor = 'nVidia Corporation' (string) info.product = 'NV44A [GeForce 6200]' (string) linux.hotplug_type = 2 (0x2) (int) linux.sysfs_path = '/sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0' (string) pci.vendor_id = 4318 (0x10de) (int) info.parent = '/org/freedesktop/Hal/devices/pci_1106_b188' (string) info.linux.driver = 'nvidia' (string) pci.subsys_vendor_id = 5762 (0x1682) (int) pci.device_class = 3 (0x3) (int) pci.device_subclass = 0 (0x0) (int) 122: udi = '/org/freedesktop/Hal/devices/pci_1106_b188' pci.product = 'VT8237 PCI bridge [K8T800/K8T890 South]' (string) info.bus = 'pci' (string) pci.device_protocol = 0 (0x0) (int) info.udi = '/org/freedesktop/Hal/devices/pci_1106_b188' (string) pci.linux.sysfs_path = '/sys/devices/pci0000:00/0000:00:01.0' (string) pci.subsys_product_id = 0 (0x0) (int) linux.subsystem = 'pci' (string) info.vendor = 'VIA Technologies, Inc.' (string) info.subsystem = 'pci' (string) pci.product_id = 45448 (0xb188) (int) pci.vendor = 'VIA Technologies, Inc.' (string) info.product = 'VT8237 PCI bridge [K8T800/K8T890 South]' (string) linux.hotplug_type = 2 (0x2) (int) linux.sysfs_path = '/sys/devices/pci0000:00/0000:00:01.0' (string) pci.vendor_id = 4358 (0x1106) (int) info.parent = '/org/freedesktop/Hal/devices/computer' (string) pci.subsys_vendor_id = 0 (0x0) (int) pci.device_class = 6 (0x6) (int) pci.device_subclass = 4 (0x4) (int) 123: udi = '/org/freedesktop/Hal/devices/pci_1106_7204' pci.product = 'K8M800 Host Bridge' (string) info.bus = 'pci' (string) pci.device_protocol = 0 (0x0) (int) info.udi = '/org/freedesktop/Hal/devices/pci_1106_7204' (string) pci.linux.sysfs_path = '/sys/devices/pci0000:00/0000:00:00.7' (string) pci.subsys_product_id = 0 (0x0) (int) linux.subsystem = 'pci' (string) info.vendor = 'VIA Technologies, Inc.' (string) info.subsystem = 'pci' (string) pci.product_id = 29188 (0x7204) (int) pci.vendor = 'VIA Technologies, Inc.' (string) info.product = 'K8M800 Host Bridge' (string) linux.hotplug_type = 2 (0x2) (int) linux.sysfs_path = '/sys/devices/pci0000:00/0000:00:00.7' (string) pci.vendor_id = 4358 (0x1106) (int) info.parent = '/org/freedesktop/Hal/devices/computer' (string) pci.subsys_vendor_id = 0 (0x0) (int) pci.device_class = 6 (0x6) (int) pci.device_subclass = 0 (0x0) (int) 124: udi = '/org/freedesktop/Hal/devices/pci_1106_4204' pci.product = 'K8M800 Host Bridge' (string) info.bus = 'pci' (string) pci.device_protocol = 0 (0x0) (int) info.udi = '/org/freedesktop/Hal/devices/pci_1106_4204' (string) pci.linux.sysfs_path = '/sys/devices/pci0000:00/0000:00:00.4' (string) pci.subsys_product_id = 0 (0x0) (int) linux.subsystem = 'pci' (string) info.vendor = 'VIA Technologies, Inc.' (string) info.subsystem = 'pci' (string) pci.product_id = 16900 (0x4204) (int) pci.vendor = 'VIA Technologies, Inc.' (string) info.product = 'K8M800 Host Bridge' (string) linux.hotplug_type = 2 (0x2) (int) linux.sysfs_path = '/sys/devices/pci0000:00/0000:00:00.4' (string) pci.vendor_id = 4358 (0x1106) (int) info.parent = '/org/freedesktop/Hal/devices/computer' (string) pci.subsys_vendor_id = 0 (0x0) (int) pci.device_class = 6 (0x6) (int) pci.device_subclass = 0 (0x0) (int) 125: udi = '/org/freedesktop/Hal/devices/pci_1106_3204' pci.product = 'K8M800 Host Bridge' (string) info.bus = 'pci' (string) pci.device_protocol = 0 (0x0) (int) info.udi = '/org/freedesktop/Hal/devices/pci_1106_3204' (string) pci.linux.sysfs_path = '/sys/devices/pci0000:00/0000:00:00.3' (string) pci.subsys_product_id = 0 (0x0) (int) linux.subsystem = 'pci' (string) info.vendor = 'VIA Technologies, Inc.' (string) info.subsystem = 'pci' (string) pci.product_id = 12804 (0x3204) (int) pci.vendor = 'VIA Technologies, Inc.' (string) info.product = 'K8M800 Host Bridge' (string) linux.hotplug_type = 2 (0x2) (int) linux.sysfs_path = '/sys/devices/pci0000:00/0000:00:00.3' (string) pci.vendor_id = 4358 (0x1106) (int) info.parent = '/org/freedesktop/Hal/devices/computer' (string) pci.subsys_vendor_id = 0 (0x0) (int) pci.device_class = 6 (0x6) (int) pci.device_subclass = 0 (0x0) (int) 126: udi = '/org/freedesktop/Hal/devices/pci_1106_2204' pci.product = 'K8M800 Host Bridge' (string) info.bus = 'pci' (string) pci.device_protocol = 0 (0x0) (int) info.udi = '/org/freedesktop/Hal/devices/pci_1106_2204' (string) pci.linux.sysfs_path = '/sys/devices/pci0000:00/0000:00:00.2' (string) pci.subsys_product_id = 0 (0x0) (int) linux.subsystem = 'pci' (string) info.vendor = 'VIA Technologies, Inc.' (string) info.subsystem = 'pci' (string) pci.product_id = 8708 (0x2204) (int) pci.vendor = 'VIA Technologies, Inc.' (string) info.product = 'K8M800 Host Bridge' (string) linux.hotplug_type = 2 (0x2) (int) linux.sysfs_path = '/sys/devices/pci0000:00/0000:00:00.2' (string) pci.vendor_id = 4358 (0x1106) (int) info.parent = '/org/freedesktop/Hal/devices/computer' (string) pci.subsys_vendor_id = 0 (0x0) (int) pci.device_class = 6 (0x6) (int) pci.device_subclass = 0 (0x0) (int) 127: udi = '/org/freedesktop/Hal/devices/pci_1106_1204' pci.product = 'K8M800 Host Bridge' (string) info.bus = 'pci' (string) pci.device_protocol = 0 (0x0) (int) info.udi = '/org/freedesktop/Hal/devices/pci_1106_1204' (string) pci.linux.sysfs_path = '/sys/devices/pci0000:00/0000:00:00.1' (string) pci.subsys_product_id = 0 (0x0) (int) linux.subsystem = 'pci' (string) info.vendor = 'VIA Technologies, Inc.' (string) info.subsystem = 'pci' (string) pci.product_id = 4612 (0x1204) (int) pci.vendor = 'VIA Technologies, Inc.' (string) info.product = 'K8M800 Host Bridge' (string) linux.hotplug_type = 2 (0x2) (int) linux.sysfs_path = '/sys/devices/pci0000:00/0000:00:00.1' (string) pci.vendor_id = 4358 (0x1106) (int) info.parent = '/org/freedesktop/Hal/devices/computer' (string) pci.subsys_vendor_id = 0 (0x0) (int) pci.device_class = 6 (0x6) (int) pci.device_subclass = 0 (0x0) (int) 128: udi = '/org/freedesktop/Hal/devices/pci_1106_204' pci.product = 'K8M800 Host Bridge' (string) pci.subsys_vendor = 'Lenovo' (string) info.bus = 'pci' (string) pci.device_protocol = 0 (0x0) (int) info.udi = '/org/freedesktop/Hal/devices/pci_1106_204' (string) pci.linux.sysfs_path = '/sys/devices/pci0000:00/0000:00:00.0' (string) pci.subsys_product_id = 4104 (0x1008) (int) linux.subsystem = 'pci' (string) info.vendor = 'VIA Technologies, Inc.' (string) info.subsystem = 'pci' (string) pci.product_id = 516 (0x204) (int) pci.vendor = 'VIA Technologies, Inc.' (string) info.product = 'K8M800 Host Bridge' (string) linux.hotplug_type = 2 (0x2) (int) linux.sysfs_path = '/sys/devices/pci0000:00/0000:00:00.0' (string) pci.vendor_id = 4358 (0x1106) (int) info.parent = '/org/freedesktop/Hal/devices/computer' (string) info.linux.driver = 'agpgart-amd64' (string) pci.subsys_vendor_id = 6058 (0x17aa) (int) pci.device_class = 6 (0x6) (int) pci.device_subclass = 0 (0x0) (int)
With daniel I'm working on a branch right now cheese_0_2_4_refactor. I'm planning on building HAL discovery in the cheese-webcam class in that branch
I've got a similiar problem. My point though is that my Logitech webcam isn't v4l2 compatible. It works only with v4l. Cheese selects ONLY v4l2src, ignoring the 1st one. Anyway, having two _v4l2_ devices (doesn't work with v4l because cheese ignores that source) you can select the default one through gstreamer-properties. Cheese uses gstreamer settings
we added a gconf option to choose the camera. for now this is the only way to change the camera. could someone try trunk/?
I tested it (cheese 0.3.0 svn) and it doesn't works for me :( I have /dev/webcam in gconf $> /usr/local/bin/cheese -v Detected webcam: Philips 740 webcam device: /dev/webcam <=(GOOD WEBCAM) video/x-raw-yuv 160 x 120 num_framerates 26 75/16 45/8 105/16 15/2 135/16 75/8 165/16 45/4 195/16 105/8 225/16 15/1 255/16 135/8 285/16 75/4 315/16 165/8 345/16 45/2 375/16 195/8 405/16 105/4 435/16 225/8 video/x-raw-yuv 320 x 240 num_framerates 26 75/16 45/8 105/16 15/2 135/16 75/8 165/16 45/4 195/16 105/8 225/16 15/1 255/16 135/8 285/16 75/4 315/16 165/8 345/16 45/2 375/16 195/8 405/16 105/4 435/16 225/8 video/x-raw-yuv 640 x 480 num_framerates 26 75/16 45/8 105/16 15/2 135/16 75/8 165/16 45/4 195/16 105/8 225/16 15/1 255/16 135/8 285/16 75/4 315/16 165/8 345/16 45/2 375/16 195/8 405/16 105/4 435/16 225/8 video/x-raw-yuv 320 x 240 num_framerates 26 75/16 45/8 105/16 15/2 135/16 75/8 165/16 45/4 195/16 105/8 225/16 15/1 255/16 135/8 285/16 75/4 315/16 165/8 345/16 45/2 375/16 195/8 405/16 105/4 435/16 225/8 Detected webcam: BT878 video (Hauppauge (bt878)) device: /dev/videotv <=(MY TV CARD) video/x-raw-yuv 48 x 32 num_framerates 1 25/1 video/x-raw-yuv 96 x 64 num_framerates 1 25/1 video/x-raw-yuv 192 x 128 num_framerates 1 25/1 video/x-raw-yuv 384 x 256 num_framerates 1 25/1 video/x-raw-yuv 768 x 512 num_framerates 1 25/1 video/x-raw-yuv 924 x 576 num_framerates 1 25/1 video/x-raw-yuv 462 x 288 num_framerates 1 25/1 video/x-raw-yuv 231 x 144 num_framerates 1 25/1 video/x-raw-yuv 115 x 72 num_framerates 1 25/1 video/x-raw-yuv 57 x 36 num_framerates 1 25/1 video/x-raw-yuv 48 x 32 num_framerates 1 25/1 video/x-raw-yuv 96 x 64 num_framerates 1 25/1 video/x-raw-yuv 192 x 128 num_framerates 1 25/1 video/x-raw-yuv 384 x 256 num_framerates 1 25/1 video/x-raw-yuv 768 x 512 num_framerates 1 25/1 video/x-raw-yuv 924 x 576 num_framerates 1 25/1 video/x-raw-yuv 462 x 288 num_framerates 1 25/1 video/x-raw-yuv 231 x 144 num_framerates 1 25/1 video/x-raw-yuv 115 x 72 num_framerates 1 25/1 video/x-raw-yuv 57 x 36 num_framerates 1 25/1 video/x-raw-yuv 48 x 32 num_framerates 1 25/1 video/x-raw-yuv 96 x 64 num_framerates 1 25/1 video/x-raw-yuv 192 x 128 num_framerates 1 25/1 video/x-raw-yuv 384 x 256 num_framerates 1 25/1 video/x-raw-yuv 768 x 512 num_framerates 1 25/1 video/x-raw-yuv 924 x 576 num_framerates 1 25/1 video/x-raw-yuv 462 x 288 num_framerates 1 25/1 video/x-raw-yuv 231 x 144 num_framerates 1 25/1 video/x-raw-yuv 115 x 72 num_framerates 1 25/1 video/x-raw-yuv 57 x 36 num_framerates 1 25/1 video/x-raw-yuv 48 x 32 num_framerates 1 25/1 video/x-raw-yuv 96 x 64 num_framerates 1 25/1 video/x-raw-yuv 192 x 128 num_framerates 1 25/1 video/x-raw-yuv 384 x 256 num_framerates 1 25/1 video/x-raw-yuv 768 x 512 num_framerates 1 25/1 video/x-raw-yuv 924 x 576 num_framerates 1 25/1 video/x-raw-yuv 462 x 288 num_framerates 1 25/1 video/x-raw-yuv 231 x 144 num_framerates 1 25/1 video/x-raw-yuv 115 x 72 num_framerates 1 25/1 video/x-raw-yuv 57 x 36 num_framerates 1 25/1 video/x-raw-yuv 48 x 32 num_framerates 1 25/1 video/x-raw-yuv 96 x 64 num_framerates 1 25/1 video/x-raw-yuv 192 x 128 num_framerates 1 25/1 video/x-raw-yuv 384 x 256 num_framerates 1 25/1 video/x-raw-yuv 768 x 512 num_framerates 1 25/1 video/x-raw-yuv 924 x 576 num_framerates 1 25/1 video/x-raw-yuv 462 x 288 num_framerates 1 25/1 video/x-raw-yuv 231 x 144 num_framerates 1 25/1 video/x-raw-yuv 115 x 72 num_framerates 1 25/1 video/x-raw-yuv 57 x 36 num_framerates 1 25/1 video/x-raw-yuv 48 x 32 num_framerates 1 25/1 video/x-raw-yuv 96 x 64 num_framerates 1 25/1 video/x-raw-yuv 192 x 128 num_framerates 1 25/1 video/x-raw-yuv 384 x 256 num_framerates 1 25/1 video/x-raw-yuv 768 x 512 num_framerates 1 25/1 video/x-raw-yuv 924 x 576 num_framerates 1 25/1 video/x-raw-yuv 462 x 288 num_framerates 1 25/1 video/x-raw-yuv 231 x 144 num_framerates 1 25/1 video/x-raw-yuv 115 x 72 num_framerates 1 25/1 video/x-raw-yuv 57 x 36 num_framerates 1 25/1 video/x-raw-rgb 48 x 32 num_framerates 1 25/1 video/x-raw-rgb 96 x 64 num_framerates 1 25/1 video/x-raw-rgb 192 x 128 num_framerates 1 25/1 video/x-raw-rgb 384 x 256 num_framerates 1 25/1 video/x-raw-rgb 768 x 512 num_framerates 1 25/1 video/x-raw-rgb 924 x 576 num_framerates 1 25/1 video/x-raw-rgb 462 x 288 num_framerates 1 25/1 video/x-raw-rgb 231 x 144 num_framerates 1 25/1 video/x-raw-rgb 115 x 72 num_framerates 1 25/1 video/x-raw-rgb 57 x 36 num_framerates 1 25/1 video/x-raw-rgb 48 x 32 num_framerates 1 25/1 video/x-raw-rgb 96 x 64 num_framerates 1 25/1 video/x-raw-rgb 192 x 128 num_framerates 1 25/1 video/x-raw-rgb 384 x 256 num_framerates 1 25/1 video/x-raw-rgb 768 x 512 num_framerates 1 25/1 video/x-raw-rgb 924 x 576 num_framerates 1 25/1 video/x-raw-rgb 462 x 288 num_framerates 1 25/1 video/x-raw-rgb 231 x 144 num_framerates 1 25/1 video/x-raw-rgb 115 x 72 num_framerates 1 25/1 video/x-raw-rgb 57 x 36 num_framerates 1 25/1 video/x-raw-rgb 48 x 32 num_framerates 1 25/1 video/x-raw-rgb 96 x 64 num_framerates 1 25/1 video/x-raw-rgb 192 x 128 num_framerates 1 25/1 video/x-raw-rgb 384 x 256 num_framerates 1 25/1 video/x-raw-rgb 768 x 512 num_framerates 1 25/1 video/x-raw-rgb 924 x 576 num_framerates 1 25/1 video/x-raw-rgb 462 x 288 num_framerates 1 25/1 video/x-raw-rgb 231 x 144 num_framerates 1 25/1 video/x-raw-rgb 115 x 72 num_framerates 1 25/1 video/x-raw-rgb 57 x 36 num_framerates 1 25/1 video/x-raw-rgb 48 x 32 num_framerates 1 25/1 video/x-raw-rgb 96 x 64 num_framerates 1 25/1 video/x-raw-rgb 192 x 128 num_framerates 1 25/1 video/x-raw-rgb 384 x 256 num_framerates 1 25/1 video/x-raw-rgb 768 x 512 num_framerates 1 25/1 video/x-raw-rgb 924 x 576 num_framerates 1 25/1 video/x-raw-rgb 462 x 288 num_framerates 1 25/1 video/x-raw-rgb 231 x 144 num_framerates 1 25/1 video/x-raw-rgb 115 x 72 num_framerates 1 25/1 video/x-raw-rgb 57 x 36 num_framerates 1 25/1 device: /dev/vbi0 <= (WRONG DEVICE !!) ======================= And it finishes with a Bug Duddy message
*** Bug 533900 has been marked as a duplicate of this bug. ***
*** Bug 527673 has been marked as a duplicate of this bug. ***
bug #522200 might be interesting for you and could close this bug. can anyone try?
*** Bug 545551 has been marked as a duplicate of this bug. ***
Can we please move this to gnome-control-center and have it ship a gst-gconfwebcamsrc?
@ comment #22: at the moment gstreamer-properties, gconfvideosrc, gconfvideosink are shipped by gstreamer, so why gnome-control-center? If you think a gconfwebcamsrc would be useful you should file an enhancement bug to gstreamer and start a discussion there. Anyway, I think that having a global configuration is not the best solution, it would be shared across applications using webcam preventing to use two different webcams at the same time (i.e. you want to use a webcam with ekiga and at the sametime have fun with another with cheese). At the moment (svn trunk and 2.23.5) we have a preferences dialog to select one of the v4l devices that hal exposes correctly (bug #522200), so why this bug is still open? Correct me if I missed anything.
Closing. Fixed in svn (see comment #23).