mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-03-12 14:51:42 +00:00
uvcgadget: Properly implement GET_INFO control responses
According to the UVC 1.5 specification, section 4.1.2, the GET_INFO request must return a bitmap indicating supported operations for the control. Value 0x00 indicates that neither GET nor SET operations are supported. This patch fixes control handling in the UVC gadget implementation to properly respond to GET_INFO requests with the correct bitmap, allowing host systems to properly detect supported control operations (none in this case). The pipeline I'm using to test this is: gst-launch-1.0 videotestsrc ! uvcsink v4l2sink::device=/dev/video0 This is the equivalent of [0] but the difference is that we are now returning 0x00 instead of 0x03. Without this change the host in my case is unable to probe the UVC gadget at all, automatically disconnecting the device after a few seconds. Following is the log when the gadget is not working (without this fix): usb 1-1.2: new high-speed USB device number 73 using xhci_hcd usb 1-1.2: New USB device found, idVendor=0525, idProduct=a4a2, bcdDevice= 5.15 usb 1-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3 usb 1-1.2: Product: UVC Gadget usb 1-1.2: Manufacturer: localhost.localdomain usb 1-1.2: SerialNumber: 0123456789 usb 1-1.2: Found UVC 1.10 device UVC Gadget (0525:a4a2) usb 1-1.2: Failed to query (GET_INFO) UVC control 2 on unit 1: -110 (exp. 1). usb 1-1.2: UVC non compliance - GET_DEF(PROBE) not supported. Enabling workaround. uvcvideo 1-1.2:1.1: Failed to query (129) UVC probe control : -71 (exp. 34). uvcvideo 1-1.2:1.1: Failed to initialize the device (-71). cdc_subset 1-1.2:1.0: probe with driver cdc_subset failed with error -22 cdc_subset 1-1.2:1.1: probe with driver cdc_subset failed with error -22 usb 1-1.2: USB disconnect, device number 73 With the fix the USB device is correctly probed: usb 1-1.2: new high-speed USB device number 88 using xhci_hcd usb 1-1.2: New USB device found, idVendor=0525, idProduct=a4a2, bcdDevice= 5.15 usb 1-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3 usb 1-1.2: Product: UVC Gadget usb 1-1.2: Manufacturer: localhost.localdomain usb 1-1.2: SerialNumber: 0123456789 usb 1-1.2: Found UVC 1.10 device UVC Gadget (0525:a4a2) [0] camera/uvc-gadget@0df9d3ad Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8572>
This commit is contained in:
parent
cb681d8d28
commit
69c1746139
1 changed files with 6 additions and 0 deletions
|
@ -347,6 +347,12 @@ static void
|
|||
uvc_events_parse_control (GstUvcSink * self, uint8_t req,
|
||||
uint8_t cs, uint8_t entity_id, uint8_t len, struct uvc_request_data *resp)
|
||||
{
|
||||
/*
|
||||
* Responding to controls is not currently implemented.
|
||||
*/
|
||||
resp->data[0] = 0x00;
|
||||
resp->length = 1;
|
||||
|
||||
switch (entity_id) {
|
||||
case 0:
|
||||
GST_DEBUG_OBJECT (self, "%s",
|
||||
|
|
Loading…
Reference in a new issue