]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
Bluetooth: btrtl: fix RTL8761B/BU broken LE extended scan
authorAlexej Sidorenko <alexej@sidorenko.cz>
Wed, 29 Apr 2026 15:13:43 +0000 (17:13 +0200)
committerLuiz Augusto von Dentz <luiz.von.dentz@intel.com>
Thu, 11 Jun 2026 18:24:38 +0000 (14:24 -0400)
RTL8761B and RTL8761BU devices report HCI version 5.1 but do not
support the LE Extended Scan commands. This causes repeated failures
with Opcode 0x2042 (LE Set Extended Scan Parameters) returning -EBUSY
when BlueZ attempts extended scanning while a connection is active.

Set HCI_QUIRK_BROKEN_EXT_SCAN for CHIP_ID_8761B to make BlueZ fall
back to legacy LE scan commands which the firmware supports correctly.

Tested with RTL8761BU (USB ID 0bda:a728) where the issue manifested
as continuous 'Opcode 0x2042 failed: -16' errors in dmesg whenever
a BLE connection was active.

Signed-off-by: Alexej Sidorenko <alexej@sidorenko.cz>
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
drivers/bluetooth/btrtl.c

index 62f9d4df3a4f88eaf58fb96d040ac3a672ab8dfd..49ecb18fea45f4152e0d755bf03cf7ed11b075dc 100644 (file)
@@ -1342,6 +1342,19 @@ void btrtl_set_quirks(struct hci_dev *hdev, struct btrtl_device_info *btrtl_dev)
        if (!btrtl_dev->ic_info)
                return;
 
+       switch (btrtl_dev->project_id) {
+       case CHIP_ID_8761B:
+               /* RTL8761B/BU reports HCI version 5.1 but does not support
+                * the LE Extended Scan commands (Opcode 0x2042), causing
+                * repeated -EBUSY failures when BlueZ attempts extended
+                * scanning while a connection is active.
+                */
+               hci_set_quirk(hdev, HCI_QUIRK_BROKEN_EXT_SCAN);
+               break;
+       default:
+               break;
+       }
+
        switch (btrtl_dev->ic_info->lmp_subver) {
        case RTL_ROM_LMP_8703B:
                /* 8723CS reports two pages for local ext features,