Public bug reported:
Hello,
Disclaimer
----------
The investigation was driven using an AI agent, so please bear with me for any
imprecise or incorrect fact, as I'm not knowledgeable in the bluetooth area. It
wrote part of this bug description, and I felt it should be clear enough for
people knowledgeable on the USB stack and its quirks, so it's only very lightly
edited.
Hardware / software
-------------------
Machine : Lenovo ThinkPad Z13 Gen 2 (21JVCTO1WW), AMD Ryzen 7 PRO 7840U
Bluetooth : USB 0489:e0d9 (btusb), MT7922
WLAN (same pkg): PCI 14c3:0616, mt7921e
Controller : HW/SW Version 0x008a008a
Kernel : 7.0.0-28-generic (Ubuntu 24.04.3 LTS, HWE)
BlueZ : 5.72
Peer device : "PORT ON'R 700" BR/EDR headset (HFP + A2DP)
Firmware, BT_RAM_CODE_MT7922_1_1_hdr.bin — reproduced on BOTH:
Build Time 20250523103438 (Ubuntu linux-firmware
20240318.git3b128b60-0ubuntu2.27)
Build Time 20260724143815 (upstream linux-firmware.git, fetched 2026-08-09)
Symptom
-------
During an HFP call the bluetooth connection cuts out for a few seconds (from
human perception),
then the link is re-established by the device.
Frequency is variable, but on the order of a few occurrences per hour
of active HFP use. A2DP-only playback is completely stable and has never once
exhibited this — the fault occurs only when an eSCO link is up.
Per-firmware teardown counts from the same machine and same headset:
fw 20260724 : 12 teardowns (2026-08-09 15:32 .. 2026-08-12 17:36)
fw 20250523 : 21 teardowns (2026-08-09 14:21 .. 15:32, and 08-12 17:36 ..
08-14)
Evidence
--------
HCI capture via dumpcap on the bluetooth-monitor interface. The synchronous
connection is set up with entirely normal parameters:
SYNC-CONN-COMPLETE handle=0x0e00 status=Success type=eSCO
air_mode=3 (Transparent/mSBC)
rx_packet_length=60 tx_packet_length=60
At the failure, both handles are torn down in the same millisecond:
15:39:04.704 DISCONNECT handle=0x0e00 (eSCO) reason=0x08 Connection Timeout
15:39:04.704 DISCONNECT handle=0x0032 (ACL) reason=0x08 Connection Timeout
15:39:07.246 SYNC-CONN-COMPLETE handle=0x0e00 status=Success
(re-established)
SCO packet counts per second around the teardown (offset 0 =
disconnect):
offset sco-rx sco-tx
-30 134 134
-20 133 134
-10 134 133
-5 133 133
-2 133 133
-1 134 133
+0 132 134 <-- disconnect occurs in this second
+1 0 0
+2 59 58 <-- re-establishing
+3 134 133
Inbound eSCO is sustained at ~133 packets/second for the entire 30 seconds
preceding the teardown, including the second in which it occurs. There is no
degradation, no ramp-down, and no loss of inbound traffic beforehand. The link
is
carrying data normally right up to the instant the controller declares it timed
out, and I hear my headset's disconnection announcement.
What this does not appear to be
-------------------------------
- Not RF range or interference: inbound rate is flat at full throughput until
the
teardown; degradation would be visible first.
- Not codec-specific: reproduces with both mSBC (Transparent) and CVSD.
- Not power management: btusb autosuspend disabled (enable_autosuspend=0), and
WLAN power save off.
- Not the firmware revision: reproduces on the May 2025 and July 2026 blobs.
- Not fixable via disable_esco: setting bluetooth.disable_esco=1 prevents any
SCO
link from being established at all with this headset (mic goes dead), rather
than falling back to legacy SCO.
The kernel also logs, at every controller setup:
Bluetooth: hci0: HCI Enhanced Setup Synchronous Connection command is
advertised, but not supported.
I understand this is an already-applied quirk rather than a live fault, and note
it only in case it is relevant to how the synchronous connection is configured.
After each teardown the kernel logs the following, which I believe are
downstream
consequences of the link disappearing rather than causes — the controller
flushing
buffered data for handles the host has already torn down:
Bluetooth: hci0: SCO packet for unknown connection handle 3584
Bluetooth: hci0: ACL packet for unknown connection handle 3837
Bluetooth: hci0: corrupted SCO packet
Over one 2-day window these appeared 2 times against 13 teardowns, so they do
not
accompany every event.
While investigating this, I made a few bluetooth captures (dumpcap) that
allowed this observation. I've joined the one used by my agent to assess eSCO
teardowns.
Secondary note: btmon crash
---------------------------
Unrelated to the above, but encountered while gathering it: btmon from BlueZ
5.72
aborts while writing a capture from this controller —
*** buffer overflow detected ***: terminated
I worked around it by capturing with dumpcap instead, which writes the stream
without decoding. Happy to file this separately if it is of interest.
ProblemType: Bug
DistroRelease: Ubuntu 24.04
Package: linux-firmware 20240318.git3b128b60-0ubuntu2.27
ProcVersionSignature: Ubuntu 7.0.0-28.28~24.04.1-generic 7.0.12
Uname: Linux 7.0.0-28-generic x86_64
ApportVersion: 2.28.1-0ubuntu3.8
Architecture: amd64
CasperMD5CheckResult: pass
Date: Fri Aug 14 19:10:39 2026
Dependencies: firmware-sof-signed 2023.12.1-1ubuntu1.10
InstallationDate: Installed on 2024-08-06 (738 days ago)
InstallationMedia: Ubuntu 24.04 LTS "Noble Numbat" - Release amd64 (20240424)
MachineType: LENOVO 21JVCTO1WW
ProcEnviron:
LANG=en_US.UTF-8
PATH=(custom, no user)
SHELL=/bin/bash
TERM=xterm
XDG_RUNTIME_DIR=<set>
ProcFB: 0 amdgpudrmfb
ProcKernelCmdLine: BOOT_IMAGE=/boot/vmlinuz-7.0.0-28-generic
root=UUID=f4e67c2e-9a61-45a1-b496-cb9112dba222 ro quiet splash 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-7.0.0-28-generic N/A
linux-backports-modules-7.0.0-28-generic N/A
linux-firmware 20240318.git3b128b60-0ubuntu2.27
SourcePackage: linux-firmware
UpgradeStatus: No upgrade log present (probably fresh install)
dmi.bios.date: 11/27/2023
dmi.bios.release: 1.14
dmi.bios.vendor: LENOVO
dmi.bios.version: N41ET37W (1.14 )
dmi.board.asset.tag: Not Available
dmi.board.name: 21JVCTO1WW
dmi.board.vendor: LENOVO
dmi.board.version: SDK0T76530 WIN
dmi.chassis.asset.tag: No Asset Tag
dmi.chassis.type: 10
dmi.chassis.vendor: LENOVO
dmi.chassis.version: None
dmi.ec.firmware.release: 1.13
dmi.modalias:
dmi:bvnLENOVO:bvrN41ET37W(1.14):bd11/27/2023:br1.14:efr1.13:svnLENOVO:pn21JVCTO1WW:pvrThinkPadZ13Gen2:rvnLENOVO:rn21JVCTO1WW:rvrSDK0T76530WIN:cvnLENOVO:ct10:cvrNone:skuLENOVO_MT_21JV_BU_Think_FM_ThinkPadZ13Gen2:pfaThinkPadZ13Gen2:
dmi.product.family: ThinkPad Z13 Gen 2
dmi.product.name: 21JVCTO1WW
dmi.product.sku: LENOVO_MT_21JV_BU_Think_FM_ThinkPad Z13 Gen 2
dmi.product.version: ThinkPad Z13 Gen 2
dmi.sys.vendor: LENOVO
** Affects: linux-firmware (Ubuntu)
Importance: Undecided
Status: New
** Tags: amd64 apport-bug noble wayland-session
** Attachment added: "bluetooth capture of a period including the spurious
teardown"
https://bugs.launchpad.net/bugs/2163514/+attachment/5992204/+files/hci-20260813-135117_00009_20260813153335.pcapng
--
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/2163514
Title:
MT7922 (0489:e0d9): spurious "Connection Timeout" teardown of healthy
eSCO+ACL links during HFP calls
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/linux-firmware/+bug/2163514/+subscriptions
--
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs