Questions and answers from the Slimbook user community

¡Bienvenido al foro de la comunidad!

Si tienes problemas de software, este es tu sitio. Construyamos entre todos un lugar mejor, proporcionando experiencias, información de uso y tips. Si tienes alguna pregunta, procura dar información detallada sobre tu sistema.

Si tienes problemas de hardware, tramita la GARANTÍA AQUÍ, ya que nuestros técnicos no suelen revisar el foro por estar trabajando en reparaciones.

0

FreeBuds in-ear (wear) detection not relayed — MT7922 Bluetooth, Excalibur AMD AI

Avatar
Nourpon

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 with evtest).
  • Removing an earbud produces no input event at all — nothing in evtest on the FreeBuds AVRCP device, nothing in wireplumber logs.
  • 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.
  • dmesg shows this recurring line whenever I interact with the earbuds:
    Bluetooth: hci0: ACL packet for unknown connection handle 3837
  • linux-firmware is at 20240318 (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!

Excalibur 16 AMD Ryzen AI9 365 Blue
Avatar
Discard
1 Answer
0
Avatar
Nourpon
Best Answer

Update and solved
turns out the MT7922 does relay the event, it just needed proper SPP decoding via MyBuds
https://github.com/joshuapassos/mybuds
auto-pause working now

Avatar
Discard