Index | Thread | Search

From:
Kirill A. Korinsky <kirill@korins.ky>
Subject:
Support Jabra PanaCast 20 webcam
To:
OpenBSD tech <tech@openbsd.org>
Date:
Tue, 26 Nov 2024 23:51:56 +0100

Download raw body.

Thread
tech@,

I had figured out why the Jabra PanaCast 20 wouldn't start streaming. It
needs uvideo_vs_negotiation between usbd_set_interface and usbd_open_pipe.
Once I'd added it, it just started working.

Putting it before usbd_set_interface or after usbd_open_pipe doesn't help.

I am not sure if I should enable it only for this webcam via quirks or keep
it for everything. I had tested on Azurewave, USB camera which is embedded
in my laptop, this diff doesn't affect it and it continues to work as if
nothing had changed.

I guess it might fix some webcams that don't work today.

Feedback? Tests? Ok?

Index: sys/dev/usb/uvideo.c
===================================================================
RCS file: /home/cvs/src/sys/dev/usb/uvideo.c,v
diff -u -p -r1.222 uvideo.c
--- sys/dev/usb/uvideo.c	1 Sep 2024 03:09:00 -0000	1.222
+++ sys/dev/usb/uvideo.c	26 Nov 2024 22:24:25 -0000
@@ -1899,6 +1899,11 @@ uvideo_vs_open(struct uvideo_softc *sc)
 		return (USBD_INVAL);
 	}

+	/* do device negotiation witht commit after switch interface */
+	error = uvideo_vs_negotiation(sc, 1);
+	if (error != USBD_NORMAL_COMPLETION)
+		printf("%s: could not negotiation after switch interface\n",
+		    DEVNAME(sc));
+
 	DPRINTF(1, "%s: open pipe for bEndpointAddress=0x%02x\n",
 	    DEVNAME(sc), sc->sc_vs_cur->endpoint);
 	error = usbd_open_pipe(


--
wbr, Kirill