Download raw body.
uvideo.c Logitech QuickCam Pro5000 does not attach uvideo only uadio (7.9-current)
uvideo.c Logitech QuickCam Pro5000 does not attach uvideo only uadio (7.9-current)
On Tue, 02 Jun 2026 00:11:15 +0200,
"requiem." <rqm@0xde501a7a.net> wrote:
>
> Dear Tech@,
>
> I recently got a Logitech QuickCam Pro 5000 for a small project
> deliberately because the uvideo(4) manpage lists it as supported.
>
> For reference, `uvideo-firmware` is installed and `sysctl
> kern.video.record` is enabled. I have used `video(1)` successfully with
> cheapie USB microcopes etc.
>
> However for the Logitech QuickCam Pro 5K it seems the video device just
> does not attach:
>
> ```
> $ tail -f /var/log/messages
> Jun 1 203507 r0cinante /bsd: uaudio0 at uhub0 port 11 configuration 1
> interface 3 "Logitech QuickCam Pro 5000" rev 2.00/0.05 addr 4 Jun 1
> 203507 r0cinante /bsd: uaudio0: class v1, high-speed, sync, channels: 0
> play, 1 rec, 2 ctls Jun 1 203507 r0cinante /bsd: audio1 at uaudio0 Jun
> 1 203507 r0cinante /bsd: ugen0 at uhub0 port 11 configuration 1
> "Logitech QuickCam Pro 5000" rev 2.00/0.05 addr 4
> ```
>
> There is no attached uvideo device.
>
> usbdevs -vvvv says,
>
> ```
> addr 08: 046d:08c5 Logitech, QuickCam Pro 5000
> high speed, power 500 mA, config 1, rev 0.05, iSerial 0EE65192
> driver: uaudio1
> driver: ugen0
> ```
> Again, no uvideo device.
>
> As the CVS commit history for uvideo.c already mentions some issues
> with the QuickCam models upon the suggestion of a friend I
> compiled with the following quick hack made to the existing quirks:
>
> ```
> Index: uvideo.c
> ===================================================================
> RCS file: /cvs/src/sys/dev/usb/uvideo.c,v
> diff -u -p -r1.265 uvideo.c
> --- uvideo.c 6 Sep 2025 13:45:41 -0000 1.265
> +++ uvideo.c 1 Jun 2026 20:03:49 -0000
> @@ -387,7 +387,7 @@ const struct uvideo_devs {
> UVIDEO_FLAG_ISIGHT_STREAM_HEADER
> },
> { /* Incorrectly reports as bInterfaceClass=UICLASS_VENDOR */
> - { USB_VENDOR_LOGITECH, USB_PRODUCT_LOGITECH_QUICKCAMOEM_1 },
> + { USB_VENDOR_LOGITECH, USB_PRODUCT_LOGITECH_QUICKCAMPRO5K_1
> }, NULL,
> NULL,
> UVIDEO_FLAG_VENDOR_CLASS
> ```
>
> This gets me an attaching uvideo0 device in dmesg but /dev/video
> still won't work because it "can't find video interface"
>
> dmesg says the following with the custom kernel:
> ```
> uvideo0 at uhub0 port 11 configuration 1 interface 0 "Logitech QuickCam
> Pro 5000" rev 2.00/0.05 addr 6 uvideo0: can't find video interface
> uaudio1 at uhub0 port 11 configuration 1 interface 3 "Logitech QuickCam
> Pro 5000" rev 2.00/0.05 addr 6 uaudio1: class v1, high-speed, sync,
> channels: 0 play, 1 rec, 2 ctls
> ```
>
> And `video` still fails with,
> ```
> $ video
> video: /dev/video: Device not configured
> ```
>
> Just to test, I tried adding a new definition for QUICKCAMPRO5K_1 with
> "NULL, NULL, 0" instead of "NULL, NULL, UVIDEO_FLAG_VENDOR_CLASS" but
> that got me back to no video device attaching at all.
>
> So it seems to me that there is something strange going on with the
> QuickCam still, possibly the quirk configuration already in uvideo.c is
> not working somehow?
>
> But I'm afraid this is where I exhausted all knowledge available to me.
> Might you be able to please look at this?
>
> Dmesg.boot and output of usbdevs -vvvv for both the patched and the
> stock kernel (-current) attached.
>
> Yours
>
> rqm
May I ask you to try this diff?
It is compiled tested only.
If it moved forward but still doesn't work, please, rebuild kernel with
UVIDEO_DEBUG, you may add define at line 40 at uvideo.c, it't enough.
It should dump all descriptors which should be enough to figure out does it
picks the right interface or not.
Index: sys/dev/usb/uvideo.c
===================================================================
RCS file: /home/cvs/src/sys/dev/usb/uvideo.c,v
diff -u -p -r1.265 uvideo.c
--- sys/dev/usb/uvideo.c 6 Sep 2025 13:45:41 -0000 1.265
+++ sys/dev/usb/uvideo.c 2 Jun 2026 00:16:55 -0000
@@ -392,6 +392,12 @@ const struct uvideo_devs {
NULL,
UVIDEO_FLAG_VENDOR_CLASS
},
+ { /* Incorrectly reports as bInterfaceClass=UICLASS_VENDOR */
+ { USB_VENDOR_LOGITECH, USB_PRODUCT_LOGITECH_QUICKCAMPRO5K_1 },
+ NULL,
+ NULL,
+ UVIDEO_FLAG_VENDOR_CLASS
+ },
{ /* Infrared camera not supported */
{ USB_VENDOR_CHICONY, USB_PRODUCT_CHICONY_IRCAMERA },
NULL,
@@ -556,10 +562,13 @@ uvideo_attach(struct device *parent, str
usb_interface_descriptor_t *id;
const usb_descriptor_t *desc;
struct usbd_desc_iter iter;
+ const struct uvideo_devs *quirk;
int i;
sc->sc_udev = uaa->device;
+ quirk = uvideo_lookup(uaa->vendor, uaa->product);
+
/* Find the first unclaimed video interface. */
for (i = 0; i < uaa->nifaces; i++) {
if (usbd_iface_claimed(sc->sc_udev, i))
@@ -568,6 +577,10 @@ uvideo_attach(struct device *parent, str
if (id == NULL)
continue;
if (id->bInterfaceClass == UICLASS_VIDEO)
+ break;
+ if (quirk != NULL &&
+ quirk->flags & UVIDEO_FLAG_VENDOR_CLASS &&
+ id->bInterfaceClass == UICLASS_VENDOR)
break;
}
if (i == uaa->nifaces) {
--
wbr, Kirill
uvideo.c Logitech QuickCam Pro5000 does not attach uvideo only uadio (7.9-current)
uvideo.c Logitech QuickCam Pro5000 does not attach uvideo only uadio (7.9-current)