Ubuntu – Bluetooth dongle problem

bluetoothdongledriversusb

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 (BXLproduct 3 in image below): 0x1712

LMP Subversions currently unknown for products 1 and 2 below.

Click for larger image:
Other BQB75270 dongles

Best Answer

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

  1. Insert your USB bluetooth dongle into a usb port of your computer.

  2. Have two terminal windows open.

  3. In the first window please start:

     hcidump
    

Ubuntu: You can install the program via the 'bluez-hcidump' package.

  1. 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.

  1. 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.

  1. 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.

  1. 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.

Related Question