Re: [PATCH] ALSA: usb-audio: Fix microphone sound on HD webcam.

From: Takashi Iwai
Date: Wed Jul 17 2024 - 04:36:31 EST


On Wed, 17 Jul 2024 09:51:49 +0200,
wangdicheng wrote:
>
> From: wangdicheng <wangdicheng@xxxxxxxxxx>
>
> I own an external usb Webcam, HD webcam, which had low mic volume and
> inconsistent sound quality. Video works as expected.
>
> (snip)
> [ 95.473820][ 1] [ T73] usb 5-2.2: new high-speed USB device number 7 using xhci_hcd
> [ 95.773974][ 1] [ T73] usb 5-2.2: New USB device found, idVendor=1bcf, idProduct=2281, bcdDevice= 0.05
> [ 95.783445][ 1] [ T73] usb 5-2.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
> [ 95.791872][ 1] [ T73] usb 5-2.2: Product: HD webcam
> [ 95.797001][ 1] [ T73] usb 5-2.2: Manufacturer: Sunplus IT Co
> [ 95.802996][ 1] [ T73] usb 5-2.2: SerialNumber: 20200513
> [ 96.092610][ 2] [ T3680] usb 5-2.2: Warning! Unlikely big volume range (=4096), cval->res is probably wrong.
> [ 96.102436][ 2] [ T3680] usb 5-2.2: [5] FU [Mic Capture Volume] ch = 1, val = 0/4096/1
>
> Set up quirk cval->res to 16 for 256 levels,
> Set GET_SAMPLE_RATE quirk flag to stop trying to get the sample rate.
> Confirmed that happened anyway later due to the backoff mechanism,
> After 3 failures.
>
> All audio stream on device interfaces share the same values,
> apart from wMaxPacketSize and tSamFreq :
>
> bLength 9
> bDescriptorType 4
> bInterfaceNumber 3
> bAlternateSetting 4
> bNumEndpoints 1
> bInterfaceClass 1 Audio
>
> Interface Descriptor:
> bLength 9
> bDescriptorType 4
> bInterfaceNumber 3
> bAlternateSetting 4
> bNumEndpoints 1
> bInterfaceClass 1 Audio
> bInterfaceSubClass 2 Streaming
> bInterfaceProtocol 0
> iInterface 0
> AudioStreaming Interface Descriptor:
> bLength 7
> bDescriptorType 36
> bDescriptorSubtype 1 (AS_GENERAL)
> bTerminalLink 3
> bDelay 1 frames
> wFormatTag 0x0001 PCM
> AudioStreaming Interface Descriptor:
> bLength 11
> bDescriptorType 36
> bDescriptorSubtype 2 (FORMAT_TYPE)
> bFormatType 1 (FORMAT_TYPE_I)
> bNrChannels 1
> bSubframeSize 2
> bBitResolution 16
> bSamFreqType 1 Discrete
> tSamFreq[ 0] 48000
> Endpoint Descriptor:
> bLength 9
> bDescriptorType 5
> bEndpointAddress 0x86 EP 6 IN
> bmAttributes 5
> Transfer Type Isochronous
> Synch Type Asynchronous
> Usage Type Data
> wMaxPacketSize 0x0064 1x 100 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
> (snip)
>
> Testing patch provides consistent good sound recording quality and volume range.
>
> (snip)
> [ 95.473820][ 1] [ T73] usb 5-2.2: new high-speed USB device number 7 using xhci_hcd
> [ 95.773974][ 1] [ T73] usb 5-2.2: New USB device found, idVendor=1bcf, idProduct=2281, bcdDevice= 0.05
> [ 95.783445][ 1] [ T73] usb 5-2.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
> [ 95.791872][ 1] [ T73] usb 5-2.2: Product: HD webcam
> [ 95.797001][ 1] [ T73] usb 5-2.2: Manufacturer: Sunplus IT Co
> [ 95.802996][ 1] [ T73] usb 5-2.2: SerialNumber: 20200513
> [ 96.110630][ 3] [ T3680] usbcore: registered new interface driver snd-usb-audio
> [ 96.114329][ 7] [ T3677] usb 5-2.2: Found UVC 1.00 device HD webcam (1bcf:2281)
> [ 96.167555][ 7] [ T3677] usbcore: registered new interface driver uvcvideo
>
> Signed-off-by: wangdicheng <wangdicheng@xxxxxxxxxx>

The patch can't be applied cleanly to the latest tree, as the table
has been sorted. Could you rebase and resubmit? Also a nitpicking:

> --- a/sound/usb/quirks.c
> +++ b/sound/usb/quirks.c
> @@ -2179,6 +2179,8 @@ static const struct usb_audio_quirk_flags_table quirk_flags_table[] = {
> QUIRK_FLAG_FIXED_RATE),
> DEVICE_FLG(0x1bcf, 0x2283, /* NexiGo N930AF FHD Webcam */
> QUIRK_FLAG_GET_SAMPLE_RATE),
> + DEVICE_FLG(0x1bcf, 0x2281, /* FHD Webcam */
> + QUIRK_FLAG_GET_SAMPLE_RATE),

Please try to align the space.


thanks,

Takashi