2022-08-26 16:53:54

by Takashi Iwai

[permalink] [raw]
Subject: Re: retire_capture_urb: Corrected urb data len

On Fri, 26 Aug 2022 18:22:24 +0200,
Sean Anderson wrote:
>
> Hi all,
>
> I have a "FiiO DigiHug USB Audio" sound card (1852:7022) [3]. I have had
> no problems with the audio, but I did notice a large number of message
> like
>
> retire_capture_urb: 4992 callbacks suppressed
>
> in my dmesg [1]. This is caused by the "Corrected urb data len."
> warning.

What exact values are shown there? The problem is that your hardware
(likely a buggy firmware) returns the unaligned size of bytes as the
data. Maybe it's worth to replace dev_warn_ratelimited() there with
dev_warn() and take all warnings once. Then we can see what kind of
values are delivered from the hardware.

> The patch adding this warning [2] makes it seem like
> this warning should be an uncommon occurance. However, based on the
> number of suppressed callbacks, this seems to be happening at a rate of
> around 500 Hz.
>
> Is this buggy hardware? Or is this a bug in the driver? Does there need
> to be a quirk? Or perhaps the warning above should be a debug instead?

There is no quirk for that. As long as the device works with that
workaround (except for messages), we can simply add a quirk to not
warn but always apply the workaround silently for such devices.


thanks,

Takashi

>
> I'm using 5.15.0-46-generic. I know, I know; this is a vendor
> kernel. However, I went through the commits for sound/usb/pcm.c and
> didn't see any major differences. I also previously saw this issue on
> 5.4, so this probably isn't a regression.
>
> --Sean
>
> [1] I would have liked to post the actual message, but I was unable to
> figure out how to disable ratelimiting. I tried setting
> /proc/sys/kernel/printk_ratelimit to 0,
> /proc/sys/kernel/printk_ratelimit_burst to 5000, and
> /proc/sys/kernel/printk to 8. However, nothing seemed to have any effect
> (except that the callbacks suppressed messages were disabled). I find
> this very strange, given that the callbacks suppressed message uses
> KERN_WARN, and so does dev_warn_ratelimited.
> [2] https://lore.kernel.org/all/[email protected]/T/
> [3]
> Device Descriptor:
> bLength 18
> bDescriptorType 1
> bcdUSB 1.10
> bDeviceClass 0
> bDeviceSubClass 0
> bDeviceProtocol 0
> bMaxPacketSize0 8
> idVendor 0x1852 GYROCOM C&C Co., LTD
> idProduct 0x7022
> bcdDevice 0.01
> iManufacturer 1 FiiO
> iProduct 2 DigiHug USB Audio
> iSerial 0
> bNumConfigurations 1
> Configuration Descriptor:
> bLength 9
> bDescriptorType 2
> wTotalLength 0x0182
> bNumInterfaces 4
> bConfigurationValue 1
> iConfiguration 0
> bmAttributes 0x80
> (Bus Powered)
> MaxPower 500mA
> Interface Descriptor:
> bLength 9
> bDescriptorType 4
> bInterfaceNumber 0
> bAlternateSetting 0
> bNumEndpoints 1
> bInterfaceClass 3 Human Interface Device
> bInterfaceSubClass 0
> bInterfaceProtocol 0
> iInterface 0
> HID Device Descriptor:
> bLength 9
> bDescriptorType 33
> bcdHID 1.00
> bCountryCode 0 Not supported
> bNumDescriptors 1
> bDescriptorType 34 Report
> wDescriptorLength 58
> Report Descriptors:
> ** UNAVAILABLE **
> Endpoint Descriptor:
> bLength 7
> bDescriptorType 5
> bEndpointAddress 0x81 EP 1 IN
> bmAttributes 3
> Transfer Type Interrupt
> Synch Type None
> Usage Type Data
> wMaxPacketSize 0x0012 1x 18 bytes
> bInterval 32
> Interface Descriptor:
> bLength 9
> bDescriptorType 4
> bInterfaceNumber 1
> bAlternateSetting 0
> bNumEndpoints 0
> bInterfaceClass 1 Audio
> bInterfaceSubClass 1 Control Device
> bInterfaceProtocol 0
> iInterface 3 FiiO USB DAC-E10
> AudioControl Interface Descriptor:
> bLength 10
> bDescriptorType 36
> bDescriptorSubtype 1 (HEADER)
> bcdADC 1.00
> wTotalLength 0x003e
> bInCollection 2
> baInterfaceNr(0) 2
> baInterfaceNr(1) 3
> AudioControl Interface Descriptor:
> bLength 12
> bDescriptorType 36
> bDescriptorSubtype 2 (INPUT_TERMINAL)
> bTerminalID 5
> wTerminalType 0x0605 SPDIF interface
> bAssocTerminal 0
> bNrChannels 2
> wChannelConfig 0x0003
> Left Front (L)
> Right Front (R)
> iChannelNames 0
> iTerminal 0
> AudioControl Interface Descriptor:
> bLength 12
> bDescriptorType 36
> bDescriptorSubtype 2 (INPUT_TERMINAL)
> bTerminalID 9
> wTerminalType 0x0101 USB Streaming
> bAssocTerminal 0
> bNrChannels 2
> wChannelConfig 0x0003
> Left Front (L)
> Right Front (R)
> iChannelNames 0
> iTerminal 0
> AudioControl Interface Descriptor:
> bLength 9
> bDescriptorType 36
> bDescriptorSubtype 3 (OUTPUT_TERMINAL)
> bTerminalID 3
> wTerminalType 0x0605 SPDIF interface
> bAssocTerminal 0
> bSourceID 16
> iTerminal 0
> AudioControl Interface Descriptor:
> bLength 9
> bDescriptorType 36
> bDescriptorSubtype 3 (OUTPUT_TERMINAL)
> bTerminalID 7
> wTerminalType 0x0101 USB Streaming
> bAssocTerminal 0
> bSourceID 5
> iTerminal 0
> AudioControl Interface Descriptor:
> bLength 10
> bDescriptorType 36
> bDescriptorSubtype 6 (FEATURE_UNIT)
> bUnitID 16
> bSourceID 9
> bControlSize 1
> bmaControls(0) 0x01
> Mute Control
> bmaControls(1) 0x02
> Volume Control
> bmaControls(2) 0x02
> Volume Control
> iFeature 0
> Interface Descriptor:
> bLength 9
> bDescriptorType 4
> bInterfaceNumber 2
> bAlternateSetting 0
> bNumEndpoints 0
> bInterfaceClass 1 Audio
> bInterfaceSubClass 2 Streaming
> bInterfaceProtocol 0
> iInterface 0
> Interface Descriptor:
> bLength 9
> bDescriptorType 4
> bInterfaceNumber 2
> 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 7
> bDelay 0 frames
> wFormatTag 0x0001 PCM
> AudioStreaming Interface Descriptor:
> bLength 26
> bDescriptorType 36
> bDescriptorSubtype 2 (FORMAT_TYPE)
> bFormatType 1 (FORMAT_TYPE_I)
> bNrChannels 2
> bSubframeSize 2
> bBitResolution 16
> bSamFreqType 6 Discrete
> tSamFreq[ 0] 8000
> tSamFreq[ 1] 16000
> tSamFreq[ 2] 32000
> tSamFreq[ 3] 44100
> tSamFreq[ 4] 48000
> tSamFreq[ 5] 96000
> Endpoint Descriptor:
> bLength 9
> bDescriptorType 5
> bEndpointAddress 0x82 EP 2 IN
> bmAttributes 9
> Transfer Type Isochronous
> Synch Type Adaptive
> Usage Type Data
> wMaxPacketSize 0x0184 1x 388 bytes
> bInterval 1
> bRefresh 0
> bSynchAddress 0
> AudioStreaming Endpoint Descriptor:
> bLength 7
> bDescriptorType 37
> bDescriptorSubtype 1 (EP_GENERAL)
> bmAttributes 0x01
> Sampling Frequency
> bLockDelayUnits 2 Decoded PCM samples
> wLockDelay 0x0002
> Interface Descriptor:
> bLength 9
> bDescriptorType 4
> bInterfaceNumber 2
> bAlternateSetting 2
> bNumEndpoints 1
> bInterfaceClass 1 Audio
> bInterfaceSubClass 2 Streaming
> bInterfaceProtocol 0
> iInterface 0
> AudioStreaming Interface Descriptor:
> bLength 7
> bDescriptorType 36
> bDescriptorSubtype 1 (AS_GENERAL)
> bTerminalLink 7
> bDelay 0 frames
> wFormatTag 0x0001 PCM
> AudioStreaming Interface Descriptor:
> bLength 26
> bDescriptorType 36
> bDescriptorSubtype 2 (FORMAT_TYPE)
> bFormatType 1 (FORMAT_TYPE_I)
> bNrChannels 2
> bSubframeSize 3
> bBitResolution 24
> bSamFreqType 6 Discrete
> tSamFreq[ 0] 8000
> tSamFreq[ 1] 16000
> tSamFreq[ 2] 32000
> tSamFreq[ 3] 44100
> tSamFreq[ 4] 48000
> tSamFreq[ 5] 96000
> Endpoint Descriptor:
> bLength 9
> bDescriptorType 5
> bEndpointAddress 0x82 EP 2 IN
> bmAttributes 9
> Transfer Type Isochronous
> Synch Type Adaptive
> Usage Type Data
> wMaxPacketSize 0x0246 1x 582 bytes
> bInterval 1
> bRefresh 0
> bSynchAddress 0
> AudioStreaming Endpoint Descriptor:
> bLength 7
> bDescriptorType 37
> bDescriptorSubtype 1 (EP_GENERAL)
> bmAttributes 0x01
> Sampling Frequency
> bLockDelayUnits 2 Decoded PCM samples
> wLockDelay 0x0002
> 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 9
> bDelay 0 frames
> wFormatTag 0x0001 PCM
> AudioStreaming Interface Descriptor:
> bLength 20
> bDescriptorType 36
> bDescriptorSubtype 2 (FORMAT_TYPE)
> bFormatType 1 (FORMAT_TYPE_I)
> bNrChannels 2
> bSubframeSize 2
> bBitResolution 16
> bSamFreqType 4 Discrete
> tSamFreq[ 0] 32000
> tSamFreq[ 1] 44100
> tSamFreq[ 2] 48000
> tSamFreq[ 3] 96000
> Endpoint Descriptor:
> bLength 9
> bDescriptorType 5
> bEndpointAddress 0x03 EP 3 OUT
> bmAttributes 9
> Transfer Type Isochronous
> Synch Type Adaptive
> Usage Type Data
> wMaxPacketSize 0x0184 1x 388 bytes
> bInterval 1
> bRefresh 0
> bSynchAddress 0
> AudioStreaming Endpoint Descriptor:
> bLength 7
> bDescriptorType 37
> bDescriptorSubtype 1 (EP_GENERAL)
> bmAttributes 0x01
> Sampling Frequency
> bLockDelayUnits 2 Decoded PCM samples
> wLockDelay 0x0002
> Interface Descriptor:
> bLength 9
> bDescriptorType 4
> bInterfaceNumber 3
> bAlternateSetting 2
> bNumEndpoints 1
> bInterfaceClass 1 Audio
> bInterfaceSubClass 2 Streaming
> bInterfaceProtocol 0
> iInterface 0
> AudioStreaming Interface Descriptor:
> bLength 7
> bDescriptorType 36
> bDescriptorSubtype 1 (AS_GENERAL)
> bTerminalLink 9
> bDelay 0 frames
> wFormatTag 0x0001 PCM
> AudioStreaming Interface Descriptor:
> bLength 20
> bDescriptorType 36
> bDescriptorSubtype 2 (FORMAT_TYPE)
> bFormatType 1 (FORMAT_TYPE_I)
> bNrChannels 2
> bSubframeSize 3
> bBitResolution 24
> bSamFreqType 4 Discrete
> tSamFreq[ 0] 32000
> tSamFreq[ 1] 44100
> tSamFreq[ 2] 48000
> tSamFreq[ 3] 96000
> Endpoint Descriptor:
> bLength 9
> bDescriptorType 5
> bEndpointAddress 0x03 EP 3 OUT
> bmAttributes 9
> Transfer Type Isochronous
> Synch Type Adaptive
> Usage Type Data
> wMaxPacketSize 0x0246 1x 582 bytes
> bInterval 1
> bRefresh 0
> bSynchAddress 0
> AudioStreaming Endpoint Descriptor:
> bLength 7
> bDescriptorType 37
> bDescriptorSubtype 1 (EP_GENERAL)
> bmAttributes 0x01
> Sampling Frequency
> bLockDelayUnits 2 Decoded PCM samples
> wLockDelay 0x0002
> Interface Descriptor:
> bLength 9
> bDescriptorType 4
> bInterfaceNumber 3
> bAlternateSetting 3
> bNumEndpoints 1
> bInterfaceClass 1 Audio
> bInterfaceSubClass 2 Streaming
> bInterfaceProtocol 0
> iInterface 0
> AudioStreaming Interface Descriptor:
> bLength 7
> bDescriptorType 36
> bDescriptorSubtype 1 (AS_GENERAL)
> bTerminalLink 9
> bDelay 0 frames
> wFormatTag 0x2001 IEC1937_AC-3
> AudioStreaming Interface Descriptor:
> bLength 11
> bDescriptorType 36
> bDescriptorSubtype 2 (FORMAT_TYPE)
> bFormatType 3 (FORMAT_TYPE_III)
> bNrChannels 2
> bSubframeSize 2
> bBitResolution 16
> bSamFreqType 1 Discrete
> tSamFreq[ 0] 48000
> Endpoint Descriptor:
> bLength 9
> bDescriptorType 5
> bEndpointAddress 0x03 EP 3 OUT
> bmAttributes 9
> Transfer Type Isochronous
> Synch Type Adaptive
> Usage Type Data
> wMaxPacketSize 0x00c0 1x 192 bytes
> bInterval 1
> bRefresh 0
> bSynchAddress 0
> AudioStreaming Endpoint Descriptor:
> bLength 7
> bDescriptorType 37
> bDescriptorSubtype 1 (EP_GENERAL)
> bmAttributes 0x01
> Sampling Frequency
> bLockDelayUnits 2 Decoded PCM samples
> wLockDelay 0x0002
> can't get debug descriptor: Resource temporarily unavailable
> Device Status: 0x0000
> (Bus Powered)
>


2022-08-26 19:11:42

by Sean Anderson

[permalink] [raw]
Subject: Re: retire_capture_urb: Corrected urb data len



On 8/26/22 12:36 PM, Takashi Iwai wrote:
> On Fri, 26 Aug 2022 18:22:24 +0200,
> Sean Anderson wrote:
>>
>> Hi all,
>>
>> I have a "FiiO DigiHug USB Audio" sound card (1852:7022) [3]. I have had
>> no problems with the audio, but I did notice a large number of message
>> like
>>
>> retire_capture_urb: 4992 callbacks suppressed
>>
>> in my dmesg [1]. This is caused by the "Corrected urb data len."
>> warning.
>
> What exact values are shown there?

Unfortunately, as detailed below, I was unable to turn off ratelimiting.

> The problem is that your hardware
> (likely a buggy firmware) returns the unaligned size of bytes as the
> data. Maybe it's worth to replace dev_warn_ratelimited() there with
> dev_warn() and take all warnings once. Then we can see what kind of
> values are delivered from the hardware.

I'll have an attempt at that next week

>> The patch adding this warning [2] makes it seem like
>> this warning should be an uncommon occurance. However, based on the
>> number of suppressed callbacks, this seems to be happening at a rate of
>> around 500 Hz.
>>
>> Is this buggy hardware? Or is this a bug in the driver? Does there need
>> to be a quirk? Or perhaps the warning above should be a debug instead?
>
> There is no quirk for that. As long as the device works with that
> workaround (except for messages), we can simply add a quirk to not
> warn but always apply the workaround silently for such devices.

OK. I wasn't sure what the correct resolution would be.

--Sean

>
>>
>> I'm using 5.15.0-46-generic. I know, I know; this is a vendor
>> kernel. However, I went through the commits for sound/usb/pcm.c and
>> didn't see any major differences. I also previously saw this issue on
>> 5.4, so this probably isn't a regression.
>>
>> --Sean
>>
>> [1] I would have liked to post the actual message, but I was unable to
>> figure out how to disable ratelimiting. I tried setting
>> /proc/sys/kernel/printk_ratelimit to 0,
>> /proc/sys/kernel/printk_ratelimit_burst to 5000, and
>> /proc/sys/kernel/printk to 8. However, nothing seemed to have any effect
>> (except that the callbacks suppressed messages were disabled). I find
>> this very strange, given that the callbacks suppressed message uses
>> KERN_WARN, and so does dev_warn_ratelimited.
>> [2] https://lore.kernel.org/all/[email protected]/T/
>> [3]
>> Device Descriptor:
>> bLength 18
>> bDescriptorType 1
>> bcdUSB 1.10
>> bDeviceClass 0
>> bDeviceSubClass 0
>> bDeviceProtocol 0
>> bMaxPacketSize0 8
>> idVendor 0x1852 GYROCOM C&C Co., LTD
>> idProduct 0x7022
>> bcdDevice 0.01
>> iManufacturer 1 FiiO
>> iProduct 2 DigiHug USB Audio
>> iSerial 0
>> bNumConfigurations 1
>> Configuration Descriptor:
>> bLength 9
>> bDescriptorType 2
>> wTotalLength 0x0182
>> bNumInterfaces 4
>> bConfigurationValue 1
>> iConfiguration 0
>> bmAttributes 0x80
>> (Bus Powered)
>> MaxPower 500mA
>> Interface Descriptor:
>> bLength 9
>> bDescriptorType 4
>> bInterfaceNumber 0
>> bAlternateSetting 0
>> bNumEndpoints 1
>> bInterfaceClass 3 Human Interface Device
>> bInterfaceSubClass 0
>> bInterfaceProtocol 0
>> iInterface 0
>> HID Device Descriptor:
>> bLength 9
>> bDescriptorType 33
>> bcdHID 1.00
>> bCountryCode 0 Not supported
>> bNumDescriptors 1
>> bDescriptorType 34 Report
>> wDescriptorLength 58
>> Report Descriptors:
>> ** UNAVAILABLE **
>> Endpoint Descriptor:
>> bLength 7
>> bDescriptorType 5
>> bEndpointAddress 0x81 EP 1 IN
>> bmAttributes 3
>> Transfer Type Interrupt
>> Synch Type None
>> Usage Type Data
>> wMaxPacketSize 0x0012 1x 18 bytes
>> bInterval 32
>> Interface Descriptor:
>> bLength 9
>> bDescriptorType 4
>> bInterfaceNumber 1
>> bAlternateSetting 0
>> bNumEndpoints 0
>> bInterfaceClass 1 Audio
>> bInterfaceSubClass 1 Control Device
>> bInterfaceProtocol 0
>> iInterface 3 FiiO USB DAC-E10
>> AudioControl Interface Descriptor:
>> bLength 10
>> bDescriptorType 36
>> bDescriptorSubtype 1 (HEADER)
>> bcdADC 1.00
>> wTotalLength 0x003e
>> bInCollection 2
>> baInterfaceNr(0) 2
>> baInterfaceNr(1) 3
>> AudioControl Interface Descriptor:
>> bLength 12
>> bDescriptorType 36
>> bDescriptorSubtype 2 (INPUT_TERMINAL)
>> bTerminalID 5
>> wTerminalType 0x0605 SPDIF interface
>> bAssocTerminal 0
>> bNrChannels 2
>> wChannelConfig 0x0003
>> Left Front (L)
>> Right Front (R)
>> iChannelNames 0
>> iTerminal 0
>> AudioControl Interface Descriptor:
>> bLength 12
>> bDescriptorType 36
>> bDescriptorSubtype 2 (INPUT_TERMINAL)
>> bTerminalID 9
>> wTerminalType 0x0101 USB Streaming
>> bAssocTerminal 0
>> bNrChannels 2
>> wChannelConfig 0x0003
>> Left Front (L)
>> Right Front (R)
>> iChannelNames 0
>> iTerminal 0
>> AudioControl Interface Descriptor:
>> bLength 9
>> bDescriptorType 36
>> bDescriptorSubtype 3 (OUTPUT_TERMINAL)
>> bTerminalID 3
>> wTerminalType 0x0605 SPDIF interface
>> bAssocTerminal 0
>> bSourceID 16
>> iTerminal 0
>> AudioControl Interface Descriptor:
>> bLength 9
>> bDescriptorType 36
>> bDescriptorSubtype 3 (OUTPUT_TERMINAL)
>> bTerminalID 7
>> wTerminalType 0x0101 USB Streaming
>> bAssocTerminal 0
>> bSourceID 5
>> iTerminal 0
>> AudioControl Interface Descriptor:
>> bLength 10
>> bDescriptorType 36
>> bDescriptorSubtype 6 (FEATURE_UNIT)
>> bUnitID 16
>> bSourceID 9
>> bControlSize 1
>> bmaControls(0) 0x01
>> Mute Control
>> bmaControls(1) 0x02
>> Volume Control
>> bmaControls(2) 0x02
>> Volume Control
>> iFeature 0
>> Interface Descriptor:
>> bLength 9
>> bDescriptorType 4
>> bInterfaceNumber 2
>> bAlternateSetting 0
>> bNumEndpoints 0
>> bInterfaceClass 1 Audio
>> bInterfaceSubClass 2 Streaming
>> bInterfaceProtocol 0
>> iInterface 0
>> Interface Descriptor:
>> bLength 9
>> bDescriptorType 4
>> bInterfaceNumber 2
>> 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 7
>> bDelay 0 frames
>> wFormatTag 0x0001 PCM
>> AudioStreaming Interface Descriptor:
>> bLength 26
>> bDescriptorType 36
>> bDescriptorSubtype 2 (FORMAT_TYPE)
>> bFormatType 1 (FORMAT_TYPE_I)
>> bNrChannels 2
>> bSubframeSize 2
>> bBitResolution 16
>> bSamFreqType 6 Discrete
>> tSamFreq[ 0] 8000
>> tSamFreq[ 1] 16000
>> tSamFreq[ 2] 32000
>> tSamFreq[ 3] 44100
>> tSamFreq[ 4] 48000
>> tSamFreq[ 5] 96000
>> Endpoint Descriptor:
>> bLength 9
>> bDescriptorType 5
>> bEndpointAddress 0x82 EP 2 IN
>> bmAttributes 9
>> Transfer Type Isochronous
>> Synch Type Adaptive
>> Usage Type Data
>> wMaxPacketSize 0x0184 1x 388 bytes
>> bInterval 1
>> bRefresh 0
>> bSynchAddress 0
>> AudioStreaming Endpoint Descriptor:
>> bLength 7
>> bDescriptorType 37
>> bDescriptorSubtype 1 (EP_GENERAL)
>> bmAttributes 0x01
>> Sampling Frequency
>> bLockDelayUnits 2 Decoded PCM samples
>> wLockDelay 0x0002
>> Interface Descriptor:
>> bLength 9
>> bDescriptorType 4
>> bInterfaceNumber 2
>> bAlternateSetting 2
>> bNumEndpoints 1
>> bInterfaceClass 1 Audio
>> bInterfaceSubClass 2 Streaming
>> bInterfaceProtocol 0
>> iInterface 0
>> AudioStreaming Interface Descriptor:
>> bLength 7
>> bDescriptorType 36
>> bDescriptorSubtype 1 (AS_GENERAL)
>> bTerminalLink 7
>> bDelay 0 frames
>> wFormatTag 0x0001 PCM
>> AudioStreaming Interface Descriptor:
>> bLength 26
>> bDescriptorType 36
>> bDescriptorSubtype 2 (FORMAT_TYPE)
>> bFormatType 1 (FORMAT_TYPE_I)
>> bNrChannels 2
>> bSubframeSize 3
>> bBitResolution 24
>> bSamFreqType 6 Discrete
>> tSamFreq[ 0] 8000
>> tSamFreq[ 1] 16000
>> tSamFreq[ 2] 32000
>> tSamFreq[ 3] 44100
>> tSamFreq[ 4] 48000
>> tSamFreq[ 5] 96000
>> Endpoint Descriptor:
>> bLength 9
>> bDescriptorType 5
>> bEndpointAddress 0x82 EP 2 IN
>> bmAttributes 9
>> Transfer Type Isochronous
>> Synch Type Adaptive
>> Usage Type Data
>> wMaxPacketSize 0x0246 1x 582 bytes
>> bInterval 1
>> bRefresh 0
>> bSynchAddress 0
>> AudioStreaming Endpoint Descriptor:
>> bLength 7
>> bDescriptorType 37
>> bDescriptorSubtype 1 (EP_GENERAL)
>> bmAttributes 0x01
>> Sampling Frequency
>> bLockDelayUnits 2 Decoded PCM samples
>> wLockDelay 0x0002
>> 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 9
>> bDelay 0 frames
>> wFormatTag 0x0001 PCM
>> AudioStreaming Interface Descriptor:
>> bLength 20
>> bDescriptorType 36
>> bDescriptorSubtype 2 (FORMAT_TYPE)
>> bFormatType 1 (FORMAT_TYPE_I)
>> bNrChannels 2
>> bSubframeSize 2
>> bBitResolution 16
>> bSamFreqType 4 Discrete
>> tSamFreq[ 0] 32000
>> tSamFreq[ 1] 44100
>> tSamFreq[ 2] 48000
>> tSamFreq[ 3] 96000
>> Endpoint Descriptor:
>> bLength 9
>> bDescriptorType 5
>> bEndpointAddress 0x03 EP 3 OUT
>> bmAttributes 9
>> Transfer Type Isochronous
>> Synch Type Adaptive
>> Usage Type Data
>> wMaxPacketSize 0x0184 1x 388 bytes
>> bInterval 1
>> bRefresh 0
>> bSynchAddress 0
>> AudioStreaming Endpoint Descriptor:
>> bLength 7
>> bDescriptorType 37
>> bDescriptorSubtype 1 (EP_GENERAL)
>> bmAttributes 0x01
>> Sampling Frequency
>> bLockDelayUnits 2 Decoded PCM samples
>> wLockDelay 0x0002
>> Interface Descriptor:
>> bLength 9
>> bDescriptorType 4
>> bInterfaceNumber 3
>> bAlternateSetting 2
>> bNumEndpoints 1
>> bInterfaceClass 1 Audio
>> bInterfaceSubClass 2 Streaming
>> bInterfaceProtocol 0
>> iInterface 0
>> AudioStreaming Interface Descriptor:
>> bLength 7
>> bDescriptorType 36
>> bDescriptorSubtype 1 (AS_GENERAL)
>> bTerminalLink 9
>> bDelay 0 frames
>> wFormatTag 0x0001 PCM
>> AudioStreaming Interface Descriptor:
>> bLength 20
>> bDescriptorType 36
>> bDescriptorSubtype 2 (FORMAT_TYPE)
>> bFormatType 1 (FORMAT_TYPE_I)
>> bNrChannels 2
>> bSubframeSize 3
>> bBitResolution 24
>> bSamFreqType 4 Discrete
>> tSamFreq[ 0] 32000
>> tSamFreq[ 1] 44100
>> tSamFreq[ 2] 48000
>> tSamFreq[ 3] 96000
>> Endpoint Descriptor:
>> bLength 9
>> bDescriptorType 5
>> bEndpointAddress 0x03 EP 3 OUT
>> bmAttributes 9
>> Transfer Type Isochronous
>> Synch Type Adaptive
>> Usage Type Data
>> wMaxPacketSize 0x0246 1x 582 bytes
>> bInterval 1
>> bRefresh 0
>> bSynchAddress 0
>> AudioStreaming Endpoint Descriptor:
>> bLength 7
>> bDescriptorType 37
>> bDescriptorSubtype 1 (EP_GENERAL)
>> bmAttributes 0x01
>> Sampling Frequency
>> bLockDelayUnits 2 Decoded PCM samples
>> wLockDelay 0x0002
>> Interface Descriptor:
>> bLength 9
>> bDescriptorType 4
>> bInterfaceNumber 3
>> bAlternateSetting 3
>> bNumEndpoints 1
>> bInterfaceClass 1 Audio
>> bInterfaceSubClass 2 Streaming
>> bInterfaceProtocol 0
>> iInterface 0
>> AudioStreaming Interface Descriptor:
>> bLength 7
>> bDescriptorType 36
>> bDescriptorSubtype 1 (AS_GENERAL)
>> bTerminalLink 9
>> bDelay 0 frames
>> wFormatTag 0x2001 IEC1937_AC-3
>> AudioStreaming Interface Descriptor:
>> bLength 11
>> bDescriptorType 36
>> bDescriptorSubtype 2 (FORMAT_TYPE)
>> bFormatType 3 (FORMAT_TYPE_III)
>> bNrChannels 2
>> bSubframeSize 2
>> bBitResolution 16
>> bSamFreqType 1 Discrete
>> tSamFreq[ 0] 48000
>> Endpoint Descriptor:
>> bLength 9
>> bDescriptorType 5
>> bEndpointAddress 0x03 EP 3 OUT
>> bmAttributes 9
>> Transfer Type Isochronous
>> Synch Type Adaptive
>> Usage Type Data
>> wMaxPacketSize 0x00c0 1x 192 bytes
>> bInterval 1
>> bRefresh 0
>> bSynchAddress 0
>> AudioStreaming Endpoint Descriptor:
>> bLength 7
>> bDescriptorType 37
>> bDescriptorSubtype 1 (EP_GENERAL)
>> bmAttributes 0x01
>> Sampling Frequency
>> bLockDelayUnits 2 Decoded PCM samples
>> wLockDelay 0x0002
>> can't get debug descriptor: Resource temporarily unavailable
>> Device Status: 0x0000
>> (Bus Powered)
>>
>

2022-08-28 08:07:00

by Takashi Iwai

[permalink] [raw]
Subject: Re: retire_capture_urb: Corrected urb data len

On Fri, 26 Aug 2022 20:57:53 +0200,
Sean Anderson wrote:
>
> On 8/26/22 12:36 PM, Takashi Iwai wrote:
> > On Fri, 26 Aug 2022 18:22:24 +0200,
> > Sean Anderson wrote:
> >>
> >> Hi all,
> >>
> >> I have a "FiiO DigiHug USB Audio" sound card (1852:7022) [3]. I have had
> >> no problems with the audio, but I did notice a large number of message
> >> like
> >>
> >> retire_capture_urb: 4992 callbacks suppressed
> >>
> >> in my dmesg [1]. This is caused by the "Corrected urb data len."
> >> warning.
> >
> > What exact values are shown there?
>
> Unfortunately, as detailed below, I was unable to turn off ratelimiting.
>
> > The problem is that your hardware
> > (likely a buggy firmware) returns the unaligned size of bytes as the
> > data. Maybe it's worth to replace dev_warn_ratelimited() there with
> > dev_warn() and take all warnings once. Then we can see what kind of
> > values are delivered from the hardware.
>
> I'll have an attempt at that next week
>
> >> The patch adding this warning [2] makes it seem like
> >> this warning should be an uncommon occurance. However, based on the
> >> number of suppressed callbacks, this seems to be happening at a rate of
> >> around 500 Hz.
> >>
> >> Is this buggy hardware? Or is this a bug in the driver? Does there need
> >> to be a quirk? Or perhaps the warning above should be a debug instead?
> >
> > There is no quirk for that. As long as the device works with that
> > workaround (except for messages), we can simply add a quirk to not
> > warn but always apply the workaround silently for such devices.
>
> OK. I wasn't sure what the correct resolution would be.

Actually I was wrong: the existing quirk QUIRK_FLAG_ALIGN_TRANSFER
should cover that.

Could you try to pass quirk_flags=0x04 for the corresponding card slot
(the option takes an array) to snd-usb-audio module? Alternatively,
try to pass quirk_alias=18557022:0e510408 to snd-usb-audio?


thanks,

Takashi

2022-09-01 16:36:01

by Sean Anderson

[permalink] [raw]
Subject: Re: retire_capture_urb: Corrected urb data len



On 8/28/22 3:49 AM, Takashi Iwai wrote:
> On Fri, 26 Aug 2022 20:57:53 +0200,
> Sean Anderson wrote:
>>
>> On 8/26/22 12:36 PM, Takashi Iwai wrote:
>> > On Fri, 26 Aug 2022 18:22:24 +0200,
>> > Sean Anderson wrote:
>> >>
>> >> Hi all,
>> >>
>> >> I have a "FiiO DigiHug USB Audio" sound card (1852:7022) [3]. I have had
>> >> no problems with the audio, but I did notice a large number of message
>> >> like
>> >>
>> >> retire_capture_urb: 4992 callbacks suppressed
>> >>
>> >> in my dmesg [1]. This is caused by the "Corrected urb data len."
>> >> warning.
>> >
>> > What exact values are shown there?
>>
>> Unfortunately, as detailed below, I was unable to turn off ratelimiting.
>>
>> > The problem is that your hardware
>> > (likely a buggy firmware) returns the unaligned size of bytes as the
>> > data. Maybe it's worth to replace dev_warn_ratelimited() there with
>> > dev_warn() and take all warnings once. Then we can see what kind of
>> > values are delivered from the hardware.
>>
>> I'll have an attempt at that next week
>>
>> >> The patch adding this warning [2] makes it seem like
>> >> this warning should be an uncommon occurance. However, based on the
>> >> number of suppressed callbacks, this seems to be happening at a rate of
>> >> around 500 Hz.
>> >>
>> >> Is this buggy hardware? Or is this a bug in the driver? Does there need
>> >> to be a quirk? Or perhaps the warning above should be a debug instead?
>> >
>> > There is no quirk for that. As long as the device works with that
>> > workaround (except for messages), we can simply add a quirk to not
>> > warn but always apply the workaround silently for such devices.
>>
>> OK. I wasn't sure what the correct resolution would be.
>
> Actually I was wrong: the existing quirk QUIRK_FLAG_ALIGN_TRANSFER
> should cover that.
>
> Could you try to pass quirk_flags=0x04 for the corresponding card slot
> (the option takes an array) to snd-usb-audio module? Alternatively,
> try to pass quirk_alias=18557022:0e510408 to snd-usb-audio?

I tried both options, but neither worked.

--Sean

2022-09-02 06:02:42

by Takashi Iwai

[permalink] [raw]
Subject: Re: retire_capture_urb: Corrected urb data len

On Thu, 01 Sep 2022 17:25:41 +0200,
Sean Anderson wrote:
>
>
>
> On 8/28/22 3:49 AM, Takashi Iwai wrote:
> > On Fri, 26 Aug 2022 20:57:53 +0200,
> > Sean Anderson wrote:
> >>
> >> On 8/26/22 12:36 PM, Takashi Iwai wrote:
> >> > On Fri, 26 Aug 2022 18:22:24 +0200,
> >> > Sean Anderson wrote:
> >> >>
> >> >> Hi all,
> >> >>
> >> >> I have a "FiiO DigiHug USB Audio" sound card (1852:7022) [3]. I have had
> >> >> no problems with the audio, but I did notice a large number of message
> >> >> like
> >> >>
> >> >> retire_capture_urb: 4992 callbacks suppressed
> >> >>
> >> >> in my dmesg [1]. This is caused by the "Corrected urb data len."
> >> >> warning.
> >> >
> >> > What exact values are shown there?
> >>
> >> Unfortunately, as detailed below, I was unable to turn off ratelimiting.
> >>
> >> > The problem is that your hardware
> >> > (likely a buggy firmware) returns the unaligned size of bytes as the
> >> > data. Maybe it's worth to replace dev_warn_ratelimited() there with
> >> > dev_warn() and take all warnings once. Then we can see what kind of
> >> > values are delivered from the hardware.
> >>
> >> I'll have an attempt at that next week
> >>
> >> >> The patch adding this warning [2] makes it seem like
> >> >> this warning should be an uncommon occurance. However, based on the
> >> >> number of suppressed callbacks, this seems to be happening at a rate of
> >> >> around 500 Hz.
> >> >>
> >> >> Is this buggy hardware? Or is this a bug in the driver? Does there need
> >> >> to be a quirk? Or perhaps the warning above should be a debug instead?
> >> >
> >> > There is no quirk for that. As long as the device works with that
> >> > workaround (except for messages), we can simply add a quirk to not
> >> > warn but always apply the workaround silently for such devices.
> >>
> >> OK. I wasn't sure what the correct resolution would be.
> >
> > Actually I was wrong: the existing quirk QUIRK_FLAG_ALIGN_TRANSFER
> > should cover that.
> >
> > Could you try to pass quirk_flags=0x04 for the corresponding card slot
> > (the option takes an array) to snd-usb-audio module? Alternatively,
> > try to pass quirk_alias=18557022:0e510408 to snd-usb-audio?
>
> I tried both options, but neither worked.

I have no further idea. You should try the latest kernel without
modification before checking further.

And, looking at the code again, it's really strange that you get those
messages. Actually the transfer size *is* aligned to the audio frames
as default *unless* QUIRK_FLAG_ALIGN_TRANSFER is passed. And the
check is done rather the audio sample size alignment -- which must fit
within the audio frame alignment.

So, QUIRK_FLAG_ALIGN_TRANSFER is already set for your device by some
reason incorrectly, or the code is doing wrong on your kernel.
We need to check what values are shown there actually, then check
whether the problem happens with the latest vanilla kernel.


Takashi