All of lore.kernel.org
 help / color / mirror / Atom feed
From: Mike Oliphant <oliphant@nostatic.org>
To: Takashi Iwai <tiwai@suse.de>
Cc: alsa-devel@alsa-project.org
Subject: Re: Support for NUX MG-300 USB interface
Date: Mon, 18 Jan 2021 13:15:26 -0800	[thread overview]
Message-ID: <CAHXb3be9EpEtaEc0iH06wmLMhyizkV7arvgxsT2bWK=aJHKVLA@mail.gmail.com> (raw)
In-Reply-To: <s5hr1migiie.wl-tiwai@suse.de>

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],
>

  reply	other threads:[~2021-01-18 21:16 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-01-17 18:56 Support for NUX MG-300 USB interface Mike Oliphant
2021-01-18  7:43 ` Takashi Iwai
2021-01-18 16:33   ` Mike Oliphant
2021-01-18 17:54     ` Mike Oliphant
2021-01-18 19:19       ` Takashi Iwai
2021-01-18 21:15         ` Mike Oliphant [this message]
2021-01-18 21:59           ` Takashi Iwai
2021-01-19  0:26             ` Mike Oliphant
2021-01-19  9:05               ` Takashi Iwai
2021-01-19 17:40                 ` Mike Oliphant
2021-01-20 14:33                   ` Takashi Iwai
2021-01-20 21:17                     ` Mike Oliphant
2021-01-20 21:38                       ` Takashi Iwai
2021-01-20 21:47                         ` Mike Oliphant
2021-01-21 19:04                           ` Mike Oliphant
2021-01-21 20:18                             ` Mike Oliphant

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CAHXb3be9EpEtaEc0iH06wmLMhyizkV7arvgxsT2bWK=aJHKVLA@mail.gmail.com' \
    --to=oliphant@nostatic.org \
    --cc=alsa-devel@alsa-project.org \
    --cc=tiwai@suse.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.