Progress - thanks for the patch! That got rid of the clock errors, and the the device now reports a 48000 sample rate, which is correct. Unfortunately, it still isn't working properly. Playback doesn't seem to work at all. Capture kind of works - it does record, but the audio is extremely noisy. Here is the current dmesg output when the device is connected. Notable is the error "No valid sample rate available for 1:1, assuming a firmware bug". Also notable is "1:1 Set sample rate 48000, clock 40" - where "40" is the id of the clock selector - "41" is the id of the actual clock source. So maybe something is still getting wired up wrong? [ 418.366449] usb 3-1.2: new high-speed USB device number 6 using ehci-pci [ 418.479099] usb 3-1.2: config 1 interface 3 altsetting 0 bulk endpoint 0x4 has invalid maxpacket 256 [ 418.479118] usb 3-1.2: config 1 interface 3 altsetting 0 bulk endpoint 0x83 has invalid maxpacket 256 [ 418.480085] usb 3-1.2: New USB device found, idVendor=1fc9, idProduct=8260, bcdDevice= 1.00 [ 418.480100] usb 3-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3 [ 418.480107] usb 3-1.2: Product: NUX MG-300 AUDIO [ 418.480112] usb 3-1.2: Manufacturer: NUX [ 418.480117] usb 3-1.2: SerialNumber: 2008101346 [ 418.482025] usb 3-1.2: No valid sample rate available for 1:1, assuming a firmware bug [ 418.482041] usb 3-1.2: 1:1: found sync_ep=0x81, iface=1, alt=1, implicit_fb=0 [ 418.482049] usb 3-1.2: 1:1: add audio endpoint 0x1 [ 418.482078] usb 3-1.2: Creating new data endpoint #1 [ 418.482086] usb 3-1.2: Creating new sync endpoint #81 [ 418.482666] usb 3-1.2: 1:1 Set sample rate 48000, clock 40 [ 418.484525] usb 3-1.2: No valid sample rate available for 2:1, assuming a firmware bug [ 418.484545] usb 3-1.2: 2:1: add audio endpoint 0x82 [ 418.484584] usb 3-1.2: Creating new data endpoint #82 [ 418.484899] usb 3-1.2: 2:1 Set sample rate 48000, clock 40 [ 418.485800] usb 3-1.2: [10] FU [PCM Playback Switch] ch = 2, val = 0/1/1 [ 418.485822] usb 3-1.2: [10] FU [PCM Playback Switch] ch = 1, val = 0/1/1 [ 418.486484] usb 3-1.2: RANGE setting not yet supported [ 418.487402] usb 3-1.2: [10] FU [PCM Playback Volume] ch = 2, val = -16384/0/256 [ 418.487899] usb 3-1.2: RANGE setting not yet supported [ 418.488774] usb 3-1.2: [10] FU [PCM Playback Volume] ch = 1, val = -16384/0/256 [ 418.541357] usb 3-1.2: Open EP 0x82, iface=2:1, idx=0 [ 418.541363] usb 3-1.2: channels=2, rate=48000, format=S32_LE, period_bytes=9592, periods=4, implicit_fb=0 [ 418.541367] usb 3-1.2: Setting usb interface 2:0 for EP 0x82 [ 418.541524] usb 3-1.2: 2:1 Set sample rate 48000, clock 40 [ 418.542000] usb 3-1.2: Setting params for data EP 0x82, pipe 0x10680 [ 418.542007] usb 3-1.2: Set up 12 URBS, ret=0 [ 418.542009] usb 3-1.2: Setting usb interface 2:1 for EP 0x82 [ 418.545012] usb 3-1.2: Closing EP 0x82 (count 1) [ 418.545018] usb 3-1.2: Setting usb interface 2:0 for EP 0x82 [ 418.545157] usb 3-1.2: EP 0x82 closed [ 418.545620] usb 3-1.2: Open EP 0x82, iface=2:1, idx=0 [ 418.545624] usb 3-1.2: channels=2, rate=48000, format=S32_LE, period_bytes=9592, periods=4, implicit_fb=0 [ 418.545627] usb 3-1.2: Setting usb interface 2:0 for EP 0x82 [ 418.545893] usb 3-1.2: 2:1 Set sample rate 48000, clock 40 [ 418.546257] usb 3-1.2: Setting params for data EP 0x82, pipe 0x10680 [ 418.546263] usb 3-1.2: Set up 12 URBS, ret=0 [ 418.546266] usb 3-1.2: Setting usb interface 2:1 for EP 0x82 [ 418.546841] usb 3-1.2: Closing EP 0x82 (count 1) [ 418.546845] usb 3-1.2: Setting usb interface 2:0 for EP 0x82 [ 418.547052] usb 3-1.2: EP 0x82 closed [ 418.547467] usb 3-1.2: Open EP 0x1, iface=1:1, idx=0 [ 418.547470] usb 3-1.2: channels=2, rate=48000, format=S32_LE, period_bytes=9592, periods=4, implicit_fb=0 [ 418.547473] usb 3-1.2: Open EP 0x81, iface=1:1, idx=1 [ 418.547476] usb 3-1.2: channels=2, rate=48000, format=S32_LE, period_bytes=9592, periods=4, implicit_fb=0 [ 418.547478] usb 3-1.2: Setting usb interface 1:0 for EP 0x1 [ 418.547643] usb 3-1.2: 1:1 Set sample rate 48000, clock 40 [ 418.548129] usb 3-1.2: Setting params for data EP 0x1, pipe 0x8600 [ 418.548143] usb 3-1.2: Set up 12 URBS, ret=0 [ 418.548146] usb 3-1.2: Setting usb interface 1:1 for EP 0x1 [ 418.548420] usb 3-1.2: Setting params for sync EP 0x81, pipe 0x8680 [ 418.548425] usb 3-1.2: Set up 4 URBS, ret=0 [ 418.548443] usb 3-1.2: Starting data EP 0x1 (running 0) [ 418.548474] usb 3-1.2: 12 URBs submitted for EP 0x1 [ 418.548477] usb 3-1.2: Starting sync EP 0x81 (running 0) [ 418.548487] usb 3-1.2: 4 URBs submitted for EP 0x81 [ 418.549724] usb 3-1.2: Open EP 0x82, iface=2:1, idx=0 [ 418.549729] usb 3-1.2: channels=2, rate=48000, format=S32_LE, period_bytes=9592, periods=4, implicit_fb=0 [ 418.549732] usb 3-1.2: Setting usb interface 2:0 for EP 0x82 [ 418.549888] usb 3-1.2: 2:1 Set sample rate 48000, clock 40 [ 418.550256] usb 3-1.2: Setting params for data EP 0x82, pipe 0x10680 [ 418.550259] usb 3-1.2: Set up 12 URBS, ret=0 [ 418.550261] usb 3-1.2: Setting usb interface 2:1 for EP 0x82 [ 418.550455] usb 3-1.2: Closing EP 0x82 (count 1) [ 418.550460] usb 3-1.2: Setting usb interface 2:0 for EP 0x82 [ 418.550659] usb 3-1.2: EP 0x82 closed [ 418.551298] usb 3-1.2: Open EP 0x82, iface=2:1, idx=0 [ 418.551303] usb 3-1.2: channels=2, rate=48000, format=S32_LE, period_bytes=9592, periods=4, implicit_fb=0 [ 418.551307] usb 3-1.2: Setting usb interface 2:0 for EP 0x82 [ 418.551528] usb 3-1.2: 2:1 Set sample rate 48000, clock 40 [ 418.552021] usb 3-1.2: Setting params for data EP 0x82, pipe 0x10680 [ 418.552028] usb 3-1.2: Set up 12 URBS, ret=0 [ 418.552031] usb 3-1.2: Setting usb interface 2:1 for EP 0x82 [ 418.552168] usb 3-1.2: Stopping sync EP 0x81 (running 1) [ 418.552174] usb 3-1.2: Stopping data EP 0x1 (running 1) [ 418.566466] usb 3-1.2: Closing EP 0x1 (count 1) [ 418.566472] usb 3-1.2: Setting usb interface 1:0 for EP 0x1 [ 418.566772] usb 3-1.2: EP 0x1 closed [ 418.566775] usb 3-1.2: Closing EP 0x81 (count 1) [ 418.566777] usb 3-1.2: Setting usb interface 1:0 for EP 0x81 [ 418.566954] usb 3-1.2: EP 0x81 closed [ 418.567038] usb 3-1.2: Closing EP 0x82 (count 1) [ 418.567040] usb 3-1.2: Setting usb interface 2:0 for EP 0x82 [ 418.567257] usb 3-1.2: EP 0x82 closed [ 418.573720] usb 3-1.2: Open EP 0x1, iface=1:1, idx=0 [ 418.573724] usb 3-1.2: channels=2, rate=48000, format=S32_LE, period_bytes=9592, periods=4, implicit_fb=0 [ 418.573727] usb 3-1.2: Open EP 0x81, iface=1:1, idx=1 [ 418.573729] usb 3-1.2: channels=2, rate=48000, format=S32_LE, period_bytes=9592, periods=4, implicit_fb=0 [ 418.573732] usb 3-1.2: Setting usb interface 1:0 for EP 0x1 [ 418.573927] usb 3-1.2: 1:1 Set sample rate 48000, clock 40 [ 418.574564] usb 3-1.2: Setting params for data EP 0x1, pipe 0x8600 [ 418.574570] usb 3-1.2: Set up 12 URBS, ret=0 [ 418.574572] usb 3-1.2: Setting usb interface 1:1 for EP 0x1 [ 418.574659] usb 3-1.2: Setting params for sync EP 0x81, pipe 0x8680 [ 418.574662] usb 3-1.2: Set up 4 URBS, ret=0 [ 418.574676] usb 3-1.2: Starting data EP 0x1 (running 0) [ 418.574700] usb 3-1.2: 12 URBs submitted for EP 0x1 [ 418.574701] usb 3-1.2: Starting sync EP 0x81 (running 0) [ 418.574709] usb 3-1.2: 4 URBs submitted for EP 0x81 [ 418.575117] usb 3-1.2: Open EP 0x82, iface=2:1, idx=0 [ 418.575120] usb 3-1.2: channels=2, rate=48000, format=S32_LE, period_bytes=9592, periods=4, implicit_fb=0 [ 418.575123] usb 3-1.2: Setting usb interface 2:0 for EP 0x82 [ 418.575384] usb 3-1.2: 2:1 Set sample rate 48000, clock 40 [ 418.575916] usb 3-1.2: Setting params for data EP 0x82, pipe 0x10680 [ 418.575926] usb 3-1.2: Set up 12 URBS, ret=0 [ 418.575928] usb 3-1.2: Setting usb interface 2:1 for EP 0x82 [ 418.576065] usb 3-1.2: Closing EP 0x82 (count 1) [ 418.576069] usb 3-1.2: Setting usb interface 2:0 for EP 0x82 [ 418.576171] usb 3-1.2: EP 0x82 closed [ 418.576574] usb 3-1.2: Open EP 0x82, iface=2:1, idx=0 [ 418.576578] usb 3-1.2: channels=2, rate=48000, format=S32_LE, period_bytes=9592, periods=4, implicit_fb=0 [ 418.576581] usb 3-1.2: Setting usb interface 2:0 for EP 0x82 [ 418.576632] usb 3-1.2: 2:1 Set sample rate 48000, clock 40 [ 418.577128] usb 3-1.2: Setting params for data EP 0x82, pipe 0x10680 [ 418.577132] usb 3-1.2: Set up 12 URBS, ret=0 [ 418.577134] usb 3-1.2: Setting usb interface 2:1 for EP 0x82 [ 418.577404] usb 3-1.2: Stopping sync EP 0x81 (running 1) [ 418.577408] usb 3-1.2: Stopping data EP 0x1 (running 1) [ 418.594462] usb 3-1.2: Closing EP 0x1 (count 1) [ 418.594469] usb 3-1.2: Setting usb interface 1:0 for EP 0x1 [ 418.594806] usb 3-1.2: EP 0x1 closed [ 418.594810] usb 3-1.2: Closing EP 0x81 (count 1) [ 418.594812] usb 3-1.2: Setting usb interface 1:0 for EP 0x81 [ 418.595093] usb 3-1.2: EP 0x81 closed [ 418.595187] usb 3-1.2: Closing EP 0x82 (count 1) [ 418.595189] usb 3-1.2: Setting usb interface 2:0 for EP 0x82 [ 418.595520] usb 3-1.2: EP 0x82 closed [ 418.610935] usb 3-1.2: Open EP 0x1, iface=1:1, idx=0 [ 418.610943] usb 3-1.2: channels=2, rate=48000, format=S32_LE, period_bytes=384000, periods=2, implicit_fb=0 [ 418.610946] usb 3-1.2: Open EP 0x81, iface=1:1, idx=1 [ 418.610949] usb 3-1.2: channels=2, rate=48000, format=S32_LE, period_bytes=384000, periods=2, implicit_fb=0 [ 418.610952] usb 3-1.2: Setting usb interface 1:0 for EP 0x1 [ 418.611223] usb 3-1.2: 1:1 Set sample rate 48000, clock 40 [ 418.611990] usb 3-1.2: Setting params for data EP 0x1, pipe 0x8600 [ 418.612013] usb 3-1.2: Set up 12 URBS, ret=0 [ 418.612020] usb 3-1.2: Setting usb interface 1:1 for EP 0x1 [ 418.612281] usb 3-1.2: Setting params for sync EP 0x81, pipe 0x8680 [ 418.612285] usb 3-1.2: Set up 4 URBS, ret=0 [ 418.612363] usb 3-1.2: Starting data EP 0x1 (running 0) [ 418.612389] usb 3-1.2: 12 URBs submitted for EP 0x1 [ 418.612390] usb 3-1.2: Starting sync EP 0x81 (running 0) [ 418.612397] usb 3-1.2: 4 URBs submitted for EP 0x81 [ 418.613337] usb 3-1.2: 1:1 Start Playback PCM [ 418.613810] usb 3-1.2: Open EP 0x82, iface=2:1, idx=0 [ 418.613813] usb 3-1.2: channels=2, rate=48000, format=S32_LE, period_bytes=384000, periods=2, implicit_fb=0 [ 418.613815] usb 3-1.2: Setting usb interface 2:0 for EP 0x82 [ 418.614078] usb 3-1.2: 2:1 Set sample rate 48000, clock 40 [ 418.614639] usb 3-1.2: Setting params for data EP 0x82, pipe 0x10680 [ 418.614648] usb 3-1.2: Set up 12 URBS, ret=0 [ 418.614653] usb 3-1.2: Setting usb interface 2:1 for EP 0x82 [ 418.615844] usb 3-1.2: Starting data EP 0x82 (running 0) [ 418.615879] usb 3-1.2: 12 URBs submitted for EP 0x82 [ 418.615882] usb 3-1.2: 2:1 Start Capture PCM On Mon, Jan 18, 2021 at 11:19 AM Takashi Iwai <tiwai@xxxxxxx> wrote: > On Mon, 18 Jan 2021 18:54:57 +0100, > Mike Oliphant wrote: > > > > 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). > > Aha. Maybe the firmware doesn't expect it being asked as it's the > single connection. > > Does the patch below help anything? > > > Takashi > > --- a/sound/usb/clock.c > +++ b/sound/usb/clock.c > @@ -298,6 +298,11 @@ static int __uac_clock_find_source(struct > snd_usb_audio *chip, > if (selector) { > int ret, i, cur; > > + if (selector->bNrInPins == 1) { > + ret = 1; > + goto find_source; > + } > + > /* the entity ID we are looking for is a selector. > * find out what it currently selects */ > ret = uac_clock_selector_get_val(chip, selector->bClockID); > @@ -314,6 +319,7 @@ static int __uac_clock_find_source(struct > snd_usb_audio *chip, > return -EINVAL; > } > > + find_source: > cur = ret; > ret = __uac_clock_find_source(chip, fmt, > selector->baCSourceID[ret - > 1], >