Hi, here's a diff to reuse usbd_devinfo_vp() (exposed in usbdivar.h) in VIDIOC_QUERYCAP ioctl callback, this way we can fill v4l2_capability card struct member with the actual usb product name instead of a dummy "Generic USB video class device".
Firefox uses that ioctl to get the user-facing device name in https://dxr.mozilla.org/mozilla-central/source/media/webrtc/trunk/webrtc/modules/video_capture/linux/device_info_linux.cc#313 so that's helpful when you have several devices and the webrtc doorhanger asks you which camera you want to share.. cf http://i.imgur.com/uLnWw6u.png USB_MAX_STRING_LEN is 127 and card is 32 in v4l2_capability, so strlcpy should take care of null-terminating/truncating. Thx mpi@ for the directions.. Landry
Index: usb_subr.c =================================================================== RCS file: /cvs/src/sys/dev/usb/usb_subr.c,v retrieving revision 1.134 diff -u -r1.134 usb_subr.c --- usb_subr.c 8 Apr 2017 02:57:25 -0000 1.134 +++ usb_subr.c 24 Apr 2018 14:20:00 -0000 @@ -61,8 +61,6 @@ usbd_status usbd_set_config(struct usbd_device *, int); void usbd_devinfo(struct usbd_device *, int, char *, size_t); -void usbd_devinfo_vp(struct usbd_device *, char *, size_t, - char *, size_t, int); char *usbd_get_device_string(struct usbd_device *, uByte); char *usbd_get_string(struct usbd_device *, int, char *, size_t); int usbd_getnewaddr(struct usbd_bus *); Index: usbdivar.h =================================================================== RCS file: /cvs/src/sys/dev/usb/usbdivar.h,v retrieving revision 1.73 diff -u -r1.73 usbdivar.h --- usbdivar.h 3 Feb 2018 13:37:37 -0000 1.73 +++ usbdivar.h 24 Apr 2018 14:20:00 -0000 @@ -257,6 +257,8 @@ usbd_status usb_insert_transfer(struct usbd_xfer *); void usb_transfer_complete(struct usbd_xfer *); int usbd_detach(struct usbd_device *, struct device *); +void usbd_devinfo_vp(struct usbd_device *, char *, size_t, + char *, size_t, int); /* Routines from usb.c */ void usb_needs_explore(struct usbd_device *, int); Index: uvideo.c =================================================================== RCS file: /cvs/src/sys/dev/usb/uvideo.c,v retrieving revision 1.196 diff -u -r1.196 uvideo.c --- uvideo.c 30 Dec 2017 23:08:29 -0000 1.196 +++ uvideo.c 24 Apr 2018 14:20:00 -0000 @@ -2781,11 +2781,14 @@ uvideo_querycap(void *v, struct v4l2_capability *caps) { struct uvideo_softc *sc = v; + char vendor[USB_MAX_STRING_LEN]; + char product[USB_MAX_STRING_LEN]; bzero(caps, sizeof(*caps)); strlcpy(caps->driver, DEVNAME(sc), sizeof(caps->driver)); - strlcpy(caps->card, "Generic USB video class device", - sizeof(caps->card)); + usbd_devinfo_vp(sc->sc_udev, vendor, sizeof (vendor), product, + sizeof (product), 1); + strlcpy(caps->card, product, sizeof(caps->card)); strlcpy(caps->bus_info, "usb", sizeof(caps->bus_info)); caps->version = 1;