Public bug reported:

Bluetooth: Huawei FreeBuds no longer connect - BR/EDR signalling-MTU
check discards vendor frames

Since a recent noble kernel update Huawei FreeBuds 3 pair successfully but never
finish connecting. The ACL link comes up, authentication and encryption succeed,
and the earbuds tear the link down about 160 ms later with reason 0x13 (Remote
User Terminated). The cycle repeats every 3-4 seconds and never converges - 36
consecutive attempts over four minutes in my testing.

ROOT CAUSE

The earbuds send battery telemetry as a 68-byte L2CAP Echo Request on the
signalling channel:

    <--  L2CAP Echo Request    ident=129 len=64
         payload: "AT+HUAWEIBATTERY=6,2,100,3,0,4,100,5,0,6,35,7,0\r"
    -->  L2CAP Command Reject  reason=1 (Signalling MTU exceeded) max_mtu=48

The noble tree carries the commit "Bluetooth: L2CAP: reject BR/EDR signaling
packets over MTUsig" (Michael Bommarito, author date 2026-09-03), which adds
L2CAP_SIG_MTU (48) to include/net/bluetooth/l2cap.h and makes 
l2cap_sig_channel()
discard any signalling packet above it:

    if (skb->len > L2CAP_SIG_MTU) {
            u8 ident = skb->data[1];

            BT_DBG("signaling packet exceeds MTU: %u > %u",
                   skb->len, L2CAP_SIG_MTU);
            l2cap_sig_send_mtu_rej(conn, ident);
            goto drop;
    }

The Echo Request therefore never reaches the L2CAP_ECHO_REQ handler and no Echo
Response is sent. The device waits for it, stalls, and disconnects.

Vanilla 6.8, 6.12 and 6.15 do not contain this check, so this is specific to
trees carrying that commit.

HCI level, showing that the crypto side is fine and the remote simply
hangs up:

    Connect Complete      status=0x00
    Link Key Request
    Auth Complete         status=0x00
    Encryption Change     status=0x00 enabled=1
    ...
    Disconnect Complete   status=0x00 reason=0x13 (Remote User Terminated)

IMPACT

Bluetooth audio hardware that worked on earlier noble kernels stops working 
after
a routine kernel update, with no error visible to the user - the device simply
never connects. The failure mode gives no hint that a kernel change is
responsible.

VERIFICATION

Rebuilding only bluetooth.ko with L2CAP_SIG_MTU raised from 48 to 672 restores
normal operation: the earbuds connect on the first attempt, A2DP comes up, and
the link has been stable since. No other change.

SUGGESTED HANDLING

The device is out of spec - Bluetooth Core 5.4, Vol 3, Part A section 4 puts
MTUsig at 48 octets - so the commit is correct as written. But discarding the
whole packet regresses working hardware. Continuing to process commands that fit
within MTUsig, or answering Echo Requests regardless of size, would keep
interoperability. At minimum this deserves a release-note mention, since 
affected
users have no way to connect the symptom to the kernel.

ENVIRONMENT

  Ubuntu 24.04, kernel 6.8.0-147-generic (also reproduced on 6.8.0-146-generic)
  BlueZ 5.72, PipeWire 1.0.5
  Intel AX201, firmware ibt-17-16-1 155-35.23
  Huawei FreeBuds 3
  Control: JBL TUNE770NC connects and plays normally on the same host

ANALYSIS, PATCH AND BUILD INSTRUCTIONS

  https://github.com/prostopasta/freebuds-l2cap-sig-mtu

Note for anyone reproducing: btmon from bluez 5.72 in noble aborts immediately
with "*** buffer overflow detected ***". Traces were captured with
"tcpdump -i bluetooth-monitor" instead; a decoder is in the repository above.
That btmon crash is filed separately as 
https://github.com/bluez/bluez/issues/2704

ProblemType: Bug
DistroRelease: Ubuntu 24.04
Package: linux-image-6.8.0-147-generic 6.8.0-147.147
ProcVersionSignature: Ubuntu 6.8.0-147.147-generic 6.8.12
Uname: Linux 6.8.0-147-generic x86_64
NonfreeKernelModules: zfs
ApportVersion: 2.28.3-0ubuntu0.1
Architecture: amd64
AudioDevicesInUse:
 USER        PID ACCESS COMMAND
 /dev/snd/controlC0:  ps         4453 F.... pipewire
                      ps         4457 F.... wireplumber
 /dev/snd/seq:        ps         4453 F.... pipewire
CasperMD5CheckResult: unknown
CurrentDesktop: XFCE
Date: Sat Oct 24 01:08:00 2026
InstallationDate: Installed on 2024-08-04 (811 days ago)
InstallationMedia: Asmi Noble 24.04 - Release amd64
MachineType: HP HP EliteBook 840 G6
ProcFB: 0 i915drmfb
ProcKernelCmdLine: BOOT_IMAGE=/@/boot/vmlinuz-6.8.0-147-generic 
root=UUID=e1aaee12-a8b4-4127-8773-42c0ca481f40 ro rootflags=subvol=@ quiet 
splash resume=UUID=cd253e95-ddd0-469b-b0bf-8ea5196ae8de vt.handoff=7
PulseList: Error: command ['pacmd', 'list'] failed with exit code 1: No 
PulseAudio daemon running, or not running as session daemon.
RelatedPackageVersions:
 linux-restricted-modules-6.8.0-147-generic N/A
 linux-backports-modules-6.8.0-147-generic  N/A
 linux-firmware                             20240318.git3b128b60.0ubuntu3.1
SourcePackage: linux
UpgradeStatus: No upgrade log present (probably fresh install)
dmi.bios.date: 06/13/2026
dmi.bios.release: 36.0
dmi.bios.vendor: HP
dmi.bios.version: R70 Ver. 01.36.00
dmi.board.name: 8549
dmi.board.vendor: HP
dmi.board.version: KBC Version 52.71.00
dmi.chassis.type: 10
dmi.chassis.vendor: HP
dmi.ec.firmware.release: 82.113
dmi.modalias: 
dmi:bvnHP:bvrR70Ver.01.36.00:bd06/13/2026:br36.0:efr82.113:svnHP:pnHPEliteBook840G6:pvrSBKPFV3:rvnHP:rn8549:rvrKBCVersion52.71.00:cvnHP:ct10:cvr:sku7HT84EC#ABA:
dmi.product.family: 103C_5336AN HP EliteBook
dmi.product.name: HP EliteBook 840 G6
dmi.product.sku: 7HT84EC#ABA
dmi.product.version: SBKPFV3
dmi.sys.vendor: HP

** Affects: linux (Ubuntu)
     Importance: Undecided
         Status: New


** Tags: amd64 apport-bug noble third-party-packages

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/2172088

Title:
  Bluetooth: Huawei FreeBuds no longer connect - BR/EDR signalling-MTU
  check discards vendor frames

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/2172088/+subscriptions


-- 
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to