Patch "ALSA: usb-audio: Fix microphone sound on Nexigo webcam." has been added to the 5.15-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    ALSA: usb-audio: Fix microphone sound on Nexigo webcam.

to the 5.15-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     alsa-usb-audio-fix-microphone-sound-on-nexigo-webcam.patch
and it can be found in the queue-5.15 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit 286d9d3541f3c2fc1c6baea3fd2c0d9ac0682ff2
Author: Christos Skevis <xristos.thes@xxxxxxxxx>
Date:   Fri Oct 6 17:53:30 2023 +0200

    ALSA: usb-audio: Fix microphone sound on Nexigo webcam.
    
    [ Upstream commit 4a63e68a295187ae3c1cb3fa0c583c96a959714f ]
    
    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>
    Link: https://lore.kernel.org/r/20231006155330.399393-1-xristos.thes@xxxxxxxxx
    Signed-off-by: Takashi Iwai <tiwai@xxxxxxx>
    Stable-dep-of: 7822baa844a8 ("ALSA: usb-audio: add quirk for RODE NT-USB+")
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/sound/usb/mixer.c b/sound/usb/mixer.c
index 567514832b0df..d818eee53c90a 100644
--- a/sound/usb/mixer.c
+++ b/sound/usb/mixer.c
@@ -1205,6 +1205,13 @@ static void volume_control_quirks(struct usb_mixer_elem_info *cval,
 			cval->res = 16;
 		}
 		break;
+	case USB_ID(0x1bcf, 0x2283): /* NexiGo N930AF FHD 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 a765da40eb27d..39313db7aed3f 100644
--- a/sound/usb/quirks.c
+++ b/sound/usb/quirks.c
@@ -1898,6 +1898,8 @@ static const struct usb_audio_quirk_flags_table quirk_flags_table[] = {
 		   QUIRK_FLAG_IFACE_SKIP_CLOSE),
 	DEVICE_FLG(0x0ecb, 0x2069, /* JBL Quantum810 Wireless */
 		   QUIRK_FLAG_FIXED_RATE),
+	DEVICE_FLG(0x1bcf, 0x2283, /* NexiGo N930AF FHD Webcam */
+		   QUIRK_FLAG_GET_SAMPLE_RATE),
 
 	/* Vendor matches */
 	VENDOR_FLG(0x045e, /* MS Lifecam */




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux