Hi everyone,
I'm running Zorin OS 18.1 (Ubuntu 24.04 base) with kernel 6.17.0-1028-oem on an Excalibur 16 (Ryzen AI 9 365). Bluetooth works great overall, but I've lost one feature after migrating to this machine: automatic play/pause when removing an earbud (Huawei FreeBuds 6i).
This worked out of the box on my two previous laptops (both Atheros Bluetooth controllers), same earbuds, same A2DP profile. On the Excalibur (MediaTek MT7922) the wear-detection event never reaches the system.
What I've already checked:
- Bluetooth itself is fine: pairing OK, A2DP audio perfect, AVRCP working (a double-tap on the earbud correctly sends
KEY_PAUSECD, confirmed withevtest). - Removing an earbud produces no input event at all — nothing in
evteston the FreeBuds AVRCP device, nothing inwireplumberlogs. - Wear detection is enabled in the earbuds (verified from the Huawei app on my phone).
- OpenFreebuds (with its MPRIS helper enabled) doesn't detect the removal either — so the event doesn't reach userspace at all, not just a matter of which app is listening.
dmesgshows this recurring line whenever I interact with the earbuds:
Bluetooth: hci0: ACL packet for unknown connection handle 3837linux-firmwareis at20240318(March 2024), which is the latest in the repos. MT7922 BT firmware build time:20250523.
My conclusion: the MT7922 (or its firmware) doesn't relay the proprietary wear-detection packet, unlike the Atheros controllers did. This looks like a firmware/driver limitation rather than a config issue.
Questions:
- Has anyone with an Excalibur AMD / MT7922 got earbud wear-detection auto-pause working?
- Is a newer
linux-firmware/ mt76 fix known to address the "unknown connection handle" behaviour?
Happy to provide full dmesg, btmon captures, or test anything. Thanks!