* [REPORT] btusb: Missing ID for Quectel NCM865 (WCN7850) - 2c7c:0130
@ 2025-12-09 20:47 Frank Tornack
2025-12-23 5:54 ` [PATCH] Bluetooth: btusb: Add support for Quectel NCM865 Frank Tornack
0 siblings, 1 reply; 10+ messages in thread
From: Frank Tornack @ 2025-12-09 20:47 UTC (permalink / raw)
To: linux-bluetooth
[-- Attachment #1: Type: text/plain, Size: 14192 bytes --]
Hi everyone,
I would like to report a missing device ID in the btusb driver for a
Quectel NCM865 module. This module appears to be a repackaged Qualcomm
WCN785x (FastConnect 7800).
The Problem: The device is currently not recognized by btqca / btusb.
It falls back to the legacy "Rome" identifier (0x190200) and tries to
load rampatch_usb_00190200.bin. This results in missing features (like
ISO/LE Audio) and potential timeouts when trying to force the correct
"Hamilton" firmware via symlinks, as the driver logic does not match
the actual hardware capabilities.
Hardware Info:
- Device: Quectel NCM865 (WCN785x based)
- USB ID: 2c7c:0130 (Vendor: Quectel, Product: NCM865?)
- System: Arch Linux, Kernel 6.17.x
```
% sudo lsusb -v -d 2c7c:0130 [21:21]
Bus 003 Device 005: ID 2c7c:0130 Quectel Wireless Solutions Co., Ltd.
Negotiated speed: Full Speed (12Mbps)
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 1.10
bDeviceClass 224 Wireless
bDeviceSubClass 1 Radio Frequency
bDeviceProtocol 1 Bluetooth
bMaxPacketSize0 64
idVendor 0x2c7c Quectel Wireless Solutions Co., Ltd.
idProduct 0x0130
bcdDevice 0.01
iManufacturer 0
iProduct 0
iSerial 0
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 0x00df
bNumInterfaces 2
bConfigurationValue 1
iConfiguration 0
bmAttributes 0xe0
Self Powered
Remote Wakeup
MaxPower 100mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 3
bInterfaceClass 224 Wireless
bInterfaceSubClass 1 Radio Frequency
bInterfaceProtocol 1 Bluetooth
iInterface 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0010 1x 16 bytes
bInterval 1
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x82 EP 2 IN
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x02 EP 2 OUT
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 0
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 1
bAlternateSetting 0
bNumEndpoints 2
bInterfaceClass 224 Wireless
bInterfaceSubClass 1 Radio Frequency
bInterfaceProtocol 1 Bluetooth
iInterface 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x83 EP 3 IN
bmAttributes 1
Transfer Type Isochronous
Synch Type None
Usage Type Data
wMaxPacketSize 0x0000 1x 0 bytes
bInterval 1
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x03 EP 3 OUT
bmAttributes 1
Transfer Type Isochronous
Synch Type None
Usage Type Data
wMaxPacketSize 0x0000 1x 0 bytes
bInterval 1
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 1
bAlternateSetting 1
bNumEndpoints 2
bInterfaceClass 224 Wireless
bInterfaceSubClass 1 Radio Frequency
bInterfaceProtocol 1 Bluetooth
iInterface 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x83 EP 3 IN
bmAttributes 1
Transfer Type Isochronous
Synch Type None
Usage Type Data
wMaxPacketSize 0x0009 1x 9 bytes
bInterval 1
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x03 EP 3 OUT
bmAttributes 1
Transfer Type Isochronous
Synch Type None
Usage Type Data
wMaxPacketSize 0x0009 1x 9 bytes
bInterval 1
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 1
bAlternateSetting 2
bNumEndpoints 2
bInterfaceClass 224 Wireless
bInterfaceSubClass 1 Radio Frequency
bInterfaceProtocol 1 Bluetooth
iInterface 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x83 EP 3 IN
bmAttributes 1
Transfer Type Isochronous
Synch Type None
Usage Type Data
wMaxPacketSize 0x0011 1x 17 bytes
bInterval 1
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x03 EP 3 OUT
bmAttributes 1
Transfer Type Isochronous
Synch Type None
Usage Type Data
wMaxPacketSize 0x0011 1x 17 bytes
bInterval 1
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 1
bAlternateSetting 3
bNumEndpoints 2
bInterfaceClass 224 Wireless
bInterfaceSubClass 1 Radio Frequency
bInterfaceProtocol 1 Bluetooth
iInterface 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x83 EP 3 IN
bmAttributes 1
Transfer Type Isochronous
Synch Type None
Usage Type Data
wMaxPacketSize 0x0019 1x 25 bytes
bInterval 1
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x03 EP 3 OUT
bmAttributes 1
Transfer Type Isochronous
Synch Type None
Usage Type Data
wMaxPacketSize 0x0019 1x 25 bytes
bInterval 1
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 1
bAlternateSetting 4
bNumEndpoints 2
bInterfaceClass 224 Wireless
bInterfaceSubClass 1 Radio Frequency
bInterfaceProtocol 1 Bluetooth
iInterface 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x83 EP 3 IN
bmAttributes 1
Transfer Type Isochronous
Synch Type None
Usage Type Data
wMaxPacketSize 0x0021 1x 33 bytes
bInterval 1
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x03 EP 3 OUT
bmAttributes 1
Transfer Type Isochronous
Synch Type None
Usage Type Data
wMaxPacketSize 0x0021 1x 33 bytes
bInterval 1
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 1
bAlternateSetting 5
bNumEndpoints 2
bInterfaceClass 224 Wireless
bInterfaceSubClass 1 Radio Frequency
bInterfaceProtocol 1 Bluetooth
iInterface 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x83 EP 3 IN
bmAttributes 1
Transfer Type Isochronous
Synch Type None
Usage Type Data
wMaxPacketSize 0x0031 1x 49 bytes
bInterval 1
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x03 EP 3 OUT
bmAttributes 1
Transfer Type Isochronous
Synch Type None
Usage Type Data
wMaxPacketSize 0x0031 1x 49 bytes
bInterval 1
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 1
bAlternateSetting 6
bNumEndpoints 2
bInterfaceClass 224 Wireless
bInterfaceSubClass 1 Radio Frequency
bInterfaceProtocol 1 Bluetooth
iInterface 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x83 EP 3 IN
bmAttributes 1
Transfer Type Isochronous
Synch Type None
Usage Type Data
wMaxPacketSize 0x003f 1x 63 bytes
bInterval 1
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x03 EP 3 OUT
bmAttributes 1
Transfer Type Isochronous
Synch Type None
Usage Type Data
wMaxPacketSize 0x003f 1x 63 bytes
bInterval 1
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 1
bAlternateSetting 7
bNumEndpoints 2
bInterfaceClass 224 Wireless
bInterfaceSubClass 1 Radio Frequency
bInterfaceProtocol 1 Bluetooth
iInterface 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x83 EP 3 IN
bmAttributes 1
Transfer Type Isochronous
Synch Type None
Usage Type Data
wMaxPacketSize 0x0041 1x 65 bytes
bInterval 1
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x03 EP 3 OUT
bmAttributes 1
Transfer Type Isochronous
Synch Type None
Usage Type Data
wMaxPacketSize 0x0041 1x 65 bytes
bInterval 1
Device Status: 0x0001
Self Powered
```
the output of dmesg:
```
% sudo dmesg | grep -iE "btqca|Bluetooth" [21:21]
[ 5.432336] Bluetooth: Core ver 2.22
[ 5.432357] NET: Registered PF_BLUETOOTH protocol family
[ 5.432358] Bluetooth: HCI device and connection manager initialized
[ 5.432362] Bluetooth: HCI socket layer initialized
[ 5.432364] Bluetooth: L2CAP socket layer initialized
[ 5.432367] Bluetooth: SCO socket layer initialized
[ 5.461019] Bluetooth: hci0: using rampatch file: qca/rampatch_usb_00190200.bin
[ 5.461022] Bluetooth: hci0: QCA: patch rome 0x190200 build 0x43fc, firmware rome 0x190200 build 0x43fb
[ 5.862663] Bluetooth: BNEP (Ethernet Emulation) ver 1.3
[ 5.862665] Bluetooth: BNEP filters: protocol multicast
[ 5.862668] Bluetooth: BNEP socket layer initialized
[ 6.098821] Bluetooth: hci0: using NVM file: qca/nvm_usb_00190200.bin
[ 6.234023] Bluetooth: hci0: HCI Enhanced Setup Synchronous Connection command is advertised, but not supported.
[ 6.478241] Bluetooth: hci0: event memdump size(589824)
[ 8.290957] Bluetooth: hci0: Opcode 0x0c03 failed: -110
[ 10.338077] Bluetooth: hci0: Failed to read MSFT supported features (-110)
```
It seems this device needs to be added to the `qca_device_info` table
in `drivers/bluetooth/btusb.c` with the `BTUSB_QCOM_WCN6855` flag,
similar to other WCN785x derivatives.
I am unable to compile and test the patch myself right now due to
travel, but wanted to report the ID so it can be added.
Best regards
PS: resend... because I was not aware that HTML mails are dropped
--
Frank Tornack <f-tornack@t-online.de>
Privat
[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 228 bytes --]
^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH] Bluetooth: btusb: Add support for Quectel NCM865
2025-12-09 20:47 [REPORT] btusb: Missing ID for Quectel NCM865 (WCN7850) - 2c7c:0130 Frank Tornack
@ 2025-12-23 5:54 ` Frank Tornack
2025-12-23 6:27 ` bluez.test.bot
0 siblings, 1 reply; 10+ messages in thread
From: Frank Tornack @ 2025-12-23 5:54 UTC (permalink / raw)
To: linux-bluetooth
[-- Attachment #1: Type: text/plain, Size: 20572 bytes --]
Hi
I was able to successfully test the function on my laptop.
Hope this patch will help.
From 2947911d8852c084750438af38de087e25da0d8d Mon Sep 17 00:00:00 2001
From: Frankenstein91 <frankenstein91.info@googlemail.com>
Date: Tue, 23 Dec 2025 06:43:47 +0100
Subject: [PATCH] Bluetooth: btusb: Add support for Quectel NCM865
Add the USB ID 2c7c:0130 for the Quectel NCM865 module to the btusb_device_table. This device is based on the Qualcomm WCN785x (FastConnect 7800) and requires the BTUSB_QCA_WCN6855 flag.
Without this patch, the device is not correctly recognized and falls
back to the legacy "Rome" identifier, leading to missing features and
potential timeouts.
This patch fixes the issue by adding the device to the list of
supported devices, allowing the driver to load the correct firmware
and enable all hardware features.
Fixes: [REPORT] btusb: Missing ID for Quectel NCM865 (WCN7850) - 2c7c:0130
Link: https://lore.kernel.org/linux-bluetooth/20251209204712.GA2833@t-online.de/
Signed-off-by: Frank Tornack <f-tornack@t-online.de>
---
drivers/bluetooth/btusb.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c
index fa683bb7f..41016012e 100644
--- a/drivers/bluetooth/btusb.c
+++ b/drivers/bluetooth/btusb.c
@@ -172,6 +172,10 @@ static const struct usb_device_id btusb_table[] = {
{ USB_DEVICE(0x8087, 0x0a5a),
.driver_info = BTUSB_INTEL_BOOT | BTUSB_BROKEN_ISOC },
+ /* Quectel NCM865 */
+ { USB_DEVICE(0x2c7c, 0x0130), .driver_info = BTUSB_QCA_WCN6855 |
+ BTUSB_WIDEBAND_SPEECH },
+
{ } /* Terminating entry */
};
--
2.52.0
--
Frank Tornack <f-tornack@t-online.de>
Privat
-------- Ursprüngliche Nachricht --------
Von: Frank Tornack <f-tornack@t-online.de>
Antwort an: f-tornack@t-online.de
An: linux-bluetooth@vger.kernel.org
Betreff: [REPORT] btusb: Missing ID for Quectel NCM865 (WCN7850) -
2c7c:0130
Datum: 09.12.2025 21:47:08
Hi everyone,
I would like to report a missing device ID in the btusb driver for a
Quectel NCM865 module. This module appears to be a repackaged Qualcomm
WCN785x (FastConnect 7800).
The Problem: The device is currently not recognized by btqca / btusb.
It falls back to the legacy "Rome" identifier (0x190200) and tries to
load rampatch_usb_00190200.bin. This results in missing features (like
ISO/LE Audio) and potential timeouts when trying to force the correct
"Hamilton" firmware via symlinks, as the driver logic does not match
the actual hardware capabilities.
Hardware Info:
- Device: Quectel NCM865 (WCN785x based)
- USB ID: 2c7c:0130 (Vendor: Quectel, Product: NCM865?)
- System: Arch Linux, Kernel 6.17.x
```
% sudo lsusb -v -d
2c7c:0130
[21:21]
Bus 003 Device 005: ID 2c7c:0130 Quectel Wireless Solutions Co., Ltd.
Negotiated speed: Full Speed (12Mbps)
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 1.10
bDeviceClass 224 Wireless
bDeviceSubClass 1 Radio Frequency
bDeviceProtocol 1 Bluetooth
bMaxPacketSize0 64
idVendor 0x2c7c Quectel Wireless Solutions Co., Ltd.
idProduct 0x0130
bcdDevice 0.01
iManufacturer 0
iProduct 0
iSerial 0
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 0x00df
bNumInterfaces 2
bConfigurationValue 1
iConfiguration 0
bmAttributes 0xe0
Self Powered
Remote Wakeup
MaxPower 100mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 3
bInterfaceClass 224 Wireless
bInterfaceSubClass 1 Radio Frequency
bInterfaceProtocol 1 Bluetooth
iInterface 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0010 1x 16 bytes
bInterval 1
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x82 EP 2 IN
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x02 EP 2 OUT
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 0
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 1
bAlternateSetting 0
bNumEndpoints 2
bInterfaceClass 224 Wireless
bInterfaceSubClass 1 Radio Frequency
bInterfaceProtocol 1 Bluetooth
iInterface 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x83 EP 3 IN
bmAttributes 1
Transfer Type Isochronous
Synch Type None
Usage Type Data
wMaxPacketSize 0x0000 1x 0 bytes
bInterval 1
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x03 EP 3 OUT
bmAttributes 1
Transfer Type Isochronous
Synch Type None
Usage Type Data
wMaxPacketSize 0x0000 1x 0 bytes
bInterval 1
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 1
bAlternateSetting 1
bNumEndpoints 2
bInterfaceClass 224 Wireless
bInterfaceSubClass 1 Radio Frequency
bInterfaceProtocol 1 Bluetooth
iInterface 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x83 EP 3 IN
bmAttributes 1
Transfer Type Isochronous
Synch Type None
Usage Type Data
wMaxPacketSize 0x0009 1x 9 bytes
bInterval 1
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x03 EP 3 OUT
bmAttributes 1
Transfer Type Isochronous
Synch Type None
Usage Type Data
wMaxPacketSize 0x0009 1x 9 bytes
bInterval 1
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 1
bAlternateSetting 2
bNumEndpoints 2
bInterfaceClass 224 Wireless
bInterfaceSubClass 1 Radio Frequency
bInterfaceProtocol 1 Bluetooth
iInterface 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x83 EP 3 IN
bmAttributes 1
Transfer Type Isochronous
Synch Type None
Usage Type Data
wMaxPacketSize 0x0011 1x 17 bytes
bInterval 1
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x03 EP 3 OUT
bmAttributes 1
Transfer Type Isochronous
Synch Type None
Usage Type Data
wMaxPacketSize 0x0011 1x 17 bytes
bInterval 1
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 1
bAlternateSetting 3
bNumEndpoints 2
bInterfaceClass 224 Wireless
bInterfaceSubClass 1 Radio Frequency
bInterfaceProtocol 1 Bluetooth
iInterface 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x83 EP 3 IN
bmAttributes 1
Transfer Type Isochronous
Synch Type None
Usage Type Data
wMaxPacketSize 0x0019 1x 25 bytes
bInterval 1
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x03 EP 3 OUT
bmAttributes 1
Transfer Type Isochronous
Synch Type None
Usage Type Data
wMaxPacketSize 0x0019 1x 25 bytes
bInterval 1
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 1
bAlternateSetting 4
bNumEndpoints 2
bInterfaceClass 224 Wireless
bInterfaceSubClass 1 Radio Frequency
bInterfaceProtocol 1 Bluetooth
iInterface 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x83 EP 3 IN
bmAttributes 1
Transfer Type Isochronous
Synch Type None
Usage Type Data
wMaxPacketSize 0x0021 1x 33 bytes
bInterval 1
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x03 EP 3 OUT
bmAttributes 1
Transfer Type Isochronous
Synch Type None
Usage Type Data
wMaxPacketSize 0x0021 1x 33 bytes
bInterval 1
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 1
bAlternateSetting 5
bNumEndpoints 2
bInterfaceClass 224 Wireless
bInterfaceSubClass 1 Radio Frequency
bInterfaceProtocol 1 Bluetooth
iInterface 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x83 EP 3 IN
bmAttributes 1
Transfer Type Isochronous
Synch Type None
Usage Type Data
wMaxPacketSize 0x0031 1x 49 bytes
bInterval 1
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x03 EP 3 OUT
bmAttributes 1
Transfer Type Isochronous
Synch Type None
Usage Type Data
wMaxPacketSize 0x0031 1x 49 bytes
bInterval 1
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 1
bAlternateSetting 6
bNumEndpoints 2
bInterfaceClass 224 Wireless
bInterfaceSubClass 1 Radio Frequency
bInterfaceProtocol 1 Bluetooth
iInterface 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x83 EP 3 IN
bmAttributes 1
Transfer Type Isochronous
Synch Type None
Usage Type Data
wMaxPacketSize 0x003f 1x 63 bytes
bInterval 1
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x03 EP 3 OUT
bmAttributes 1
Transfer Type Isochronous
Synch Type None
Usage Type Data
wMaxPacketSize 0x003f 1x 63 bytes
bInterval 1
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 1
bAlternateSetting 7
bNumEndpoints 2
bInterfaceClass 224 Wireless
bInterfaceSubClass 1 Radio Frequency
bInterfaceProtocol 1 Bluetooth
iInterface 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x83 EP 3 IN
bmAttributes 1
Transfer Type Isochronous
Synch Type None
Usage Type Data
wMaxPacketSize 0x0041 1x 65 bytes
bInterval 1
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x03 EP 3 OUT
bmAttributes 1
Transfer Type Isochronous
Synch Type None
Usage Type Data
wMaxPacketSize 0x0041 1x 65 bytes
bInterval 1
Device Status: 0x0001
Self Powered
```
the output of dmesg:
```
% sudo dmesg | grep -iE
"btqca|Bluetooth"
[21:21]
[ 5.432336] Bluetooth: Core ver 2.22
[ 5.432357] NET: Registered PF_BLUETOOTH protocol family
[ 5.432358] Bluetooth: HCI device and connection manager initialized
[ 5.432362] Bluetooth: HCI socket layer initialized
[ 5.432364] Bluetooth: L2CAP socket layer initialized
[ 5.432367] Bluetooth: SCO socket layer initialized
[ 5.461019] Bluetooth: hci0: using rampatch file:
qca/rampatch_usb_00190200.bin
[ 5.461022] Bluetooth: hci0: QCA: patch rome 0x190200 build 0x43fc,
firmware rome 0x190200 build 0x43fb
[ 5.862663] Bluetooth: BNEP (Ethernet Emulation) ver 1.3
[ 5.862665] Bluetooth: BNEP filters: protocol multicast
[ 5.862668] Bluetooth: BNEP socket layer initialized
[ 6.098821] Bluetooth: hci0: using NVM file:
qca/nvm_usb_00190200.bin
[ 6.234023] Bluetooth: hci0: HCI Enhanced Setup Synchronous
Connection command is advertised, but not supported.
[ 6.478241] Bluetooth: hci0: event memdump size(589824)
[ 8.290957] Bluetooth: hci0: Opcode 0x0c03 failed: -110
[ 10.338077] Bluetooth: hci0: Failed to read MSFT supported features
(-110)
```
It seems this device needs to be added to the `qca_device_info` table
in `drivers/bluetooth/btusb.c` with the `BTUSB_QCOM_WCN6855` flag,
similar to other WCN785x derivatives.
I am unable to compile and test the patch myself right now due to
travel, but wanted to report the ID so it can be added.
Best regards
PS: resend... because I was not aware that HTML mails are dropped
[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 228 bytes --]
^ permalink raw reply related [flat|nested] 10+ messages in thread
* RE: Bluetooth: btusb: Add support for Quectel NCM865
2025-12-23 5:54 ` [PATCH] Bluetooth: btusb: Add support for Quectel NCM865 Frank Tornack
@ 2025-12-23 6:27 ` bluez.test.bot
2025-12-23 9:45 ` [PATCH v2] " Frank Tornack
0 siblings, 1 reply; 10+ messages in thread
From: bluez.test.bot @ 2025-12-23 6:27 UTC (permalink / raw)
To: linux-bluetooth, f-tornack
[-- Attachment #1: Type: text/plain, Size: 382 bytes --]
This is an automated email and please do not reply to this email.
Dear Submitter,
Thank you for submitting the patches to the linux bluetooth mailing list.
While preparing the CI tests, the patches you submitted couldn't be applied to the current HEAD of the repository.
----- Output -----
Please resolve the issue and submit the patches again.
---
Regards,
Linux Bluetooth
^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH v2] Bluetooth: btusb: Add support for Quectel NCM865
2025-12-23 6:27 ` bluez.test.bot
@ 2025-12-23 9:45 ` Frank Tornack
2025-12-23 10:39 ` [v2] " bluez.test.bot
2025-12-23 10:55 ` [PATCH v2] " Pauli Virtanen
0 siblings, 2 replies; 10+ messages in thread
From: Frank Tornack @ 2025-12-23 9:45 UTC (permalink / raw)
To: linux-bluetooth; +Cc: Frank Tornack
Add the USB ID 2c7c:0130 for the Quectel NCM865 module to the btusb_device_table. This device is based on the Qualcomm WCN785x (FastConnect 7800) and requires the BTUSB_QCA_WCN6855 flag.
Signed-off-by: Frank Tornack <f-tornack@t-online.de>
v2: Fixed merge conflict with current bluetooth-next HEAD.
---
drivers/bluetooth/btusb.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c
index 646de80c7..70feeb9a9 100644
--- a/drivers/bluetooth/btusb.c
+++ b/drivers/bluetooth/btusb.c
@@ -172,6 +172,9 @@ static const struct usb_device_id btusb_table[] = {
{ USB_DEVICE(0x8087, 0x0a5a),
.driver_info = BTUSB_INTEL_BOOT | BTUSB_BROKEN_ISOC },
+ /* Quectel NCM865 */
+ { USB_DEVICE(0x2c7c, 0x0130), .driver_info = BTUSB_QCA_WCN6855 |
+ BTUSB_WIDEBAND_SPEECH },
{ } /* Terminating entry */
};
--
2.52.0
^ permalink raw reply related [flat|nested] 10+ messages in thread
* RE: [v2] Bluetooth: btusb: Add support for Quectel NCM865
2025-12-23 9:45 ` [PATCH v2] " Frank Tornack
@ 2025-12-23 10:39 ` bluez.test.bot
2025-12-23 10:55 ` [PATCH v2] " Pauli Virtanen
1 sibling, 0 replies; 10+ messages in thread
From: bluez.test.bot @ 2025-12-23 10:39 UTC (permalink / raw)
To: linux-bluetooth, f-tornack
[-- Attachment #1: Type: text/plain, Size: 2833 bytes --]
This is automated email and please do not reply to this email!
Dear submitter,
Thank you for submitting the patches to the linux bluetooth mailing list.
This is a CI test results with your patch series:
PW Link:https://patchwork.kernel.org/project/bluetooth/list/?series=1035981
---Test result---
Test Summary:
CheckPatch PENDING 0.41 seconds
GitLint PENDING 0.26 seconds
SubjectPrefix PASS 0.09 seconds
BuildKernel PASS 26.03 seconds
CheckAllWarning PASS 28.60 seconds
CheckSparse PASS 31.60 seconds
BuildKernel32 PASS 26.00 seconds
TestRunnerSetup PASS 563.07 seconds
TestRunner_l2cap-tester PASS 28.15 seconds
TestRunner_iso-tester FAIL 48.06 seconds
TestRunner_bnep-tester PASS 6.30 seconds
TestRunner_mgmt-tester FAIL 124.15 seconds
TestRunner_rfcomm-tester PASS 9.39 seconds
TestRunner_sco-tester FAIL 14.39 seconds
TestRunner_ioctl-tester PASS 10.19 seconds
TestRunner_mesh-tester FAIL 11.44 seconds
TestRunner_smp-tester PASS 8.69 seconds
TestRunner_userchan-tester PASS 6.66 seconds
IncrementalBuild PENDING 0.75 seconds
Details
##############################
Test: CheckPatch - PENDING
Desc: Run checkpatch.pl script
Output:
##############################
Test: GitLint - PENDING
Desc: Run gitlint
Output:
##############################
Test: TestRunner_iso-tester - FAIL
Desc: Run iso-tester with test-runner
Output:
BUG: KASAN: slab-use-after-free in le_read_features_complete+0x7e/0x2b0
Total: 141, Passed: 141 (100.0%), Failed: 0, Not Run: 0
##############################
Test: TestRunner_mgmt-tester - FAIL
Desc: Run mgmt-tester with test-runner
Output:
Total: 494, Passed: 489 (99.0%), Failed: 1, Not Run: 4
Failed Test Cases
Read Exp Feature - Success Failed 0.108 seconds
##############################
Test: TestRunner_sco-tester - FAIL
Desc: Run sco-tester with test-runner
Output:
WARNING: possible circular locking dependency detected
BUG: sleeping function called from invalid context at net/core/sock.c:3782
Total: 30, Passed: 30 (100.0%), Failed: 0, Not Run: 0
##############################
Test: TestRunner_mesh-tester - FAIL
Desc: Run mesh-tester with test-runner
Output:
Total: 10, Passed: 8 (80.0%), Failed: 2, Not Run: 0
Failed Test Cases
Mesh - Send cancel - 1 Timed out 1.871 seconds
Mesh - Send cancel - 2 Timed out 1.997 seconds
##############################
Test: IncrementalBuild - PENDING
Desc: Incremental build with the patches in the series
Output:
---
Regards,
Linux Bluetooth
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH v2] Bluetooth: btusb: Add support for Quectel NCM865
2025-12-23 9:45 ` [PATCH v2] " Frank Tornack
2025-12-23 10:39 ` [v2] " bluez.test.bot
@ 2025-12-23 10:55 ` Pauli Virtanen
2025-12-23 12:38 ` Frank Tornack
1 sibling, 1 reply; 10+ messages in thread
From: Pauli Virtanen @ 2025-12-23 10:55 UTC (permalink / raw)
To: Frank Tornack; +Cc: linux-bluetooth
Hi,
ti, 2025-12-23 kello 10:45 +0100, Frank Tornack kirjoitti:
> Add the USB ID 2c7c:0130 for the Quectel NCM865 module to the btusb_device_table. This device is based on the Qualcomm WCN785x (FastConnect 7800) and requires the BTUSB_QCA_WCN6855 flag.
>
> Signed-off-by: Frank Tornack <f-tornack@t-online.de>
>
> v2: Fixed merge conflict with current bluetooth-next HEAD.
> ---
> drivers/bluetooth/btusb.c | 3 +++
> 1 file changed, 3 insertions(+)
Changelog "v2:" should go below the "---" so it's not included in the
commit message.
/sys/kernel/debug/usb/devices excerpt for the device should be added,
see for example
https://lore.kernel.org/linux-bluetooth/20251210202225.135637-1-elantsew.andrew@gmail.com/
>
> diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c
> index 646de80c7..70feeb9a9 100644
> --- a/drivers/bluetooth/btusb.c
> +++ b/drivers/bluetooth/btusb.c
> @@ -172,6 +172,9 @@ static const struct usb_device_id btusb_table[] = {
> { USB_DEVICE(0x8087, 0x0a5a),
> .driver_info = BTUSB_INTEL_BOOT | BTUSB_BROKEN_ISOC },
>
> + /* Quectel NCM865 */
> + { USB_DEVICE(0x2c7c, 0x0130), .driver_info = BTUSB_QCA_WCN6855 |
> + BTUSB_WIDEBAND_SPEECH },
> { } /* Terminating entry */
This should be added in the position in the list where the other
BTUSB_QCA_WCN6855 entries are, trying to keep them sorted by vendor +
device ID.
> };
>
--
Pauli Virtanen
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH v2] Bluetooth: btusb: Add support for Quectel NCM865
2025-12-23 10:55 ` [PATCH v2] " Pauli Virtanen
@ 2025-12-23 12:38 ` Frank Tornack
2025-12-23 13:27 ` Pauli Virtanen
0 siblings, 1 reply; 10+ messages in thread
From: Frank Tornack @ 2025-12-23 12:38 UTC (permalink / raw)
To: Pauli Virtanen; +Cc: linux-bluetooth
[-- Attachment #1: Type: text/plain, Size: 2679 bytes --]
Hi Pauli,
Thank you very much for your quick and helpful feedback on my patch.
Before sending a v3, I'd like to clarify a point. In the bluetooth-next
tree I'm working with, an entry for the USB ID 2c7c:0130 already exists
in the quirks_table.
However, this entry alone does not seem to be sufficient for the device
to be correctly initialized in my setup (tested with a DKMS module on
Arch Linux). I found that adding an additional, identical entry to the
btusb_table resolves the issue and allows the module to function as
expected. My v2 patch therefore adds this entry to the btusb_table.
Given this, I'd like to ask for your guidance on how to proceed. Should
I submit a v3 patch that keeps the entry in the btusb_table and
explains this necessity in the commit log? Or do you perhaps see a
better approach to address this specific behavior?
Thank you for your help.
--
Frank Tornack <f-tornack@t-online.de>
Privat
-------- Ursprüngliche Nachricht --------
Von: Pauli Virtanen <pav@iki.fi>
An: Frank Tornack <f-tornack@t-online.de>
Kopie: linux-bluetooth@vger.kernel.org
Betreff: Re: [PATCH v2] Bluetooth: btusb: Add support for Quectel
NCM865
Datum: 23.12.2025 11:55:43
Hi,
ti, 2025-12-23 kello 10:45 +0100, Frank Tornack kirjoitti:
> Add the USB ID 2c7c:0130 for the Quectel NCM865 module to the
> btusb_device_table. This device is based on the Qualcomm WCN785x
> (FastConnect 7800) and requires the BTUSB_QCA_WCN6855 flag.
>
> Signed-off-by: Frank Tornack <f-tornack@t-online.de>
>
> v2: Fixed merge conflict with current bluetooth-next HEAD.
> ---
> drivers/bluetooth/btusb.c | 3 +++
> 1 file changed, 3 insertions(+)
Changelog "v2:" should go below the "---" so it's not included in the
commit message.
/sys/kernel/debug/usb/devices excerpt for the device should be added,
see for example
https://lore.kernel.org/linux-bluetooth/20251210202225.135637-1-elantsew.andrew@gmail.com/
>
> diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c
> index 646de80c7..70feeb9a9 100644
> --- a/drivers/bluetooth/btusb.c
> +++ b/drivers/bluetooth/btusb.c
> @@ -172,6 +172,9 @@ static const struct usb_device_id btusb_table[] =
> {
> { USB_DEVICE(0x8087, 0x0a5a),
> .driver_info = BTUSB_INTEL_BOOT | BTUSB_BROKEN_ISOC },
>
> + /* Quectel NCM865 */
> + { USB_DEVICE(0x2c7c, 0x0130), .driver_info =
> BTUSB_QCA_WCN6855 |
> +
> BTUSB_WIDEBAND_SPEECH },
> { } /* Terminating entry */
This should be added in the position in the list where the other
BTUSB_QCA_WCN6855 entries are, trying to keep them sorted by vendor +
device ID.
> };
>
[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 228 bytes --]
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH v2] Bluetooth: btusb: Add support for Quectel NCM865
2025-12-23 12:38 ` Frank Tornack
@ 2025-12-23 13:27 ` Pauli Virtanen
2025-12-23 21:48 ` Pauli Virtanen
0 siblings, 1 reply; 10+ messages in thread
From: Pauli Virtanen @ 2025-12-23 13:27 UTC (permalink / raw)
To: f-tornack; +Cc: linux-bluetooth
Hi,
ti, 2025-12-23 kello 13:38 +0100, Frank Tornack kirjoitti:
> Hi Pauli,
>
> Thank you very much for your quick and helpful feedback on my patch.
>
> Before sending a v3, I'd like to clarify a point. In the bluetooth-next
> tree I'm working with, an entry for the USB ID 2c7c:0130 already exists
> in the quirks_table.
>
> However, this entry alone does not seem to be sufficient for the device
> to be correctly initialized in my setup (tested with a DKMS module on
> Arch Linux). I found that adding an additional, identical entry to the
> btusb_table resolves the issue and allows the module to function as
> expected. My v2 patch therefore adds this entry to the btusb_table.
>
> Given this, I'd like to ask for your guidance on how to proceed. Should
> I submit a v3 patch that keeps the entry in the btusb_table and
> explains this necessity in the commit log? Or do you perhaps see a
> better approach to address this specific behavior?
That's surprising, usb_match_id() returns the first match so second
identical entry should do nothing.
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/usb/core/driver.c#n815
I'd suggest to double check the patch actually does something, eg.
change the added entry to `USB_DEVICE(0x1234, 0x5678)`.
If it does something it's necessary to understand why. Easiest would be
to add some printk(KERN_WARNING "some message") debug prints to
suitable places in the code to trace what goes wrong, or use some other
debugging mechanism.
--
Pauli Virtanen
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH v2] Bluetooth: btusb: Add support for Quectel NCM865
2025-12-23 13:27 ` Pauli Virtanen
@ 2025-12-23 21:48 ` Pauli Virtanen
2025-12-25 7:10 ` Frank Tornack
0 siblings, 1 reply; 10+ messages in thread
From: Pauli Virtanen @ 2025-12-23 21:48 UTC (permalink / raw)
To: f-tornack; +Cc: linux-bluetooth
Hi,
23. joulukuuta 2025 13.27.49 UTC Pauli Virtanen <pav@iki.fi> kirjoitti:
>Hi,
>
>ti, 2025-12-23 kello 13:38 +0100, Frank Tornack kirjoitti:
>> Hi Pauli,
>>
>> Thank you very much for your quick and helpful feedback on my patch.
>>
>> Before sending a v3, I'd like to clarify a point. In the bluetooth-next
>> tree I'm working with, an entry for the USB ID 2c7c:0130 already exists
>> in the quirks_table.
>>
>> However, this entry alone does not seem to be sufficient for the device
>> to be correctly initialized in my setup (tested with a DKMS module on
>> Arch Linux). I found that adding an additional, identical entry to the
>> btusb_table resolves the issue and allows the module to function as
>> expected. My v2 patch therefore adds this entry to the btusb_table.
>>
>> Given this, I'd like to ask for your guidance on how to proceed. Should
>> I submit a v3 patch that keeps the entry in the btusb_table and
>> explains this necessity in the commit log? Or do you perhaps see a
>> better approach to address this specific behavior?
>
>That's surprising, usb_match_id() returns the first match so second
>identical entry should do nothing.
Looks like I missed v2 added the entry to btusb_table, not quirks_table.
So the change may be right, although I don't understand why quirks_table is not consulted. There's maybe already id->driver_info present, but where would it come from? Or is it loading a different USB driver than btusb? Would be good to understand why.
>
>https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/usb/core/driver.c#n815
>
>I'd suggest to double check the patch actually does something, eg.
>change the added entry to `USB_DEVICE(0x1234, 0x5678)`.
>
>If it does something it's necessary to understand why. Easiest would be
>to add some printk(KERN_WARNING "some message") debug prints to
>suitable places in the code to trace what goes wrong, or use some other
>debugging mechanism.
>
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH v2] Bluetooth: btusb: Add support for Quectel NCM865
2025-12-23 21:48 ` Pauli Virtanen
@ 2025-12-25 7:10 ` Frank Tornack
0 siblings, 0 replies; 10+ messages in thread
From: Frank Tornack @ 2025-12-25 7:10 UTC (permalink / raw)
To: Pauli Virtanen; +Cc: linux-bluetooth
Hi Pauli
The reason for adding it to btusb_table is that without this entry, the
device (2c7c:0130) is being detected but defaults to a generic QCA
"Rome" configuration (0x190200), which lacks ISO/LE Audio support.
It is definitely loading the btusb driver, but without the explicit ID
match, the capabilities don't align with the actual WCN785x hardware.
Just a quick heads-up: I'm currently on vacation, so my response time
might be a bit slow. I'm mainly checking my mails and doing tests on
rainy days when I'm staying indoors.
--
Frank Tornack <f-tornack@t-online.de>
Privat
-------- Ursprüngliche Nachricht --------
Von: Pauli Virtanen <pav@iki.fi>
An: f-tornack@t-online.de
Kopie: linux-bluetooth@vger.kernel.org
Betreff: Re: [PATCH v2] Bluetooth: btusb: Add support for Quectel
NCM865
Datum: 23.12.2025 22:48:44
Hi,
23. joulukuuta 2025 13.27.49 UTC Pauli Virtanen <pav@iki.fi> kirjoitti:
> Hi,
>
> ti, 2025-12-23 kello 13:38 +0100, Frank Tornack kirjoitti:
> > Hi Pauli,
> >
> > Thank you very much for your quick and helpful feedback on my
> > patch.
> >
> > Before sending a v3, I'd like to clarify a point. In the bluetooth-
> > next
> > tree I'm working with, an entry for the USB ID 2c7c:0130 already
> > exists
> > in the quirks_table.
> >
> > However, this entry alone does not seem to be sufficient for the
> > device
> > to be correctly initialized in my setup (tested with a DKMS module
> > on
> > Arch Linux). I found that adding an additional, identical entry to
> > the
> > btusb_table resolves the issue and allows the module to function as
> > expected. My v2 patch therefore adds this entry to the btusb_table.
> >
> > Given this, I'd like to ask for your guidance on how to proceed.
> > Should
> > I submit a v3 patch that keeps the entry in the btusb_table and
> > explains this necessity in the commit log? Or do you perhaps see a
> > better approach to address this specific behavior?
>
> That's surprising, usb_match_id() returns the first match so second
> identical entry should do nothing.
Looks like I missed v2 added the entry to btusb_table, not
quirks_table.
So the change may be right, although I don't understand why
quirks_table is not consulted. There's maybe already id->driver_info
present, but where would it come from? Or is it loading a different USB
driver than btusb? Would be good to understand why.
>
> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/usb/core/driver.c#n815
>
> I'd suggest to double check the patch actually does something, eg.
> change the added entry to `USB_DEVICE(0x1234, 0x5678)`.
>
> If it does something it's necessary to understand why. Easiest would
> be
> to add some printk(KERN_WARNING "some message") debug prints to
> suitable places in the code to trace what goes wrong, or use some
> other
> debugging mechanism.
^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2025-12-25 7:20 UTC | newest]
Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-12-09 20:47 [REPORT] btusb: Missing ID for Quectel NCM865 (WCN7850) - 2c7c:0130 Frank Tornack
2025-12-23 5:54 ` [PATCH] Bluetooth: btusb: Add support for Quectel NCM865 Frank Tornack
2025-12-23 6:27 ` bluez.test.bot
2025-12-23 9:45 ` [PATCH v2] " Frank Tornack
2025-12-23 10:39 ` [v2] " bluez.test.bot
2025-12-23 10:55 ` [PATCH v2] " Pauli Virtanen
2025-12-23 12:38 ` Frank Tornack
2025-12-23 13:27 ` Pauli Virtanen
2025-12-23 21:48 ` Pauli Virtanen
2025-12-25 7:10 ` Frank Tornack
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).