[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