snd_usb_audio duplex not possible Re: restricting usb device allowed format/depth

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

 



It appears the audio format is not the issue, 24bit is possible, but
duplex audio is not. It's possible to record if I change device
profile (via pavucontrol) to Analogue or Digital Input, but not if
duplex is enabled. This can actually even be seen in the pavucontrol
level monitor for the device, which doesn't appear when duplex is
enabled but does when an input-only mode is used.

It coincides with this message in dmesg:
[  294.825544] usb 1-1.1: cannot submit urb 0, error -28: not enough bandwidth
[  299.839010] usb 1-1.1: cannot submit urb 0, error -28: not enough bandwidth

Device is T420, Fedora 29, 6.7.4-200.fc39.x86_64 #1 SMP PREEMPT_DYNAMIC

USB host controller Intel Corporation 6 Series/C200 Series Chipset
Family USB Enhanced Host Controller. There are two (#1/#2) shown in
lspci, I've tried unplugging external USB devices, but there are also
a built in camera, bluetooth adapter and wireless modem on the USB
bus.

The closest I've found is
https://forums.gentoo.org/viewtopic-t-862035-start-0.html which
suggests disabling automute (user found the urb message was unrelated,
not the problem here, I've checked volume levels) and another who
rebuilt the kernel with uchi and ochi and usb debuging disabled,
trying that one now.

Any ideas? Might be one for the developers list. I've seen mention
that Intel 5 Series USB controllers may have an issue with duplpex
audio, but not found the same complaint about 6 Series. The USB device
itself works fine for duplex with Linux on a newer Lenovo Legion
system and with Android devices.

On Wed, 21 Feb 2024 at 11:25, Ian Malone <ibmalone@xxxxxxxxx> wrote:
>
> Hi, I'm wondering if there's any way to restrict the bit depth/format
> that a USB audio device advertises to the system (for downstream
> consumption by pipewire etc.). Short version:
> an older laptop with USB 2.0 and a 3.5mm-USB adapter that offers
> S16_LE and S24_3LE formats for microphone, any application that tries
> to request S24_3LE freezes.
>
> The background is I have an old T420 laptop that I sometimes use for
> Zoom and Teams calls which has a very noisy onboard microphone and USB
> 2.0 ports, and an Anker USB to 3.5mm converter that lsusb identifies
> as "Conexant Systems (Rockwell), Inc. Hi-Res Audio". On a
> significantly newer laptop with USB 3 ports using the Anker device
> works, Zoom test call sound is okay and audacity can record from it
> both direct via ALSA and via Pipewire.
>
> Even on this system, on plugging in the adapter to a port I see this
> in the kernel ring:
> -----
> [ 4952.171359] usb 3-1: new full-speed USB device number 5 using xhci_hcd
> [ 4952.337534] usb 3-1: New USB device found, idVendor=0572,
> idProduct=1b08, bcdDevice= 0.10
> [ 4952.337538] usb 3-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
> [ 4952.337540] usb 3-1: Product: Hi-Res Audio
> [ 4952.337542] usb 3-1: Manufacturer: Synaptics
> [ 4952.337543] usb 3-1: SerialNumber: 000000000000000000000000
> [ 4952.530669] input: Synaptics Hi-Res Audio as
> /devices/pci0000:00/0000:00:08.1/0000:05:00.4/usb3/3-1/3-1:1.3/0003:0572:1B08.0008/input/input30
> [ 4952.582643] hid-generic 0003:0572:1B08.0008: input,hidraw5: USB HID
> v1.11 Device [Synaptics Hi-Res Audio] on usb-0000:05:00.4-1/input3
> [ 4953.238361] usb 3-1: Not enough bandwidth for new device state.
> [ 4953.238366] usb 3-1: Not enough bandwidth for altsetting 1
> [ 4953.238368] endpoint_set_interface: 70 callbacks suppressed
> [ 4953.238370] usb 3-1: 1:1: usb_set_interface failed (-28)
> [ 4953.238485] usb 3-1: Not enough bandwidth for new device state.
> [ 4953.238487] usb 3-1: Not enough bandwidth for altsetting 1
> [ 4953.238489] usb 3-1: 1:1: usb_set_interface failed (-28)
> [ 4953.238604] usb 3-1: Not enough bandwidth for new device state.
> [ 4953.238607] usb 3-1: Not enough bandwidth for altsetting 1
> [ 4953.238608] usb 3-1: 1:1: usb_set_interface failed (-28)
> [ 4953.238755] usb 3-1: Not enough bandwidth for new device state.
> [ 4953.238757] usb 3-1: Not enough bandwidth for altsetting 1
> [ 4953.238759] usb 3-1: 1:1: usb_set_interface failed (-28)
> [ 4953.238883] usb 3-1: Not enough bandwidth for new device state.
> [ 4953.238886] usb 3-1: Not enough bandwidth for altsetting 1
> [ 4953.238887] usb 3-1: 1:1: usb_set_interface failed (-28)
> [ 4953.239178] usb 3-1: Not enough bandwidth for new device state.
> ----
> ...repeats these two lines a lot but eventually settles down.
>
> However on the T420 system things just don't work. Zoom when trying to
> access this device (specifically the microphone, either selecting it
> via Audio Settings, during the test call microphone test stage, or
> trying to change the device during a call) will just freeze. Audacity
> does the same if trying to use it, and additionally has a lot of
> trouble starting (will refuse to start if plugged in). I did have
> success recording in Audacity if I set the format to 16 bit.
>
> Don't have direct access to the T420 today, but the messages it
> reports are slightly different (F39 so a slightly newer kernel),
> however it is a urb not enough bandwidth error similar to:
> [  778.937439] cannot submit urb 0, error -28: not enough bandwidth
> (https://forum.odroid.com/viewtopic.php?t=23485)
> Mar 12 18:25:05 kernel: cannot submit urb 0, error -28: not enough bandwidth
> (https://forums.gentoo.org/viewtopic-t-862035-start-0.html)
>
> The /proc/asound/cardX/stream0 file indicates S16_LE and S24_3LE
> interfaces for capture and playback:
> ----
> Synaptics Hi-Res Audio at usb-0000:05:00.4-1, full speed : USB Audio
>
> Playback:
>   Status: Running
>     Interface = 2
>     Altset = 2
>     Packet Size = 432
>     Momentary freq = 48000 Hz (0x30.0000)
>   Interface 2
>     Altset 1
>     Format: S16_LE
>     Channels: 2
>     Endpoint: 0x01 (1 OUT) (ADAPTIVE)
>     Rates: 8000, 16000, 32000, 44100, 48000, 96000
>     Bits: 16
>     Channel map: FL FR
>   Interface 2
>     Altset 2
>     Format: S24_3LE
>     Channels: 2
>     Endpoint: 0x01 (1 OUT) (ADAPTIVE)
>     Rates: 44100, 48000, 96000
>     Bits: 24
>     Channel map: FL FR
>
> Capture:
>   Status: Running
>     Interface = 1
>     Altset = 2
>     Packet Size = 288
>     Momentary freq = 48000 Hz (0x30.0000)
>   Interface 1
>     Altset 1
>     Format: S16_LE
>     Channels: 2
>     Endpoint: 0x81 (1 IN) (ASYNC)
>     Rates: 44100, 48000
>     Bits: 16
>     Channel map: FL FR
>   Interface 1
>     Altset 2
>     Format: S24_3LE
>     Channels: 2
>     Endpoint: 0x81 (1 IN) (ASYNC)
>     Rates: 44100, 48000
>     Bits: 24
>     Channel map: FL FR
> ----
>
> I could try adjusting the pipewire configuration to force alsa devices
> to S16_LE (already experimenting with that), however it wouldn't solve
> the problem with programs like audacity that try to access ALSA
> directly. Any suggestions? I've been trying to see if it can be done
> in asound.con, but most results I've found seem to be about setting up
> dmix devices, which doesn't really solve the problem of an available
> device on the system offering S24. I can't see any snd-usb-audio
> module options that would do it.
>
> --
> imalone



-- 
imalone


_______________________________________________
Alsa-user mailing list
Alsa-user@xxxxxxxxxxxxxxxxxxxxx
https://lists.sourceforge.net/lists/listinfo/alsa-user



[Index of Archives]     [ALSA Devel]     [Linux Audio Users]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [Yosemite Photos]     [KDE Users]     [Fedora Tools]

  Powered by Linux