All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] Fix mic sound on Jieli webcam
@ 2020-12-15  9:44 Marco Giunta
  2020-12-17  9:50 ` Takashi Iwai
  0 siblings, 1 reply; 9+ messages in thread
From: Marco Giunta @ 2020-12-15  9:44 UTC (permalink / raw)
  To: alsa-devel; +Cc: tiwai

Hi,
recently I've bought a usb webcam with integrated mic:

  Jieli Technology USB PHY 2.0 (1224:2a25)

The video part works well, but the mic sound is speedups, "like
minions" (cit.). When I connect the camera, these are the dmesg
messages:

kernel: usb 1-8: current rate 0 is different from the runtime rate 8000
kernel: usb 1-8: current rate 0 is different from the runtime rate 16000
kernel: usb 1-8: current rate 0 is different from the runtime rate 44100
kernel: usb 1-8: current rate 0 is different from the runtime rate 48000
kernel: usb 1-8: Warning! Unlikely big volume range (=4096), cval->res
is probably wrong.
kernel: usb 1-8: [3] FU [Mic Capture Volume] ch = 1, val = 0/4096/1
kernel: usbcore: registered new interface driver snd-usb-audio

and after a while, dmesg log is filled, every 5 seconds, with:

kernel: retire_capture_urb: 84 callbacks suppressed
kernel: retire_capture_urb: 1714 callbacks suppressed

A guy reports on ArchLinux bug website the same problem
(https://bugs.archlinux.org/task/68141?opened=12995&status%5B0%5D=)
and provides a patch to fix the sound issue. I've applied the patch on
kernel 5.9.13 (Fedora 33 x86_64) and now the mic works, no more
minions voice effect. Now dmesg messages are only:

kernel: usb 1-8: Warning! Unlikely big volume range (=4096), cval->res
is probably wrong.
kernel: usb 1-8: [3] FU [Mic Capture Volume] ch = 1, val = 0/4096/1
kernel: usbcore: registered new interface driver snd-usb-audio

the retire_capture_urb messages are gone.

All credits for the patch go to him but I don't know how to contact
that guy nor I don't know if he has already contacted you, so my
question is if you could review his patch and finally apply upstream.

If you need other information or you need a tester, I'm here.

Thanks,
  Marco

--- a/sound/usb/format.c    2020-10-01 18:36:35.000000000 +0300
+++ b/sound/usb/format.c    2020-10-04 02:10:21.678685952 +0300
@@ -217,6 +217,21 @@
                 (chip->usb_id == USB_ID(0x041e, 0x4064) ||
                  chip->usb_id == USB_ID(0x041e, 0x4068)))
                 rate = 8000;
+
+            // hack for "Jieli Technology USB PHY 2.0" webcam
+            if (chip->usb_id == USB_ID(0x1224, 0x2a25)) {
+                switch (rate) {
+                case 8000:
+                    fp->datainterval += 4;
+                    break;
+                case 16000:
+                    fp->datainterval += 3;
+                    break;
+                default:
+                    fp->datainterval += 1;
+                    break;
+                }
+            }

             fp->rate_table[fp->nr_rates] = rate;
             if (!fp->rate_min || rate < fp->rate_min)
--- a/sound/usb/endpoint.c    2020-10-01 18:36:35.000000000 +0300
+++ b/sound/usb/endpoint.c    2020-10-04 02:09:09.471978982 +0300
@@ -882,6 +882,8 @@
     if (snd_usb_get_speed(ep->chip->dev) != USB_SPEED_FULL) {
         packs_per_ms = 8 >> ep->datainterval;
         max_packs_per_urb = MAX_PACKS_HS;
+        if (!packs_per_ms)
+            packs_per_ms = 1;
     } else {
         packs_per_ms = 1;
         max_packs_per_urb = MAX_PACKS;
--- a/sound/usb/quirks.c    2020-10-01 18:36:35.000000000 +0300
+++ b/sound/usb/quirks.c    2020-10-04 02:14:04.532196519 +0300
@@ -1516,6 +1516,7 @@
     case USB_ID(0x1901, 0x0191): /* GE B850V3 CP2114 audio interface */
     case USB_ID(0x21b4, 0x0081): /* AudioQuest DragonFly */
     case USB_ID(0x2912, 0x30c8): /* Audioengine D1 */
+    case USB_ID(0x1224, 0x2a25): /* Jieli Technology USB PHY 2.0 */
         return true;
     }

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] Fix mic sound on Jieli webcam
  2020-12-15  9:44 [PATCH] Fix mic sound on Jieli webcam Marco Giunta
@ 2020-12-17  9:50 ` Takashi Iwai
  2020-12-17 11:49   ` Marco Giunta
  0 siblings, 1 reply; 9+ messages in thread
From: Takashi Iwai @ 2020-12-17  9:50 UTC (permalink / raw)
  To: Marco Giunta; +Cc: alsa-devel, tiwai

On Tue, 15 Dec 2020 10:44:45 +0100,
Marco Giunta wrote:
> 
> Hi,
> recently I've bought a usb webcam with integrated mic:
> 
>   Jieli Technology USB PHY 2.0 (1224:2a25)
> 
> The video part works well, but the mic sound is speedups, "like
> minions" (cit.). When I connect the camera, these are the dmesg
> messages:
> 
> kernel: usb 1-8: current rate 0 is different from the runtime rate 8000
> kernel: usb 1-8: current rate 0 is different from the runtime rate 16000
> kernel: usb 1-8: current rate 0 is different from the runtime rate 44100
> kernel: usb 1-8: current rate 0 is different from the runtime rate 48000
> kernel: usb 1-8: Warning! Unlikely big volume range (=4096), cval->res
> is probably wrong.
> kernel: usb 1-8: [3] FU [Mic Capture Volume] ch = 1, val = 0/4096/1
> kernel: usbcore: registered new interface driver snd-usb-audio
> 
> and after a while, dmesg log is filled, every 5 seconds, with:
> 
> kernel: retire_capture_urb: 84 callbacks suppressed
> kernel: retire_capture_urb: 1714 callbacks suppressed
> 
> A guy reports on ArchLinux bug website the same problem
> (https://bugs.archlinux.org/task/68141?opened=12995&status%5B0%5D=)
> and provides a patch to fix the sound issue. I've applied the patch on
> kernel 5.9.13 (Fedora 33 x86_64) and now the mic works, no more
> minions voice effect. Now dmesg messages are only:
> 
> kernel: usb 1-8: Warning! Unlikely big volume range (=4096), cval->res
> is probably wrong.
> kernel: usb 1-8: [3] FU [Mic Capture Volume] ch = 1, val = 0/4096/1
> kernel: usbcore: registered new interface driver snd-usb-audio
> 
> the retire_capture_urb messages are gone.
> 
> All credits for the patch go to him but I don't know how to contact
> that guy nor I don't know if he has already contacted you, so my
> question is if you could review his patch and finally apply upstream.
> 
> If you need other information or you need a tester, I'm here.

Thanks for the patch.  The still remaining warnings are about the
mixer, and your patch doesn't touch about it.  You may apply the
similar change in volume_control_quirks() like other webcams.

And now about the patch:

> --- a/sound/usb/format.c    2020-10-01 18:36:35.000000000 +0300
> +++ b/sound/usb/format.c    2020-10-04 02:10:21.678685952 +0300
> @@ -217,6 +217,21 @@
>                  (chip->usb_id == USB_ID(0x041e, 0x4064) ||
>                   chip->usb_id == USB_ID(0x041e, 0x4068)))
>                  rate = 8000;
> +
> +            // hack for "Jieli Technology USB PHY 2.0" webcam
> +            if (chip->usb_id == USB_ID(0x1224, 0x2a25)) {
> +                switch (rate) {
> +                case 8000:
> +                    fp->datainterval += 4;
> +                    break;
> +                case 16000:
> +                    fp->datainterval += 3;
> +                    break;
> +                default:
> +                    fp->datainterval += 1;
> +                    break;
> +                }
> +            }

Modifying datainterval at this point doesn't look intuitive.
What's the original datainterval value for those altsettings?
The value is retrieved in snd_usb_parse_datainterval() in helper.c,
and if any, the correction there would be more sensible.


>              fp->rate_table[fp->nr_rates] = rate;
>              if (!fp->rate_min || rate < fp->rate_min)
> --- a/sound/usb/endpoint.c    2020-10-01 18:36:35.000000000 +0300
> +++ b/sound/usb/endpoint.c    2020-10-04 02:09:09.471978982 +0300
> @@ -882,6 +882,8 @@
>      if (snd_usb_get_speed(ep->chip->dev) != USB_SPEED_FULL) {
>          packs_per_ms = 8 >> ep->datainterval;
>          max_packs_per_urb = MAX_PACKS_HS;
> +        if (!packs_per_ms)
> +            packs_per_ms = 1;

This rather indicates that the datainterval is somehow wrong.

>      } else {
>          packs_per_ms = 1;
>          max_packs_per_urb = MAX_PACKS;
> --- a/sound/usb/quirks.c    2020-10-01 18:36:35.000000000 +0300
> +++ b/sound/usb/quirks.c    2020-10-04 02:14:04.532196519 +0300
> @@ -1516,6 +1516,7 @@
>      case USB_ID(0x1901, 0x0191): /* GE B850V3 CP2114 audio interface */
>      case USB_ID(0x21b4, 0x0081): /* AudioQuest DragonFly */
>      case USB_ID(0x2912, 0x30c8): /* Audioengine D1 */
> +    case USB_ID(0x1224, 0x2a25): /* Jieli Technology USB PHY 2.0 */
>          return true;
>      }

This looks fine.


thanks,

Takashi

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] Fix mic sound on Jieli webcam
  2020-12-17  9:50 ` Takashi Iwai
@ 2020-12-17 11:49   ` Marco Giunta
  2020-12-17 12:17     ` Takashi Iwai
  0 siblings, 1 reply; 9+ messages in thread
From: Marco Giunta @ 2020-12-17 11:49 UTC (permalink / raw)
  To: Takashi Iwai; +Cc: alsa-devel

Hi,
thank you for your reply. As I told you, I'm not the guy who wrote the
patch, but I try to continue his work.

> What's the original datainterval value for those altsettings?
Where I can read the original datainterval value ? Is it an USB
property (so I can search in udev) ? Or can I debug in some way the
snd_usb_audio module load to get the values ?

Thanks,
  Marco


On Thu, Dec 17, 2020 at 10:50 AM Takashi Iwai <tiwai@suse.de> wrote:
>
> On Tue, 15 Dec 2020 10:44:45 +0100,
> Marco Giunta wrote:
> >
> > Hi,
> > recently I've bought a usb webcam with integrated mic:
> >
> >   Jieli Technology USB PHY 2.0 (1224:2a25)
> >
> > The video part works well, but the mic sound is speedups, "like
> > minions" (cit.). When I connect the camera, these are the dmesg
> > messages:
> >
> > kernel: usb 1-8: current rate 0 is different from the runtime rate 8000
> > kernel: usb 1-8: current rate 0 is different from the runtime rate 16000
> > kernel: usb 1-8: current rate 0 is different from the runtime rate 44100
> > kernel: usb 1-8: current rate 0 is different from the runtime rate 48000
> > kernel: usb 1-8: Warning! Unlikely big volume range (=4096), cval->res
> > is probably wrong.
> > kernel: usb 1-8: [3] FU [Mic Capture Volume] ch = 1, val = 0/4096/1
> > kernel: usbcore: registered new interface driver snd-usb-audio
> >
> > and after a while, dmesg log is filled, every 5 seconds, with:
> >
> > kernel: retire_capture_urb: 84 callbacks suppressed
> > kernel: retire_capture_urb: 1714 callbacks suppressed
> >
> > A guy reports on ArchLinux bug website the same problem
> > (https://bugs.archlinux.org/task/68141?opened=12995&status%5B0%5D=)
> > and provides a patch to fix the sound issue. I've applied the patch on
> > kernel 5.9.13 (Fedora 33 x86_64) and now the mic works, no more
> > minions voice effect. Now dmesg messages are only:
> >
> > kernel: usb 1-8: Warning! Unlikely big volume range (=4096), cval->res
> > is probably wrong.
> > kernel: usb 1-8: [3] FU [Mic Capture Volume] ch = 1, val = 0/4096/1
> > kernel: usbcore: registered new interface driver snd-usb-audio
> >
> > the retire_capture_urb messages are gone.
> >
> > All credits for the patch go to him but I don't know how to contact
> > that guy nor I don't know if he has already contacted you, so my
> > question is if you could review his patch and finally apply upstream.
> >
> > If you need other information or you need a tester, I'm here.
>
> Thanks for the patch.  The still remaining warnings are about the
> mixer, and your patch doesn't touch about it.  You may apply the
> similar change in volume_control_quirks() like other webcams.
>
> And now about the patch:
>
> > --- a/sound/usb/format.c    2020-10-01 18:36:35.000000000 +0300
> > +++ b/sound/usb/format.c    2020-10-04 02:10:21.678685952 +0300
> > @@ -217,6 +217,21 @@
> >                  (chip->usb_id == USB_ID(0x041e, 0x4064) ||
> >                   chip->usb_id == USB_ID(0x041e, 0x4068)))
> >                  rate = 8000;
> > +
> > +            // hack for "Jieli Technology USB PHY 2.0" webcam
> > +            if (chip->usb_id == USB_ID(0x1224, 0x2a25)) {
> > +                switch (rate) {
> > +                case 8000:
> > +                    fp->datainterval += 4;
> > +                    break;
> > +                case 16000:
> > +                    fp->datainterval += 3;
> > +                    break;
> > +                default:
> > +                    fp->datainterval += 1;
> > +                    break;
> > +                }
> > +            }
>
> Modifying datainterval at this point doesn't look intuitive.
> What's the original datainterval value for those altsettings?
> The value is retrieved in snd_usb_parse_datainterval() in helper.c,
> and if any, the correction there would be more sensible.
>
>
> >              fp->rate_table[fp->nr_rates] = rate;
> >              if (!fp->rate_min || rate < fp->rate_min)
> > --- a/sound/usb/endpoint.c    2020-10-01 18:36:35.000000000 +0300
> > +++ b/sound/usb/endpoint.c    2020-10-04 02:09:09.471978982 +0300
> > @@ -882,6 +882,8 @@
> >      if (snd_usb_get_speed(ep->chip->dev) != USB_SPEED_FULL) {
> >          packs_per_ms = 8 >> ep->datainterval;
> >          max_packs_per_urb = MAX_PACKS_HS;
> > +        if (!packs_per_ms)
> > +            packs_per_ms = 1;
>
> This rather indicates that the datainterval is somehow wrong.
>
> >      } else {
> >          packs_per_ms = 1;
> >          max_packs_per_urb = MAX_PACKS;
> > --- a/sound/usb/quirks.c    2020-10-01 18:36:35.000000000 +0300
> > +++ b/sound/usb/quirks.c    2020-10-04 02:14:04.532196519 +0300
> > @@ -1516,6 +1516,7 @@
> >      case USB_ID(0x1901, 0x0191): /* GE B850V3 CP2114 audio interface */
> >      case USB_ID(0x21b4, 0x0081): /* AudioQuest DragonFly */
> >      case USB_ID(0x2912, 0x30c8): /* Audioengine D1 */
> > +    case USB_ID(0x1224, 0x2a25): /* Jieli Technology USB PHY 2.0 */
> >          return true;
> >      }
>
> This looks fine.
>
>
> thanks,
>
> Takashi

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] Fix mic sound on Jieli webcam
  2020-12-17 11:49   ` Marco Giunta
@ 2020-12-17 12:17     ` Takashi Iwai
  2020-12-17 13:24       ` Marco Giunta
  0 siblings, 1 reply; 9+ messages in thread
From: Takashi Iwai @ 2020-12-17 12:17 UTC (permalink / raw)
  To: Marco Giunta; +Cc: alsa-devel

On Thu, 17 Dec 2020 12:49:53 +0100,
Marco Giunta wrote:
> 
> Hi,
> thank you for your reply. As I told you, I'm not the guy who wrote the
> patch, but I try to continue his work.
> 
> > What's the original datainterval value for those altsettings?
> Where I can read the original datainterval value ? Is it an USB
> property (so I can search in udev) ? Or can I debug in some way the
> snd_usb_audio module load to get the values ?

bInterval in the descriptor should show the value.
At best, give the output of lsusb -v for the device.


thanks,

Takashi

> 
> Thanks,
>   Marco
> 
> 
> On Thu, Dec 17, 2020 at 10:50 AM Takashi Iwai <tiwai@suse.de> wrote:
> >
> > On Tue, 15 Dec 2020 10:44:45 +0100,
> > Marco Giunta wrote:
> > >
> > > Hi,
> > > recently I've bought a usb webcam with integrated mic:
> > >
> > >   Jieli Technology USB PHY 2.0 (1224:2a25)
> > >
> > > The video part works well, but the mic sound is speedups, "like
> > > minions" (cit.). When I connect the camera, these are the dmesg
> > > messages:
> > >
> > > kernel: usb 1-8: current rate 0 is different from the runtime rate 8000
> > > kernel: usb 1-8: current rate 0 is different from the runtime rate 16000
> > > kernel: usb 1-8: current rate 0 is different from the runtime rate 44100
> > > kernel: usb 1-8: current rate 0 is different from the runtime rate 48000
> > > kernel: usb 1-8: Warning! Unlikely big volume range (=4096), cval->res
> > > is probably wrong.
> > > kernel: usb 1-8: [3] FU [Mic Capture Volume] ch = 1, val = 0/4096/1
> > > kernel: usbcore: registered new interface driver snd-usb-audio
> > >
> > > and after a while, dmesg log is filled, every 5 seconds, with:
> > >
> > > kernel: retire_capture_urb: 84 callbacks suppressed
> > > kernel: retire_capture_urb: 1714 callbacks suppressed
> > >
> > > A guy reports on ArchLinux bug website the same problem
> > > (https://bugs.archlinux.org/task/68141?opened=12995&status%5B0%5D=)
> > > and provides a patch to fix the sound issue. I've applied the patch on
> > > kernel 5.9.13 (Fedora 33 x86_64) and now the mic works, no more
> > > minions voice effect. Now dmesg messages are only:
> > >
> > > kernel: usb 1-8: Warning! Unlikely big volume range (=4096), cval->res
> > > is probably wrong.
> > > kernel: usb 1-8: [3] FU [Mic Capture Volume] ch = 1, val = 0/4096/1
> > > kernel: usbcore: registered new interface driver snd-usb-audio
> > >
> > > the retire_capture_urb messages are gone.
> > >
> > > All credits for the patch go to him but I don't know how to contact
> > > that guy nor I don't know if he has already contacted you, so my
> > > question is if you could review his patch and finally apply upstream.
> > >
> > > If you need other information or you need a tester, I'm here.
> >
> > Thanks for the patch.  The still remaining warnings are about the
> > mixer, and your patch doesn't touch about it.  You may apply the
> > similar change in volume_control_quirks() like other webcams.
> >
> > And now about the patch:
> >
> > > --- a/sound/usb/format.c    2020-10-01 18:36:35.000000000 +0300
> > > +++ b/sound/usb/format.c    2020-10-04 02:10:21.678685952 +0300
> > > @@ -217,6 +217,21 @@
> > >                  (chip->usb_id == USB_ID(0x041e, 0x4064) ||
> > >                   chip->usb_id == USB_ID(0x041e, 0x4068)))
> > >                  rate = 8000;
> > > +
> > > +            // hack for "Jieli Technology USB PHY 2.0" webcam
> > > +            if (chip->usb_id == USB_ID(0x1224, 0x2a25)) {
> > > +                switch (rate) {
> > > +                case 8000:
> > > +                    fp->datainterval += 4;
> > > +                    break;
> > > +                case 16000:
> > > +                    fp->datainterval += 3;
> > > +                    break;
> > > +                default:
> > > +                    fp->datainterval += 1;
> > > +                    break;
> > > +                }
> > > +            }
> >
> > Modifying datainterval at this point doesn't look intuitive.
> > What's the original datainterval value for those altsettings?
> > The value is retrieved in snd_usb_parse_datainterval() in helper.c,
> > and if any, the correction there would be more sensible.
> >
> >
> > >              fp->rate_table[fp->nr_rates] = rate;
> > >              if (!fp->rate_min || rate < fp->rate_min)
> > > --- a/sound/usb/endpoint.c    2020-10-01 18:36:35.000000000 +0300
> > > +++ b/sound/usb/endpoint.c    2020-10-04 02:09:09.471978982 +0300
> > > @@ -882,6 +882,8 @@
> > >      if (snd_usb_get_speed(ep->chip->dev) != USB_SPEED_FULL) {
> > >          packs_per_ms = 8 >> ep->datainterval;
> > >          max_packs_per_urb = MAX_PACKS_HS;
> > > +        if (!packs_per_ms)
> > > +            packs_per_ms = 1;
> >
> > This rather indicates that the datainterval is somehow wrong.
> >
> > >      } else {
> > >          packs_per_ms = 1;
> > >          max_packs_per_urb = MAX_PACKS;
> > > --- a/sound/usb/quirks.c    2020-10-01 18:36:35.000000000 +0300
> > > +++ b/sound/usb/quirks.c    2020-10-04 02:14:04.532196519 +0300
> > > @@ -1516,6 +1516,7 @@
> > >      case USB_ID(0x1901, 0x0191): /* GE B850V3 CP2114 audio interface */
> > >      case USB_ID(0x21b4, 0x0081): /* AudioQuest DragonFly */
> > >      case USB_ID(0x2912, 0x30c8): /* Audioengine D1 */
> > > +    case USB_ID(0x1224, 0x2a25): /* Jieli Technology USB PHY 2.0 */
> > >          return true;
> > >      }
> >
> > This looks fine.
> >
> >
> > thanks,
> >
> > Takashi
> 

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] Fix mic sound on Jieli webcam
  2020-12-17 12:17     ` Takashi Iwai
@ 2020-12-17 13:24       ` Marco Giunta
  2020-12-17 14:12         ` Takashi Iwai
  0 siblings, 1 reply; 9+ messages in thread
From: Marco Giunta @ 2020-12-17 13:24 UTC (permalink / raw)
  To: Takashi Iwai; +Cc: alsa-devel

On Thu, Dec 17, 2020 at 1:17 PM Takashi Iwai <tiwai@suse.de> wrote:
>
> bInterval in the descriptor should show the value.
> At best, give the output of lsusb -v for the device.

Here my lsusb:

Bus 001 Device 005: ID 1224:2a25 Jieli Technology USB PHY 2.0
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass          239 Miscellaneous Device
  bDeviceSubClass         2
  bDeviceProtocol         1 Interface Association
  bMaxPacketSize0        64
  idVendor           0x1224
  idProduct          0x2a25
  bcdDevice            1.00
  iManufacturer           1 Jieli Technology
  iProduct                2 USB PHY 2.0
  iSerial                 0
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength       0x0291
    bNumInterfaces          4
    bConfigurationValue     1
    iConfiguration          0
    bmAttributes         0x80
      (Bus Powered)
    MaxPower              500mA
    Interface Association:
      bLength                 8
      bDescriptorType        11
      bFirstInterface         0
      bInterfaceCount         2
      bFunctionClass         14 Video
      bFunctionSubClass       3 Video Interface Collection
      bFunctionProtocol       0
      iFunction               6 USB CAMERA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass        14 Video
      bInterfaceSubClass      1 Video Control
      bInterfaceProtocol      0
      iInterface              6 USB CAMERA
      VideoControl Interface Descriptor:
        bLength                13
        bDescriptorType        36
        bDescriptorSubtype      1 (HEADER)
        bcdUVC               1.00
        wTotalLength       0x0067
        dwClockFrequency       30.000000MHz
        bInCollection           1
        baInterfaceNr( 0)       1
      VideoControl Interface Descriptor:
        bLength                18
        bDescriptorType        36
        bDescriptorSubtype      2 (INPUT_TERMINAL)
        bTerminalID             1
        wTerminalType      0x0201 Camera Sensor
        bAssocTerminal          0
        iTerminal               0
        wObjectiveFocalLengthMin      0
        wObjectiveFocalLengthMax      0
        wOcularFocalLength            0
        bControlSize                  3
        bmControls           0x001fffff
          Scanning Mode
          Auto-Exposure Mode
          Auto-Exposure Priority
          Exposure Time (Absolute)
          Exposure Time (Relative)
          Focus (Absolute)
          Focus (Relative)
          Iris (Absolute)
          Iris (Relative)
          Zoom (Absolute)
          Zoom (Relative)
          PanTilt (Absolute)
          PanTilt (Relative)
          Roll (Absolute)
          Roll (Relative)
          Reserved
          Reserved
          Focus, Auto
          Privacy
      VideoControl Interface Descriptor:
        bLength                11
        bDescriptorType        36
        bDescriptorSubtype      5 (PROCESSING_UNIT)
      Warning: Descriptor too short
        bUnitID                 2
        bSourceID               1
        wMaxMultiplier          0
        bControlSize            2
        bmControls     0x0000ffff
          Brightness
          Contrast
          Hue
          Saturation
          Sharpness
          Gamma
          White Balance Temperature
          White Balance Component
          Backlight Compensation
          Gain
          Power Line Frequency
          Hue, Auto
          White Balance Temperature, Auto
          White Balance Component, Auto
          Digital Multiplier
          Digital Multiplier Limit
        iProcessing             0
        bmVideoStandards     0x1a
          NTSC - 525/60
          SECAM - 625/50
          NTSC - 625/50
      VideoControl Interface Descriptor:
        bLength                26
        bDescriptorType        36
        bDescriptorSubtype      6 (EXTENSION_UNIT)
        bUnitID                 3
        guidExtensionCode         {28f03370-6311-4a2e-ba2c-6890eb334016}
        bNumControl             8
        bNrPins                 1
        baSourceID( 0)          2
        bControlSize            1
        bmControls( 0)       0x00
        iExtension              0
      VideoControl Interface Descriptor:
        bLength                26
        bDescriptorType        36
        bDescriptorSubtype      6 (EXTENSION_UNIT)
        bUnitID                 4
        guidExtensionCode         {dddf7394-973e-4727-bed9-04ed6426dc67}
        bNumControl             8
        bNrPins                 1
        baSourceID( 0)          3
        bControlSize            1
        bmControls( 0)       0x00
        iExtension              0
      VideoControl Interface Descriptor:
        bLength                 9
        bDescriptorType        36
        bDescriptorSubtype      3 (OUTPUT_TERMINAL)
        bTerminalID             5
        wTerminalType      0x0101 USB Streaming
        bAssocTerminal          0
        bSourceID               4
        iTerminal               0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x85  EP 5 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               4
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       0
      bNumEndpoints           0
      bInterfaceClass        14 Video
      bInterfaceSubClass      2 Video Streaming
      bInterfaceProtocol      0
      iInterface              0
      VideoStreaming Interface Descriptor:
        bLength                            15
        bDescriptorType                    36
        bDescriptorSubtype                  1 (INPUT_HEADER)
        bNumFormats                         2
        wTotalLength                   0x00ff
        bEndPointAddress                  132
        bmInfo                              0
        bTerminalLink                       5
        bStillCaptureMethod                 2
        bTriggerSupport                     1
        bTriggerUsage                       0
        bControlSize                        1
        bmaControls( 0)                     0
        bmaControls( 1)                     0
      VideoStreaming Interface Descriptor:
        bLength                            11
        bDescriptorType                    36
        bDescriptorSubtype                  6 (FORMAT_MJPEG)
        bFormatIndex                        1
        bNumFrameDescriptors                3
        bFlags                              0
          Fixed-size samples: No
        bDefaultFrameIndex                  1
        bAspectRatioX                       0
        bAspectRatioY                       0
        bmInterlaceFlags                 0x00
          Interlaced stream or variable: No
          Fields per frame: 1 fields
          Field 1 first: No
          Field pattern: Field 1 only
        bCopyProtect                        0
      VideoStreaming Interface Descriptor:
        bLength                            30
        bDescriptorType                    36
        bDescriptorSubtype                  7 (FRAME_MJPEG)
        bFrameIndex                         1
        bmCapabilities                   0x00
          Still image unsupported
        wWidth                           1920
        wHeight                          1080
        dwMinBitRate                497664000
        dwMaxBitRate                995328000
        dwMaxVideoFrameBufferSize     4147200
        dwDefaultFrameInterval         333333
        bFrameIntervalType                  1
        dwFrameInterval( 0)            333333
      VideoStreaming Interface Descriptor:
        bLength                            30
        bDescriptorType                    36
        bDescriptorSubtype                  7 (FRAME_MJPEG)
        bFrameIndex                         2
        bmCapabilities                   0x00
          Still image unsupported
        wWidth                           1280
        wHeight                           720
        dwMinBitRate                221184000
        dwMaxBitRate                442368000
        dwMaxVideoFrameBufferSize     1843200
        dwDefaultFrameInterval         333333
        bFrameIntervalType                  1
        dwFrameInterval( 0)            333333
      VideoStreaming Interface Descriptor:
        bLength                            30
        bDescriptorType                    36
        bDescriptorSubtype                  7 (FRAME_MJPEG)
        bFrameIndex                         3
        bmCapabilities                   0x00
          Still image unsupported
        wWidth                            640
        wHeight                           480
        dwMinBitRate                 73728000
        dwMaxBitRate                147456000
        dwMaxVideoFrameBufferSize      614400
        dwDefaultFrameInterval         333333
        bFrameIntervalType                  1
        dwFrameInterval( 0)            333333
      VideoStreaming Interface Descriptor:
        bLength                            22
        bDescriptorType                    36
        bDescriptorSubtype                  3 (STILL_IMAGE_FRAME)
        bEndpointAddress                    0
        bNumImageSizePatterns               3
        wWidth( 0)                       1280
        wHeight( 0)                       720
        wWidth( 1)                        640
        wHeight( 1)                       480
        wWidth( 2)                        320
        wHeight( 2)                       240
        bNumCompressionPatterns             4
        bCompression( 0)                    1
        bCompression( 1)                    5
        bCompression( 2)                   10
        bCompression( 3)                   20
      VideoStreaming Interface Descriptor:
        bLength                             6
        bDescriptorType                    36
        bDescriptorSubtype                 13 (COLORFORMAT)
        bColorPrimaries                     1 (BT.709,sRGB)
        bTransferCharacteristics            1 (BT.709)
        bMatrixCoefficients                 4 (SMPTE 170M (BT.601))
      VideoStreaming Interface Descriptor:
        bLength                            27
        bDescriptorType                    36
        bDescriptorSubtype                  4 (FORMAT_UNCOMPRESSED)
        bFormatIndex                        2
        bNumFrameDescriptors                2
        guidFormat
{32595559-0000-0010-8000-00aa00389b71}
        bBitsPerPixel                      16
        bDefaultFrameIndex                  1
        bAspectRatioX                       0
        bAspectRatioY                       0
        bmInterlaceFlags                 0x00
          Interlaced stream or variable: No
          Fields per frame: 2 fields
          Field 1 first: No
          Field pattern: Field 1 only
        bCopyProtect                        0
      VideoStreaming Interface Descriptor:
        bLength                            30
        bDescriptorType                    36
        bDescriptorSubtype                  5 (FRAME_UNCOMPRESSED)
        bFrameIndex                         1
        bmCapabilities                   0x00
          Still image unsupported
        wWidth                            640
        wHeight                           480
        dwMinBitRate                 73728000
        dwMaxBitRate                147456000
        dwMaxVideoFrameBufferSize      614400
        dwDefaultFrameInterval         333333
        bFrameIntervalType                  1
        dwFrameInterval( 0)            333333
      VideoStreaming Interface Descriptor:
        bLength                            30
        bDescriptorType                    36
        bDescriptorSubtype                  5 (FRAME_UNCOMPRESSED)
        bFrameIndex                         2
        bmCapabilities                   0x00
          Still image unsupported
        wWidth                           1280
        wHeight                           720
        dwMinBitRate                221184000
        dwMaxBitRate                442368000
        dwMaxVideoFrameBufferSize     1843200
        dwDefaultFrameInterval        2000000
        bFrameIntervalType                  1
        dwFrameInterval( 0)           2000000
      VideoStreaming Interface Descriptor:
        bLength                            18
        bDescriptorType                    36
        bDescriptorSubtype                  3 (STILL_IMAGE_FRAME)
        bEndpointAddress                    0
        bNumImageSizePatterns               3
        wWidth( 0)                       1280
        wHeight( 0)                       720
        wWidth( 1)                        640
        wHeight( 1)                       480
        wWidth( 2)                        320
        wHeight( 2)                       240
        bNumCompressionPatterns             0
      VideoStreaming Interface Descriptor:
        bLength                             6
        bDescriptorType                    36
        bDescriptorSubtype                 13 (COLORFORMAT)
        bColorPrimaries                     1 (BT.709,sRGB)
        bTransferCharacteristics            1 (BT.709)
        bMatrixCoefficients                 4 (SMPTE 170M (BT.601))
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       1
      bNumEndpoints           1
      bInterfaceClass        14 Video
      bInterfaceSubClass      2 Video Streaming
      bInterfaceProtocol      0
      iInterface              0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x84  EP 4 IN
        bmAttributes            5
          Transfer Type            Isochronous
          Synch Type               Asynchronous
          Usage Type               Data
        wMaxPacketSize     0x1400  3x 1024 bytes
        bInterval               1
    Interface Association:
      bLength                 8
      bDescriptorType        11
      bFirstInterface         2
      bInterfaceCount         2
      bFunctionClass          1 Audio
      bFunctionSubClass       2 Streaming
      bFunctionProtocol       0
      iFunction               5 USB Microphone
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        2
      bAlternateSetting       0
      bNumEndpoints           0
      bInterfaceClass         1 Audio
      bInterfaceSubClass      1 Control Device
      bInterfaceProtocol      0
      iInterface              5 USB Microphone
      AudioControl Interface Descriptor:
        bLength                 9
        bDescriptorType        36
        bDescriptorSubtype      1 (HEADER)
        bcdADC               1.00
        wTotalLength       0x0026
        bInCollection           1
        baInterfaceNr(0)        3
      AudioControl Interface Descriptor:
        bLength                12
        bDescriptorType        36
        bDescriptorSubtype      2 (INPUT_TERMINAL)
        bTerminalID             1
        wTerminalType      0x0201 Microphone
        bAssocTerminal          0
        bNrChannels             1
        wChannelConfig     0x0003
          Left Front (L)
          Right Front (R)
        iChannelNames           0
        iTerminal               0
      AudioControl Interface Descriptor:
        bLength                 8
        bDescriptorType        36
        bDescriptorSubtype      6 (FEATURE_UNIT)
        bUnitID                 3
        bSourceID               1
        bControlSize            1
        bmaControls(0)       0x03
          Mute Control
          Volume Control
        iFeature                0
      AudioControl Interface Descriptor:
        bLength                 9
        bDescriptorType        36
        bDescriptorSubtype      3 (OUTPUT_TERMINAL)
        bTerminalID             2
        wTerminalType      0x0101 USB Streaming
        bAssocTerminal          0
        bSourceID               3
        iTerminal               0
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        3
      bAlternateSetting       0
      bNumEndpoints           0
      bInterfaceClass         1 Audio
      bInterfaceSubClass      2 Streaming
      bInterfaceProtocol      0
      iInterface              5 USB Microphone
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        3
      bAlternateSetting       1
      bNumEndpoints           1
      bInterfaceClass         1 Audio
      bInterfaceSubClass      2 Streaming
      bInterfaceProtocol      0
      iInterface              5 USB Microphone
      AudioStreaming Interface Descriptor:
        bLength                 7
        bDescriptorType        36
        bDescriptorSubtype      1 (AS_GENERAL)
        bTerminalLink           2
        bDelay                  1 frames
        wFormatTag         0x0001 PCM
      AudioStreaming Interface Descriptor:
        bLength                11
        bDescriptorType        36
        bDescriptorSubtype      2 (FORMAT_TYPE)
        bFormatType             1 (FORMAT_TYPE_I)
        bNrChannels             1
        bSubframeSize           2
        bBitResolution         16
        bSamFreqType            1 Discrete
        tSamFreq[ 0]         8000
      Endpoint Descriptor:
        bLength                 9
        bDescriptorType         5
        bEndpointAddress     0x82  EP 2 IN
        bmAttributes            1
          Transfer Type            Isochronous
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0100  1x 256 bytes
        bInterval               4
        bRefresh                0
        bSynchAddress           0
        AudioStreaming Endpoint Descriptor:
          bLength                 7
          bDescriptorType        37
          bDescriptorSubtype      1 (EP_GENERAL)
          bmAttributes         0x01
            Sampling Frequency
          bLockDelayUnits         0 Undefined
          wLockDelay         0x0000
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        3
      bAlternateSetting       2
      bNumEndpoints           1
      bInterfaceClass         1 Audio
      bInterfaceSubClass      2 Streaming
      bInterfaceProtocol      0
      iInterface              5 USB Microphone
      AudioStreaming Interface Descriptor:
        bLength                 7
        bDescriptorType        36
        bDescriptorSubtype      1 (AS_GENERAL)
        bTerminalLink           2
        bDelay                  1 frames
        wFormatTag         0x0001 PCM
      AudioStreaming Interface Descriptor:
        bLength                11
        bDescriptorType        36
        bDescriptorSubtype      2 (FORMAT_TYPE)
        bFormatType             1 (FORMAT_TYPE_I)
        bNrChannels             1
        bSubframeSize           2
        bBitResolution         16
        bSamFreqType            1 Discrete
        tSamFreq[ 0]        16000
      Endpoint Descriptor:
        bLength                 9
        bDescriptorType         5
        bEndpointAddress     0x82  EP 2 IN
        bmAttributes            1
          Transfer Type            Isochronous
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0100  1x 256 bytes
        bInterval               4
        bRefresh                0
        bSynchAddress           0
        AudioStreaming Endpoint Descriptor:
          bLength                 7
          bDescriptorType        37
          bDescriptorSubtype      1 (EP_GENERAL)
          bmAttributes         0x01
            Sampling Frequency
          bLockDelayUnits         0 Undefined
          wLockDelay         0x0000
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        3
      bAlternateSetting       3
      bNumEndpoints           1
      bInterfaceClass         1 Audio
      bInterfaceSubClass      2 Streaming
      bInterfaceProtocol      0
      iInterface              5 USB Microphone
      AudioStreaming Interface Descriptor:
        bLength                 7
        bDescriptorType        36
        bDescriptorSubtype      1 (AS_GENERAL)
        bTerminalLink           2
        bDelay                  1 frames
        wFormatTag         0x0001 PCM
      AudioStreaming Interface Descriptor:
        bLength                11
        bDescriptorType        36
        bDescriptorSubtype      2 (FORMAT_TYPE)
        bFormatType             1 (FORMAT_TYPE_I)
        bNrChannels             1
        bSubframeSize           2
        bBitResolution         16
        bSamFreqType            1 Discrete
        tSamFreq[ 0]        44100
      Endpoint Descriptor:
        bLength                 9
        bDescriptorType         5
        bEndpointAddress     0x82  EP 2 IN
        bmAttributes            1
          Transfer Type            Isochronous
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0100  1x 256 bytes
        bInterval               4
        bRefresh                0
        bSynchAddress           0
        AudioStreaming Endpoint Descriptor:
          bLength                 7
          bDescriptorType        37
          bDescriptorSubtype      1 (EP_GENERAL)
          bmAttributes         0x01
            Sampling Frequency
          bLockDelayUnits         0 Undefined
          wLockDelay         0x0000
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        3
      bAlternateSetting       4
      bNumEndpoints           1
      bInterfaceClass         1 Audio
      bInterfaceSubClass      2 Streaming
      bInterfaceProtocol      0
      iInterface              5 USB Microphone
      AudioStreaming Interface Descriptor:
        bLength                 7
        bDescriptorType        36
        bDescriptorSubtype      1 (AS_GENERAL)
        bTerminalLink           2
        bDelay                  1 frames
        wFormatTag         0x0001 PCM
      AudioStreaming Interface Descriptor:
        bLength                11
        bDescriptorType        36
        bDescriptorSubtype      2 (FORMAT_TYPE)
        bFormatType             1 (FORMAT_TYPE_I)
        bNrChannels             1
        bSubframeSize           2
        bBitResolution         16
        bSamFreqType            1 Discrete
        tSamFreq[ 0]        48000
      Endpoint Descriptor:
        bLength                 9
        bDescriptorType         5
        bEndpointAddress     0x82  EP 2 IN
        bmAttributes            1
          Transfer Type            Isochronous
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0100  1x 256 bytes
        bInterval               4
        bRefresh                0
        bSynchAddress           0
        AudioStreaming Endpoint Descriptor:
          bLength                 7
          bDescriptorType        37
          bDescriptorSubtype      1 (EP_GENERAL)
          bmAttributes         0x01
            Sampling Frequency
          bLockDelayUnits         0 Undefined
          wLockDelay         0x0000
Device Status:     0x0001
  Self Powered


Thanks,
  Marco

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] Fix mic sound on Jieli webcam
  2020-12-17 13:24       ` Marco Giunta
@ 2020-12-17 14:12         ` Takashi Iwai
  2020-12-18  9:26           ` Marco Giunta
  0 siblings, 1 reply; 9+ messages in thread
From: Takashi Iwai @ 2020-12-17 14:12 UTC (permalink / raw)
  To: Marco Giunta; +Cc: alsa-devel

On Thu, 17 Dec 2020 14:24:58 +0100,
Marco Giunta wrote:
> 
> On Thu, Dec 17, 2020 at 1:17 PM Takashi Iwai <tiwai@suse.de> wrote:
> >
> > bInterval in the descriptor should show the value.
> > At best, give the output of lsusb -v for the device.
> 
> Here my lsusb:

Thanks.

>     Interface Association:
>       bLength                 8
>       bDescriptorType        11
>       bFirstInterface         2
>       bInterfaceCount         2
>       bFunctionClass          1 Audio
>       bFunctionSubClass       2 Streaming
>       bFunctionProtocol       0
>       iFunction               5 USB Microphone
>     Interface Descriptor:
(snip)
>       AudioStreaming Interface Descriptor:
>         bLength                11
>         bDescriptorType        36
>         bDescriptorSubtype      2 (FORMAT_TYPE)
>         bFormatType             1 (FORMAT_TYPE_I)
>         bNrChannels             1
>         bSubframeSize           2
>         bBitResolution         16
>         bSamFreqType            1 Discrete
>         tSamFreq[ 0]         8000
>       Endpoint Descriptor:
>         bLength                 9
>         bDescriptorType         5
>         bEndpointAddress     0x82  EP 2 IN
>         bmAttributes            1
>           Transfer Type            Isochronous
>           Synch Type               None
>           Usage Type               Data
>         wMaxPacketSize     0x0100  1x 256 bytes
>         bInterval               4

It's 4, and the same is set for all sample rates (8000, 16000, 44100,
48000).

If you don't tweak the datainterval, which error do you get?
The actual error message should appear before "... xx callbacks
suppressed" line.

BTW, the errors at the current sample rate checks could be better
avoided by treating the return value 0 specially, something like
below.


Takashi

-- 8< --
From: Takashi Iwai <tiwai@suse.de>
Subject: [PATCH] ALSA: usb-audio: Disable sample read check if firmware
 doesn't give back

Some buggy firmware don't give the current sample rate but leaves
zero.  Handle this case more gracefully without warning but just skip
the current rate verification from the next time.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
---
 sound/usb/clock.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/sound/usb/clock.c b/sound/usb/clock.c
index e940dcee792b..31051f2be46d 100644
--- a/sound/usb/clock.c
+++ b/sound/usb/clock.c
@@ -534,6 +534,12 @@ static int set_sample_rate_v1(struct snd_usb_audio *chip,
 	}
 
 	crate = data[0] | (data[1] << 8) | (data[2] << 16);
+	if (!crate) {
+		dev_info(&dev->dev, "failed to read current rate; disabling the check\n");
+		chip->sample_rate_read_error = 3; /* three strikes, see above */
+		return 0;
+	}
+
 	if (crate != rate) {
 		dev_warn(&dev->dev, "current rate %d is different from the runtime rate %d\n", crate, rate);
 		// runtime->rate = crate;
-- 
2.26.2


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* Re: [PATCH] Fix mic sound on Jieli webcam
  2020-12-17 14:12         ` Takashi Iwai
@ 2020-12-18  9:26           ` Marco Giunta
  2020-12-18 15:31             ` Takashi Iwai
  0 siblings, 1 reply; 9+ messages in thread
From: Marco Giunta @ 2020-12-18  9:26 UTC (permalink / raw)
  To: Takashi Iwai; +Cc: alsa-devel

On Thu, Dec 17, 2020 at 3:12 PM Takashi Iwai <tiwai@suse.de> wrote:
>
> Thanks.
>
> >     Interface Association:
> >       bLength                 8
> >       bDescriptorType        11
> >       bFirstInterface         2
> >       bInterfaceCount         2
> >       bFunctionClass          1 Audio
> >       bFunctionSubClass       2 Streaming
> >       bFunctionProtocol       0
> >       iFunction               5 USB Microphone
> >     Interface Descriptor:
> (snip)
> >       AudioStreaming Interface Descriptor:
> >         bLength                11
> >         bDescriptorType        36
> >         bDescriptorSubtype      2 (FORMAT_TYPE)
> >         bFormatType             1 (FORMAT_TYPE_I)
> >         bNrChannels             1
> >         bSubframeSize           2
> >         bBitResolution         16
> >         bSamFreqType            1 Discrete
> >         tSamFreq[ 0]         8000
> >       Endpoint Descriptor:
> >         bLength                 9
> >         bDescriptorType         5
> >         bEndpointAddress     0x82  EP 2 IN
> >         bmAttributes            1
> >           Transfer Type            Isochronous
> >           Synch Type               None
> >           Usage Type               Data
> >         wMaxPacketSize     0x0100  1x 256 bytes
> >         bInterval               4
>
> It's 4, and the same is set for all sample rates (8000, 16000, 44100,
> 48000).
>
> If you don't tweak the datainterval, which error do you get?
> The actual error message should appear before "... xx callbacks
> suppressed" line.

Without the tweak, only error messages are:

kernel: usb 1-8: current rate 0 is different from the runtime rate 8000
kernel: usb 1-8: current rate 0 is different from the runtime rate 16000
kernel: usb 1-8: current rate 0 is different from the runtime rate 44100
kernel: usb 1-8: current rate 0 is different from the runtime rate 48000
kernel: usb 1-8: Warning! Unlikely big volume range (=4096), cval->res
is probably wrong.
kernel: usb 1-8: [3] FU [Mic Capture Volume] ch = 1, val = 0/4096/1

but recording from mic at any rate (8000, 16000, 44100, 48000) results
in an incomprehensible sound, like Minion voice.

With your patch 'ALSA: usb-audio: Disable sample read check if
firmware  doesn't give back' error messages have gone away, but result
is the same: Minion voice.

Thanks,
  Marco

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] Fix mic sound on Jieli webcam
  2020-12-18  9:26           ` Marco Giunta
@ 2020-12-18 15:31             ` Takashi Iwai
  2020-12-19  9:48               ` Marco Giunta
  0 siblings, 1 reply; 9+ messages in thread
From: Takashi Iwai @ 2020-12-18 15:31 UTC (permalink / raw)
  To: Marco Giunta; +Cc: alsa-devel

On Fri, 18 Dec 2020 10:26:11 +0100,
Marco Giunta wrote:
> 
> On Thu, Dec 17, 2020 at 3:12 PM Takashi Iwai <tiwai@suse.de> wrote:
> >
> > Thanks.
> >
> > >     Interface Association:
> > >       bLength                 8
> > >       bDescriptorType        11
> > >       bFirstInterface         2
> > >       bInterfaceCount         2
> > >       bFunctionClass          1 Audio
> > >       bFunctionSubClass       2 Streaming
> > >       bFunctionProtocol       0
> > >       iFunction               5 USB Microphone
> > >     Interface Descriptor:
> > (snip)
> > >       AudioStreaming Interface Descriptor:
> > >         bLength                11
> > >         bDescriptorType        36
> > >         bDescriptorSubtype      2 (FORMAT_TYPE)
> > >         bFormatType             1 (FORMAT_TYPE_I)
> > >         bNrChannels             1
> > >         bSubframeSize           2
> > >         bBitResolution         16
> > >         bSamFreqType            1 Discrete
> > >         tSamFreq[ 0]         8000
> > >       Endpoint Descriptor:
> > >         bLength                 9
> > >         bDescriptorType         5
> > >         bEndpointAddress     0x82  EP 2 IN
> > >         bmAttributes            1
> > >           Transfer Type            Isochronous
> > >           Synch Type               None
> > >           Usage Type               Data
> > >         wMaxPacketSize     0x0100  1x 256 bytes
> > >         bInterval               4
> >
> > It's 4, and the same is set for all sample rates (8000, 16000, 44100,
> > 48000).
> >
> > If you don't tweak the datainterval, which error do you get?
> > The actual error message should appear before "... xx callbacks
> > suppressed" line.
> 
> Without the tweak, only error messages are:
> 
> kernel: usb 1-8: current rate 0 is different from the runtime rate 8000
> kernel: usb 1-8: current rate 0 is different from the runtime rate 16000
> kernel: usb 1-8: current rate 0 is different from the runtime rate 44100
> kernel: usb 1-8: current rate 0 is different from the runtime rate 48000
> kernel: usb 1-8: Warning! Unlikely big volume range (=4096), cval->res
> is probably wrong.
> kernel: usb 1-8: [3] FU [Mic Capture Volume] ch = 1, val = 0/4096/1
> 
> but recording from mic at any rate (8000, 16000, 44100, 48000) results
> in an incomprehensible sound, like Minion voice.
> 
> With your patch 'ALSA: usb-audio: Disable sample read check if
> firmware  doesn't give back' error messages have gone away, but result
> is the same: Minion voice.

OK, the patch for suppressing the rate errors was submitted and will
be merged to upstream later.  Now let's hunt Minions.

Just as a blind shot, could you try the following?


Takashi

--- a/sound/usb/card.c
+++ b/sound/usb/card.c
@@ -788,7 +788,7 @@ static int usb_audio_probe(struct usb_interface *intf,
 	if (!chip->ctrl_intf)
 		chip->ctrl_intf = alts;
 
-	chip->txfr_quirk = 0;
+	chip->txfr_quirk = 1;
 	err = 1; /* continue */
 	if (quirk && quirk->ifnum != QUIRK_NO_INTERFACE) {
 		/* need some special handlings */


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] Fix mic sound on Jieli webcam
  2020-12-18 15:31             ` Takashi Iwai
@ 2020-12-19  9:48               ` Marco Giunta
  0 siblings, 0 replies; 9+ messages in thread
From: Marco Giunta @ 2020-12-19  9:48 UTC (permalink / raw)
  To: Takashi Iwai; +Cc: alsa-devel

On Fri, Dec 18, 2020 at 4:31 PM Takashi Iwai <tiwai@suse.de> wrote:
>
> OK, the patch for suppressing the rate errors was submitted and will
> be merged to upstream later.  Now let's hunt Minions.
>
> Just as a blind shot, could you try the following?
>

nope, Minion voice is still there ;-P
I've tried to record at any rate (8k, 16k, 44,1k and 48k), but no
luck. Moreover, there are a lot of new error messages:

 kernel: usb 1-6.2: 3:3: usb_set_interface failed (-19)
 kernel: usb 1-6.2: 3:3: usb_set_interface failed (-19)
 kernel: usb 1-6.2: 3:3: usb_set_interface failed (-19)
kernel: usb 1-6.2: 3:3: usb_set_interface failed (-19)
 pulseaudio[2818]: Failed to find a working profile.
pulseaudio[2818]: Failed to load module "module-alsa-card" (argument:
"device_id="1" name="usb-Jieli_Technology_USB_PHY_2.0-02"
card_name="alsa_card.usb-Jieli_Technology_USB_PHY_2.0-02"
namereg_fail=false tsched=yes fixed_latency_range=no ignore_dB=no
deferred_volume=yes use_ucm=yes avoid_resampling=no
card_properties="module-udev-detect.discovered=1""): initialization
failed.
 pulseaudio[2818]: Failed to get card object.
 pulseaudio[2818]: Failed to find a working profile.
 pulseaudio[2818]: Failed to load module "module-alsa-card" (argument:
"device_id="1" name="usb-Jieli_Technology_USB_PHY_2.0-02"
card_name="alsa_card.usb-Jieli_Technology_USB_PHY_2.0-02"
namereg_fail=false tsched=yes fixed_latency_range=no ignore_dB=no
deferred_volume=yes use_ucm=yes avoid_resampling=no
card_properties="module-udev-detect.discovered=1""): initialization
failed.
kernel: usb 1-6.2: cannot submit urb (err = -19)
 kernel: usb 1-6.2: cannot submit urb 0, error -19: no device

Thanks,
  Marco

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2020-12-19  9:49 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-12-15  9:44 [PATCH] Fix mic sound on Jieli webcam Marco Giunta
2020-12-17  9:50 ` Takashi Iwai
2020-12-17 11:49   ` Marco Giunta
2020-12-17 12:17     ` Takashi Iwai
2020-12-17 13:24       ` Marco Giunta
2020-12-17 14:12         ` Takashi Iwai
2020-12-18  9:26           ` Marco Giunta
2020-12-18 15:31             ` Takashi Iwai
2020-12-19  9:48               ` Marco Giunta

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.