Bluetooth dongle problem
Like Bluetooth dongle problem.(probably regarding the driver) I experience the same problem that the bluetooth device won't initialize properly:
$ lsusb | grep Bluetooth
Bus 001 Device 006: ID 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode)
$ usb-devices | awk '/0a12/' RS=
T: Bus=01 Lev=02 Prnt=02 Port=02 Cnt=01 Dev#= 6 Spd=12 MxCh= 0
D: Ver= 1.10 Cls=e0(wlcon) Sub=01 Prot=01 MxPS=64 #Cfgs= 1
P: Vendor=0a12 ProdID=0001 Rev=88.91
S: Product=USB1.1-A
C: #Ifs= 2 Cfg#= 1 Atr=e0 MxPwr=100mA
I: If#= 0 Alt= 0 #EPs= 3 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
I: If#= 1 Alt= 0 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
$ hciconfig -a hci0
hci0: Type: Primary Bus: USB
BD Address: 00:1A:7D:DA:71:11 ACL MTU: 679:9 SCO MTU: 48:16
DOWN
RX bytes:574 acl:0 sco:0 events:30 errors:0
TX bytes:368 acl:0 sco:0 commands:30 errors:0
Features: 0xff 0xff 0xc5 0xfa 0xdb 0xbf 0x7b 0x87
Packet type: DM1 DM3 DM5 DH1 DH3 DH5 HV1 HV2 HV3
Link policy: RSWITCH HOLD SNIFF PARK
Link mode: SLAVE ACCEPT
$ hcidump
...
> HCI Event: Command Complete (0x0e) plen 12
Read Local Version Information (0x04|0x0001) ncmd 1
status 0x00
HCI Version: 4.0 (0x6) HCI Revision: 0x810
LMP Version: 4.0 (0x6) LMP Subversion: 0x1113
Manufacturer: Cambridge Silicon Radio (10)
...
> HCI Event: Command Complete (0x0e) plen 6
Delete Stored Link Key (0x03|0x0012) ncmd 1
status 0x11 deleted 0
Error: Unsupported Feature or Parameter Value
You will only see the last HCI Event for Error: Unsupported Feature or Parameter Value
as long as you have not applied the patch. After the patch you wont see the event/command in the output of hcidump
.
It works fine in Windows 10, but not in Ubuntu 18.04 (also not with kernel 5.3). Blueman is not recognizing the Bluetooth devices.
I get this when inserting the Bluetooth USB dongle:
jan 26 21:10:38 some-computer kernel: usb 1-1.3: new full-speed USB device number 6 using ehci-pci
jan 26 21:10:38 some-computer kernel: usb 1-1.3: config 1 interface 1 altsetting 0 endpoint 0x3 has wMaxPacketSize 0, skipping
jan 26 21:10:38 some-computer kernel: usb 1-1.3: config 1 interface 1 altsetting 0 endpoint 0x83 has wMaxPacketSize 0, skipping
jan 26 21:10:38 some-computer kernel: usb 1-1.3: New USB device found, idVendor=0a12, idProduct=0001, bcdDevice=88.91
jan 26 21:10:38 some-computer kernel: usb 1-1.3: New USB device strings: Mfr=0, Product=2, SerialNumber=0
jan 26 21:10:38 some-computer kernel: usb 1-1.3: Product: USB1.1-A
jan 26 21:10:38 some-computer systemd[1]: Starting Load/Save RF Kill Switch Status...
jan 26 21:10:38 some-computer systemd[1]: Started Load/Save RF Kill Switch Status.
jan 26 21:10:38 some-computer systemd[1]: Reached target Bluetooth.
jan 26 21:10:38 some-computer upowerd[9037]: unhandled action 'bind' on /sys/devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.3/1-1.3:1.1
jan 26 21:10:38 some-computer upowerd[9037]: unhandled action 'bind' on /sys/devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.3/1-1.3:1.0
jan 26 21:10:38 some-computer upowerd[9037]: unhandled action 'bind' on /sys/devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.3
jan 26 21:10:38 some-computer kernel: [UFW BLOCK] IN=eno1 OUT= MAC= SRC=<REMOVED from output by me!> DST=ff02:0000:0000:0000:0000:0000:0000:0001 LEN=64 TC=0 HOPLIMIT=1 FLOWLBL=939113 PROTO=UDP SPT=8612 DPT=8612 LEN=24
I hope someone has a hint as what to do.
I have some supplemental information.
It is about this one: https://launchstudio.bluetooth.com/listingdetails/75270 And likely relevant chip(s) are: http://en.barrot.com.cn/a/BR80XX-series/48.html and http://en.barrot.com.cn/a/BR200Xxilie/12.html
Note: I was asked by @Pilot6 to create this as a separate question to avoid that my previous comments (added as an answer in the question referred to in the start) will get deleted.
Images found on the Internet that matches specific 'BQB 75270' LMP Subversions (identified by user):
LMP Subversion (a.l): 0x1113
LMP Subversion (BXL - product 3 in image below): 0x1712
LMP Subversions currently unknown for products 1 and 2 below.
Click for larger image:
Solution 1:
It was possible to make a patch that makes the dongle work in Linux, but we have some work to do before we get it into the kernel. So the dongle is using a fake CSR chip made by Barrot as previously mentioned. We need to contact the linux kernel maintainers for bluetooth support, but before we do that we need more people than me to confirm that it works. And then I will post our findings here: https://bugzilla.kernel.org/show_bug.cgi?id=60824#c48 and then lastly contact the kernel maintainers (and try to comply with the 'Tips for patch submitters' https://www.kernel.org/doc/linux/MAINTAINERS )
UPDATE 28. december 2020: Since I haven't had time for months to work on a patch for the linux kernel please feel free to post your findings on the bug page mentioned right above and contact the kernel maintainers thereafter if everything goes well.
Please test
Anyone who would like kernel support please test this patch and write back with your results in the comments. I used kernel 5.3. Your kernel may vary in regards to line numbers etc. You might want to check these re. how to check out Ubuntu kernels - unless you use kernels from https://www.kernel.org/:
https://wiki.ubuntu.com/KernelTeam/GitKernelBuild and How/where to clone current 18.04 kernel (5.0.0-37-generic), specifically using Git and https://unix.stackexchange.com/questions/46077/where-to-download-linux-kernel-source-code-of-a-specific-version/46088#46088 and https://stackoverflow.com/questions/8519880/git-checkout-exclude-tags-remotes-from-possibilities-list and https://stackoverflow.com/questions/3404936/show-which-git-tag-you-are-on/3405221#3405221 (I used: git checkout Ubuntu-hwe-5.3.0-28.30_18.04.1) :
diff -Nuar btusb.c_OLD btusb.c
--- btusb.c_OLD 2020-01-29 12:32:30.383536820 +0100
+++ btusb.c 2020-01-29 12:33:49.579840488 +0100
@@ -1599,7 +1599,8 @@
/* Detect controllers which aren't real CSR ones. */
if (le16_to_cpu(rp->manufacturer) != 10 ||
- le16_to_cpu(rp->lmp_subver) == 0x0c5c) {
+ le16_to_cpu(rp->lmp_subver) == 0x0c5c ||
+ le16_to_cpu(rp->lmp_subver) == 0x1113) {
/* Clear the reset quirk since this is not an actual
* early Bluetooth 1.1 device from CSR.
*/
@@ -3851,7 +3852,7 @@
set_bit(HCI_QUIRK_RESET_ON_CLOSE, &hdev->quirks);
/* Fake CSR devices with broken commands */
- if (bcdDevice <= 0x100 || bcdDevice == 0x134)
+ if (bcdDevice <= 0x100 || bcdDevice == 0x134 || bcdDevice == 0x8891)
hdev->setup = btusb_setup_csr;
set_bit(HCI_QUIRK_SIMULTANEOUS_DISCOVERY, &hdev->quirks);
, file is located in the kernel source: drivers/bluetooth
How to determine if you have the same dongle
-
Insert your USB bluetooth dongle into a usb port of your computer.
-
Have two terminal windows open.
-
In the first window please start:
hcidump
Ubuntu: You can install the program via the 'bluez-hcidump' package.
-
In the second window please start:
sudo hciconfig hci0 down sudo hciconfig hci0 up
Make sure that you enable the bluetooth dongle in your bluetooth manager or you will get an error message e.g.:
Can't init device hci0: Operation not supported (95)
(for those not running with the patch (or incorrect/unsupported dongle))
Can't init device hci0: Operation not possible due to RF-kill (132)
(will likely be shown if your dongle is supported/the patch got applied)
You can install the hciconfig program and obviously need it for bluetooth support Ubuntu: 'bluez' package.
-
Now locate in the first terminal the lines:
\> HCI Event: Command Complete (0x0e) plen 12 Read Local Version Information (0x04|0x0001) ncmd 1
Make sure you have the same output of hciconfig stated in the top of the question for this event/command.
We e.g. need to know the LMP Subversion and Manufacturer, to be sure that it is the same as the dongle I refer to.
-
Make sure you have the same output of hciconfig stated in the top of the of the question for this event/command:
\> HCI Event: Command Complete (0x0e) plen 6 Delete Stored Link Key (0x03|0x0012) ncmd 1
, re. status and does it return "Error: Unsupported Feature or Parameter Value". As mentioned above you will only see this message as long as you have not applied the patch.
-
Make sure you have the same output of usb-devices re. your usb bluetooth dongle stated in the top of the question for this command:
usb-devices | awk '/0a12/' RS=
Ubuntu: You need to install package 'usbutils' package to get the program usb-devices.