All of lore.kernel.org
 help / color / mirror / Atom feed
From: bugzilla-daemon@kernel.org
To: linux-bluetooth@vger.kernel.org
Subject: [Bug 221706] New: btusb/btmtk: MT7921 BT audio fails after suspend/resume — stale ACL connection handle requires module reload to clear
Date: Tue, 30 Jun 2026 19:35:33 +0000	[thread overview]
Message-ID: <bug-221706-62941@https.bugzilla.kernel.org/> (raw)

https://bugzilla.kernel.org/show_bug.cgi?id=221706

            Bug ID: 221706
           Summary: btusb/btmtk: MT7921 BT audio fails after
                    suspend/resume — stale ACL connection handle requires
                    module reload to clear
           Product: Drivers
           Version: 2.5
          Hardware: All
                OS: Linux
            Status: NEW
          Severity: normal
          Priority: P3
         Component: Bluetooth
          Assignee: linux-bluetooth@vger.kernel.org
          Reporter: sandeepmahendrakar11@gmail.com
        Regression: No

Created attachment 310396
  --> https://bugzilla.kernel.org/attachment.cgi?id=310396&action=edit
Attached: dmesg output (bt-dmesg.log) and lsusb -v + uname -a (bt-lsusb.log). 
dmesg confirms the reported issue and shows additional detail: alongside the
recurring "ACL packet for unknown connection

System:
- Fedora 44, kernel 6.19.x
- BlueZ 5.86, PipeWire 1.6.7, WirePlumber 0.5.15
- Adapter: MediaTek MT7921, USB bus path 3-2
- Headset tested: Zebronics ZEB-THUNDER PRO (A2DP), MAC 41:42:09:03:43:EB

Symptom:
After suspend/resume, Bluetooth audio reconnects successfully but disconnects
again within 2-3 seconds, every time, on every resume.

Root cause found:
The kernel log shows a recurring stale connection handle that survives every
userspace-level recovery attempt:

    kernel: Bluetooth: hci0: ACL packet for unknown connection handle 3837

This handle number persisted across all of the following recovery attempts,
none of which fixed it:
- bluetoothctl disconnect / connect
- bluetoothctl remove + re-pair from scratch
- Power-cycling the headset itself
- rfkill block / unblock
- Full USB-level device de-authorize / re-authorize cycle
(/sys/bus/usb/devices/3-2/authorized set to 0 then 1)

The only thing that cleared it was a full kernel module reload:

    sudo systemctl stop bluetooth
    sudo modprobe -r btusb btmtk
    sleep 2
    sudo modprobe btmtk
    sudo modprobe btusb
    sleep 5
    sudo systemctl start bluetooth

After this, the headset reconnected and held the connection stably (verified
over 2+ minutes of continuous audio playback, and across repeated
suspend/resume cycles since).

Why this looks like a driver-level state bug rather than a BlueZ/userspace
issue:
A full USB re-authorization cycle re-enumerates the device at the USB level,
yet did not clear the stale handle. Only unloading and reloading the
btusb/btmtk kernel modules did. This suggests the stale ACL connection handle
is held in the driver's own internal HCI connection table state, surviving USB
re-enumeration, and is only cleared on full module teardown/init.

Reproduction steps:
1. Pair an A2DP headset on a MediaTek MT7921 adapter.
2. Confirm a stable connection.
3. Suspend the system (systemctl suspend), then resume.
4. Observe: reconnect succeeds, then drops within ~2-3 seconds.
5. Run: dmesg | grep "unknown connection handle" — the same stale handle number
reappears.
6. Confirm that only modprobe -r/modprobe of btusb and btmtk clears it; nothing
else does.

I'm happy to test patches, provide additional dmesg/btmon captures, or run
further diagnostics.

GitHub: https://github.com/sandeep11mahendrakar

-- 
You may reply to this email to add a comment.

You are receiving this mail because:
You are the assignee for the bug.

             reply	other threads:[~2026-06-30 19:35 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-06-30 19:35 bugzilla-daemon [this message]
2026-07-05 10:07 ` [Bug 221706] btusb/btmtk: MT7921 BT audio fails after suspend/resume — stale ACL connection handle requires module reload to clear bugzilla-daemon
2026-07-05 10:08 ` bugzilla-daemon

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=bug-221706-62941@https.bugzilla.kernel.org/ \
    --to=bugzilla-daemon@kernel.org \
    --cc=linux-bluetooth@vger.kernel.org \
    /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.