Re: [PATCH] ALSA: usb-audio: Fix microphone sound on Nexigo webcam.
From: Takashi Iwai
Date: Mon Oct 09 2023 - 02:20:41 EST
On Fri, 06 Oct 2023 17:53:30 +0200,
Christos Skevis wrote:
>
> I own an external usb Webcam, model NexiGo N930AF, which had low mic volume and
> inconsistent sound quality. Video works as expected.
>
> (snip)
> [ +0.047857] usb 5-1: new high-speed USB device number 2 using xhci_hcd
> [ +0.003406] usb 5-1: New USB device found, idVendor=1bcf, idProduct=2283, bcdDevice=12.17
> [ +0.000007] usb 5-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
> [ +0.000004] usb 5-1: Product: NexiGo N930AF FHD Webcam
> [ +0.000003] usb 5-1: Manufacturer: SHENZHEN AONI ELECTRONIC CO., LTD
> [ +0.000004] usb 5-1: SerialNumber: 20201217011
> [ +0.003900] usb 5-1: Found UVC 1.00 device NexiGo N930AF FHD Webcam (1bcf:2283)
> [ +0.025726] usb 5-1: 3:1: cannot get usb sound sample rate freq at ep 0x86
> [ +0.071482] usb 5-1: 3:2: cannot get usb sound sample rate freq at ep 0x86
> [ +0.004679] usb 5-1: 3:3: cannot get usb sound sample rate freq at ep 0x86
> [ +0.051607] usb 5-1: Warning! Unlikely big volume range (=4096), cval->res is probably wrong.
> [ +0.000005] usb 5-1: [7] 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 :
>
> (snip)
> 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 8
> 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] 44100
> Endpoint Descriptor:
> bLength 9
> bDescriptorType 5
> bEndpointAddress 0x86 EP 6 IN
> bmAttributes 5
> Transfer Type Isochronous
> Synch Type Asynchronous
> Usage Type Data
> wMaxPacketSize 0x005c 1x 92 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)
>
> Based on the usb data about manufacturer, SPCA2281B3 is the most likely controller IC
> Manufacturer does not provide link for datasheet nor detailed specs.
> No way to confirm if the firmware supports any other way of getting the sample rate.
>
> Testing patch provides consistent good sound recording quality and volume range.
>
> (snip)
> [ +0.045764] usb 5-1: new high-speed USB device number 2 using xhci_hcd
> [ +0.106290] usb 5-1: New USB device found, idVendor=1bcf, idProduct=2283, bcdDevice=12.17
> [ +0.000006] usb 5-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
> [ +0.000004] usb 5-1: Product: NexiGo N930AF FHD Webcam
> [ +0.000003] usb 5-1: Manufacturer: SHENZHEN AONI ELECTRONIC CO., LTD
> [ +0.000004] usb 5-1: SerialNumber: 20201217011
> [ +0.043700] usb 5-1: set resolution quirk: cval->res = 16
> [ +0.002585] usb 5-1: Found UVC 1.00 device NexiGo N930AF FHD Webcam (1bcf:2283)
>
> Signed-off-by: Christos Skevis <xristos.thes@xxxxxxxxx>
Thanks, applied now.
Takashi