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@suse.de 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],