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 _______________________________________________ Alsa-user mailing list Alsa-user@xxxxxxxxxxxxxxxxxxxxx https://lists.sourceforge.net/lists/listinfo/alsa-user