From: Kirill A. Korinsky Subject: sys/uvideo: fill v4l2_capability the right way To: OpenBSD tech Cc: Marcus Glocker Date: Sat, 28 Dec 2024 16:18:57 +0100 tech@, Some V4L consumers, for example libwebrtc which is used by firefox, uses bus_info to find the desired webcam. Our logic with hardcoded string leads that firefox uses /dev/video0, and switch to another webcam simple doesn't work. This behaviour of Linux uvc_meta_v4l2_querycap which uses constant as driver name, and device as bus_info. Ok? Index: sys/dev/usb/uvideo.c =================================================================== RCS file: /home/cvs/src/sys/dev/usb/uvideo.c,v diff -u -p -u -p -r1.231 uvideo.c --- sys/dev/usb/uvideo.c 22 Dec 2024 20:30:04 -0000 1.231 +++ sys/dev/usb/uvideo.c 28 Dec 2024 15:08:42 -0000 @@ -2931,9 +2931,9 @@ uvideo_querycap(void *v, struct v4l2_cap struct uvideo_softc *sc = v; bzero(caps, sizeof(*caps)); - strlcpy(caps->driver, DEVNAME(sc), sizeof(caps->driver)); + strlcpy(caps->driver, "uvideo", sizeof(caps->driver)); strlcpy(caps->card, sc->sc_udev->product, sizeof(caps->card)); - strlcpy(caps->bus_info, "usb", sizeof(caps->bus_info)); + strlcpy(caps->bus_info, DEVNAME(sc), sizeof(caps->bus_info)); caps->version = 1; caps->device_caps = V4L2_CAP_VIDEO_CAPTURE -- wbr, Kirill