Bug 212771

Summary: cannot get freq at ep 0x84 (webcam microphone not working)
Product: Drivers Reporter: Erik Quaeghebeur (bugzilla.kernel.org)
Component: Sound(ALSA)Assignee: Jaroslav Kysela (perex)
Status: NEW ---    
Severity: normal CC: pmenzel+bugzilla.kernel.org, tiwai
Priority: P1    
Hardware: All   
OS: Linux   
Kernel Version: 5.10.27 Subsystem:
Regression: No Bisected commit-id:
Attachments: alsa-infor.sh output
lsusb -v output for device

Description Erik Quaeghebeur 2021-04-26 20:42:12 UTC
I got a “Sandberg USB Webcam 1080P HD” from work for home-working. The camera part works. The microphone does not. (I have another webcam with microphone that does work, but it is an old Logitech QuickCam Pro 9000.)

In the logs, when connecting the device, I see:

kernel: usb 6-2: new high-speed USB device number 15 using xhci_hcd
kernel: usb 6-2: New USB device found, idVendor=0c46, idProduct=636b, bcdDevice= 1.00
kernel: usb 6-2: New USB device strings: Mfr=2, Product=1, SerialNumber=3
kernel: usb 6-2: Product: USB 2.0 Camera
kernel: usb 6-2: Manufacturer: Sonix Technology Co., Ltd.
kernel: usb 6-2: SerialNumber: SN0001
kernel: uvcvideo: Found UVC 1.00 device USB 2.0 Camera (0c46:636b)
kernel: input: USB 2.0 Camera: USB Camera as /devices/pci0000:00/0000:00:08.1/0000:07
kernel: usb 6-2: 3:1: cannot get freq at ep 0x84
kernel: usb 6-2: 3:1: cannot get freq at ep 0x84
kernel: usb 6-2: 3:1: cannot get freq at ep 0x84

The last three lines are at the error level. They are my best guess of being related to the microphone issue. (Perhaps related: https://lkml.org/lkml/2017/9/19/824, https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1708499.)
Comment 1 Takashi Iwai 2021-05-03 09:07:27 UTC
Try to pass quirk_alias=0c46636b:047f1111.  This will make the driver applying the same quirk as Plantronics device, and the error should be gone.
If this actually makes your device working, we can cook up the proper quirk patch.
Comment 2 Erik Quaeghebeur 2021-05-03 09:29:29 UTC
(In reply to Takashi Iwai from comment #1)
> Try to pass quirk_alias=0c46636b:047f1111.  This will make the driver
> applying the same quirk as Plantronics device, and the error should be gone.

$ cat /proc/cmdline 
root=PARTLABEL=Linux_Root rootflags=subvol=@/live quirk_alias=0c46636b:047f1111

However, the same error persists and the microphone still does not work.
Comment 3 Takashi Iwai 2021-05-03 09:32:18 UTC
Err, it's the module option for snd-usb-audio.
So, on the boot options, you'll have to pass like
  snd_usb_audio.quirk_alias=0c46636b:047f1111
Comment 4 Erik Quaeghebeur 2021-05-03 10:25:30 UTC
(In reply to Takashi Iwai from comment #3)
>   snd_usb_audio.quirk_alias=0c46636b:047f1111
Ah. That removes the error message, but the microphone still doesn't work. It does work when tested on a Windows laptop. Might I be missing some kernel module? (I am using a self-configured kernel.)
Comment 5 Takashi Iwai 2021-05-03 10:59:03 UTC
Then the error message was irrelevant from the bug itself.

Please give alsa-info.sh output (run with --no-upload option and attach it to Bugzilla), as well as the output of lsusb -v for the device.
Comment 6 Takashi Iwai 2021-05-03 11:00:29 UTC
Also, as a blind shot, try quirk_alias=0c46636b:046d1111 instead.
Comment 7 Erik Quaeghebeur 2021-05-03 19:19:41 UTC
(In reply to Takashi Iwai from comment #6)
> Also, as a blind shot, try quirk_alias=0c46636b:046d1111 instead.
With that, the error returns.
Comment 8 Erik Quaeghebeur 2021-05-03 19:48:59 UTC
Created attachment 296613 [details]
alsa-infor.sh output
Comment 9 Erik Quaeghebeur 2021-05-03 19:49:27 UTC
Created attachment 296615 [details]
lsusb -v output for device
Comment 10 Takashi Iwai 2021-05-04 08:50:41 UTC
Hm, then try quirk_alias=0c46636b:046d084c.  This is the alias to Logitech ConferenceCam Connect that has quirk for the sample rate ep and the delay for each setup.
Comment 11 Erik Quaeghebeur 2021-05-05 08:46:21 UTC
(In reply to Takashi Iwai from comment #10)
> Hm, then try quirk_alias=0c46636b:046d084c. […]

Does not help:

kernel: usb 4-1.3.2: USB disconnect, device number 4
kernel: usb 4-1.3.2: new high-speed USB device number 11 using xhci_hcd
kernel: usb 4-1.3.2: New USB device found, idVendor=0c46, idProduct=636b, bcdDevice= 1.00
kernel: usb 4-1.3.2: New USB device strings: Mfr=2, Product=1, SerialNumber=3
kernel: usb 4-1.3.2: Product: USB 2.0 Camera
kernel: usb 4-1.3.2: Manufacturer: Sonix Technology Co., Ltd.
kernel: usb 4-1.3.2: SerialNumber: SN0001
kernel: uvcvideo: Found UVC 1.00 device USB 2.0 Camera (0c46:636b)
kernel: input: USB 2.0 Camera: USB Camera as /devices/pci0000:00/0000:00:08.1/0000:07:00.3/usb4/4-1/4-1.3/4-1.3.2/4-1.3.2:1.0/input/input31
kernel: usb 4-1.3.2: device (0c46:636b): applying quirk alias 046d:084c
kernel: usb 4-1.3.2: 3:1: cannot get freq at ep 0x84
mtp-probe[23019]: checking bus 4, device 11: "/sys/devices/pci0000:00/0000:00:08.1/0000:07:00.3/usb4/4-1/4-1.3/4-1.3.2"
mtp-probe[23019]: bus: 4, device: 11 was not an MTP device
systemd-udevd[23038]: controlC5: Process '/usr/sbin/alsactl restore 5' failed with exit code 99.
systemd[1523]: Reached target Sound Card.
mtp-probe[23051]: checking bus 4, device 11: "/sys/devices/pci0000:00/0000:00:08.1/0000:07:00.3/usb4/4-1/4-1.3/4-1.3.2"
mtp-probe[23051]: bus: 4, device: 11 was not an MTP device
kernel: usb 4-1.3.2: 3:1: cannot get freq at ep 0x84
kernel: usb 4-1.3.2: 3:1: cannot get freq at ep 0x84
Comment 12 Takashi Iwai 2021-05-05 09:08:04 UTC
You're testing with a too old kernel, that's why get freq error is shown with this quirk value.  But, the delay quirk was already applied in 5.10 kernel, so essentially this doesn't seem helping the primary problem.

I have no further clue ATM.  You can try to apply the similar workarounds found in quirks.c for your device.
Comment 13 Erik Quaeghebeur 2021-05-05 09:22:31 UTC
(In reply to Takashi Iwai from comment #12)
> I have no further clue ATM.  You can try to apply the similar workarounds
> found in quirks.c for your device.

Thanks for your suggestions. I'll likely just wait and hope this gets fixed at some point.
Comment 14 Takashi Iwai 2021-05-05 09:38:29 UTC
Oh, BTW, when you test recording, you'd better use arecord with -Dplughw:xxx option directly without PA (where xxx corresponds to your card index).
Comment 15 Erik Quaeghebeur 2021-05-05 11:20:13 UTC
(In reply to Takashi Iwai from comment #14)
> Oh, BTW, when you test recording, you'd better use arecord with -Dplughw:xxx
> option directly without PA (where xxx corresponds to your card index).
Where can I find the card index?
Comment 16 Takashi Iwai 2021-05-05 11:21:41 UTC
/proc/asound/cards
Comment 17 Erik Quaeghebeur 2021-05-05 12:12:27 UTC
(In reply to Takashi Iwai from comment #16)
> /proc/asound/cards
Thanks. (I should've read man arecord and done arecord -l.)

(In reply to Takashi Iwai from comment #14)
> Oh, BTW, when you test recording, you'd better use arecord with -Dplughw:xxx
> option directly without PA (where xxx corresponds to your card index).
I did. No sound for the Sonix, but sound for the Quick Cam 9000, as via Pulse.
Comment 18 Paul Menzel 2024-01-15 22:27:44 UTC
Were you able to get the microphone working?
Comment 19 Erik Quaeghebeur 2024-02-06 21:53:53 UTC
(In reply to Paul Menzel from comment #18)
> Were you able to get the microphone working?

No. I just tried again with 6.6.13 and the same issue is still there.

Because of the audio issue, I've never really used it. Now, while testing, it is clear the video is just bad as well. It's just not good hardware my organization gave me. I was just using old stuff of my own. I'm going to return it and ask if they have something else, which does work with Linux.