On Fri, 18 Dec 2020 10:26:11 +0100, Marco Giunta wrote: > > On Thu, Dec 17, 2020 at 3:12 PM Takashi Iwai <tiwai@xxxxxxx> 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 */