Message ID | 20240719020906.8078-1-wangdich9700@163.com |
---|---|
State | Superseded |
Headers | show |
Series | [v3] ALSA: usb-audio: Fix microphone sound on HD webcam. | expand |
On Fri, 19 Jul 2024 04:09:06 +0200, wangdicheng wrote: > > From: wangdicheng <wangdicheng@kylinos.cn> > > 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@kylinos.cn> > --- > v2 -> v3: make the mail address of Signed-off-by consistent with the From address > V1 -> V2: align the space,Update code to v6.8-rc3,and make modifications based on it Thanks, applied now. Takashi
diff --git a/sound/usb/mixer.c b/sound/usb/mixer.c index 409fc1164694..d1bdb0b93bda 100644 --- a/sound/usb/mixer.c +++ b/sound/usb/mixer.c @@ -1211,6 +1211,13 @@ static void volume_control_quirks(struct usb_mixer_elem_info *cval, cval->res = 16; } break; + case USB_ID(0x1bcf, 0x2281): /* HD Webcam */ + if (!strcmp(kctl->id.name, "Mic Capture Volume")) { + usb_audio_info(chip, + "set resolution quirk: cval->res = 16\n"); + cval->res = 16; + } + break; } } diff --git a/sound/usb/quirks.c b/sound/usb/quirks.c index 09712e61c606..f222532d4d43 100644 --- a/sound/usb/quirks.c +++ b/sound/usb/quirks.c @@ -2185,6 +2185,8 @@ static const struct usb_audio_quirk_flags_table quirk_flags_table[] = { QUIRK_FLAG_ALIGN_TRANSFER), DEVICE_FLG(0x534d, 0x2109, /* MacroSilicon MS2109 */ QUIRK_FLAG_ALIGN_TRANSFER), + DEVICE_FLG(0x1bcf, 0x2281, /* HD Webcam */ + QUIRK_FLAG_GET_SAMPLE_RATE), /* Vendor matches */ VENDOR_FLG(0x045e, /* MS Lifecam */