Bug 218175
Summary: | Freshly bought Mackie Big Knob Studio+ needs quirk_flags | ||
---|---|---|---|
Product: | Drivers | Reporter: | Marko Wunderlich (psychotronic) |
Component: | Sound(ALSA) | Assignee: | Jaroslav Kysela (perex) |
Status: | NEW --- | ||
Severity: | normal | CC: | alexander |
Priority: | P3 | ||
Hardware: | All | ||
OS: | Linux | ||
Kernel Version: | 6.6.1-arch1-1 | Subsystem: | |
Regression: | No | Bisected commit-id: | |
Attachments: |
dmesg output without the quirk_flag set.
dmesg output with the quirk_flag set. lsusb output for the device dmesg output with the quirk_flag 0x20 set. |
Created attachment 305454 [details]
dmesg output with the quirk_flag set.
Created attachment 305455 [details]
lsusb output for the device
In case you need more Info, please feel free to contact me. (In reply to Marko Wunderlich from comment #0) > modprobe -r snd_usb_audio > modprobe snd_usb_audio dyndbg==p quirk_flags=0x64 You actually enabled 3 quirks: 2, 5 and 6. Please try only with 5 (Skip clock selector setup): quirk_flags=0x20 Created attachment 305808 [details]
dmesg output with the quirk_flag 0x20 set.
That seems to work, i added another log from that test run. Can we do something to tell alsa the sample rates the interface is capable? Right now we get this: cat /proc/asound/STUDIO/stream0 LOUD Technologies Inc. BIG KNOB STUDIO+ at usb-0000:00:14.0-6.4, high speed : USB Audio Playback: Status: Stop Interface 1 Altset 1 Format: S32_LE Channels: 4 Endpoint: 0x01 (1 OUT) (ASYNC) Rates: 44100, 48000, 88200, 96000, 176400, 192000 Data packet interval: 125 us Bits: 24 Channel map: FL FR FC LFE Sync Endpoint: 0x81 (1 IN) Sync EP Interface: 1 Sync EP Altset: 1 Implicit Feedback Mode: No Interface 1 Altset 2 Format: S16_LE Channels: 4 Endpoint: 0x01 (1 OUT) (ASYNC) Rates: 44100, 48000, 88200, 96000, 176400, 192000 Data packet interval: 125 us Bits: 16 Channel map: FL FR FC LFE Sync Endpoint: 0x81 (1 IN) Sync EP Interface: 1 Sync EP Altset: 2 Implicit Feedback Mode: No Capture: Status: Stop Interface 2 Altset 1 Format: S32_LE Channels: 2 Endpoint: 0x82 (2 IN) (ASYNC) Rates: 44100, 48000, 88200, 96000, 176400, 192000 Data packet interval: 125 us Bits: 24 Channel map: FL FR The interface goes up to 96 kHz not higher. (In reply to Marko Wunderlich from comment #7) > The interface goes up to 96 kHz not higher. Please try to enable QUIRK_FLAG_VALIDATE_RATES + QUIRK_FLAG_SKIP_CLOCK_SELECTOR: modprobe snd_usb_audio dyndbg==p quirk_flag=0x1020 and show dmesg output for this device. But I think this wouldn't work since the card lacks Valid Alternate Setting Control (according to lsusb output). Hmm.. Manual says that 192KHz should be supported, but on the product page I see 96KHz o_O (In reply to Alexander Tsoy from comment #9) > Hmm.. Manual says that 192KHz should be supported, but on the product page I > see 96KHz o_O I just recorded a 192Khz 32bit float file with the interface. o.O The manual must be right, unfortunately ardour segfaulted out of the export process in protest, must have been my bad singing. :D (In reply to Alexander Tsoy from comment #8) > (In reply to Marko Wunderlich from comment #7) > > The interface goes up to 96 kHz not higher. > > Please try to enable QUIRK_FLAG_VALIDATE_RATES + > QUIRK_FLAG_SKIP_CLOCK_SELECTOR: > > modprobe snd_usb_audio dyndbg==p quirk_flag=0x1020 > > and show dmesg output for this device. > > But I think this wouldn't work since the card lacks Valid Alternate Setting > Control (according to lsusb output). Log looks like this: [ 2925.061562] usb 1-6.4: USB disconnect, device number 13 [ 2928.850398] usb 1-6.4: new high-speed USB device number 14 using xhci_hcd [ 2928.941094] usb 1-6.4: New USB device found, idVendor=0a73, idProduct=001b, bcdDevice= 6.c5 [ 2928.941110] usb 1-6.4: New USB device strings: Mfr=1, Product=3, SerialNumber=0 [ 2928.941118] usb 1-6.4: Product: BIG KNOB STUDIO+ [ 2928.941124] usb 1-6.4: Manufacturer: LOUD Technologies Inc. [ 2928.947156] usb 1-6.4: Found last interface = 0 [ 2928.948811] usb 1-6.4: No valid sample rate available for 1:1, assuming a firmware bug [ 2928.948817] usb 1-6.4: 1:1: found sync_ep=0x81, iface=1, alt=1, implicit_fb=0 [ 2928.948819] usb 1-6.4: 1:1: add audio endpoint 0x1 [ 2928.948833] usb 1-6.4: Creating new data endpoint #1 [ 2928.948836] usb 1-6.4: Creating new sync endpoint #81 [ 2928.948893] usb 1-6.4: 1:1 Set sample rate 192000, clock 40 [ 2928.952622] usb 1-6.4: No valid sample rate available for 1:2, assuming a firmware bug [ 2928.952627] usb 1-6.4: 1:2: found sync_ep=0x81, iface=1, alt=2, implicit_fb=0 [ 2928.952629] usb 1-6.4: 1:2: add audio endpoint 0x1 [ 2928.952684] usb 1-6.4: 1:2 Set sample rate 192000, clock 40 [ 2928.955939] usb 1-6.4: No valid sample rate available for 2:1, assuming a firmware bug [ 2928.955943] usb 1-6.4: 2:1: add audio endpoint 0x82 [ 2928.955955] usb 1-6.4: Creating new data endpoint #82 [ 2928.955993] usb 1-6.4: 2:1 Set sample rate 192000, clock 40 [ 2928.957935] usb 1-6.4: [10] FU [BIG KNOB STUDIO+ Playback Switch] ch = 4, val = 0/1/1 [ 2928.958036] usb 1-6.4: [10] FU [BIG KNOB STUDIO+ Playback Switch] ch = 1, val = 0/1/1 [ 2928.958579] usb 1-6.4: [10] FU [BIG KNOB STUDIO+ Playback Volume] ch = 4, val = -32512/0/256 [ 2928.958973] usb 1-6.4: [10] FU [BIG KNOB STUDIO+ Playback Volume] ch = 1, val = -32512/0/256 [ 2928.959125] usb 1-6.4: [11] FU [Mic Capture Switch] ch = 2, val = 0/1/1 [ 2928.959178] usb 1-6.4: [11] FU [Mic Capture Switch] ch = 1, val = 0/1/1 [ 2928.959583] usb 1-6.4: [11] FU [Mic Capture Volume] ch = 2, val = -32512/0/256 [ 2928.959971] usb 1-6.4: [11] FU [Mic Capture Volume] ch = 1, val = -32512/0/256 [ 2929.669429] usb 1-6.4: Open EP 0x82, iface=2:1, idx=0 [ 2929.669434] usb 1-6.4: channels=2, rate=48000, format=S32_LE, period_bytes=9600, periods=4, implicit_fb=0 [ 2929.669437] usb 1-6.4: Setting params for data EP 0x82, pipe 0x10e80 [ 2929.669443] usb 1-6.4: Set up 12 URBS, ret=0 [ 2929.669453] usb 1-6.4: 2:1 Set sample rate 48000, clock 40 [ 2929.669757] usb 1-6.4: Setting usb interface 2:1 for EP 0x82 [ 2929.672786] usb 1-6.4: Closing EP 0x82 (count 1) [ 2929.672790] usb 1-6.4: Setting usb interface 2:0 for EP 0x82 [ 2929.673246] usb 1-6.4: EP 0x82 closed [ 2929.680764] usb 1-6.4: Open EP 0x82, iface=2:1, idx=0 [ 2929.680770] usb 1-6.4: channels=2, rate=48000, format=S32_LE, period_bytes=9600, periods=4, implicit_fb=0 [ 2929.680776] usb 1-6.4: Setting params for data EP 0x82, pipe 0x10e80 [ 2929.680783] usb 1-6.4: Set up 12 URBS, ret=0 [ 2929.680820] usb 1-6.4: 2:1 Set sample rate 48000, clock 40 [ 2929.681000] usb 1-6.4: Setting usb interface 2:1 for EP 0x82 [ 2929.681597] usb 1-6.4: Closing EP 0x82 (count 1) [ 2929.681601] usb 1-6.4: Setting usb interface 2:0 for EP 0x82 [ 2929.682051] usb 1-6.4: EP 0x82 closed [ 2929.683973] usb 1-6.4: Open EP 0x1, iface=1:2, idx=0 [ 2929.683978] usb 1-6.4: channels=4, rate=48000, format=S16_LE, period_bytes=9600, periods=4, implicit_fb=0 [ 2929.683980] usb 1-6.4: Open EP 0x81, iface=1:2, idx=1 [ 2929.683982] usb 1-6.4: channels=4, rate=48000, format=S16_LE, period_bytes=9600, periods=4, implicit_fb=0 [ 2929.683985] usb 1-6.4: Setting params for sync EP 0x81, pipe 0x8e80 [ 2929.683987] usb 1-6.4: Set up 4 URBS, ret=0 [ 2929.683989] usb 1-6.4: Setting params for data EP 0x1, pipe 0x8e00 [ 2929.683995] usb 1-6.4: Set up 12 URBS, ret=0 [ 2929.684005] usb 1-6.4: 1:2 Set sample rate 48000, clock 40 [ 2929.684235] usb 1-6.4: Setting usb interface 1:2 for EP 0x81 [ 2929.685365] usb 1-6.4: Open EP 0x82, iface=2:1, idx=0 [ 2929.685369] usb 1-6.4: channels=2, rate=48000, format=S32_LE, period_bytes=9600, periods=4, implicit_fb=0 [ 2929.685375] usb 1-6.4: Setting params for data EP 0x82, pipe 0x10e80 [ 2929.685380] usb 1-6.4: Set up 12 URBS, ret=0 [ 2929.685388] usb 1-6.4: Setting usb interface 2:1 for EP 0x82 [ 2929.685886] usb 1-6.4: Closing EP 0x82 (count 1) [ 2929.685888] usb 1-6.4: Setting usb interface 2:0 for EP 0x82 [ 2929.686312] usb 1-6.4: EP 0x82 closed [ 2929.686579] usb 1-6.4: Open EP 0x82, iface=2:1, idx=0 [ 2929.686581] usb 1-6.4: channels=2, rate=48000, format=S32_LE, period_bytes=9600, periods=4, implicit_fb=0 [ 2929.686585] usb 1-6.4: Setting params for data EP 0x82, pipe 0x10e80 [ 2929.686589] usb 1-6.4: Set up 12 URBS, ret=0 [ 2929.686596] usb 1-6.4: Setting usb interface 2:1 for EP 0x82 [ 2929.687231] usb 1-6.4: Closing EP 0x1 (count 1) [ 2929.687235] usb 1-6.4: EP 0x1 closed [ 2929.687237] usb 1-6.4: Closing EP 0x81 (count 1) [ 2929.687240] usb 1-6.4: Setting usb interface 1:0 for EP 0x81 [ 2929.687760] usb 1-6.4: EP 0x81 closed [ 2929.687821] usb 1-6.4: Closing EP 0x82 (count 1) [ 2929.687823] usb 1-6.4: Setting usb interface 2:0 for EP 0x82 [ 2929.688311] usb 1-6.4: EP 0x82 closed [ 2929.714763] usb 1-6.4: Open EP 0x1, iface=1:1, idx=0 [ 2929.714769] usb 1-6.4: channels=4, rate=48000, format=S32_LE, period_bytes=16384, periods=64, implicit_fb=0 [ 2929.714772] usb 1-6.4: Open EP 0x81, iface=1:1, idx=1 [ 2929.714774] usb 1-6.4: channels=4, rate=48000, format=S32_LE, period_bytes=16384, periods=64, implicit_fb=0 [ 2929.714779] usb 1-6.4: Setting params for sync EP 0x81, pipe 0x8e80 [ 2929.714781] usb 1-6.4: Set up 4 URBS, ret=0 [ 2929.714785] usb 1-6.4: Setting params for data EP 0x1, pipe 0x8e00 [ 2929.714790] usb 1-6.4: Set up 12 URBS, ret=0 [ 2929.714857] usb 1-6.4: 1:1 Set sample rate 48000, clock 40 [ 2929.715091] usb 1-6.4: Setting usb interface 1:1 for EP 0x81 [ 2929.715770] usb 1-6.4: Closing EP 0x1 (count 1) [ 2929.715776] usb 1-6.4: EP 0x1 closed [ 2929.715778] usb 1-6.4: Closing EP 0x81 (count 1) [ 2929.715780] usb 1-6.4: Setting usb interface 1:0 for EP 0x81 [ 2929.716279] usb 1-6.4: EP 0x81 closed [ 2929.716600] usb 1-6.4: Open EP 0x82, iface=2:1, idx=0 [ 2929.716605] usb 1-6.4: channels=2, rate=48000, format=S32_LE, period_bytes=8192, periods=64, implicit_fb=0 [ 2929.716611] usb 1-6.4: Setting params for data EP 0x82, pipe 0x10e80 [ 2929.716618] usb 1-6.4: Set up 12 URBS, ret=0 [ 2929.716659] usb 1-6.4: 2:1 Set sample rate 48000, clock 40 [ 2929.717256] usb 1-6.4: Setting usb interface 2:1 for EP 0x82 [ 2929.717828] usb 1-6.4: Closing EP 0x82 (count 1) [ 2929.717832] usb 1-6.4: Setting usb interface 2:0 for EP 0x82 [ 2929.718332] usb 1-6.4: EP 0x82 closed |
Created attachment 305453 [details] dmesg output without the quirk_flag set. Dear All, as i just bought a Mackie Big Knob Studio+ and the only info i found about these devices was some people on Reddit saying that at least the older generation does run on Linux. I was surprised to see that the current version of it doesn't anymore. Attached to the ticket you'll find output for lsusb for the device and dmesg logs for the error case. I'll also attached a log for the working case, as i found out after a bit of research that the snd_usb_audio driver has a option to set quirk flags to access modes that should be from my understanding put into some kind of configuration or profile for the card. I'm not skilled enough to provide a kernel patch, but i basically found out how to get the interface to operate normally with a quirk_flag. The documentation state that i should report this to upstream, which i am doing hereby. So the driver seems to have a problem with identifying the clock source(see attached log), that led me to the conclusion that for the quirk_flags this should be set: "bit 6: Ignore errors from clock source search" (according to the documentation) Setting it and re plugging the usb-cable boots the device normally.(see attached log) The command i used for this is: modprobe -r snd_usb_audio modprobe snd_usb_audio dyndbg==p quirk_flags=0x64 Best Regards, Marko