Here is the dmesg output with dyndbg enabled. It looks like it is failing to find the clock source, and hence cannot obtain the valid sample rates.
It looks like it is finding the clock selector (id: 40), but "uac_clock_selector_get_val()" is returning zero, and it never gets the clock source (id: 41).
[ 229.641481] usb 2-1.3: new high-speed USB device number 9 using ehci-pci [ 229.750316] usb 2-1.3: config 1 interface 3 altsetting 0 bulk endpoint 0x4 has invalid maxpacket 256 [ 229.750335] usb 2-1.3: config 1 interface 3 altsetting 0 bulk endpoint 0x83 has invalid maxpacket 256 [ 229.751432] usb 2-1.3: New USB device found, idVendor=1fc9, idProduct=8260, bcdDevice= 1.00 [ 229.751452] usb 2-1.3: New USB device strings: Mfr=1, Product=2, SerialNumber=3 [ 229.751459] usb 2-1.3: Product: NUX MG-300 AUDIO [ 229.751464] usb 2-1.3: Manufacturer: NUX [ 229.751468] usb 2-1.3: SerialNumber: 2008101346 [ 230.170840] usb 2-1.3: __uac_clock_find_source(): selector reported illegal value, id 40, ret 0 [ 230.170860] usb 2-1.3: parse_audio_format_rates_v2v3(): unable to find clock source (clock -22) [ 230.170871] usb 2-1.3: 1:1: found sync_ep=0x81, iface=1, alt=1, implicit_fb=0 [ 230.170879] usb 2-1.3: 1:1: add audio endpoint 0x1 [ 230.170907] usb 2-1.3: Creating new data endpoint #1 [ 230.170915] usb 2-1.3: Creating new sync endpoint #81 [ 230.171181] usb 2-1.3: 1:1 Set sample rate 0, clock 40 [ 230.171408] usb 2-1.3: __uac_clock_find_source(): selector reported illegal value, id 40, ret 0 [ 230.171657] usb 2-1.3: __uac_clock_find_source(): selector reported illegal value, id 40, ret 0 [ 230.172463] usb 2-1.3: __uac_clock_find_source(): selector reported illegal value, id 40, ret 0 [ 230.172480] usb 2-1.3: parse_audio_format_rates_v2v3(): unable to find clock source (clock -22) [ 230.172490] usb 2-1.3: 2:1: add audio endpoint 0x82 [ 230.172512] usb 2-1.3: Creating new data endpoint #82 [ 230.172707] usb 2-1.3: 2:1 Set sample rate 0, clock 40 [ 230.172832] usb 2-1.3: __uac_clock_find_source(): selector reported illegal value, id 40, ret 0 [ 230.173079] usb 2-1.3: __uac_clock_find_source(): selector reported illegal value, id 40, ret 0 [ 230.173442] usb 2-1.3: [10] FU [PCM Playback Switch] ch = 2, val = 0/1/1 [ 230.173450] usb 2-1.3: [10] FU [PCM Playback Switch] ch = 1, val = 0/1/1 [ 230.173949] usb 2-1.3: RANGE setting not yet supported [ 230.174700] usb 2-1.3: [10] FU [PCM Playback Volume] ch = 2, val = -16384/0/256 [ 230.175074] usb 2-1.3: RANGE setting not yet supported [ 230.175823] usb 2-1.3: [10] FU [PCM Playback Volume] ch = 1, val = -16384/0/256 [ 230.176631] usbcore: registered new interface driver snd-usb-audio
On Mon, Jan 18, 2021 at 8:33 AM Mike Oliphant oliphant@nostatic.org wrote:
Thanks for the response. I'm running a very recent build of the master kernel tree (~ 5.11-rc2).
I'll give dyndbg a try.
Mike
On Sun, Jan 17, 2021 at 11:43 PM Takashi Iwai tiwai@suse.de wrote:
On Sun, 17 Jan 2021 19:56:01 +0100, Mike Oliphant wrote:
I recently got a NUX MG-300 USB guitar fx interface with high hopes
that it
would work in Linux. It is supposed to be class-compliant, and works in
iOS
and macOS without a driver.
Unfortunately, while it is recognized as a USB audio device by Linux,
it is
not working.
The core issue seems to be that "stream0" reports no playback rates.
dmesg
also shows errors, including "__uac_clock_find_source(): selector
reported
illegal value".
Any help identifying the issue would be much appreciated. I have some experience troubleshooting the USB audio kernel code and am happy to try doing so if I can get a nudge in the right direction.
Output from "stream0", dmesg, and lsusb follows.
Did you try the latest 5.11-rc kernel? There have been lots of changes in USB-audio and this might work better there.
If it still doesn't work with 5.11-rc, please try to enable the debug option, e.g. boot with snd_usb_audio.dyndbg=+p boot option, plug the device, and get the kernel logs (at plugging and during the audio operations).
thanks,
Takashi