Re: [PATCH 0/2] Fix for MediaTek reset affecting Focusrite audio interfaces

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]



Hi Geoffrey,

On Thu, 2025-03-13 at 17:43 +1030, Geoffrey D. Bennett wrote:
> On Thu, Mar 13, 2025 at 02:43:09AM +0100, Benedikt Ziemons wrote:
> > On Tue, 2025-03-11 at 21:53 -0400, Luiz Augusto von Dentz wrote:
> > > Hi Chris, Sean, Hao,
> > > 
> > > On Mon, Mar 10, 2025 at 5:24 PM Geraldo Nascimento
> > > <geraldogabriel@xxxxxxxxx> wrote:
> > > > 
> > > > On Sun, Mar 09, 2025 at 06:02:11AM +1030, Geoffrey D. Bennett
> > > > wrote:
> > > > > This series (choose 1 of the 2 patches) addresses an issue
> > > > > where
> > > > > the
> > > > > MT7922 Bluetooth controller reset added in commit
> > > > > ccfc8948d7e4
> > > > > ("Bluetooth: btusb: mediatek: reset the controller before
> > > > > downloading
> > > > > the fw") is causing Focusrite USB audio devices to fail to
> > > > > initialise
> > > > > when connected during boot on kernels 6.11 and newer.
> > > > > 
> > > > > Reported by three users here:
> > > > > https://github.com/geoffreybennett/linux-fcp/issues/24
> > > > > 
> > > > > Two users confirmed they have an MT7922.
> > > > > 
> > > > > I'm providing two possible solutions as I note there was a
> > > > > similar
> > > > > change made in commit a7208610761a ("Bluetooth: btmtk: Remove
> > > > > resetting mt7921 before downloading the fw"), so I'm not sure
> > > > > if
> > > > > the
> > > > > reset should be reverted for the MT7925 as well as the
> > > > > MT7922.
> > > > > 
> > > > > Option 1: Revert the problematic reset behaviour entirely
> > > > > (MT7922
> > > > > +
> > > > > MT7925)
> > > > > 
> > > > > Option 2: Remove the reset only for the MT7922
> > > > > 
> > > > > Geoffrey D. Bennett (2):
> > > > > 
> > > > >   [PATCH 1/2] Revert "Bluetooth: btusb: mediatek: reset the
> > > > > controller
> > > > >     before downloading the fw"
> > > > > 
> > > > >   [PATCH 2/2] Bluetooth: btmtk: Remove resetting mt7922
> > > > > before
> > > > >     downloading the fw
> > > > > 
> > > > > --
> > > > > 2.45.0
> > > > > 
> > > > > 
> > > > 
> > > > Hi Geoffrey,
> > > > 
> > > > I understand there's no apparent nexus of causality here.
> > > > 
> > > > However if three different users suddenly reported the same
> > > > problem
> > > > and
> > > > the fix fixes it, we should take the report seriously and back
> > > > down
> > > > on the problematic commit until we figure for sure what the
> > > > heck is
> > > > going on.
> > > > 
> > > > My bet is this is bona fide bug in the USB subsystem, but
> > > > either
> > > > I'm not
> > > > looking hard enough or I'm looking into the wrong places,
> > > > because
> > > > there's no way I can see in which way USB bluetooth driver from
> > > > MediaTek could cause clock detection to fail.
> > > > 
> > > > No point in pressing this harder, but yeah, take the reports
> > > > more
> > > > than
> > > > seriously, because if we don't understand in which way our own
> > > > (Linux)
> > > > code could be causing this, at least we should take cautionary
> > > > measures.
> > > > 
> > > > In that sense, putting Takashi Iwai and Greg KH to Cc: in a
> > > > modest
> > > > but
> > > > sincere belief that this issue is more than real, even though
> > > > it
> > > > looks
> > > > like anticipated April 1st. Takashi can help with his expertise
> > > > in
> > > > clock
> > > > detection and Greg could help pinpoint if this is indeed
> > > > madness in
> > > > the
> > > > USB subsystem.
> > > > 
> > > > Hope you and them don't mind the escalation :)
> > > 
> > > Do you guys have any idea what could be possibly going on here?
> > > There
> > > really seems something is not right if one driver affects the
> > > other,
> > > especially if the devices are not actually related in any way.
> > > 
> > > 
> > 
> > Hello everyone,
> > 
> > I did the kernel bisection on this issue and tested Geoffrey's
> > patches
> > since I own the affected combination of hardware and can reliably
> > reproduce the issue.
> > 
> > I was now able to capture both the sound device initialization
> > failure
> > and the successful initialization from initramfs using the usbmon
> > module. One difference that is immediately noticeable is the amount
> > of
> > URB_CONTROL data that is sent to the mediatek btusb device and a
> > considerable slow-down of the boot process (around 16s difference).
> > 
> > Following is some more information about the timing and other
> > related
> > messages from the kernel message log. The first excerpt is from an
> > unpatched kernel 6.14.0-rc5:
> > 
> > [   59.987242] lunar kernel: usb 1-2: new high-speed USB device
> > number 2 using xhci_hcd
> > [   59.987975] lunar kernel: usb 1-2: New USB device found,
> > idVendor=1235, idProduct=8212, bcdDevice= 6.45
> > [   59.988048] lunar kernel: usb 1-2: New USB device strings:
> > Mfr=1, Product=3, SerialNumber=2
> > [   59.988121] lunar kernel: usb 1-2: Product: Scarlett 4i4 USB
> > [   59.988197] lunar kernel: usb 1-2: Manufacturer: Focusrite
> > [   60.571193] lunar kernel: mt7921e 0000:0a:00.0: enabling device
> > (0000 -> 0002)
> > [   60.571314] lunar kernel: mt7921e 0000:0a:00.0: ASIC revision:
> > 79220010
> > [   60.571501] lunar kernel: usbcore: registered new interface
> > driver btusb
> > [   60.571513] lunar kernel: mt7921e 0000:0a:00.0: HW/SW Version:
> > 0x8a108a10, Build Time: 20241106163228a
> > [   60.571627] lunar kernel: mt7921e 0000:0a:00.0: WM Firmware
> > Version: ____000000, Build Time: 20241106163310
> > [   60.616673] lunar kernel: Bluetooth: hci0: HW/SW Version:
> > 0x008a008a, Build Time: 20241106163512
> > [   64.549017] lunar kernel: mt7921e 0000:0a:00.0 wlp10s0: renamed
> > from wlan0
> > [   70.700407] lunar kernel: usb 1-2:
> > parse_audio_format_rates_v2v3(): unable to retrieve number of
> > sample rates (clock 41)
> > [   81.264360] lunar kernel: usb 1-2:
> > parse_audio_format_rates_v2v3(): unable to retrieve number of
> > sample rates (clock 41)
> > [   81.264611] lunar kernel: usb 1-2: Focusrite Scarlett Gen 3
> > Mixer Driver enabled (pid=0x8212); report any issues to
> > https://github.com/geoffreybennett/scarlett-gen2/issues
> > [   81.264782] lunar kernel: usb 1-2: Error initialising Scarlett
> > Gen 3 Mixer Driver: -71
> > [   81.264903] lunar kernel: snd-usb-audio 1-2:1.0: probe with
> > driver snd-usb-audio failed with error -71
> > [   81.265040] lunar kernel: usb 1-2: Quirk or no altset; falling
> > back to MIDI 1.0
> > [   81.400030] lunar kernel: Bluetooth: hci0: Device setup in
> > 20435397 usecs
> > [   81.400114] lunar kernel: Bluetooth: hci0: HCI Enhanced Setup
> > Synchronous Connection command is advertised, but not supported.
> > [   81.680052] lunar kernel: Bluetooth: hci0: AOSP extensions
> > version v1.00
> > [   81.680170] lunar kernel: Bluetooth: hci0: AOSP quality report
> > is supported
> > [   87.373353] lunar kernel: usbcore: registered new interface
> > driver snd-usb-audio
> > 
> > 
> > The following second excerpt is from the same kernel version with
> > Geoffrey's second patch applied:
> > 
> > [  139.603887] lunar kernel: usb 1-2: new high-speed USB device
> > number 2 using xhci_hcd
> > [  139.604524] lunar kernel: usb 1-2: New USB device found,
> > idVendor=1235, idProduct=8212, bcdDevice= 6.45
> > [  139.604598] lunar kernel: usb 1-2: New USB device strings:
> > Mfr=1, Product=3, SerialNumber=2
> > [  139.604672] lunar kernel: usb 1-2: Product: Scarlett 4i4 USB
> > [  139.604744] lunar kernel: usb 1-2: Manufacturer: Focusrite
> > [  140.192488] lunar kernel: usbcore: registered new interface
> > driver btusb
> > [  140.192501] lunar kernel: mt7921e 0000:0a:00.0: enabling device
> > (0000 -> 0002)
> > [  140.192627] lunar kernel: Bluetooth: hci0: HW/SW Version:
> > 0x008a008a, Build Time: 20241106163512
> > [  140.192639] lunar kernel: mt7921e 0000:0a:00.0: ASIC revision:
> > 79220010
> > [  140.192753] lunar kernel: mt7921e 0000:0a:00.0: HW/SW Version:
> > 0x8a108a10, Build Time: 20241106163228a
> > [  140.192866] lunar kernel: mt7921e 0000:0a:00.0: WM Firmware
> > Version: ____000000, Build Time: 20241106163310
> > [  140.240011] lunar kernel: Bluetooth: hci0: Device setup in
> > 188119 usecs
> > [  140.240048] lunar kernel: Bluetooth: hci0: HCI Enhanced Setup
> > Synchronous Connection command is advertised, but not supported.
> > [  140.513341] lunar kernel: Bluetooth: hci0: AOSP extensions
> > version v1.00
> > [  140.513379] lunar kernel: Bluetooth: hci0: AOSP quality report
> > is supported
> > [  144.115475] lunar kernel: mt7921e 0000:0a:00.0 wlp10s0: renamed
> > from wlan0
> > [  144.115747] lunar kernel: usb 1-2: Focusrite Scarlett Gen 3
> > Mixer Driver enabled (pid=0x8212); report any issues to
> > https://github.com/geoffreybennett/scarlett-gen2/issues
> > [  144.115857] lunar kernel: usb 1-2: Firmware version 1605
> > [  144.115954] lunar kernel: usb 1-2: Quirk or no altset; falling
> > back to MIDI 1.0
> > [  147.843340] lunar kernel: usbcore: registered new interface
> > driver snd-usb-audio
> > 
> > 
> > Comparing the USB captures from the hub, filtered to just the first
> > few
> > messages of the audio device yield the following exchanges. Again,
> > first the broken case:
> > 
> > No.     Time           Source                Destination          
> > Protocol Length Info
> >       7 0.011098       host                  1.2.0                
> > USB      64     GET DESCRIPTOR Request DEVICE
> >       8 0.015218       1.2.0                 host                 
> > USB      82     GET DESCRIPTOR Response DEVICE
> >       9 0.015272       host                  1.2.0                
> > USB      64     GET DESCRIPTOR Request CONFIGURATION
> >      10 0.017966       1.2.0                 host                 
> > USB      73     GET DESCRIPTOR Response CONFIGURATION
> >      11 0.018020       host                  1.2.0                
> > USB      64     GET DESCRIPTOR Request CONFIGURATION
> >      12 0.025965       1.2.0                 host                 
> > USB      425    GET DESCRIPTOR Response CONFIGURATION
> >      23 2.482241       host                  1.2.0                
> > USB      64     GET DESCRIPTOR Request STRING
> >      24 2.484931       1.2.0                 host                 
> > USB      98     GET DESCRIPTOR Response STRING
> >      25 2.484939       host                  1.2.0                
> > USB      64     GET DESCRIPTOR Request STRING
> >      26 2.487916       1.2.0                 host                 
> > USB      84     GET DESCRIPTOR Response STRING
> >      27 2.487941       host                  1.2.0                
> > USBAUDIO 65     SET CUR CX_CLOCK_SELECTOR_CONTROL request
> >    2047 7.661154       1.2.0                 host                 
> > USBAUDIO 64     SET CUR CX_CLOCK_SELECTOR_CONTROL status
> >    2048 7.661197       host                  1.2.0                
> > USBAUDIO 64     GET RANGE CS_SAM_FREQ_CONTROL request
> >    4097 12.781553      1.2.0                 host                 
> > USBAUDIO 64     GET RANGE CS_SAM_FREQ_CONTROL[Malformed Packet]
> > 
> > 
> > The first discrepancy can be found in the URB status field of
> > packet
> > no. 2047 (vs. 74 below) which is -2: No such file or directory (-
> > ENOENT).
> > In the second (following) case where the sound device initializes
> > okay,
> > the URB status of the similar packet is Success (0) instead:
> > 
> > No.     Time           Source                Destination          
> > Protocol Length Info
> >       7 0.011565       host                  1.2.0                
> > USB      64     GET DESCRIPTOR Request DEVICE
> >       8 0.015471       1.2.0                 host                 
> > USB      82     GET DESCRIPTOR Response DEVICE
> >       9 0.015523       host                  1.2.0                
> > USB      64     GET DESCRIPTOR Request CONFIGURATION
> >      10 0.018477       1.2.0                 host                 
> > USB      73     GET DESCRIPTOR Response CONFIGURATION
> >      11 0.018537       host                  1.2.0                
> > USB      64     GET DESCRIPTOR Request CONFIGURATION
> >      12 0.026331       1.2.0                 host                 
> > USB      425    GET DESCRIPTOR Response CONFIGURATION
> >      23 4.168190       host                  1.2.0                
> > USB      64     GET DESCRIPTOR Request STRING
> >      24 4.171031       1.2.0                 host                 
> > USB      98     GET DESCRIPTOR Response STRING
> >      25 4.171040       host                  1.2.0                
> > USB      64     GET DESCRIPTOR Request STRING
> >      26 4.174021       1.2.0                 host                 
> > USB      84     GET DESCRIPTOR Response STRING
> >      27 4.174041       host                  1.2.0                
> > USBAUDIO 65     SET CUR CX_CLOCK_SELECTOR_CONTROL request
> >      74 4.476033       1.2.0                 host                 
> > USBAUDIO 64     SET CUR CX_CLOCK_SELECTOR_CONTROL status
> >      75 4.476050       host                  1.2.0                
> > USBAUDIO 64     GET CUR CX_CLOCK_SELECTOR_CONTROL request
> >      76 4.479034       1.2.0                 host                 
> > USBAUDIO 65     GET CUR CX_CLOCK_SELECTOR_CONTROL response
> >      77 4.479050       host                  1.2.0                
> > USBAUDIO 64     GET RANGE CS_SAM_FREQ_CONTROL request
> >     202 4.582043       1.2.0                 host                 
> > USBAUDIO 66     GET RANGE CS_SAM_FREQ_CONTROL response
> > 
> > 
> > Please ask, if I should provide any more information or how and to
> > whom
> > I can provide the full USB captures.
> > 
> > Thank you,
> > Ben
> 
> Hi Ben,
> 
> This bit sticks out to me:
> 
> > [   81.400030] lunar kernel: Bluetooth: hci0: Device setup in
> > 20435397 usecs
> 
> 20 seconds to initialise bluetooth, vs. 188ms when not doing the
> reset:
> 
> > [  140.240011] lunar kernel: Bluetooth: hci0: Device setup in
> > 188119 usecs
> 
> Does it still take 20 seconds when the Scarlett is not plugged in at
> boot time?

Yes, it still takes 20 seconds without the Scarlett plugged in. Here
are kernel messages about the mediatek device in this case:

[    6.620016] lunar kernel: Bluetooth: Core ver 2.22
[    6.666695] lunar kernel: NET: Registered PF_BLUETOOTH protocol family
[    6.666756] lunar kernel: Bluetooth: HCI device and connection manager initialized
[    6.666770] lunar kernel: Bluetooth: HCI socket layer initialized
[    6.666784] lunar kernel: Bluetooth: L2CAP socket layer initialized
[    6.666794] lunar kernel: Bluetooth: SCO socket layer initialized
[    6.912392] lunar kernel: usbcore: registered new interface driver btusb
[    6.912402] lunar kernel: mt7921e 0000:0a:00.0: enabling device (0000 -> 0002)
[    6.912519] lunar kernel: mt7921e 0000:0a:00.0: ASIC revision: 79220010
[    6.912627] lunar kernel: mt7921e 0000:0a:00.0: HW/SW Version: 0x8a108a10, Build Time: 20241106163228a
[    6.912739] lunar kernel: mt7921e 0000:0a:00.0: WM Firmware Version: ____000000, Build Time: 20241106163310
[    6.912847] lunar kernel: Bluetooth: hci0: HW/SW Version: 0x008a008a, Build Time: 20241106163512
[    8.010016] lunar kernel: mt7921e 0000:0a:00.0 wlp10s0: renamed from wlan0
[   12.723353] lunar kernel: usbcore: registered new interface driver snd-usb-audio
[   27.606693] lunar kernel: Bluetooth: hci0: Device setup in 20342576 usecs
[   27.606748] lunar kernel: Bluetooth: hci0: HCI Enhanced Setup Synchronous Connection command is advertised, but not supported.
[   27.883398] lunar kernel: Bluetooth: hci0: AOSP extensions version v1.00
[   27.883466] lunar kernel: Bluetooth: hci0: AOSP quality report is supported

> 
> I presume lsusb -t shows both devices on the same USB bus?

Yes, indeed, they are both on bus 1. For the captures I also made sure
that no other devices are on the same bus.
I also just tried connecting the Scarlett to a different USB bus and
cannot reproduce the original issue with this setup.

> 
> Thanks,
> Geoffrey.





[Index of Archives]     [Pulseaudio]     [Linux Audio Users]     [ALSA Devel]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]

  Powered by Linux