[usb-audio] Medeli 0a67:d156 mic: usb_set_interface failed (-19), unstable enumeration on xHCI
Waqar Aziz <[email protected]> Sun, 5 Jul 2026 11:25:03 +0500
| Newsgroups | org.alsa-project.alsa-devel |
|---|---|
| Message-ID | <CAC74gjdgvjnLLX30nGoTqCXhapk+ukPp_fPG0w1ykLbgEu_RfQ@mail.gmail.com> |
Hello, I have a USB microphone (sold as "Jmary MC-PW10"; the chip reports as Medeli, USB ID 0a67:d156) that works correctly on Windows and Android but fails on Linux. I'm hoping there is a snd_usb_audio quirk_flags or usbcore.quirks value that would make it work, or that this device may be a candidate for a quirk entry. System: - Linux Mint 22.3, kernel 6.17.0-35-generic - Intel xHCI host controller (0000:00:14.0) - PipeWire - Connected via USB-A (the mic ships with a USB-C-to-USB-A adapter; the laptop's USB-C port is dead, so a direct USB-C test is not possible). The same cable/adapter into a USB-A port works flawlessly on a Windows PC, so the physical connection is not the variable. Device: - idVendor=0a67 idProduct=d156, "MC-PW10" / "Jin-Audio", bcdDevice 0.02 - USB 2.0 full-speed, bus-powered, MaxPower 100 mA - UAC1, 48000 Hz, 16-bit and 24-bit PCM, isochronous endpoints - Has a hardware button that cycles onboard modes (pop/studio/etc). Two failure signatures: (1) Enumerates, then disconnects at rest, often within ~1 second. Sometimes clean (no error), sometimes with error -71 / -32: usb 1-2.1.3: new full-speed USB device number 11 using xhci_hcd usb 1-2.1.3: New USB device found, idVendor=0a67, idProduct=d156, bcdDevice= 0.02 usb 1-2.1.3: Product: MC-PW10 usb 1-2.1.3: Manufacturer: Jin-Audio usb 1-2.1.3: Warning! Unlikely big volume range (=24576), cval->res is probably wrong. usb 1-2.1.3: USB disconnect, device number 11 (other cycles:) usb: device descriptor read/all, error -32 usb: can't set config #1, error -71 usb: device not accepting address, error -71 usbhid 1-1:1.3: can't add hid device: -71 usbhid 1-1:1.3: probe with driver usbhid failed with error -71 (2) Pressing the hardware mode button (which reconfigures the streaming interface) reliably disconnects it with: usb: 2:1: usb_set_interface failed (-19) When it does stay connected it works fully: it appears as a card in arecord -l and as a 24-bit/48kHz source in PipeWire, and records correctly. So the audio path is fine; the problem is (1) staying enumerated and (2) surviving the interface change on mode-switch. Already tried (no success): - usbcore.quirks=0a67:d156:gi -> still detects but drops - usbcore.quirks=0a67:d156:gik -> stops detecting entirely - snd_usb_audio quirk_flags=0x02 and 0x200 -> inconclusive; the device is often too unstable to hold a connection long enough to judge the mode-switch behavior - usbcore autosuspend disabled globally -> no change - powered hub / external 5V -> no change (device requests only 100 mA) Questions: 1. Is there a snd_usb_audio quirk_flags value you would recommend for a device that fails set_interface (-19) on an altsetting change? 2. Would a quirk entry for 0a67:d156 be appropriate, and what information would you need to add one? 3. Any suggestion for the intermittent -71 enumeration failures on xHCI (short of forcing USB 2.0)? I can provide full lsusb -v output and an alsa-info.sh upload on request. Thanks for your time. Waqar