Re: [PATCH] media: uvcvideo: Add quirk for Actions UVC05
From: Laurent Pinchart
Date: Sun Feb 23 2025 - 10:11:55 EST
Hi Ricardo,
Thank you for the patch.
On Tue, Dec 10, 2024 at 10:48:14AM +0000, Ricardo Ribalda wrote:
> Actions UVC05 is a HDMI to USB dongle that implements the UVC protocol.
>
> When the device suspends, its firmware seems to enter a weird mode when it
> does not produce more frames.
>
> Add the device to the quirk list to disable autosuspend.
>
> Bus 001 Device 007: ID 1de1:f105 Actions Microelectronics Co. Display
> capture-UVC05
> Device Descriptor:
> bLength 18
> bDescriptorType 1
> bcdUSB 2.00
> bDeviceClass 239 Miscellaneous Device
> bDeviceSubClass 2 [unknown]
> bDeviceProtocol 1 Interface Association
> bMaxPacketSize0 64
> idVendor 0x1de1 Actions Microelectronics Co.
> idProduct 0xf105 Display capture-UVC05
> bcdDevice 4.09
> iManufacturer 1 Actions Micro
> iProduct 2 Display capture-UVC05
> iSerial 3 -1005308387
> bNumConfigurations 1
>
> Signed-off-by: Ricardo Ribalda <ribalda@xxxxxxxxxxxx>
Reviewed-by: Laurent Pinchart <laurent.pinchart@xxxxxxxxxxxxxxxx>
> ---
> Bus 001 Device 007: ID 1de1:f105 Actions Microelectronics Co. Display capture-UVC05
> Device Descriptor:
> bLength 18
> bDescriptorType 1
> bcdUSB 2.00
> bDeviceClass 239 Miscellaneous Device
> bDeviceSubClass 2 [unknown]
> bDeviceProtocol 1 Interface Association
> bMaxPacketSize0 64
> idVendor 0x1de1 Actions Microelectronics Co.
> idProduct 0xf105 Display capture-UVC05
> bcdDevice 4.09
> iManufacturer 1 Actions Micro
> iProduct 2 Display capture-UVC05
> iSerial 3 -1005308387
> bNumConfigurations 1
> Configuration Descriptor:
> bLength 9
> bDescriptorType 2
> wTotalLength 0x028a
> bNumInterfaces 4
> bConfigurationValue 1
> iConfiguration 4 Video
> bmAttributes 0xc0
> Self Powered
> MaxPower 2mA
> Interface Association:
> bLength 8
> bDescriptorType 11
> bFirstInterface 0
> bInterfaceCount 2
> bFunctionClass 14 Video
> bFunctionSubClass 3 Video Interface Collection
> bFunctionProtocol 0
> iFunction 5 Display capture-UVC05
> Interface Descriptor:
> bLength 9
> bDescriptorType 4
> bInterfaceNumber 0
> bAlternateSetting 0
> bNumEndpoints 0
> bInterfaceClass 14 Video
> bInterfaceSubClass 1 Video Control
> bInterfaceProtocol 0
> iInterface 5 Display capture-UVC05
> VideoControl Interface Descriptor:
> bLength 13
> bDescriptorType 36
> bDescriptorSubtype 1 (HEADER)
> bcdUVC 1.00
> wTotalLength 0x0033
> dwClockFrequency 48.000000MHz
> bInCollection 1
> baInterfaceNr( 0) 1
> VideoControl Interface Descriptor:
> bLength 18
> bDescriptorType 36
> bDescriptorSubtype 2 (INPUT_TERMINAL)
> bTerminalID 1
> wTerminalType 0x0201 Camera Sensor
> bAssocTerminal 0
> iTerminal 0
> wObjectiveFocalLengthMin 0
> wObjectiveFocalLengthMax 0
> wOcularFocalLength 0
> bControlSize 3
> bmControls 0x00000002
> Auto-Exposure Mode
> VideoControl Interface Descriptor:
> bLength 11
> bDescriptorType 36
> bDescriptorSubtype 5 (PROCESSING_UNIT)
> Warning: Descriptor too short
> bUnitID 2
> bSourceID 1
> wMaxMultiplier 16384
> bControlSize 2
> bmControls 0x00000000
> iProcessing 0
> bmVideoStandards 0x09
> None
> SECAM - 625/50
> VideoControl Interface Descriptor:
> bLength 9
> bDescriptorType 36
> bDescriptorSubtype 3 (OUTPUT_TERMINAL)
> bTerminalID 3
> wTerminalType 0x0101 USB Streaming
> bAssocTerminal 0
> bSourceID 2
> iTerminal 0
> Interface Descriptor:
> bLength 9
> bDescriptorType 4
> bInterfaceNumber 1
> bAlternateSetting 0
> bNumEndpoints 1
> bInterfaceClass 14 Video
> bInterfaceSubClass 2 Video Streaming
> bInterfaceProtocol 0
> iInterface 6 Video Streaming
> VideoStreaming Interface Descriptor:
> bLength 14
> bDescriptorType 36
> bDescriptorSubtype 1 (INPUT_HEADER)
> bNumFormats 1
> wTotalLength 0x01c1
> bEndpointAddress 0x81 EP 1 IN
> bmInfo 0
> bTerminalLink 3
> bStillCaptureMethod 0
> bTriggerSupport 0
> bTriggerUsage 0
> bControlSize 1
> bmaControls( 0) 0
> VideoStreaming Interface Descriptor:
> bLength 11
> bDescriptorType 36
> bDescriptorSubtype 6 (FORMAT_MJPEG)
> bFormatIndex 1
> bNumFrameDescriptors 11
> bFlags 0
> Fixed-size samples: No
> bDefaultFrameIndex 2
> bAspectRatioX 0
> bAspectRatioY 0
> bmInterlaceFlags 0x00
> Interlaced stream or variable: No
> Fields per frame: 1 fields
> Field 1 first: No
> Field pattern: Field 1 only
> bCopyProtect 0
> VideoStreaming Interface Descriptor:
> bLength 38
> bDescriptorType 36
> bDescriptorSubtype 7 (FRAME_MJPEG)
> bFrameIndex 1
> bmCapabilities 0x02
> Still image unsupported
> Fixed frame-rate
> wWidth 1920
> wHeight 1080
> dwMinBitRate 31104000
> dwMaxBitRate 1990656000
> dwMaxVideoFrameBufferSize 4147200
> dwDefaultFrameInterval 333333
> bFrameIntervalType 3
> dwFrameInterval( 0) 166666
> dwFrameInterval( 1) 333333
> dwFrameInterval( 2) 666666
> VideoStreaming Interface Descriptor:
> bLength 38
> bDescriptorType 36
> bDescriptorSubtype 7 (FRAME_MJPEG)
> bFrameIndex 2
> bmCapabilities 0x02
> Still image unsupported
> Fixed frame-rate
> wWidth 1920
> wHeight 1080
> dwMinBitRate 31104000
> dwMaxBitRate 1990656000
> dwMaxVideoFrameBufferSize 4147200
> dwDefaultFrameInterval 166666
> bFrameIntervalType 3
> dwFrameInterval( 0) 166666
> dwFrameInterval( 1) 333333
> dwFrameInterval( 2) 666666
> VideoStreaming Interface Descriptor:
> bLength 38
> bDescriptorType 36
> bDescriptorSubtype 7 (FRAME_MJPEG)
> bFrameIndex 4
> bmCapabilities 0x02
> Still image unsupported
> Fixed frame-rate
> wWidth 1360
> wHeight 768
> dwMinBitRate 15667200
> dwMaxBitRate 62668800
> dwMaxVideoFrameBufferSize 4147200
> dwDefaultFrameInterval 166666
> bFrameIntervalType 3
> dwFrameInterval( 0) 166666
> dwFrameInterval( 1) 333333
> dwFrameInterval( 2) 666666
> VideoStreaming Interface Descriptor:
> bLength 38
> bDescriptorType 36
> bDescriptorSubtype 7 (FRAME_MJPEG)
> bFrameIndex 5
> bmCapabilities 0x02
> Still image unsupported
> Fixed frame-rate
> wWidth 1280
> wHeight 1024
> dwMinBitRate 19660800
> dwMaxBitRate 78643200
> dwMaxVideoFrameBufferSize 4147200
> dwDefaultFrameInterval 166666
> bFrameIntervalType 3
> dwFrameInterval( 0) 166666
> dwFrameInterval( 1) 333333
> dwFrameInterval( 2) 666666
> VideoStreaming Interface Descriptor:
> bLength 38
> bDescriptorType 36
> bDescriptorSubtype 7 (FRAME_MJPEG)
> bFrameIndex 6
> bmCapabilities 0x02
> Still image unsupported
> Fixed frame-rate
> wWidth 1280
> wHeight 960
> dwMinBitRate 18432000
> dwMaxBitRate 73728000
> dwMaxVideoFrameBufferSize 4147200
> dwDefaultFrameInterval 166666
> bFrameIntervalType 3
> dwFrameInterval( 0) 166666
> dwFrameInterval( 1) 333333
> dwFrameInterval( 2) 666666
> VideoStreaming Interface Descriptor:
> bLength 38
> bDescriptorType 36
> bDescriptorSubtype 7 (FRAME_MJPEG)
> bFrameIndex 7
> bmCapabilities 0x00
> Still image unsupported
> wWidth 1280
> wHeight 720
> dwMinBitRate 13824000
> dwMaxBitRate 55296000
> dwMaxVideoFrameBufferSize 1843200
> dwDefaultFrameInterval 166666
> bFrameIntervalType 3
> dwFrameInterval( 0) 166666
> dwFrameInterval( 1) 333333
> dwFrameInterval( 2) 666666
> VideoStreaming Interface Descriptor:
> bLength 38
> bDescriptorType 36
> bDescriptorSubtype 7 (FRAME_MJPEG)
> bFrameIndex 8
> bmCapabilities 0x02
> Still image unsupported
> Fixed frame-rate
> wWidth 1024
> wHeight 768
> dwMinBitRate 11796480
> dwMaxBitRate 47185920
> dwMaxVideoFrameBufferSize 4147200
> dwDefaultFrameInterval 166666
> bFrameIntervalType 3
> dwFrameInterval( 0) 166666
> dwFrameInterval( 1) 333333
> dwFrameInterval( 2) 666666
> VideoStreaming Interface Descriptor:
> bLength 38
> bDescriptorType 36
> bDescriptorSubtype 7 (FRAME_MJPEG)
> bFrameIndex 9
> bmCapabilities 0x02
> Still image unsupported
> Fixed frame-rate
> wWidth 800
> wHeight 600
> dwMinBitRate 7200000
> dwMaxBitRate 28800000
> dwMaxVideoFrameBufferSize 4147200
> dwDefaultFrameInterval 166666
> bFrameIntervalType 3
> dwFrameInterval( 0) 166666
> dwFrameInterval( 1) 333333
> dwFrameInterval( 2) 666666
> VideoStreaming Interface Descriptor:
> bLength 38
> bDescriptorType 36
> bDescriptorSubtype 7 (FRAME_MJPEG)
> bFrameIndex 10
> bmCapabilities 0x02
> Still image unsupported
> Fixed frame-rate
> wWidth 720
> wHeight 576
> dwMinBitRate 6220800
> dwMaxBitRate 24883200
> dwMaxVideoFrameBufferSize 4147200
> dwDefaultFrameInterval 166666
> bFrameIntervalType 3
> dwFrameInterval( 0) 166666
> dwFrameInterval( 1) 333333
> dwFrameInterval( 2) 666666
> VideoStreaming Interface Descriptor:
> bLength 38
> bDescriptorType 36
> bDescriptorSubtype 7 (FRAME_MJPEG)
> bFrameIndex 11
> bmCapabilities 0x00
> Still image unsupported
> wWidth 720
> wHeight 480
> dwMinBitRate 5184000
> dwMaxBitRate 20736000
> dwMaxVideoFrameBufferSize 1843200
> dwDefaultFrameInterval 166666
> bFrameIntervalType 3
> dwFrameInterval( 0) 166666
> dwFrameInterval( 1) 333333
> dwFrameInterval( 2) 666666
> VideoStreaming Interface Descriptor:
> bLength 38
> bDescriptorType 36
> bDescriptorSubtype 7 (FRAME_MJPEG)
> bFrameIndex 12
> bmCapabilities 0x00
> Still image unsupported
> wWidth 640
> wHeight 480
> dwMinBitRate 4608000
> dwMaxBitRate 18432000
> dwMaxVideoFrameBufferSize 614400
> dwDefaultFrameInterval 166666
> bFrameIntervalType 3
> dwFrameInterval( 0) 166666
> dwFrameInterval( 1) 333333
> dwFrameInterval( 2) 666666
> VideoStreaming Interface Descriptor:
> bLength 6
> bDescriptorType 36
> bDescriptorSubtype 13 (COLORFORMAT)
> bColorPrimaries 1 (BT.709,sRGB)
> bTransferCharacteristics 1 (BT.709)
> bMatrixCoefficients 4 (SMPTE 170M (BT.601))
> Endpoint Descriptor:
> bLength 7
> bDescriptorType 5
> bEndpointAddress 0x81 EP 1 IN
> bmAttributes 2
> Transfer Type Bulk
> Synch Type None
> Usage Type Data
> wMaxPacketSize 0x0200 1x 512 bytes
> bInterval 0
> Interface Association:
> bLength 8
> bDescriptorType 11
> bFirstInterface 2
> bInterfaceCount 2
> bFunctionClass 1 Audio
> bFunctionSubClass 2 Streaming
> bFunctionProtocol 0
> iFunction 0
> Interface Descriptor:
> bLength 9
> bDescriptorType 4
> bInterfaceNumber 2
> bAlternateSetting 0
> bNumEndpoints 0
> bInterfaceClass 1 Audio
> bInterfaceSubClass 1 Control Device
> bInterfaceProtocol 0
> iInterface 0
> AudioControl Interface Descriptor:
> bLength 9
> bDescriptorType 36
> bDescriptorSubtype 1 (HEADER)
> bcdADC 1.00
> wTotalLength 0x0027
> bInCollection 1
> baInterfaceNr(0) 3
> AudioControl Interface Descriptor:
> bLength 12
> bDescriptorType 36
> bDescriptorSubtype 2 (INPUT_TERMINAL)
> bTerminalID 1
> wTerminalType 0x0201 Microphone
> bAssocTerminal 0
> bNrChannels 1
> wChannelConfig 0x0000
> iChannelNames 0
> iTerminal 0
> AudioControl Interface Descriptor:
> bLength 9
> bDescriptorType 36
> bDescriptorSubtype 3 (OUTPUT_TERMINAL)
> bTerminalID 2
> wTerminalType 0x0101 USB Streaming
> bAssocTerminal 0
> bSourceID 3
> iTerminal 0
> AudioControl Interface Descriptor:
> bLength 9
> bDescriptorType 36
> bDescriptorSubtype 6 (FEATURE_UNIT)
> bUnitID 3
> bSourceID 1
> bControlSize 1
> bmaControls(0) 0x03
> Mute Control
> Volume Control
> bmaControls(1) 0x00
> iFeature 0
> Interface Descriptor:
> bLength 9
> bDescriptorType 4
> bInterfaceNumber 3
> bAlternateSetting 0
> bNumEndpoints 0
> bInterfaceClass 1 Audio
> bInterfaceSubClass 2 Streaming
> bInterfaceProtocol 0
> iInterface 0
> Interface Descriptor:
> bLength 9
> bDescriptorType 4
> bInterfaceNumber 3
> bAlternateSetting 1
> bNumEndpoints 1
> bInterfaceClass 1 Audio
> bInterfaceSubClass 2 Streaming
> bInterfaceProtocol 0
> iInterface 0
> AudioStreaming Interface Descriptor:
> bLength 7
> bDescriptorType 36
> bDescriptorSubtype 1 (AS_GENERAL)
> bTerminalLink 2
> bDelay 1 frames
> wFormatTag 0x0001 PCM
> AudioStreaming Interface Descriptor:
> bLength 11
> bDescriptorType 36
> bDescriptorSubtype 2 (FORMAT_TYPE)
> bFormatType 1 (FORMAT_TYPE_I)
> bNrChannels 2
> bSubframeSize 2
> bBitResolution 16
> bSamFreqType 1 Discrete
> tSamFreq[ 0] 48000
> Endpoint Descriptor:
> bLength 9
> bDescriptorType 5
> bEndpointAddress 0x83 EP 3 IN
> bmAttributes 9
> Transfer Type Isochronous
> Synch Type Adaptive
> Usage Type Data
> wMaxPacketSize 0x00c0 1x 192 bytes
> bInterval 4
> bRefresh 0
> bSynchAddress 0
> AudioStreaming Endpoint Descriptor:
> bLength 7
> bDescriptorType 37
> bDescriptorSubtype 1 (EP_GENERAL)
> bmAttributes 0x01
> Sampling Frequency
> bLockDelayUnits 0 Undefined
> wLockDelay 0x0000
> Device Qualifier (for other device speed):
> bLength 10
> bDescriptorType 6
> bcdUSB 2.00
> bDeviceClass 239 Miscellaneous Device
> bDeviceSubClass 2 [unknown]
> bDeviceProtocol 1 Interface Association
> bMaxPacketSize0 64
> bNumConfigurations 1
> Device Status: 0x0001
> Self Powered
> ---
> drivers/media/usb/uvc/uvc_driver.c | 9 +++++++++
> 1 file changed, 9 insertions(+)
>
> diff --git a/drivers/media/usb/uvc/uvc_driver.c b/drivers/media/usb/uvc/uvc_driver.c
> index b3c8411dc05c..3205f53acea2 100644
> --- a/drivers/media/usb/uvc/uvc_driver.c
> +++ b/drivers/media/usb/uvc/uvc_driver.c
> @@ -3014,6 +3014,15 @@ static const struct usb_device_id uvc_ids[] = {
> .bInterfaceProtocol = 0,
> .driver_info = UVC_INFO_QUIRK(UVC_QUIRK_PROBE_MINMAX
> | UVC_QUIRK_IGNORE_SELECTOR_UNIT) },
> + /* Actions Microelectronics Co. Display capture-UVC05 */
> + { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> + | USB_DEVICE_ID_MATCH_INT_INFO,
> + .idVendor = 0x1de1,
> + .idProduct = 0xf105,
> + .bInterfaceClass = USB_CLASS_VIDEO,
> + .bInterfaceSubClass = 1,
> + .bInterfaceProtocol = 0,
> + .driver_info = UVC_INFO_QUIRK(UVC_QUIRK_DISABLE_AUTOSUSPEND) },
> /* NXP Semiconductors IR VIDEO */
> { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
> | USB_DEVICE_ID_MATCH_INT_INFO,
>
> ---
> base-commit: 6c10d1adae82e1c8da16e7ebd2320e69f20b9d6f
> change-id: 20241210-uvc-hdmi-suspend-bba1058c605f
--
Regards,
Laurent Pinchart