Bug 60824 - [PATCH][regression] Cambridge Silicon Radio, Ltd Bluetooth Dongle unusable
Summary: [PATCH][regression] Cambridge Silicon Radio, Ltd Bluetooth Dongle unusable
Status: REOPENED
Alias: None
Product: Drivers
Classification: Unclassified
Component: Bluetooth (show other bugs)
Hardware: x86-64 Linux
: P1 normal
Assignee: linux-bluetooth@vger.kernel.org
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2013-09-01 01:29 UTC by M. Wisniewski
Modified: 2024-02-23 16:45 UTC (History)
103 users (show)

See Also:
Kernel Version: 3.11 rc6 git
Subsystem:
Regression: Yes
Bisected commit-id:


Attachments
binary dump of hcidump (1.31 KB, application/octet-stream)
2013-09-01 15:37 UTC, M. Wisniewski
Details
mark Delete Stored Keys as non-critical failure (3.10 KB, patch)
2013-09-01 17:54 UTC, Gustavo Padovan
Details | Diff
'hcidump -X' while executing 'hciconfig hci0 up' for carlosgarciaq (2.73 KB, text/plain)
2014-12-31 13:16 UTC, Carlos
Details
contents of /sys/kernel/debug/usb/devices for carlosgarciaq (10.21 KB, text/plain)
2014-12-31 13:23 UTC, Carlos
Details
patches.hsf/btusb-Enablement-of-HCI_QUIRK_BROKEN_STORED_LINK_KEY-quirk.patch (1.37 KB, patch)
2019-08-20 04:49 UTC, Sergey Kondakov
Details | Diff
btusb.c: Module parameter to control multiple fixup (12.30 KB, patch)
2019-10-13 17:25 UTC, Fernando Carvalho
Details | Diff
Patch for CSR 0a12:0001 88.19 (kernel 5.4.14) (1000 bytes, patch)
2020-01-25 14:52 UTC, Fabio Scaccabarozzi
Details | Diff
attachment-31457-0.html (5.11 KB, text/html)
2020-02-07 17:00 UTC, Fernando Carvalho
Details
'hcidump -X' while executing 'hciconfig hci0 up' for Alex (Set Event Filter error) (2.30 KB, text/plain)
2020-02-15 21:01 UTC, Alex
Details
lsusb for bcdDevice 25.20 (8.84 KB, text/plain)
2020-05-09 06:15 UTC, Mauro Fontana
Details
CSR_ds4_fail.btsnoop (73.35 KB, application/octet-stream)
2020-06-24 21:37 UTC, Sergey Kondakov
Details
lsusb -vvd 0a12:0001 (8.88 KB, text/plain)
2020-06-25 04:39 UTC, Sergey Kondakov
Details
ISSC_ds4_pass.btsnoop (453.38 KB, application/octet-stream)
2020-06-25 11:16 UTC, Sergey Kondakov
Details
SCO packets dmesg bcdDevice=25.20 (134.32 KB, text/plain)
2020-07-27 03:33 UTC, Real Name
Details
btmon -w for working bt dongle 4.0 (9.15 KB, application/octet-stream)
2020-08-03 08:27 UTC, Aragmor
Details
btmon -w for broken bt dongle 4.0 (2.17 KB, application/octet-stream)
2020-08-03 08:28 UTC, Aragmor
Details
btmon -w for broken bt dongle 5.0 (2.17 KB, application/octet-stream)
2020-08-03 08:29 UTC, Aragmor
Details
'hcidump -X' while executing 'hciconfig hci0 up' (9.21 KB, text/markdown)
2020-08-03 09:03 UTC, Aragmor
Details
`btmon -w` while executing `hciconfig hci0 up` for fake BT dongle 4.0 (2.28 KB, application/octet-stream)
2020-08-03 09:08 UTC, Aragmor
Details
`btmon -w` while executing `hciconfig hci0 up` for fake BT dongle 5.0 (2.28 KB, application/octet-stream)
2020-08-03 09:08 UTC, Aragmor
Details
(btmon -w) while executing `hciconfig hci0 up` for fake BT dongle 4.0 (26.82 KB, text/plain)
2020-08-03 14:54 UTC, AndreyTarkovsky
Details
Relevant info (10.00 KB, application/x-tar)
2020-08-10 22:35 UTC, vic
Details
hcdump_acr_5.0 (4.47 KB, text/plain)
2020-08-13 19:23 UTC, Olivier JUDITH
Details
btmon_acr_5.0 (19.27 KB, text/plain)
2020-08-13 19:24 UTC, Olivier JUDITH
Details
lspci_acr_5.0 (9.29 KB, text/plain)
2020-08-13 19:25 UTC, Olivier JUDITH
Details
lsusb -v && Local Version Information (10.00 KB, application/x-tar)
2020-08-21 00:23 UTC, vic
Details
repeatedly calling hcidump -X (2.62 KB, text/plain)
2020-08-26 17:01 UTC, Babak
Details
btmon -w dump (2.36 KB, application/octet-stream)
2020-08-26 17:04 UTC, Babak
Details
lsusb for CSR 4.0 dongle (8.89 KB, text/plain)
2020-08-26 17:04 UTC, Babak
Details
hciconfig -a (337 bytes, text/plain)
2020-11-10 14:03 UTC, Yuri Santos
Details
btmon -w mylog.txt (5.99 KB, text/plain)
2020-11-10 14:06 UTC, Yuri Santos
Details
lsusb log of my broken dongle (9.03 KB, text/plain)
2020-11-10 14:08 UTC, Yuri Santos
Details
Adapter on a VM works just fine - btmon log (69.15 KB, text/plain)
2022-01-01 21:01 UTC, guimarcalsilva
Details
btmon -w my.log for bcdDevice 88.91 (1.55 KB, application/octet-stream)
2022-01-27 20:16 UTC, Artium
Details
kernel fault with CSR 5.0 dongle (79.85 KB, text/plain)
2022-11-22 02:56 UTC, Leonardo Eugênio
Details

Description M. Wisniewski 2013-09-01 01:29:54 UTC
Summary:
CSR Bt dongle became unusable after upgrading from 3.9 (make oldconfig)

3.9: 
root@enkidu4:/home/enkidu# hciconfig hci0
hci0:   Type: BR/EDR  Bus: USB
        BD Address: 00:1B:10:00:23:9A  ACL MTU: 1017:8  SCO MTU: 64:0
        UP RUNNING PSCAN 
        RX bytes:922 acl:0 sco:0 events:35 errors:0
        TX bytes:404 acl:0 sco:0 commands:35 errors:0

3.11
root@enkidu4:/home/enkidu# hciconfig hci0
hci0:   Type: BR/EDR  Bus: USB
        BD Address: 00:1B:10:00:23:9A  ACL MTU: 1017:8  SCO MTU: 64:0
        DOWN
        RX bytes:922 acl:0 sco:0 events:35 errors:0
        TX bytes:404 acl:0 sco:0 commands:35 errors:0
root@enkidu4:/home/enkidu# hciconfig hci0 up
Can't init device hci0: Operation not supported (95)
Comment 1 Gustavo Padovan 2013-09-01 15:07:39 UTC
Hi, 

Could please run btmon utility to collect HCI logs. You can find btmon in the bluez sources. Start the btmon and then in another shell run:

$ hciconfig hci0 down
$ hciconfig hci0 up

And attach the logs here.
Comment 2 M. Wisniewski 2013-09-01 15:36:17 UTC
Hi,

I don't have btmon atm, but I have attached log of `hcidump -X` while running `hciconfig hci0 up` on 3.11:


HCI sniffer - Bluetooth packet analyzer ver 2.5
device: hci0 snap_len: 1500 filter: 0xffffffffffffffff
< HCI Command: Read Local Supported Features (0x04|0x0003) plen 0
> HCI Event: Command Complete (0x0e) plen 12
    Read Local Supported Features (0x04|0x0003) ncmd 1
    status 0x00
    Features: 0xff 0xff 0x8d 0xfe 0x9b 0xf9 0x00 0x80
< HCI Command: Read Local Version Information (0x04|0x0001) plen 0
> HCI Event: Command Complete (0x0e) plen 12
    Read Local Version Information (0x04|0x0001) ncmd 1
    status 0x00
    HCI Version: 2.0 (0x3) HCI Revision: 0x3000
    LMP Version: 2.0 (0x3) LMP Subversion: 0x420b
    Manufacturer: Broadcom Corporation (15)
< HCI Command: Read BD ADDR (0x04|0x0009) plen 0
> HCI Event: Command Complete (0x0e) plen 10
    Read BD ADDR (0x04|0x0009) ncmd 1
    status 0x00 bdaddr 00:1B:10:00:23:9A
< HCI Command: Read Buffer Size (0x04|0x0005) plen 0
> HCI Event: Command Complete (0x0e) plen 11
    Read Buffer Size (0x04|0x0005) ncmd 1
    status 0x00
    ACL MTU 1017:8 SCO MTU 64:0
< HCI Command: Read Class of Device (0x03|0x0023) plen 0
> HCI Event: Command Complete (0x0e) plen 7
    Read Class of Device (0x03|0x0023) ncmd 1
    status 0x00 class 0x420100
< HCI Command: Read Local Name (0x03|0x0014) plen 0
> HCI Event: Command Complete (0x0e) plen 252
    Read Local Name (0x03|0x0014) ncmd 1
    status 0x00 name 'enkidu4-0'
< HCI Command: Read Voice Setting (0x03|0x0025) plen 0
> HCI Event: Command Complete (0x0e) plen 6
    Read Voice Setting (0x03|0x0025) ncmd 1
    status 0x00 voice setting 0x0060
< HCI Command: Set Event Filter (0x03|0x0005) plen 1
    type 0 condition 0
    Clear all filters
> HCI Event: Command Complete (0x0e) plen 4
    Set Event Filter (0x03|0x0005) ncmd 1
    status 0x00
< HCI Command: Write Connection Accept Timeout (0x03|0x0016) plen 2
    timeout 32000
> HCI Event: Command Complete (0x0e) plen 4
    Write Connection Accept Timeout (0x03|0x0016) ncmd 1
    status 0x00
< HCI Command: Read Page Scan Activity (0x03|0x001b) plen 0
> HCI Event: Command Complete (0x0e) plen 8
    Read Page Scan Activity (0x03|0x001b) ncmd 1
    status 0x00 interval 2048 window 18
< HCI Command: Read Page Scan Type (0x03|0x0046) plen 0
> HCI Event: Command Complete (0x0e) plen 5
    Read Page Scan Type (0x03|0x0046) ncmd 1
    0000: 00 00                                             ..
< HCI Command: Set Event Mask (0x03|0x0001) plen 8
    Mask: 0xfffffbff07180000
> HCI Event: Command Complete (0x0e) plen 4
    Set Event Mask (0x03|0x0001) ncmd 1
    status 0x00
< HCI Command: Read Local Supported Commands (0x04|0x0002) plen 0
> HCI Event: Command Complete (0x0e) plen 68
    Read Local Supported Commands (0x04|0x0002) ncmd 1
    status 0x00
    Commands: ffffffffffffcfffffffffff0300ffff07
< HCI Command: Write Inquiry Mode (0x03|0x0045) plen 1
    mode 1
> HCI Event: Command Complete (0x0e) plen 4
    Write Inquiry Mode (0x03|0x0045) ncmd 1
    status 0x00
< HCI Command: Read Local Extended Features (0x04|0x0004) plen 1
    page 1
> HCI Event: Command Complete (0x0e) plen 14
    Read Local Extended Features (0x04|0x0004) ncmd 1
    status 0x00 page 1 max 0
    Features: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
< HCI Command: Delete Stored Link Key (0x03|0x0012) plen 7
    bdaddr 00:00:00:00:00:00 all 1
> HCI Event: Command Complete (0x0e) plen 4
    Delete Stored Link Key (0x03|0x0012) ncmd 1
    status 0x11 deleted 0
    Error: Unsupported Feature or Parameter Value


If needed, I can also attach logs for 3.9 but it seems, that after applying patch to solve Delete Stored Link Key on broadcom devices, something went wrong on CSR. Also, binary dump is attached.
Comment 3 M. Wisniewski 2013-09-01 15:37:05 UTC
Created attachment 107378 [details]
binary dump of hcidump
Comment 4 Gustavo Padovan 2013-09-01 16:14:51 UTC
Yes, please add the logs from 3.9 where it works. Your Bluetooth controller reports that you actually support the Delete Stored Link Key, but then fail to run the command properly. Only the text logs are needed, no binaries.
Comment 5 M. Wisniewski 2013-09-01 17:08:37 UTC
here we go with 3.9:

< HCI Command: Read Local Supported Features (0x04|0x0003) plen 0
> HCI Event: Command Complete (0x0e) plen 12
    Read Local Supported Features (0x04|0x0003) ncmd 1
    status 0x00
    Features: 0xff 0xff 0x8d 0xfe 0x9b 0xf9 0x00 0x80
< HCI Command: Read Local Version Information (0x04|0x0001) plen 0
> HCI Event: Command Complete (0x0e) plen 12
    Read Local Version Information (0x04|0x0001) ncmd 1
    status 0x00
    HCI Version: 2.0 (0x3) HCI Revision: 0x3000
    LMP Version: 2.0 (0x3) LMP Subversion: 0x420b
    Manufacturer: Broadcom Corporation (15)
< HCI Command: Read BD ADDR (0x04|0x0009) plen 0
> HCI Event: Command Complete (0x0e) plen 10
    Read BD ADDR (0x04|0x0009) ncmd 1
    status 0x00 bdaddr 00:1B:10:00:23:9A
< HCI Command: Read Buffer Size (0x04|0x0005) plen 0
> HCI Event: Command Complete (0x0e) plen 11
    Read Buffer Size (0x04|0x0005) ncmd 1
    status 0x00
    ACL MTU 1017:8 SCO MTU 64:0
< HCI Command: Read Class of Device (0x03|0x0023) plen 0
> HCI Event: Command Complete (0x0e) plen 7
    Read Class of Device (0x03|0x0023) ncmd 1
    status 0x00 class 0x000000
< HCI Command: Read Local Name (0x03|0x0014) plen 0
> HCI Event: Command Complete (0x0e) plen 252
    Read Local Name (0x03|0x0014) ncmd 1
    status 0x00 name 'enkidu4-0'
< HCI Command: Read Voice Setting (0x03|0x0025) plen 0
> HCI Event: Command Complete (0x0e) plen 6
    Read Voice Setting (0x03|0x0025) ncmd 1
    status 0x00 voice setting 0x0060
< HCI Command: Set Event Filter (0x03|0x0005) plen 1
    type 0 condition 0
    Clear all filters                                                                                                                       
> HCI Event: Command Complete (0x0e) plen 4                                     
    Set Event Filter (0x03|0x0005) ncmd 1                                                                                                   
    status 0x00                                                                                                                             
< HCI Command: Write Connection Accept Timeout (0x03|0x0016) plen 2                                                                         
    timeout 32000                                                                                                                           
> HCI Event: Command Complete (0x0e) plen 4                                     
    Write Connection Accept Timeout (0x03|0x0016) ncmd 1                                                                                    
    status 0x00                                                                                                                             
< HCI Command: Delete Stored Link Key (0x03|0x0012) plen 7                                                                                  
    bdaddr 00:00:00:00:00:00 all 1                                                                                                          
> HCI Event: Command Complete (0x0e) plen 4                                     
    Delete Stored Link Key (0x03|0x0012) ncmd 1                                                                                             
    status 0x11 deleted 0                                                                                                                   
    Error: Unsupported Feature or Parameter Value
< HCI Command: Set Event Mask (0x03|0x0001) plen 8
    Mask: 0xfffffbff07180000
> HCI Event: Command Complete (0x0e) plen 4
    Set Event Mask (0x03|0x0001) ncmd 1
    status 0x00
< HCI Command: Read Local Supported Commands (0x04|0x0002) plen 0
> HCI Event: Command Complete (0x0e) plen 68
    Read Local Supported Commands (0x04|0x0002) ncmd 1
    status 0x00
    Commands: ffffffffffffcfffffffffff0300ffff07
< HCI Command: Write Inquiry Mode (0x03|0x0045) plen 1
    mode 1
> HCI Event: Command Complete (0x0e) plen 4
    Write Inquiry Mode (0x03|0x0045) ncmd 1
    status 0x00
< HCI Command: Read Local Extended Features (0x04|0x0004) plen 1
    page 1
> HCI Event: Command Complete (0x0e) plen 14
    Read Local Extended Features (0x04|0x0004) ncmd 1
    status 0x00 page 1 max 0
    Features: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
< HCI Command: Write Default Link Policy Settings (0x02|0x000f) plen 2
    policy 0x0f
    Link policy: RSWITCH HOLD SNIFF PARK 
> HCI Event: Command Complete (0x0e) plen 4
    Write Default Link Policy Settings (0x02|0x000f) ncmd 1
    status 0x00
< HCI Command: Write Scan Enable (0x03|0x001a) plen 1
    enable 2
> HCI Event: Command Complete (0x0e) plen 4
    Write Scan Enable (0x03|0x001a) ncmd 1
    status 0x00
< HCI Command: Write Class of Device (0x03|0x0024) plen 3
    class 0x420100
> HCI Event: Command Complete (0x0e) plen 4
    Write Class of Device (0x03|0x0024) ncmd 1
    status 0x00
< HCI Command: Write Local Name (0x03|0x0013) plen 248
    name 'enkidu4-0'
> HCI Event: Command Complete (0x0e) plen 4
    Write Local Name (0x03|0x0013) ncmd 1
    status 0x00
< HCI Command: Write Scan Enable (0x03|0x001a) plen 1
    enable 3
> HCI Event: Command Complete (0x0e) plen 4
    Write Scan Enable (0x03|0x001a) ncmd 1
    status 0x00
< HCI Command: Write Class of Device (0x03|0x0024) plen 3
    class 0x520100
> HCI Event: Command Complete (0x0e) plen 4
    Write Class of Device (0x03|0x0024) ncmd 1
    status 0x00
Comment 6 Gustavo Padovan 2013-09-01 17:54:31 UTC
Created attachment 107379 [details]
mark Delete Stored Keys as non-critical failure

Please apply this patch and check if it works. Also capture logs and send them here.

This is a modified version of a patch Johan Hedberg did some time ago.
Comment 7 M. Wisniewski 2013-09-01 20:21:42 UTC
It seems to work: hciconfig hci0 up really brings dongle up an pairing is possible.

Thank you for quick patch
Comment 8 Gustavo Padovan 2013-09-10 15:58:55 UTC
This patch is not ready for upstream, could you please give more information.

It would be good have a look on the output of /sys/kernel/debug/usb/devices for the bluetooth controller. Can you provide this?
Comment 9 M. Wisniewski 2013-09-10 16:38:16 UTC
of course I can:


 T:  Bus=02 Lev=01 Prnt=01 Port=08 Cnt=03 Dev#=  9 Spd=12   MxCh= 0
D:  Ver= 2.00 Cls=e0(wlcon) Sub=01 Prot=01 MxPS=64 #Cfgs=  1
P:  Vendor=0a12 ProdID=0001 Rev= 1.00
S:  Manufacturer=Bluetooth v2.0
S:  Product=Bluetooth V2.0 Dongle
C:* #Ifs= 4 Cfg#= 1 Atr=a0 MxPwr=100mA
I:* If#= 0 Alt= 0 #EPs= 3 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
E:  Ad=81(I) Atr=03(Int.) MxPS=  16 Ivl=1ms
E:  Ad=82(I) Atr=02(Bulk) MxPS=  64 Ivl=0ms
E:  Ad=02(O) Atr=02(Bulk) MxPS=  64 Ivl=0ms
I:* If#= 1 Alt= 0 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
E:  Ad=83(I) Atr=01(Isoc) MxPS=   0 Ivl=1ms
E:  Ad=03(O) Atr=01(Isoc) MxPS=   0 Ivl=1ms
I:  If#= 1 Alt= 1 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
E:  Ad=83(I) Atr=01(Isoc) MxPS=   9 Ivl=1ms
E:  Ad=03(O) Atr=01(Isoc) MxPS=   9 Ivl=1ms
I:  If#= 1 Alt= 2 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
E:  Ad=83(I) Atr=01(Isoc) MxPS=  17 Ivl=1ms
E:  Ad=03(O) Atr=01(Isoc) MxPS=  17 Ivl=1ms
I:  If#= 1 Alt= 3 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
E:  Ad=83(I) Atr=01(Isoc) MxPS=  25 Ivl=1ms
E:  Ad=03(O) Atr=01(Isoc) MxPS=  25 Ivl=1ms
I:  If#= 1 Alt= 4 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
E:  Ad=83(I) Atr=01(Isoc) MxPS=  33 Ivl=1ms
E:  Ad=03(O) Atr=01(Isoc) MxPS=  33 Ivl=1ms
I:  If#= 1 Alt= 5 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
E:  Ad=83(I) Atr=01(Isoc) MxPS=  49 Ivl=1ms
E:  Ad=03(O) Atr=01(Isoc) MxPS=  49 Ivl=1ms
I:* If#= 2 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
E:  Ad=84(I) Atr=02(Bulk) MxPS=  32 Ivl=0ms
E:  Ad=04(O) Atr=02(Bulk) MxPS=  32 Ivl=0ms
I:* If#= 3 Alt= 0 #EPs= 0 Cls=fe(app. ) Sub=01 Prot=00 Driver=(none)
Comment 10 cuboxuser 2013-09-11 05:57:13 UTC
I had the same problem. I have tested on ARM dove 3.11.0 - works fine.
Comment 11 Šarūnas 2013-09-14 16:34:54 UTC
I had the same problem too, but patch fixes it.
Latest working kernel version: 3.9.11
Earliest failing kernel version: 3.10.1 (didn't test with rc versions)

lsusb: Bus 006 Device 002: ID 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode)

/sys/kernel/debug/usb/devices:
same as posted by M. Wisniewsk, except first line:
T:  Bus=06 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  2 Spd=12   MxCh= 0
Comment 12 daniel.leong 2013-09-23 20:59:43 UTC
Also a problem on Fedora 18 Kernel 3.10 onwards. 3.9.11 is fine.

From /sys/kernel/debug/usb/devices :-

T:  Bus=05 Lev=01 Prnt=01 Port=01 Cnt=01 Dev#=  2 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= 0.07
C:* #Ifs= 2 Cfg#= 1 Atr=00 MxPwr=  0mA
I:* If#= 0 Alt= 0 #EPs= 3 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
E:  Ad=81(I) Atr=03(Int.) MxPS=  16 Ivl=1ms
E:  Ad=82(I) Atr=02(Bulk) MxPS=  64 Ivl=0ms
E:  Ad=02(O) Atr=02(Bulk) MxPS=  64 Ivl=0ms
I:* If#= 1 Alt= 0 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
E:  Ad=83(I) Atr=01(Isoc) MxPS=   0 Ivl=1ms
E:  Ad=03(O) Atr=01(Isoc) MxPS=   0 Ivl=1ms
I:  If#= 1 Alt= 1 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
E:  Ad=83(I) Atr=01(Isoc) MxPS=   9 Ivl=1ms
E:  Ad=03(O) Atr=01(Isoc) MxPS=   9 Ivl=1ms
I:  If#= 1 Alt= 2 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
E:  Ad=83(I) Atr=01(Isoc) MxPS=  17 Ivl=1ms
E:  Ad=03(O) Atr=01(Isoc) MxPS=  17 Ivl=1ms
I:  If#= 1 Alt= 3 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
E:  Ad=83(I) Atr=01(Isoc) MxPS=  25 Ivl=1ms
E:  Ad=03(O) Atr=01(Isoc) MxPS=  25 Ivl=1ms
I:  If#= 1 Alt= 4 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
E:  Ad=83(I) Atr=01(Isoc) MxPS=  33 Ivl=1ms
E:  Ad=03(O) Atr=01(Isoc) MxPS=  33 Ivl=1ms
I:  If#= 1 Alt= 5 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
E:  Ad=83(I) Atr=01(Isoc) MxPS=  49 Ivl=1ms
E:  Ad=03(O) Atr=01(Isoc) MxPS=  49 Ivl=1ms
Comment 13 Younes Manton 2013-10-01 17:23:02 UTC
I have the same dongle with the same issue. It has CSR's USB vendor:product ID and Broadcom's HCI manufacturer ID, returns the same set of local commands, but doesn't actually support HCI_Delete_Stored_Link_Key. I worked around it with a quirk, but the above patch also works for me.
Comment 14 ALexandre Maloteaux 2013-10-21 20:17:20 UTC
Hi 

I have the same issue with a pretty similar device and  this patch fixed my issue too. Hope to see it merged soon.

0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode)
Comment 15 Götz 2014-01-02 21:16:23 UTC
Bug 60847 seems to be a duplicate of this bug.

What is preventing the patch to be merged?  Without this, the Bluetooth dongle doesn't work.
Comment 16 andreap 2014-01-14 09:38:49 UTC
Hi, 
I have this issue with my bluetooth dongle and 3.10.25 kernel realease..I installed bluez bluez-utils and bluetooth on my raspbian.
I see that the patch in attachment fix this issue but I don't find the files to modify bluetooth.h, hci_core.h, hci_core.c on my system. Where am I doing wrong? 

Thanks
Andrea
Comment 17 Oliver Frolovs 2014-01-14 11:13:10 UTC
This regression bug renders Raspberry Pi with Bluetooth devices unusable. Unless the patch makes it into Raspbian, many popular dongles won't work. Building a custom kernel on rPi is not an option for the most of us. Is there are a chance of the patch being accepted any time soon, please?
Comment 18 Alan 2014-01-14 12:29:51 UTC
Bugzilla is just tracking its existence - if you want it fixed then I would raise it with linux-bluetooth@vger.kernel.org
Comment 19 Oliver Frolovs 2014-01-14 12:40:00 UTC
I was writing under assumption that they have access to this information since the email address you provided is also in the "Assigned-To" field in the form above. So i thought they will be getting updates from this thread too.

(In reply to Alan from comment #18)
> Bugzilla is just tracking its existence - if you want it fixed then I would
> raise it with linux-bluetooth@vger.kernel.org
Comment 20 Szymon Janc 2014-01-14 20:16:40 UTC
Hi,

Isn't that already fixed in bluetooth-next?

https://git.kernel.org/cgit/linux/kernel/git/bluetooth/bluetooth-next.git/commit/?id=f9f462faa02777f497eb25255683a94e0c054de6

br
Szymon
Comment 21 andreap 2014-01-15 16:28:49 UTC
I don't have these files in my kernel...Then the only solution is build a custom kernel? 

thanks
Andrea
Comment 22 Šarūnas 2014-01-15 17:11:21 UTC
> andreap (Comment 21)
Yes, at lest for now.

> Szymon Janc (Comment 20)
Judging from information i googled, attached patch is original one and patch in https://git.kernel.org/cgit/linux/kernel/git/bluetooth/bluetooth-next.git/commit/?id=f9f462faa02777f497eb25255683a94e0c054de6 is modified "more elegant" one, however the elegant one does not work in all cases... at least not with Cambridge Silicon Radio chips.
Comment 23 Götz 2014-04-23 22:47:06 UTC
I don't know since when, but with linux 3.14.1, the bluetooth dongle works again (at least for me).

[   19.181078] Bluetooth: Core ver 2.18
[   19.181130] NET: Registered protocol family 31
[   19.181133] Bluetooth: HCI device and connection manager initialized
[   19.181152] Bluetooth: HCI socket layer initialized
[   19.181156] Bluetooth: L2CAP socket layer initialized
[   19.181182] Bluetooth: SCO socket layer initialized
[   19.211473] Bluetooth: BNEP (Ethernet Emulation) ver 1.3
[   19.211482] Bluetooth: BNEP filters: protocol multicast
[   19.211502] Bluetooth: BNEP socket layer initialized
[33132.996728] usb 3-1: new full-speed USB device number 3 using uhci_hcd
[33133.643196] usbcore: registered new interface driver btusb
[33135.084957] Bluetooth: RFCOMM TTY layer initialized
[33135.084982] Bluetooth: RFCOMM socket layer initialized
[33135.084998] Bluetooth: RFCOMM ver 1.11
Comment 24 Carlos 2014-12-04 18:42:33 UTC
I have the same problem running kernel 3.16. `uname -a`:

Linux deneb 3.16.0-25-generic #33-Ubuntu SMP Fri Nov 7 01:53:40 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux

I am using Linux Mint 17 64 bits with the described Bluetooth adapter. `lsusb`:

....
Bus 004 Device 002: ID 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode)
....

As you have said, there are two different patches (elegant and non-elegant). I see that my kernel (3.16.0-25) has the elegant patch, but not the non-elegant and I can confirm that my bluetooth doesn't work. I see that this non-elegant change hasn't been added to the new kernel versions. Is there any reason for that?

Thanks!

Carlos
Comment 25 Johan Hedberg 2014-12-12 09:30:23 UTC
(In reply to Carlos from comment #24)
> I have the same problem running kernel 3.16. `uname -a`:
> 
> Linux deneb 3.16.0-25-generic #33-Ubuntu SMP Fri Nov 7 01:53:40 UTC 2014
> x86_64 x86_64 x86_64 GNU/Linux
> 
> I am using Linux Mint 17 64 bits with the described Bluetooth adapter.
> `lsusb`:
> 
> ....
> Bus 004 Device 002: ID 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth
> Dongle (HCI mode)

Could you also provide the HCI log of the failure? If it's this same HCI command that's failing then we'd just need to find a way to set the new quirk flag for your device.
Comment 26 Carlos 2014-12-31 13:16:40 UTC
Created attachment 162171 [details]
'hcidump -X' while executing 'hciconfig hci0 up' for carlosgarciaq
Comment 27 Carlos 2014-12-31 13:23:11 UTC
Created attachment 162181 [details]
contents of /sys/kernel/debug/usb/devices for carlosgarciaq
Comment 28 Carlos 2014-12-31 13:25:53 UTC
Yeap, this is the exit of 'hcidump -X' while I try to pair with a bluetooth headset using blueman-manager:


HCI sniffer - Bluetooth packet analyzer ver 2.5
device: hci0 snap_len: 1500 filter: 0xffffffffffffffff
> HCI Event: Command Status (0x0f) plen 4
    Create Connection (0x01|0x0005) status 0x00 ncmd 1
> HCI Event: Connect Complete (0x03) plen 11
    status 0x00 handle 0 bdaddr 00:1E:3D:F1:4D:75 type ACL encrypt 0x00
> HCI Event: Command Status (0x0f) plen 4
    Read Remote Supported Features (0x01|0x001b) status 0x00 ncmd 1
> HCI Event: Read Remote Supported Features (0x0b) plen 11
    status 0x00 handle 0
    Features: 0xbf 0x2f 0x83 0xfa 0x88 0x39 0x00 0x80
> HCI Event: Disconn Complete (0x05) plen 4
    status 0x00 handle 0 reason 0x08
    Reason: Connection Timeout
> HCI Event: Command Complete (0x0e) plen 4
    Unknown (0x00|0x0020) ncmd 1
    0000: 00 

In my first attachement, you can find the 'hcidump -X' while doing:

sudo hciconfig hci0 down
sudo hciconfig hci0 up

In my second attachment, you'll find the contents of 

/sys/kernel/debug/usb/devices
 
Thanks! Let me know if this is not what you wanted.

Regards,

Carlos
Comment 29 raestloz 2019-06-24 14:43:50 UTC
I'm having the same problem here, kernel 4.20.17. 
btmon shows error at Delete Stored Link Key with hciconfig hci0 up, unsupported feature

based on https://bugzilla.kernel.org/show_bug.cgi?id=103451 it seems that my dongle is also a fake (mismatch between bcdDevice and LMP subversion), but with bcdDevice 88.91, which isn't covered by the kernel (currently covers 1.00 and 1.34)
Comment 30 raestloz 2019-06-24 17:12:30 UTC
Well, I tried to build a custom kernel (4.19.55) with my bcdDevice and LMP subversion included in the btusb.c file. 

btmon shows promise, hcitool dev actually shows a device, but dmesg | grep tooth reveals that I'm stuck at HCI_OP_READ_LOCAL_VERSION, apparently it times out, reading hci0: command 0x1001 tx timeout and CSR: Local version failed (-110)
Comment 31 raestloz 2019-06-25 16:15:17 UTC
After resetting btusb driver with sudo modprobe -r btusb and sudo modprobe btusb, I can confirm that the bluetooth dongle is working

What I had to do was add bcdDevice 0x8891 and lmp_subver 0x0811 to the quirk related functions. Inquiry command 0x1001 still timeouts, which necessitates the forced driver load, but once it loads it works
Comment 32 barfin 2019-08-01 01:56:09 UTC
(In reply to raestloz from comment #31)
> After resetting btusb driver with sudo modprobe -r btusb and sudo modprobe
> btusb, I can confirm that the bluetooth dongle is working
> 
> What I had to do was add bcdDevice 0x8891 and lmp_subver 0x0811 to the quirk
> related functions. Inquiry command 0x1001 still timeouts, which necessitates
> the forced driver load, but once it loads it works

i have this problem in kernel 5.2.5 :(
Comment 33 Arthur Fragoso 2019-08-15 05:54:09 UTC
Same here:

0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode).

But the product name is: JL AC69 A10

I tested in Linux 5.2.8-1-MANJARO, and the 4.19.57-1-MANJARO.

The problems are:

- After booting up the OS with the BT Dongle in, if I try to 'sudo bluetoothctl power on', it fails and 'btmon' returns this:


@ MGMT Command: Set Powered (0x0005) plen 1                                              {0x0001} [hci0] 34.681295
        Powered: Enabled (0x01)
= Open Index: 00:1A:7D:DA:71:10                                                                   [hci0] 34.743182
< HCI Command: Reset (0x03|0x0003) plen 0                                                      #2 [hci0] 34.743412
= Close Index: 00:1A:7D:DA:71:10                                                                  [hci0] 44.768939
@ MGMT Event: Command Status (0x0002) plen 3                                             {0x0001} [hci0] 44.772086
      Set Powered (0x0005)
        Status: Failed (0x03)
= bluetoothd: Failed to set mode: Failed (0x03)                                                   [hci0] 44.790305


If I unplug and plug it back, the power on command will work fine. If it is set to AutoEnable on /etc/bluetooth/main.conf, it will also be powered up after plugin it back.
If I power off, it will only work again if I unplug and plug it back. So it's not a big problem.


The big deal is that I can't make it to scan:

$ sudo bluetoothctl scan on

bluetoothd[2358]: src/adapter.c:start_discovery() sender :1.268
bluetoothd[2358]: src/adapter.c:update_discovery_filter() 
bluetoothd[2358]: src/adapter.c:discovery_filter_to_mgmt_cp() 
bluetoothd[2358]: src/adapter.c:trigger_start_discovery() 
bluetoothd[2358]: src/adapter.c:cancel_passive_scanning() 
bluetoothd[2358]: src/adapter.c:start_discovery_timeout() 
bluetoothd[2358]: src/adapter.c:start_discovery_timeout() adapter->current_discovery_filter == 0
bluetoothd[2358]: src/adapter.c:start_discovery_complete() status 0x03


@ MGMT Command: Start Discovery (0x0023) plen 1           {0x0001} [hci0] 37.252439
        Address type: 0x07
          BR/EDR
          LE Public
          LE Random
< HCI Command: LE Set Random Address (0x08|0x0005) plen 6      #81 [hci0] 37.252583
        Address: 06:4D:6A:64:58:36 (Non-Resolvable)
< HCI Command: LE Set Scan Parameters (0x08|0x000b) plen 7     #82 [hci0] 39.423752
        Type: Active (0x01)
        Interval: 22.500 msec (0x0024)
        Window: 11.250 msec (0x0012)
        Own address type: Random (0x01)
        Filter policy: Accept all advertisement (0x00)
@ MGMT Event: Command Complete (0x0001) plen 4            {0x0001} [hci0] 39.423747
      Start Discovery (0x0023) plen 1
        Status: Failed (0x03)
        Address type: 0x07
          BR/EDR
          LE Public
          LE Random
< HCI Command: LE Set Scan Enable (0x08|0x000c) plen 2         #83 [hci0] 41.557120
        Scanning: Enabled (0x01)
        Filter duplicates: Enabled (0x01)
< HCI Command: Inquiry (0x01|0x0001) plen 5                    #84 [hci0] 43.690407
        Access code: 0x9e8b33 (General Inquiry)
        Length: 10.24s (0x08)
        Num responses: 0


I will try to apply the patch and compile the kernel to see if I can get it to work. It's crazy to think this thread started in November 2013, and currently there are many of those CSR dongles being sold.
Comment 34 Sergey Kondakov 2019-08-17 04:52:51 UTC
(In reply to Arthur Fragoso from comment #33)
> Same here:
> 
> 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode).
> 
> But the product name is: JL AC69 A10
> 
> I tested in Linux 5.2.8-1-MANJARO, and the 4.19.57-1-MANJARO.
> 
> The problems are:
> 
> - After booting up the OS with the BT Dongle in, if I try to 'sudo
> bluetoothctl power on', it fails and 'btmon' returns this:
> ...
> I will try to apply the patch and compile the kernel to see if I can get it
> to work. It's crazy to think this thread started in November 2013, and
> currently there are many of those CSR dongles being sold.

At least it somehow works for you ! I just recently got one in attempt to "upgrade" from 2.1 to 4.0 (also 0a12:0001) and have a spare for my Sony DualShocks 3&4. It works under Windows but I don't actually remember if I managed to successfully test it under Linux. Under kernel 5.2.8 bluez acts if it wasn't there but in reality it fails with this ridiculous "Delete Stored Link Key: Unsupported Feature or Parameter Value". btusb does not have 'quirks' option and adding 'quirks=0a12:0001:HCI_QUIRK_BROKEN_STORED_LINK_KEY' to usbcore doesn't seem to be doing anything.

But neither you or me are going to use that patch because BT stack was completely rewritten and its logic is completely different now. If developers don't want to ignore failures to initiate such "important" optional functions and enable quirks automatically on pre-init sanity check then at least someone could have said somewhere how to enable the damn things at runtime without hard-coding IDs of your random noname dongles into kernel's code…

How the hell people are using those BT quirks ?
Comment 35 Arthur Fragoso 2019-08-17 22:42:04 UTC
The code for these devices are bellow.

You are right, the patch is way too old for this.

I will probably buy a different device while we wait for someone with more knowledge to fix this.


/linux/drivers/bluetooth/btusb.c

kenel 5.2.8

static const struct usb_device_id blacklist_table[] = {
	/* CSR BlueCore devices */
	{ USB_DEVICE(0x0a12, 0x0001), .driver_info = BTUSB_CSR },


static int btusb_setup_csr(struct hci_dev *hdev)
{
	struct hci_rp_read_local_version *rp;
	struct sk_buff *skb;

	BT_DBG("%s", hdev->name);

	skb = __hci_cmd_sync(hdev, HCI_OP_READ_LOCAL_VERSION, 0, NULL,
			     HCI_INIT_TIMEOUT);
	if (IS_ERR(skb)) {
		int err = PTR_ERR(skb);
		bt_dev_err(hdev, "CSR: Local version failed (%d)", err);
		return err;
	}

	if (skb->len != sizeof(struct hci_rp_read_local_version)) {
		bt_dev_err(hdev, "CSR: Local version length mismatch");
		kfree_skb(skb);
		return -EIO;
	}

	rp = (struct hci_rp_read_local_version *)skb->data;

	/* Detect controllers which aren't real CSR ones. */
	if (le16_to_cpu(rp->manufacturer) != 10 ||
	    le16_to_cpu(rp->lmp_subver) == 0x0c5c) {
		/* Clear the reset quirk since this is not an actual
		 * early Bluetooth 1.1 device from CSR.
		 */
		clear_bit(HCI_QUIRK_RESET_ON_CLOSE, &hdev->quirks);

		/* These fake CSR controllers have all a broken
		 * stored link key handling and so just disable it.
		 */
		set_bit(HCI_QUIRK_BROKEN_STORED_LINK_KEY, &hdev->quirks);
	}

	kfree_skb(skb);

	return 0;
}
Comment 36 Sergey Kondakov 2019-08-18 01:45:25 UTC
(In reply to Arthur Fragoso from comment #35)
> The code for these devices are bellow.
> 
> You are right, the patch is way too old for this.
> 
> I will probably buy a different device while we wait for someone with more
> knowledge to fix this.
>...
>       /* Detect controllers which aren't real CSR ones. */
>       if (le16_to_cpu(rp->manufacturer) != 10 ||
>           le16_to_cpu(rp->lmp_subver) == 0x0c5c) {
>...

Luckily, I still have my old 2.1 dongle.

It seems that this check is too specific, mine has 0x811 subversion but the real problem is idiotic notion of holding all BT devices to some imaginary standard of compliant vendor-approved behaviour and creating blacklists for actual devices only if someone from BT maintainers have heard something about some problems from someone. No normal user is going to write them letter with complains, let alone patches for hard-coded workarounds to artificial problems. They need to redo the whole initialization logic to be more generic or at least allow passing quirk-flags at runtime.

There is and will be myriad of devices with random IDs and crappy firmwares, sometimes even circuitry, and kernel MUST make all that crap work at least partially, not backdown on smallest of mislabelings. It is saddening to see only recently created built-in Windows 10 BT stack to behave more sanely than bluez.
Comment 37 Sergey Kondakov 2019-08-20 04:49:46 UTC
Created attachment 284525 [details]
patches.hsf/btusb-Enablement-of-HCI_QUIRK_BROKEN_STORED_LINK_KEY-quirk.patch

Made the patch based on raestloz's comments for our bcdDevice=88.91/LMP_sv=0x811 CSR 4.0 device to enable crutches that make the stack eat it up.
Comment 38 Fernando Carvalho 2019-09-11 18:20:08 UTC
Hi,

I merged a few fixes and quirks (including some from this thread) and sent them to linux-bluetooth@vger.kernel.org :

https://www.spinics.net/lists/linux-bluetooth/msg81304.html

Feel free to test it if you have a simillar CSR device (ATTRS{idVendor}=="0a12", ATTRS{idProduct}=="0001", ATTRS{bcdDevice}=="8891").

It's not perfect, but it allows the use of the adapter and connect a headset (with some connect errors/retries now and then).

Regards.
Comment 39 Sergey Kondakov 2019-09-16 07:30:54 UTC
(In reply to Fernando Carvalho from comment #38)
> Hi,
> 
> I merged a few fixes and quirks (including some from this thread) and sent
> them to linux-bluetooth@vger.kernel.org :
> 
> https://www.spinics.net/lists/linux-bluetooth/msg81304.html
> 
> Feel free to test it if you have a simillar CSR device
> (ATTRS{idVendor}=="0a12", ATTRS{idProduct}=="0001",
> ATTRS{bcdDevice}=="8891").
> 
> It's not perfect, but it allows the use of the adapter and connect a headset
> (with some connect errors/retries now and then).
> 
> Regards.

Great work ! Unlike the actual maintainers who don't even bother to read bug-tracker anymore or use ready fixes for their code that they themselves don't care about, it seems.

However, I doubt that even a scrupulous maintainer would ever allow that many dedicated workaround options instead of one, in style of usbcore, usbhid and snd-hda-intel even though they all use inconsistent schemes of their own. A more reasonable approach would be passing model=vendorID:productID:<"model"> space-separated (to allow several dongles) override pairs with each having a bunch of quirk-hacks associated (as snd-hda-intel) on it, quirks=vendorID:productID:<comma separated list of all quirks> space-separated pairs (as usbcore/usbhid) or both. But that means doing even more work that can be ignored or offhandedly dismissed for code that was written without enough foresight for it in the first place.
Comment 40 raestloz 2019-09-16 11:12:25 UTC
Windows 10 doesn't exhibit the same issues with the exact same dongle, so I believe what they do is ignore the feature issues presented by dongles outright

I personally don't think it's good to do that, there's a reason standards exist, so perhaps a better way is to move bluetooth driver out of kernel so fixing the driver to account for device quirks doesn't mean recompiling the entire kernel?
Comment 41 Fernando Carvalho 2019-10-13 17:25:06 UTC
Created attachment 285489 [details]
btusb.c: Module parameter to control multiple fixup

(In reply to Sergey Kondakov from comment #39)
> ...
> their own. A more reasonable approach would be passing
> model=vendorID:productID:<"model"> space-separated (to allow several
> dongles) override pairs with each having a bunch of quirk-hacks associated
> (as snd-hda-intel) on it, quirks=vendorID:productID:<comma separated list of
> all quirks> space-separated pairs (as usbcore/usbhid) or both.
> ...

Hi,

Yes, the feedback I had from the list was similar (my bad for following after the existing code :).
Your suggestion was the most constructive though, so I implemented it that way.
I'm uploading the patch that I'm using to play around with the fixups.
I'm still trying to find out the best combination for my adapter and it may be useful to others in the same quest.

PS: The syntax is a bit different from above:
Syntax: fixups=<force_hex>[:<disable_hex>[:<vendor_hex>[:<model_hex>[:<bcdDevice>]]]]"
PPS: Maybe I'll try a new upstream patch if/when I solve some instability it still has.

Thanks.
Comment 42 GABE 2019-10-15 21:00:02 UTC
I'm also having this problem with a generic chinese USB dongle. This specific model is the only BT 4.0 dongle available in my city, found at many stores.


```
@lsusb -v
  ...
  idVendor           0x0a12 Cambridge Silicon Radio, Ltd
  idProduct          0x0001 Bluetooth Dongle (HCI mode)
  bcdDevice           25.20
  ...
```


Everything works, execept that when I try to connect to the headset after pairing, bluetoothd hangs indefinitely, and I'm then unable to `modprobe -r btusb` because the device is now busy. Pulseaudio will never list that audio device.

I applied both patches shown here and nothing changes, except btusb crashes into a neat coredump which I can see in dmesg.
I would like to hardcode my `bcdDevice` to that patched `if` conditional but how to convert `bcdDevice=25.20` into something like `0x0000`?


$uname -r
5.3.0-arch1-1-ARCH
Comment 43 takacsk2004 2019-11-03 09:12:39 UTC
(In reply to Fernando Carvalho from comment #38)
> Hi,
> 
> I merged a few fixes and quirks (including some from this thread) and sent
> them to linux-bluetooth@vger.kernel.org :
> 
> https://www.spinics.net/lists/linux-bluetooth/msg81304.html
> 
> Feel free to test it if you have a simillar CSR device
> (ATTRS{idVendor}=="0a12", ATTRS{idProduct}=="0001",
> ATTRS{bcdDevice}=="8891").
> 
> It's not perfect, but it allows the use of the adapter and connect a headset
> (with some connect errors/retries now and then).
> 
> Regards.

I actually have two USB dongles with idVendor "0a12" and idProduct "0001". An old one purchased from webshop and a brand new one purchased in a local store with 5 years warranty. The old one does not work (as described by others), but the new one works fine with 5.3.8-arch1-1 kernel. The one that works has bcdDevice 88.91, the old one has 19.15. I don't know if your patch is already in the kernel, or I am just lucky.
Comment 44 Mostafa 2019-12-06 19:36:03 UTC
(In reply to Fernando Carvalho from comment #41)
> Created attachment 285489 [details]
> btusb.c: Module parameter to control multiple fixup
> 
> (In reply to Sergey Kondakov from comment #39)
> > ...
> > their own. A more reasonable approach would be passing
> > model=vendorID:productID:<"model"> space-separated (to allow several
> > dongles) override pairs with each having a bunch of quirk-hacks associated
> > (as snd-hda-intel) on it, quirks=vendorID:productID:<comma separated list
> of
> > all quirks> space-separated pairs (as usbcore/usbhid) or both.
> > ...
> 
> Hi,
> 
> Yes, the feedback I had from the list was similar (my bad for following
> after the existing code :).
> Your suggestion was the most constructive though, so I implemented it that
> way.
> I'm uploading the patch that I'm using to play around with the fixups.
> I'm still trying to find out the best combination for my adapter and it may
> be useful to others in the same quest.
> 
> PS: The syntax is a bit different from above:
> Syntax:
> fixups=<force_hex>[:<disable_hex>[:<vendor_hex>[:<model_hex>[:
> <bcdDevice>]]]]"
> PPS: Maybe I'll try a new upstream patch if/when I solve some instability it
> still has.
> 
> Thanks.

I've got the same fake csr device : 

```
@lsusb -v
  ...
  idVendor           0x0a12 Cambridge Silicon Radio, Ltd
  idProduct          0x0001 Bluetooth Dongle (HCI mode)
  bcdDevice           88.91
  ...
@uname -r
5.3.0-24-generic
```

Is there any newer patch available for this bug?
Comment 45 Mitai 2019-12-10 04:54:40 UTC
debian 10 (gnome)
Bus 001 Device 005: ID 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode) - not work, how to fix?
Comment 46 MasterCATZ 2020-01-17 06:29:59 UTC
same boat have not used my Bluetooth dongle for years and need them again 
and can not get working Ubuntu 19 


hciconfig
hci0:	Type: Primary  Bus: USB
	BD Address: 00:11:67:55:8F:C3  ACL MTU: 672:3  SCO MTU: 48:1
	DOWN 
	RX bytes:918 acl:0 sco:0 events:32 errors:0
	TX bytes:112 acl:0 sco:0 commands:32 errors:2

usb 5-1: USB disconnect, device number 2
[176552.338881] usb 5-1: new full-speed USB device number 4 using xhci_hcd
[176552.494463] usb 5-1: config 1 interface 1 altsetting 0 endpoint 0x83 has wMaxPacketSize 0, skipping
[176552.494466] usb 5-1: config 1 interface 1 altsetting 0 endpoint 0x3 has wMaxPacketSize 0, skipping
[176552.503454] usb 5-1: New USB device found, idVendor=0a12, idProduct=0001, bcdDevice= 1.34
[176552.503456] usb 5-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[176552.503458] usb 5-1: Product: USB demo board
[176552.503458] usb 5-1: Manufacturer: Conwise Technology
[176847.054212] usb 5-1: USB disconnect, device number 4
[176849.007636] usb 5-1: new full-speed USB device number 5 using xhci_hcd
[176849.167625] usb 5-1: config 1 interface 1 altsetting 0 endpoint 0x83 has wMaxPacketSize 0, skipping
[176849.167627] usb 5-1: config 1 interface 1 altsetting 0 endpoint 0x3 has wMaxPacketSize 0, skipping
[176849.176617] usb 5-1: New USB device found, idVendor=0a12, idProduct=0001, bcdDevice= 1.34
[176849.176618] usb 5-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[176849.176619] usb 5-1: Product: USB demo board
[176849.176620] usb 5-1: Manufacturer: Conwise Technology
[177010.700332] NET: Registered protocol family 38
[177027.690747] debugfs: File 'dut_mode' in directory 'hci0' already present!
[177111.033769] usbcore: deregistering interface driver btusb
[177115.941071] usbcore: registered new interface driver btusb


sudo btmon
Bluetooth monitor ver 5.50
= Note: Linux version 5.4.11-050411-generic (x86_64)                                                                        0.303554
= Note: Bluetooth subsystem version 2.22                                                                                    0.303557
= New Index: 00:11:67:55:8F:C3 (Primary,USB,hci0)                                                                    [hci0] 0.303588
@ MGMT Open: bluetoothd (privileged) version 1.14                                                                  {0x0001} 0.303589
@ MGMT Open: btmon (privileged) version 1.14                                                                       {0x0002} 0.303655
@ RAW Open: hciconfig (privileged) version 2.22                                                                   {0x0003} 17.071322
= Open Index: 00:11:67:55:8F:C3                                                                                     [hci0] 17.186259
= Index Info: 00:11:67:55:8F:C3 (Cambridge Silicon Radio)                                                           [hci0] 17.186268
< HCI Command: Read Local Version Information (0x04|0x0001) plen 0                                               #1 [hci0] 17.186284
> HCI Event: Command Complete (0x0e) plen 12                                   
>                                  #2 [hci0] 17.189217
      Read Local Version Information (0x04|0x0001) ncmd 1
        Status: Success (0x00)
        HCI version: Bluetooth 2.0 (0x03) - Revision 500 (0x01f4)
        LMP version: Bluetooth 2.0 (0x03) - Subversion 500 (0x01f4)
        Manufacturer: Cambridge Silicon Radio (10)
< HCI Command: Reset (0x03|0x0003) plen 0                                                                        #3 [hci0] 17.189246
> HCI Event: Command Complete (0x0e) plen 4                                    
>                                  #4 [hci0] 17.265218
      Reset (0x03|0x0003) ncmd 1
        Status: Success (0x00)
< HCI Command: Read Local Supported Features (0x04|0x0003) plen 0                                                #5 [hci0] 17.265235
> HCI Event: Command Complete (0x0e) plen 12                                   
>                                  #6 [hci0] 17.267216
      Read Local Supported Features (0x04|0x0003) ncmd 1
        Status: Success (0x00)
        Features: 0xff 0x3e 0x05 0x30 0x18 0x18 0x00 0x00
          3 slot packets
          5 slot packets
          Encryption
          Slot offset
          Timing accuracy
          Role switch
          Hold mode
          Sniff mode
          Power control requests
          Channel quality driven data rate (CQDDR)
          SCO link
          HV2 packets
          HV3 packets
          CVSD synchronous data
          Power control
          Interlaced inquiry scan
          Interlaced page scan
          AFH capable slave
          AFH classification slave
          AFH capable master
          AFH classification master
< HCI Command: Read Local Version Information (0x04|0x0001) plen 0                                               #7 [hci0] 17.267230
> HCI Event: Command Complete (0x0e) plen 12                                   
>                                  #8 [hci0] 17.270215
      Read Local Version Information (0x04|0x0001) ncmd 1
        Status: Success (0x00)
        HCI version: Bluetooth 2.0 (0x03) - Revision 500 (0x01f4)
        LMP version: Bluetooth 2.0 (0x03) - Subversion 500 (0x01f4)
        Manufacturer: Cambridge Silicon Radio (10)
< HCI Command: Read BD ADDR (0x04|0x0009) plen 0                                                                 #9 [hci0] 17.270232
> HCI Event: Command Complete (0x0e) plen 10                                   
>                                 #10 [hci0] 17.276215
      Read BD ADDR (0x04|0x0009) ncmd 1
        Status: Success (0x00)
        Address: 00:11:67:55:8F:C3 (Integrated System Solution Corp.)
< HCI Command: Read Buffer Size (0x04|0x0005) plen 0                                                            #11 [hci0] 17.276270
> HCI Event: Command Complete (0x0e) plen 11                                   
>                                 #12 [hci0] 17.278218
      Read Buffer Size (0x04|0x0005) ncmd 1
        Status: Success (0x00)
        ACL MTU: 672  ACL max packet: 3
        SCO MTU: 48   SCO max packet: 1
< HCI Command: Read Class of Device (0x03|0x0023) plen 0                                                        #13 [hci0] 17.278240
> HCI Event: Command Complete (0x0e) plen 7                                    
>                                 #14 [hci0] 17.282211
      Read Class of Device (0x03|0x0023) ncmd 1
        Status: Success (0x00)
        Class: 0x120104
          Major class: Computer (desktop, notebook, PDA, organizers)
          Minor class: Desktop workstation
          Networking (LAN, Ad hoc)
          Object Transfer (v-Inbox, v-Folder)
< HCI Command: Read Local Name (0x03|0x0014) plen 0                                                             #15 [hci0] 17.282282
> HCI Event: Command Complete (0x0e) plen 252                                  
>                                 #16 [hci0] 17.305215
      Read Local Name (0x03|0x0014) ncmd 1
        Status: Success (0x00)
        Name: POV-ION
< HCI Command: Read Voice Setting (0x03|0x0025) plen 0                                                          #17 [hci0] 17.305262
> HCI Event: Command Complete (0x0e) plen 6                                    
>                                 #18 [hci0] 17.307215
      Read Voice Setting (0x03|0x0025) ncmd 1
        Status: Success (0x00)
        Setting: 0x0060
          Input Coding: Linear
          Input Data Format: 2's complement
          Input Sample Size: 16-bit
          # of bits padding at MSB: 0
          Air Coding Format: CVSD
< HCI Command: Read Number of Supported IAC (0x03|0x0038) plen 0                                                #19 [hci0] 17.307235
> HCI Event: Command Complete (0x0e) plen 5                                    
>                                 #20 [hci0] 17.311210
      Read Number of Supported IAC (0x03|0x0038) ncmd 1
        Status: Success (0x00)
        Number of IAC: 2
< HCI Command: Read Current IAC LAP (0x03|0x0039) plen 0                                                        #21 [hci0] 17.311230
> HCI Event: Command Complete (0x0e) plen 8                                    
>                                 #22 [hci0] 17.313214
      Read Current IAC LAP (0x03|0x0039) ncmd 1
        Status: Success (0x00)
        Number of IAC: 1
        Access code: 0x9e8b33 (General Inquiry)
< HCI Command: Set Event Filter (0x03|0x0005) plen 1                                                            #23 [hci0] 17.313230
        Type: Clear All Filters (0x00)
> HCI Event: Command Complete (0x0e) plen 4                                    
>                                 #24 [hci0] 17.316211
      Set Event Filter (0x03|0x0005) ncmd 1
        Status: Success (0x00)
< HCI Command: Write Connection Accept Timeout (0x03|0x0016) plen 2                                             #25 [hci0] 17.316223
        Timeout: 20000.000 msec (0x7d00)
> HCI Event: Command Complete (0x0e) plen 4                                    
>                                 #26 [hci0] 17.319210
      Write Connection Accept Timeout (0x03|0x0016) ncmd 1
        Status: Success (0x00)
< HCI Command: Read Local Supported Commands (0x04|0x0002) plen 0                                               #27 [hci0] 17.319221
> HCI Event: Command Complete (0x0e) plen 68                                   
>                                 #28 [hci0] 17.327209
      Read Local Supported Commands (0x04|0x0002) ncmd 1
        Status: Success (0x00)
        Commands: 109 entries
          Inquiry (Octet 0 - Bit 0)
          Inquiry Cancel (Octet 0 - Bit 1)
          Periodic Inquiry Mode (Octet 0 - Bit 2)
          Exit Periodic Inquiry Mode (Octet 0 - Bit 3)
          Create Connection (Octet 0 - Bit 4)
          Disconnect (Octet 0 - Bit 5)
          Add SCO Connection (Octet 0 - Bit 6)
          Accept Connection Request (Octet 1 - Bit 0)
          Reject Connection Request (Octet 1 - Bit 1)
          Link Key Request Reply (Octet 1 - Bit 2)
          Link Key Request Negative Reply (Octet 1 - Bit 3)
          PIN Code Request Reply (Octet 1 - Bit 4)
          PIN Code Request Negative Reply (Octet 1 - Bit 5)
          Change Connection Packet Type (Octet 1 - Bit 6)
          Authentication Requested (Octet 1 - Bit 7)
          Set Connection Encryption (Octet 2 - Bit 0)
          Change Connection Link Key (Octet 2 - Bit 1)
          Master Link Key (Octet 2 - Bit 2)
          Remote Name Request (Octet 2 - Bit 3)
          Read Remote Supported Features (Octet 2 - Bit 5)
          Read Remote Extended Features (Octet 2 - Bit 6)
          Read Remote Version Information (Octet 2 - Bit 7)
          Read Clock Offset (Octet 3 - Bit 0)
          Read LMP Handle (Octet 3 - Bit 1)
          Hold Mode (Octet 4 - Bit 1)
          Sniff Mode (Octet 4 - Bit 2)
          Exit Sniff Mode (Octet 4 - Bit 3)
          QoS Setup (Octet 4 - Bit 6)
          Role Discovery (Octet 4 - Bit 7)
          Switch Role (Octet 5 - Bit 0)
          Read Link Policy Settings (Octet 5 - Bit 1)
          Write Link Policy Settings (Octet 5 - Bit 2)
          Read Default Link Policy Settings (Octet 5 - Bit 3)
          Write Default Link Policy Settings (Octet 5 - Bit 4)
          Set Event Mask (Octet 5 - Bit 6)
          Reset (Octet 5 - Bit 7)
          Set Event Filter (Octet 6 - Bit 0)
          Flush (Octet 6 - Bit 1)
          Read PIN Type (Octet 6 - Bit 2)
          Write PIN Type (Octet 6 - Bit 3)
          Create New Unit Key (Octet 6 - Bit 4)
          Read Stored Link Key (Octet 6 - Bit 5)
          Write Stored Link Key (Octet 6 - Bit 6)
          Delete Stored Link Key (Octet 6 - Bit 7)
          Write Local Name (Octet 7 - Bit 0)
          Read Local Name (Octet 7 - Bit 1)
          Read Connection Accept Timeout (Octet 7 - Bit 2)
          Write Connection Accept Timeout (Octet 7 - Bit 3)
          Read Page Timeout (Octet 7 - Bit 4)
          Write Page Timeout (Octet 7 - Bit 5)
          Read Scan Enable (Octet 7 - Bit 6)
          Write Scan Enable (Octet 7 - Bit 7)
          Read Page Scan Activity (Octet 8 - Bit 0)
          Write Page Scan Activity (Octet 8 - Bit 1)
          Read Inquiry Scan Activity (Octet 8 - Bit 2)
          Write Inquiry Scan Activity (Octet 8 - Bit 3)
          Read Authentication Enable (Octet 8 - Bit 4)
          Write Authentication Enable (Octet 8 - Bit 5)
          Read Encryption Mode (Octet 8 - Bit 6)
          Write Encryption Mode (Octet 8 - Bit 7)
          Read Class of Device (Octet 9 - Bit 0)
          Write Class of Device (Octet 9 - Bit 1)
          Read Voice Setting (Octet 9 - Bit 2)
          Write Voice Setting (Octet 9 - Bit 3)
          Read Automatic Flush Timeout (Octet 9 - Bit 4)
          Write Automatic Flush Timeout (Octet 9 - Bit 5)
          Read Num Broadcast Retransmissions (Octet 9 - Bit 6)
          Write Num Broadcast Retransmissions (Octet 9 - Bit 7)
          Read Hold Mode Activity (Octet 10 - Bit 0)
          Write Hold Mode Activity (Octet 10 - Bit 1)
          Read Transmit Power Level (Octet 10 - Bit 2)
          Read Sync Flow Control Enable (Octet 10 - Bit 3)
          Write Sync Flow Control Enable (Octet 10 - Bit 4)
          Set Controller To Host Flow Control (Octet 10 - Bit 5)
          Host Buffer Size (Octet 10 - Bit 6)
          Host Number of Completed Packets (Octet 10 - Bit 7)
          Read Link Supervision Timeout (Octet 11 - Bit 0)
          Write Link Supervision Timeout (Octet 11 - Bit 1)
          Read Number of Supported IAC (Octet 11 - Bit 2)
          Read Current IAC LAP (Octet 11 - Bit 3)
          Write Current IAC LAP (Octet 11 - Bit 4)
          Set AFH Host Channel Classification (Octet 12 - Bit 1)
          Read Inquiry Scan Type (Octet 12 - Bit 4)
          Write Inquiry Scan Type (Octet 12 - Bit 5)
          Read Inquiry Mode (Octet 12 - Bit 6)
          Write Inquiry Mode (Octet 12 - Bit 7)
          Read Page Scan Type (Octet 13 - Bit 0)
          Write Page Scan Type (Octet 13 - Bit 1)
          Read AFH Channel Assessment Mode (Octet 13 - Bit 2)
          Write AFH Channel Assessment Mode (Octet 13 - Bit 3)
          Read Local Version Information (Octet 14 - Bit 3)
          Read Local Supported Commands (Octet 14 - Bit 4)
          Read Local Supported Features (Octet 14 - Bit 5)
          Read Local Extended Features (Octet 14 - Bit 6)
          Read Buffer Size (Octet 14 - Bit 7)
          Read Country Code (Octet 15 - Bit 0)
          Read BD ADDR (Octet 15 - Bit 1)
          Read Failed Contact Counter (Octet 15 - Bit 2)
          Reset Failed Contact Counter (Octet 15 - Bit 3)
          Read Link Quality (Octet 15 - Bit 4)
          Read RSSI (Octet 15 - Bit 5)
          Read AFH Channel Map (Octet 15 - Bit 6)
          Read Clock (Octet 15 - Bit 7)
          Read Loopback Mode (Octet 16 - Bit 0)
          Write Loopback Mode (Octet 16 - Bit 1)
          Enable Device Under Test Mode (Octet 16 - Bit 2)
          Setup Synchronous Connection (Octet 16 - Bit 3)
          Accept Synchronous Connection Request (Octet 16 - Bit 4)
          Reject Synchronous Connection Request (Octet 16 - Bit 5)
< HCI Command: Set Event Mask (0x03|0x0001) plen 8                                                              #29 [hci0] 17.327247
        Mask: 0x00000001fffbffff
          Inquiry Complete
          Inquiry Result
          Connection Complete
          Connection Request
          Disconnection Complete
          Authentication Complete
          Remote Name Request Complete
          Encryption Change
          Change Connection Link Key Complete
          Master Link Key Complete
          Read Remote Supported Features Complete
          Read Remote Version Information Complete
          QoS Setup Complete
          Command Complete
          Command Status
          Hardware Error
          Flush Occurred
          Role Change
          Mode Change
          Return Link Keys
          PIN Code Request
          Link Key Request
          Link Key Notification
          Loopback Command
          Data Buffer Overflow
          Max Slots Change
          Read Clock Offset Complete
          Connection Packet Type Changed
          QoS Violation
          Page Scan Mode Change
          Page Scan Repetition Mode Change
          Flow Specification Complete
> HCI Event: Command Complete (0x0e) plen 4                                    
>                                 #30 [hci0] 17.329211
      Set Event Mask (0x03|0x0001) ncmd 1
        Status: Success (0x00)
< HCI Command: Read Stored Link Key (0x03|0x000d) plen 7                                                        #31 [hci0] 17.329225
        Address: 00:00:00:00:00:00 (OUI 00-00-00)
        Read all: 0x01
> HCI Event: Command Complete (0x0e) plen 8                                    
>                                 #32 [hci0] 17.332214

@lsusb -v

Bus 005 Device 005: ID 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode)
Couldn't open device, some information will be missing
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               1.10
  bDeviceClass          224 Wireless
  bDeviceSubClass         1 Radio Frequency
  bDeviceProtocol         1 Bluetooth
  bMaxPacketSize0        16
  idVendor           0x0a12 Cambridge Silicon Radio, Ltd
  idProduct          0x0001 Bluetooth Dongle (HCI mode)
  bcdDevice            1.34
  iManufacturer           1 
  iProduct                2 
  iSerial                 0 
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength       0x006c
    bNumInterfaces          2
    bConfigurationValue     1
    iConfiguration          0 
    bmAttributes         0x80
      (Bus Powered)
    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


      Read Stored Link Key (0x03|0x000d) ncmd 1
        Status: Unsupported Feature or Parameter Value (0x11)
        Max num keys: 0
        Num keys: 0
= Close Index: 00:11:67:55:8F:C3                                                                                    [hci0] 17.332241
@ RAW Close: hciconfig
Comment 47 MasterCATZ 2020-01-17 06:50:53 UTC
dozen dongles later found one that worked 



Bus 005 Device 007: ID 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode)
Couldn't open device, some information will be missing
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass          224 Wireless
  bDeviceSubClass         1 Radio Frequency
  bDeviceProtocol         1 Bluetooth
  bMaxPacketSize0        64
  idVendor           0x0a12 Cambridge Silicon Radio, Ltd
  idProduct          0x0001 Bluetooth Dongle (HCI mode)
  bcdDevice           19.15
  iManufacturer           0 
  iProduct                0 
  iSerial                 0 
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength       0x00b1
    bNumInterfaces          2
    bConfigurationValue     1
    iConfiguration          0 
    bmAttributes         0xc0
      Self Powered
    MaxPower                0mA
    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     0x0020  1x 32 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     0x0020  1x 32 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
Comment 48 Fabio Scaccabarozzi 2020-01-25 14:52:35 UTC
Created attachment 286973 [details]
Patch for CSR 0a12:0001 88.19 (kernel 5.4.14)

I bumped the patch for bcdDevice == 88.91, this makes it work with 5.4.14 kernel with the device below (cheap Bluetooth 4 dongle from AliExpress: https://bit.ly/2uBDuX5 ).
It seems something's still wrong (iProduct field shows error), but I managed to connect my phone and transfer data correctly (pictures).


----
Bus 001 Device 008: ID 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode)
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               1.10
  bDeviceClass          224 Wireless
  bDeviceSubClass         1 Radio Frequency
  bDeviceProtocol         1 Bluetooth
  bMaxPacketSize0        64
  idVendor           0x0a12 Cambridge Silicon Radio, Ltd
  idProduct          0x0001 Bluetooth Dongle (HCI mode)
  bcdDevice           88.91
  iManufacturer           0 
  iProduct                2 (error)
  iSerial                 0 
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength       0x00b1
    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     0x02  EP 2 OUT
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 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               1
    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     0x03  EP 3 OUT
        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     0x83  EP 3 IN
        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     0x03  EP 3 OUT
        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     0x83  EP 3 IN
        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     0x03  EP 3 OUT
        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     0x83  EP 3 IN
        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     0x03  EP 3 OUT
        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     0x83  EP 3 IN
        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     0x03  EP 3 OUT
        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     0x83  EP 3 IN
        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     0x03  EP 3 OUT
        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     0x83  EP 3 IN
        bmAttributes            1
          Transfer Type            Isochronous
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0031  1x 49 bytes
        bInterval               1
Comment 49 Hernando 2020-02-07 15:31:47 UTC
hi guys... i can confirm this with kernel 5.5.2, i applyed every patch attached here to kernel 5 and still not working..

uname -r
5.5.2

lsusb -v
Bus 001 Device 008: ID 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode)
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               1.10
  bDeviceClass          224 Wireless
  bDeviceSubClass         1 Radio Frequency
  bDeviceProtocol         1 Bluetooth
  bMaxPacketSize0        64
  idVendor           0x0a12 Cambridge Silicon Radio, Ltd
  idProduct          0x0001 Bluetooth Dongle (HCI mode)
  bcdDevice           88.91
  iManufacturer           0 
  iProduct                2 USB1.1-A
  iSerial                 0 
  bNumConfigurations      1

hcitool dev
Devices:

dmesg
[  231.131312] usb 1-4: reset high-speed USB device number 2 using xhci_hcd
[  263.037922] usb 1-10: USB disconnect, device number 7
[  283.813572] usb 1-10: new full-speed USB device number 8 using xhci_hcd
[  283.962915] usb 1-10: New USB device found, idVendor=0a12, idProduct=0001, bcdDevice=88.91
[  283.962916] usb 1-10: New USB device strings: Mfr=0, Product=2, SerialNumber=0
[  283.962917] usb 1-10: Product: USB1.1-A
[  283.985700] Bluetooth: hci0: urb 000000004a48b323 failed to resubmit (2)
[  285.993511] Bluetooth: hci0: command 0x0c14 tx timeout
[  288.009434] Bluetooth: hci0: command 0x0c25 tx timeout
[  290.025410] Bluetooth: hci0: command 0x0c38 tx timeout
[  292.041395] Bluetooth: hci0: command 0x0c39 tx timeout
[  294.057297] Bluetooth: hci0: command 0x0c05 tx timeout
[  758.040593] usb 1-4: reset high-speed USB device number 2 using xhci_hcd
[ 1302.873156] usb 1-4: reset high-speed USB device number 2 using xhci_hcd
[ 1375.723184] usb 1-4: reset high-speed USB device number 2 using xhci_hcd
Comment 50 akamazing 2020-02-07 16:50:21 UTC
Hey guys,
I can also confirm that the adapter is not getting recognized.

uname -r   
5.5.2-arch1-1

journalctl -f
Feb 07 10:46:21 archlinux kernel: usb 1-5.3: new full-speed USB device number 9 using xhci_hcd
Feb 07 10:46:21 archlinux kernel: usb 1-5.3: New USB device found, idVendor=0a12, idProduct=0001, bcdDevice=88.91
Feb 07 10:46:21 archlinux kernel: usb 1-5.3: New USB device strings: Mfr=0, Product=2, SerialNumber=0
Feb 07 10:46:21 archlinux kernel: usb 1-5.3: Product: CSR8510 A10
Feb 07 10:46:21 archlinux krunner[3104]: UdevQt: unhandled device action "bind"
Feb 07 10:46:21 archlinux kded5[846]: UdevQt: unhandled device action "bind"
Feb 07 10:46:21 archlinux systemd[794]: Reached target Bluetooth.
Feb 07 10:46:21 archlinux systemd[1]: Reached target Bluetooth.
Feb 07 10:46:21 archlinux plasmashell[903]: UdevQt: unhandled device action "bind"
Feb 07 10:46:21 archlinux kmix[990]: UdevQt: unhandled device action "bind"
Feb 07 10:46:21 archlinux dolphin[971]: UdevQt: unhandled device action "bind"
Feb 07 10:46:21 archlinux dolphin[978]: UdevQt: unhandled device action "bind"
Feb 07 10:46:21 archlinux baloo_file[901]: UdevQt: unhandled device action "bind"
Feb 07 10:46:21 archlinux plasmashell[903]: UdevQt: unhandled device action "bind"
Feb 07 10:46:21 archlinux baloo_file[901]: UdevQt: unhandled device action "bind"
Feb 07 10:46:21 archlinux dolphin[971]: UdevQt: unhandled device action "bind"
Feb 07 10:46:21 archlinux dolphin[978]: UdevQt: unhandled device action "bind"
Feb 07 10:46:21 archlinux kded5[846]: UdevQt: unhandled device action "bind"
Feb 07 10:46:21 archlinux kmix[990]: UdevQt: unhandled device action "bind"
Feb 07 10:46:21 archlinux krunner[3104]: UdevQt: unhandled device action "bind"
Feb 07 10:46:21 archlinux krunner[3104]: UdevQt: unhandled device action "bind"
Feb 07 10:46:21 archlinux baloo_file[901]: UdevQt: unhandled device action "bind"
Feb 07 10:46:21 archlinux plasmashell[903]: UdevQt: unhandled device action "bind"
Feb 07 10:46:21 archlinux kded5[846]: UdevQt: unhandled device action "bind"
Feb 07 10:46:21 archlinux kmix[990]: UdevQt: unhandled device action "bind"
Feb 07 10:46:21 archlinux dolphin[971]: UdevQt: unhandled device action "bind"
Feb 07 10:46:21 archlinux dolphin[978]: UdevQt: unhandled device action "bind"
Feb 07 10:46:21 archlinux bluetooth-meshd[641]: Hci dev 0000 removed
Feb 07 10:46:21 archlinux bluetooth-meshd[641]: Failed to initialize HCI
Feb 07 10:46:26 archlinux systemd[1]: systemd-rfkill.service: Succeeded.

bluetoothctl  
Agent registered
[bluetooth]# devices
No default controller available

rfkill list   
2: hci0: Bluetooth
        Soft blocked: no
        Hard blocked: no
Comment 51 Fernando Carvalho 2020-02-07 17:00:43 UTC
Created attachment 287227 [details]
attachment-31457-0.html

Hi.

Try addin the module flags:

echo "options btusb fixups=0x0800000:0x000004:0x0a12:0x0001:0x8891" >
/etc/modprobe.d/csr-bluetoothbongle.conf

Syslog should show something like:

btusb: New fixups. Device: 0x0a12:0x0001/0x8891. Rule 1/1 (5 terms):
0x0a12:0x0001/0x8891
btusb: driver flags: initial => 0x0000000000000004
btusb: driver flags: masked  => 0x0000000000800000

Regards.

# Fernando Pires de Carvalho
# pires.carvalho@gmail.com



On Fri, Feb 7, 2020 at 4:50 PM <bugzilla-daemon@bugzilla.kernel.org> wrote:

> https://bugzilla.kernel.org/show_bug.cgi?id=60824
>
> Abhishekkumartux@gmail.com changed:
>
>            What    |Removed                     |Added
>
> ----------------------------------------------------------------------------
>                  CC|                            |
> Abhishekkumartux@gmail.com
>
> --- Comment #50 from Abhishekkumartux@gmail.com ---
> Hey guys,
> I can also confirm that the adapter is not getting recognized.
>
> uname -r
> 5.5.2-arch1-1
>
> journalctl -f
> Feb 07 10:46:21 archlinux kernel: usb 1-5.3: new full-speed USB device
> number 9
> using xhci_hcd
> Feb 07 10:46:21 archlinux kernel: usb 1-5.3: New USB device found,
> idVendor=0a12, idProduct=0001, bcdDevice=88.91
> Feb 07 10:46:21 archlinux kernel: usb 1-5.3: New USB device strings: Mfr=0,
> Product=2, SerialNumber=0
> Feb 07 10:46:21 archlinux kernel: usb 1-5.3: Product: CSR8510 A10
> Feb 07 10:46:21 archlinux krunner[3104]: UdevQt: unhandled device action
> "bind"
> Feb 07 10:46:21 archlinux kded5[846]: UdevQt: unhandled device action
> "bind"
> Feb 07 10:46:21 archlinux systemd[794]: Reached target Bluetooth.
> Feb 07 10:46:21 archlinux systemd[1]: Reached target Bluetooth.
> Feb 07 10:46:21 archlinux plasmashell[903]: UdevQt: unhandled device action
> "bind"
> Feb 07 10:46:21 archlinux kmix[990]: UdevQt: unhandled device action "bind"
> Feb 07 10:46:21 archlinux dolphin[971]: UdevQt: unhandled device action
> "bind"
> Feb 07 10:46:21 archlinux dolphin[978]: UdevQt: unhandled device action
> "bind"
> Feb 07 10:46:21 archlinux baloo_file[901]: UdevQt: unhandled device action
> "bind"
> Feb 07 10:46:21 archlinux plasmashell[903]: UdevQt: unhandled device action
> "bind"
> Feb 07 10:46:21 archlinux baloo_file[901]: UdevQt: unhandled device action
> "bind"
> Feb 07 10:46:21 archlinux dolphin[971]: UdevQt: unhandled device action
> "bind"
> Feb 07 10:46:21 archlinux dolphin[978]: UdevQt: unhandled device action
> "bind"
> Feb 07 10:46:21 archlinux kded5[846]: UdevQt: unhandled device action
> "bind"
> Feb 07 10:46:21 archlinux kmix[990]: UdevQt: unhandled device action "bind"
> Feb 07 10:46:21 archlinux krunner[3104]: UdevQt: unhandled device action
> "bind"
> Feb 07 10:46:21 archlinux krunner[3104]: UdevQt: unhandled device action
> "bind"
> Feb 07 10:46:21 archlinux baloo_file[901]: UdevQt: unhandled device action
> "bind"
> Feb 07 10:46:21 archlinux plasmashell[903]: UdevQt: unhandled device action
> "bind"
> Feb 07 10:46:21 archlinux kded5[846]: UdevQt: unhandled device action
> "bind"
> Feb 07 10:46:21 archlinux kmix[990]: UdevQt: unhandled device action "bind"
> Feb 07 10:46:21 archlinux dolphin[971]: UdevQt: unhandled device action
> "bind"
> Feb 07 10:46:21 archlinux dolphin[978]: UdevQt: unhandled device action
> "bind"
> Feb 07 10:46:21 archlinux bluetooth-meshd[641]: Hci dev 0000 removed
> Feb 07 10:46:21 archlinux bluetooth-meshd[641]: Failed to initialize HCI
> Feb 07 10:46:26 archlinux systemd[1]: systemd-rfkill.service: Succeeded.
>
> bluetoothctl
> Agent registered
> [bluetooth]# devices
> No default controller available
>
> rfkill list
> 2: hci0: Bluetooth
>         Soft blocked: no
>         Hard blocked: no
>
> --
> You are receiving this mail because:
> You are on the CC list for the bug.
Comment 52 akamazing 2020-02-07 17:24:30 UTC
(In reply to Fernando Carvalho from comment #51)
Fernando,
You are a genius. Thanks for replying, I was struggling with this. Adding "options btusb fixups=0x0800000:0x000004:0x0a12:0x0001:0x8891" to /etc/modprobe.d/csr-bluetoothbongle.conf and regenerating the initramfs solved the problem for me.

Cheers,
Abhi.
> Created attachment 287227 [details]
> attachment-31457-0.html
> 
> Hi.
> 
> Try addin the module flags:
> 
> echo "options btusb fixups=0x0800000:0x000004:0x0a12:0x0001:0x8891" >
> /etc/modprobe.d/csr-bluetoothbongle.conf
> 
> Syslog should show something like:
> 
> btusb: New fixups. Device: 0x0a12:0x0001/0x8891. Rule 1/1 (5 terms):
> 0x0a12:0x0001/0x8891
> btusb: driver flags: initial => 0x0000000000000004
> btusb: driver flags: masked  => 0x0000000000800000
> 
> Regards.
> 
> # Fernando Pires de Carvalho
> # pires.carvalho@gmail.com
Comment 53 Ruthger Dijt 2020-02-09 10:57:15 UTC
Hi, I've run into the same issue but adding the fixups option (from above) gives me this:  
"btusb: unknown parameter 'fixups' ignored" at boot.

I'm running latest Manjaro kernel,

any ideas?

thanks.
Comment 54 Patrick Zacharias 2020-02-13 19:59:51 UTC
(In reply to Ruthger Dijt from comment #53)
> Hi, I've run into the same issue but adding the fixups option (from above)
> gives me this:  
> "btusb: unknown parameter 'fixups' ignored" at boot.
> 
> I'm running latest Manjaro kernel,
> 
> any ideas?
> 
> thanks.

You need to apply the patch: https://bugzilla.kernel.org/attachment.cgi?id=285489
to btusb.c of kernel version 5.4 and load that kernel module.


I wanted to say that using this fixups option, I was able to get my bluetooth adapter running as well.


Bus 003 Device 012: ID 1131:1001 Integrated System Solution Corp. KY-BT100 Bluetooth Adapter


The driver apparently didn't know the VID&PID,
so I inserted it with VID&PID = 0:

insmod btusb.ko "fixups=0x0800000:0x000004:0x0000:0x0000:0x0134"


btusb: New fixups. Device: 0x0000:0x0000/0x0134. Rule 1/1 (5 terms): 0x0000:0x0000/0x0134
Comment 55 Alex 2020-02-15 20:59:09 UTC
Hi,
My issue with this device looks a little different, and after applying the latest patch from the thread I still have the issue.

btmon shows the following (last lines, see Set Event Filter error):

#20 [hci0] 9.289041
      Read Number of Supported IAC (0x03|0x0038) ncmd 1
        Status: Success (0x00)
        Number of IAC: 2
< HCI Command: Read Current IAC LAP (0x03|0x0039) plen 0                                                                                 #21 [hci0] 9.289050
> HCI Event: Command Complete (0x0e) plen 8                                    
>                                                          #22 [hci0] 9.291043
      Read Current IAC LAP (0x03|0x0039) ncmd 1
        Status: Success (0x00)
        Number of IAC: 1
        Access code: 0x9e8b33 (General Inquiry)
< HCI Command: Set Event Filter (0x03|0x0005) plen 1                                                                                     #23 [hci0] 9.291049
        Type: Clear All Filters (0x00)
> HCI Event: Command Complete (0x0e) plen 4                                    
>                                                          #24 [hci0] 9.293040
      Set Event Filter (0x03|0x0005) ncmd 1
        Status: Invalid HCI Command Parameters (0x12)
= Close Index: 00:1A:7D:DA:71:12                                                                                                             [hci0] 9.293052


and the device stays down and inaccessible
Here is data from my system:

hciconfig -a 
hci0:	Type: Primary  Bus: USB
	BD Address: 00:1A:7D:DA:71:12  ACL MTU: 679:8  SCO MTU: 48:16
	DOWN 
	RX bytes:706 acl:0 sco:0 events:22 errors:0
	TX bytes:68 acl:0 sco:0 commands:22 errors:0
	Features: 0xbf 0x2e 0x4d 0xfa 0xd8 0x3d 0x7b 0x87
	Packet type: DM1 DM3 DM5 DH1 DH3 DH5 HV1 HV3 
	Link policy: 
	Link mode: SLAVE ACCEPT 

hciconfig  hci0 up
Can't init device hci0: Invalid argument (22)

[bluetooth]# list
[bluetooth]# 

lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 005: ID 14cd:125c Super Top SD card reader
Bus 001 Device 004: ID 046d:c52b Logitech, Inc. Unifying Receiver
Bus 001 Device 018: ID 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode)
Bus 001 Device 003: ID 04b3:3025 IBM Corp. NetVista Full Width Keyboard
Bus 001 Device 002: ID 0bda:b812 Realtek Semiconductor Corp. 
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

dmesg (extract)
[ 5284.357208] usbcore: deregistering interface driver btusb
[ 5287.608129] usb 1-7: new full-speed USB device number 18 using xhci_hcd
[ 5287.758895] usb 1-7: config 1 interface 1 altsetting 0 endpoint 0x3 has wMaxPacketSize 0, skipping
[ 5287.758904] usb 1-7: config 1 interface 1 altsetting 0 endpoint 0x83 has wMaxPacketSize 0, skipping
[ 5287.759639] usb 1-7: New USB device found, idVendor=0a12, idProduct=0001, bcdDevice=88.91
[ 5287.759647] usb 1-7: New USB device strings: Mfr=0, Product=2, SerialNumber=0
[ 5287.759651] usb 1-7: Product: BT DONGLE10
[ 5287.785780] btusb: New fixups. Device: 0x0a12:0x0001/0x8891. Rule 1/1 (5 terms): 0x0a12:0x0001/0x8891
[ 5287.785781] btusb: driver flags: initial => 0x0000000000000004
[ 5287.785783] btusb: driver flags: masked  => 0x0000000000800000
[ 5287.785902] usbcore: registered new interface driver btusb
[ 5395.553658] debugfs: File 'dut_mode' in directory 'hci0' already present!

hcidump -X is attached
Any suggestions/fixes are really appreciated.
Please let me know if some info is missing.

Thanks,
Alex.
Comment 56 Alex 2020-02-15 21:01:41 UTC
Created attachment 287411 [details]
'hcidump -X' while executing 'hciconfig hci0 up' for Alex (Set Event Filter error)
Comment 57 chedi 2020-03-23 21:30:28 UTC
I confirm that the patch fixed the issue for me to

my device:

Bus 003 Device 003: ID 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode)
Comment 58 Michael Akushsky 2020-04-05 13:55:46 UTC
Adopted patch to kernel version 5.5, confirmed that my device started working

ID 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode)

That's my adoption: https://github.com/akushsky/kernel_patches/blob/master/UbiquitousEvil/bluetooth.patch
Comment 59 Alexandre 2020-04-06 19:43:23 UTC

(In reply to Alex from comment #55)
> Hi,
> My issue with this device looks a little different, and after applying the
> latest patch from the thread I still have the issue.
> 
> btmon shows the following (last lines, see Set Event Filter error):
> 
> #20 [hci0] 9.289041
>       Read Number of Supported IAC (0x03|0x0038) ncmd 1
>         Status: Success (0x00)
>         Number of IAC: 2
> < HCI Command: Read Current IAC LAP (0x03|0x0039) plen 0                    
> #21 [hci0] 9.289050
> > HCI Event: Command Complete (0x0e) plen 8                                   
> >                                                          #22 [hci0]
> 9.291043
>       Read Current IAC LAP (0x03|0x0039) ncmd 1
>         Status: Success (0x00)
>         Number of IAC: 1
>         Access code: 0x9e8b33 (General Inquiry)
> < HCI Command: Set Event Filter (0x03|0x0005) plen 1                        
> #23 [hci0] 9.291049
>         Type: Clear All Filters (0x00)
> > HCI Event: Command Complete (0x0e) plen 4                                   
> >                                                          #24 [hci0]
> 9.293040
>       Set Event Filter (0x03|0x0005) ncmd 1
>         Status: Invalid HCI Command Parameters (0x12)
> = Close Index: 00:1A:7D:DA:71:12                                            
> [hci0] 9.293052
> 
> 
> and the device stays down and inaccessible
> Here is data from my system:
> 
> hciconfig -a 
> hci0: Type: Primary  Bus: USB
>       BD Address: 00:1A:7D:DA:71:12  ACL MTU: 679:8  SCO MTU: 48:16
>       DOWN 
>       RX bytes:706 acl:0 sco:0 events:22 errors:0
>       TX bytes:68 acl:0 sco:0 commands:22 errors:0
>       Features: 0xbf 0x2e 0x4d 0xfa 0xd8 0x3d 0x7b 0x87
>       Packet type: DM1 DM3 DM5 DH1 DH3 DH5 HV1 HV3 
>       Link policy: 
>       Link mode: SLAVE ACCEPT 
> 
> hciconfig  hci0 up
> Can't init device hci0: Invalid argument (22)
> 
> [bluetooth]# list
> [bluetooth]# 
> 
> lsusb
> Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
> Bus 001 Device 005: ID 14cd:125c Super Top SD card reader
> Bus 001 Device 004: ID 046d:c52b Logitech, Inc. Unifying Receiver
> Bus 001 Device 018: ID 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth
> Dongle (HCI mode)
> Bus 001 Device 003: ID 04b3:3025 IBM Corp. NetVista Full Width Keyboard
> Bus 001 Device 002: ID 0bda:b812 Realtek Semiconductor Corp. 
> Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
> 
> dmesg (extract)
> [ 5284.357208] usbcore: deregistering interface driver btusb
> [ 5287.608129] usb 1-7: new full-speed USB device number 18 using xhci_hcd
> [ 5287.758895] usb 1-7: config 1 interface 1 altsetting 0 endpoint 0x3 has
> wMaxPacketSize 0, skipping
> [ 5287.758904] usb 1-7: config 1 interface 1 altsetting 0 endpoint 0x83 has
> wMaxPacketSize 0, skipping
> [ 5287.759639] usb 1-7: New USB device found, idVendor=0a12, idProduct=0001,
> bcdDevice=88.91
> [ 5287.759647] usb 1-7: New USB device strings: Mfr=0, Product=2,
> SerialNumber=0
> [ 5287.759651] usb 1-7: Product: BT DONGLE10
> [ 5287.785780] btusb: New fixups. Device: 0x0a12:0x0001/0x8891. Rule 1/1 (5
> terms): 0x0a12:0x0001/0x8891
> [ 5287.785781] btusb: driver flags: initial => 0x0000000000000004
> [ 5287.785783] btusb: driver flags: masked  => 0x0000000000800000
> [ 5287.785902] usbcore: registered new interface driver btusb
> [ 5395.553658] debugfs: File 'dut_mode' in directory 'hci0' already present!
> 
> hcidump -X is attached
> Any suggestions/fixes are really appreciated.
> Please let me know if some info is missing.
> 
> Thanks,
> Alex.



I'm having the same issue on a raspberry with an aliexpress dongle, Set Event fails, looking at hci_core.c the set filter and previous calls are made only if device supports BREDR, is there any way to tell device doesn't support, or patch this ? 
I'm on latest raspberry pi 4, latest kernel 4.19.113-v7l+
Comment 60 reka prihatanto 2020-04-20 18:18:01 UTC
I have same issue with this device. 

uname -a
Linux reka-pc 5.6.5-050605-generic #202004171629 SMP Fri Apr 17 16:32:10 UTC 2020 
x86_64 x86_64 x86_64 GNU/Linux



but my issue is a bit different, because I have another bcdDevice number. 

** 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode) **	

my bcdDevice is 75.58

so I edit some condition in the patch, to this value 0x8891 I changed it to 0x7558 and apply this patch to my kernel. 

I can confirm that the bluetooth dongle is working.
Comment 61 James 2020-04-23 17:17:53 UTC
(In reply to Michael Akushsky from comment #58)
> Adopted patch to kernel version 5.5, confirmed that my device started working
> 
> ID 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode)
> 
> That's my adoption:
> https://github.com/akushsky/kernel_patches/blob/master/UbiquitousEvil/
> bluetooth.patch

Same device ID here and while this patch gets the dongle functioning, I am unable to establish a successful connection with any device.

< HCI Command: Create Connection (0x01|0x0005) plen 13   #299 [hci0] 192.046072
        Address: 5C:EB:68:74:50:AD (Cheerstar Technology Co., Ltd)
        Packet type: 0xcc18
          DM1 may be used
          DH1 may be used
          DM3 may be used
          DH3 may be used
          DM5 may be used
          DH5 may be used
        Page scan repetition mode: R2 (0x02)
        Page scan mode: Mandatory (0x00)
        Clock offset: 0x0000
        Role switch: Allow slave (0x01)
> HCI Event: Command Status (0x0f) plen 4                #300 [hci0] 192.048152
      Create Connection (0x01|0x0005) ncmd 1
        Status: Success (0x00)
> HCI Event: Connect Complete (0x03) plen 11             #301 [hci0] 192.508147
        Status: Success (0x00)
        Handle: 128
        Address: 5C:EB:68:74:50:AD (Cheerstar Technology Co., Ltd)
        Link type: ACL (0x01)
        Encryption: Disabled (0x00)
< HCI Command: Read Remote Suppo.. (0x01|0x001b) plen 2  #302 [hci0] 192.508223
        Handle: 128
> HCI Event: Command Status (0x0f) plen 4                #303 [hci0] 192.510138
      Read Remote Supported Features (0x01|0x001b) ncmd 1
        Status: Success (0x00)
> HCI Event: Read Remote Supported Fea.. (0x0b) plen 11  #304 [hci0] 192.511139
        Status: Success (0x00)
        Handle: 128
        Features: 0xff 0xfe 0x8f 0xfe 0xdb 0xff 0x5b 0x87
          3 slot packets
          5 slot packets
          Encryption
          Slot offset
          Timing accuracy
          Role switch
          Hold mode
          Sniff mode
          Power control requests
          Channel quality driven data rate (CQDDR)
          SCO link
          HV2 packets
          HV3 packets
          u-law log synchronous data
          A-law log synchronous data
          CVSD synchronous data
          Paging parameter negotiation
          Power control
          Transparent synchronous data
          Broadcast Encryption
          Enhanced Data Rate ACL 2 Mbps mode
          Enhanced Data Rate ACL 3 Mbps mode
          Enhanced inquiry scan
          Interlaced inquiry scan
          Interlaced page scan
          RSSI with inquiry results
          Extended SCO link (EV3 packets)
          EV4 packets
          EV5 packets
          AFH capable slave
          AFH classification slave
          LE Supported (Controller)
          3-slot Enhanced Data Rate ACL packets
          5-slot Enhanced Data Rate ACL packets
          Sniff subrating
          Pause encryption
          AFH capable master
          AFH classification master
          Enhanced Data Rate eSCO 2 Mbps mode
          Enhanced Data Rate eSCO 3 Mbps mode
          3-slot Enhanced Data Rate eSCO packets
          Extended Inquiry Response
          Simultaneous LE and BR/EDR (Controller)
          Secure Simple Pairing
          Encapsulated PDU
          Non-flushable Packet Boundary Flag
          Link Supervision Timeout Changed Event
          Inquiry TX Power Level
          Enhanced Power Control
          Extended features
< HCI Command: Read Remote Exten.. (0x01|0x001c) plen 3  #305 [hci0] 192.511150
        Handle: 128
        Page: 1
> HCI Event: Command Status (0x0f) plen 4                #306 [hci0] 192.513135
      Read Remote Extended Features (0x01|0x001c) ncmd 1
        Status: Success (0x00)
> HCI Event: Read Remote Extended Feat.. (0x23) plen 13  #307 [hci0] 192.514139
        Status: Success (0x00)
        Handle: 128
        Page: 1/1
        Features: 0x03 0x00 0x00 0x00 0x00 0x00 0x00 0x00
          Secure Simple Pairing (Host Support)
          LE Supported (Host)
< HCI Command: Remote Name Requ.. (0x01|0x0019) plen 10  #308 [hci0] 192.514157
        Address: 5C:EB:68:74:50:AD (Cheerstar Technology Co., Ltd)
        Page scan repetition mode: R2 (0x02)
        Page scan mode: Mandatory (0x00)
        Clock offset: 0x0000
< ACL Data TX: Handle 128 flags 0x00 dlen 10             #309 [hci0] 192.514167
      L2CAP: Information Request (0x0a) ident 1 len 2
        Type: Extended features supported (0x0002)
> HCI Event: Command Status (0x0f) plen 4                #310 [hci0] 192.516133
      Remote Name Request (0x01|0x0019) ncmd 1
        Status: Success (0x00)
> HCI Event: Max Slots Change (0x1b) plen 3              #311 [hci0] 192.517132
        Handle: 128
        Max slots: 5
> HCI Event: Number of Completed Packets (0x13) plen 5   #312 [hci0] 192.554140
        Num handles: 1
        Handle: 128
        Count: 1
> HCI Event: Remote Name Req Complete (0x07) plen 255    #313 [hci0] 192.578126
        Status: Success (0x00)
        Address: 5C:EB:68:74:50:AD (Cheerstar Technology Co., Ltd)
        Name: Tronsmart Spunky Beat
@ MGMT Event: Device Connected (0x000b) plen 36      {0x0001} [hci0] 192.578141
        BR/EDR Address: 5C:EB:68:74:50:AD (Cheerstar Technology Co., Ltd)
        Flags: 0x00000000
        Data length: 23
        Name (complete): Tronsmart Spunky Beat
@ MGMT Event: Device Connected (0x000b) plen 36      {0x0002} [hci0] 192.578141
        BR/EDR Address: 5C:EB:68:74:50:AD (Cheerstar Technology Co., Ltd)
        Flags: 0x00000000
        Data length: 23
        Name (complete): Tronsmart Spunky Beat
< ACL Data TX: Handle 128 flags 0x00 dlen 12             #314 [hci0] 196.529160
      L2CAP: Connection Request (0x02) ident 2 len 4
        PSM: 1 (0x0001)
        Source CID: 64
> HCI Event: Number of Completed Packets (0x13) plen 5   #315 [hci0] 196.554157
        Num handles: 1
        Handle: 128
        Count: 1
> HCI Event: Disconnect Complete (0x05) plen 4           #316 [hci0] 226.973306
        Status: Success (0x00)
        Handle: 128
        Reason: Remote User Terminated Connection (0x13)
@ MGMT Event: Device Disconnected (0x000c) plen 8    {0x0001} [hci0] 226.973325
        BR/EDR Address: 5C:EB:68:74:50:AD (Cheerstar Technology Co., Ltd)
        Reason: Connection terminated by remote host (0x03)
@ MGMT Event: Device Disconnected (0x000c) plen 8    {0x0002} [hci0] 226.973325
        BR/EDR Address: 5C:EB:68:74:50:AD (Cheerstar Technology Co., Ltd)
        Reason: Connection terminated by remote host (0x03)
Comment 62 Paul Chaffey 2020-04-24 13:14:22 UTC
Will this patch get back-ported to 5.4.0-XX for *ubuntu LTS 20.04 ?


I have the same issue:

"Patch for CSR 0a12:0001 88.19 (kernel 5.4.14)"

"I bumped the patch for bcdDevice == 88.91, this makes it work with 5.4.14 kernel with the device below...."

I've added the fixups option to crs-bluetoothbongle.conf "options btusb fixups=0x0800000:0x000004:0x0a12:0x0001:0x8891" which obviously reports unknown option without the patch.

Currently using kubuntu 20.04 Linux server-2020 5.4.0-26-generic #30-Ubuntu SMP Mon Apr 20 16:58:30 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux

I was hoping that this would turn up with an Ubuntu update 🤔
Comment 63 joselp 2020-05-02 21:54:18 UTC
Hi, I have the same problem in this computer with Mageia 7.1 with kernel 5.6.6:

4 x Intel Core 2 Quad CPU Q6600 @ 2400Ghz
4,8 Gb Ram

The bluetooth no works.

Greetings!
Comment 64 Oussama BEN BRAHIM 2020-05-03 00:52:16 UTC
Hello everyone,
Me too. I have the same problem on fedora 31 with kernel 5.6.7: uname -r
5.6.7-200.fc31.x86_64.
If any further info or commands, I'm available to help with some of your assistance, guys.

Greeting.
Ouss.
Comment 65 rcobos 2020-05-05 19:39:10 UTC
Hello everyone. I have the same problem.

"Bus 003 Device 004: ID 0a12: 0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode)"

There is no way it matches with anything and I don't know how the patch is applied.

AMD A10 - 8750K
Debian Bullseye (testing)
Linux debian 5.6.0-1-amd64 # 1 SMP Debian 5.6.7-1 (2020-04-29) x86_64 GNU / Linux.

Thank you.
Comment 66 Mauro Fontana 2020-05-09 04:02:51 UTC
I have a different device. It's same vendor and id but bcdDevice is 25.20. First think I wanted to try is using the same patch and just change the fixups option.


(In reply to Michael Akushsky from comment #58)
> Adopted patch to kernel version 5.5, confirmed that my device started working
> 
> ID 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode)
> 
> That's my adoption:
> https://github.com/akushsky/kernel_patches/blob/master/UbiquitousEvil/
> bluetooth.patch

Is it possible to use this in 5.6? I'm trying to build a kernel with this patch in Fedora 31, but although the resulting kernel is working, the btusb module still doesn't have the fixups parameter.

Possible reasons include:
- The patch doesn't work as is with 5.6.
- I'm not applying the patch correctly.
- I'm not compiling correctly.

If anyone could help me with these I'd gladly test the patches. Even more, if someone could point me how to compile only the btusb module for a certain kernel version I'd be very happy, as compiling the full Fedora kernel in my computer takes more than 2 hours.

Greetings!
Comment 67 Mauro Fontana 2020-05-09 06:15:47 UTC
Created attachment 289017 [details]
lsusb for bcdDevice 25.20

Okay, managed to compiled the module with the fixups option and loaded. Unfortunately, although the module loads without problems, the BT adapter won't work.

hciconfig hci0 up 

ends in connection timed out.

I attach the full lsusb -v output for this device. Is there any other helpful info I can provide? Being able to solve this would be great, as in my country all the BT dongles I've seen online are CSR dongles.
Comment 68 Mikhail Novosyolov 2020-05-10 14:50:50 UTC
(In reply to Sergey Kondakov from comment #39)
> (In reply to Fernando Carvalho from comment #38)
> > Hi,
> > 
> > I merged a few fixes and quirks (including some from this thread) and sent
> > them to linux-bluetooth@vger.kernel.org :
> > 
> > https://www.spinics.net/lists/linux-bluetooth/msg81304.html
> > 
> > Feel free to test it if you have a simillar CSR device
> > (ATTRS{idVendor}=="0a12", ATTRS{idProduct}=="0001",
> > ATTRS{bcdDevice}=="8891").
> > 
> > It's not perfect, but it allows the use of the adapter and connect a
> headset
> > (with some connect errors/retries now and then).
> > 
> > Regards.
> 
> Great work ! Unlike the actual maintainers who don't even bother to read
> bug-tracker anymore or use ready fixes for their code that they themselves
> don't care about, it seems.
> 

I have nothing in common with maintaining bluetooth stack in the kernel, but I'd like to comment on this a bit.
That patch adds a device ID to the list of "Fake CSR devices with broken commands".
And you write that it is a "workaround" of this bug, not a "fix".
If I were a maintainer of BT stack in the kernel, I would try to avoid merging such patches unless I have this piece of hardware and a datasheet.
So, here, I would not blame kernel maintainers for ignoring such bugs.

Maybe I misunderstood something, feel free to correct me.

Actually I did not understand from this bug report if this patch works or not. Does btusb-Enablement-of-HCI_QUIRK_BROKEN_STORED_LINK_KEY-quirk.patch make device just detectable or actually working?
Comment 69 Sergey Kondakov 2020-05-10 15:15:07 UTC
(In reply to Mikhail Novosyolov from comment #68)
> (In reply to Sergey Kondakov from comment #39)
> > (In reply to Fernando Carvalho from comment #38)
> > > Hi,
> > > 
> > > I merged a few fixes and quirks (including some from this thread) and
> sent
> > > them to linux-bluetooth@vger.kernel.org :
> > > 
> > > https://www.spinics.net/lists/linux-bluetooth/msg81304.html
> > > 
> > > Feel free to test it if you have a simillar CSR device
> > > (ATTRS{idVendor}=="0a12", ATTRS{idProduct}=="0001",
> > > ATTRS{bcdDevice}=="8891").
> > > 
> > > It's not perfect, but it allows the use of the adapter and connect a
> > headset
> > > (with some connect errors/retries now and then).
> > > 
> > > Regards.
> > 
> > Great work ! Unlike the actual maintainers who don't even bother to read
> > bug-tracker anymore or use ready fixes for their code that they themselves
> > don't care about, it seems.
> > 
> 
> I have nothing in common with maintaining bluetooth stack in the kernel, but
> I'd like to comment on this a bit.
> That patch adds a device ID to the list of "Fake CSR devices with broken
> commands".
> And you write that it is a "workaround" of this bug, not a "fix".
> If I were a maintainer of BT stack in the kernel, I would try to avoid
> merging such patches unless I have this piece of hardware and a datasheet.
> So, here, I would not blame kernel maintainers for ignoring such bugs.
> 
> Maybe I misunderstood something, feel free to correct me.
> 
> Actually I did not understand from this bug report if this patch works or
> not. Does btusb-Enablement-of-HCI_QUIRK_BROKEN_STORED_LINK_KEY-quirk.patch
> make device just detectable or actually working?

It's detectable but the only device I tested it was Sony DualShock 4 which acts as master that connects PC to itself which uses "sixaxis" hacks in bluez. And, in the end, it was a failure: DS4 does not want to pass input data and then promptly shuts itself off after "pairing". It does work under Windows® with that dongle but on Linux I had to resort to old BT 2.1 one.

The more important thing is "fixup" parameter patches that allow to at select hacks per device and at least figure out what it needs without recompiling and rebooting kernel every time. But, apparently, BT maintainer is not interested in BT stack being as robust and easy to test as USB either.

I'm pretty sure that the problem is not just that those CSR chips may require hacks by themselves but that "manufacturers" have flashed them with inappropriate/misconfigured firmwares without testing, other than trying something on Windows®, and then flooded Ebay and Aliexpress with those unlicensed fakes. It's pretty much all you can get in an adequate "simple dongle" price range. But Windows® manages to avoid those issues somehow, meaning that Linux's BT stack is too picky, pedantic and too hardcoded for unnecessary things. And that is something maintainers should care about. We shouldn't keep figuring out crutches for every model & revision for things that are not even required for device's purpose.
Comment 70 Mikhail Novosyolov 2020-05-10 16:14:05 UTC
(In reply to Sergey Kondakov from comment #69)
> It's detectable but the only device I tested it was Sony DualShock 4 which
> acts as master that connects PC to itself which uses "sixaxis" hacks in
> bluez. And, in the end, it was a failure: DS4 does not want to pass input
> data and then promptly shuts itself off after "pairing". It does work under
> Windows® with that dongle but on Linux I had to resort to old BT 2.1 one.
Thanks for clearyfying.
> The more important thing is "fixup" parameter patches that allow to at
> select hacks per device and at least figure out what it needs without
> recompiling and rebooting kernel every time. But, apparently, BT maintainer
> is not interested in BT stack being as robust and easy to test as USB either.
+1, it would be very good if users who do not know how to build kernels could easily participate in testing different hacks for hardware that they have.
For example, I came to this bug because a user of the distro package of kernel which I am maintaining asked how he can build the kernel with that patch (https://forum.rosalinux.ru/viewtopic.php?t=10066)
I had to read this bug and then just tell the user that I do not see sense in spending time to test this patch (include it into the package, build it, give him instructions how to install the build). Nobody benefits from the fact that an owner of hardware is not able to participate in hardware enablement in the kernel.

On the other hand, opportunity to make such hacks in the kernel module config by the user may lead to that kernel will not have many needed hacks out of the box, users will just copy-paste device-specific solutions from the internet, then somebody will add them to e.g. systemd's hwdb. It is not good when some device-specific options are hard-coded in the driver and some are in other places like systemd's hwdb.
Comment 71 Alex 2020-05-10 18:21:38 UTC
@Mikhail
Just a little more details.

Generally speaking the patch works. It allows detection of "different versions" of fake CSR-based chips.
Unfortunately only part of devices actually work after detection. For example mine was detected, but I was not able to pair anything to it (my logs and traces were attached to this thread)

Another issue I have since kernel 4.16 is that my old original Tekram BT also stopped pairing. In several kernels after 4.16 I had usb communication errors (known bug), then it was stated as fixed, usb errors disappeared but BT in my Debian still does not work.
I'd say it may be usb errors, but USB storage and mouse/keyboard work fine.
Still not sure if it's BT stack, or btusb
Comment 72 Mikhail Novosyolov 2020-05-10 18:53:41 UTC
(In reply to Alex from comment #71)
> Unfortunately only part of devices actually work after detection. For
> example mine was detected, but I was not able to pair anything to it (my
> logs and traces were attached to this thread)
Do you mean that some devices with UDB device/vendor ID 0x0811/0x8891 do work and some do not?!

Btw, some crappy USB dongles may have to be usb_modeswitch'ed. I once had to deal with a RTL8188GU-based USB WiFi dongle Tenda W311MI. It reported one model (USB device ID) before being usb_modeswitch'ed and another model after being usb_modeswitch'ed.
https://www.raspberrypi.org/forums/viewtopic.php?t=215668
https://nixtux.ru/718

I mean that in some cases you may be trying to make an incorrect model work... Hope that this is not the case.
Comment 73 Alex 2020-05-10 19:06:12 UTC
Yes, exactly.
My 8891 does not work, but there were people here who stated their 8891 works.
Of cause there are other variables (e.g. Motherboard/chipset, linux kernel/distro, BT client device, etc.), still if we take only CSR ID then yes.

When I tested my CSR in Windows 10, it worked with quite an old generic usb driver. Still in info it had CSR 8891.
Comment 74 Alex 2020-05-10 19:10:03 UTC
BTW, in this comment https://bugzilla.kernel.org/show_bug.cgi?id=60824#c59 there is some possible reason why certain dongles do not work:

> I'm having the same issue on a raspberry with an aliexpress dongle, Set Event
> fails, looking at hci_core.c the set filter and previous calls are made only
> if device supports BREDR, is there any way to tell device doesn't support, or
> patch this ?
Comment 75 Marcin 2020-05-21 17:42:50 UTC
I found patch for 
Device 008: ID 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode)

https://www.reddit.com/r/AnnePro/comments/e76ij8/csr_40_bluetooth_dongle_on_linux/

Maybe someone could look on it deeply.
Thank you!
Comment 76 harryharryharry 2020-05-25 20:12:07 UTC
(In reply to Marcin from comment #75)
> I found patch for 
> Device 008: ID 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI
> mode)
> 
> https://www.reddit.com/r/AnnePro/comments/e76ij8/
> csr_40_bluetooth_dongle_on_linux/
> 
> Maybe someone could look on it deeply.
> Thank you!

I 'looked on it deeply' and I was able to trace the patch you're talking about (btusb-Enablement-of-HCI_QUIRK_BROKEN_STORED_LINK_KEY-quirk.patch) back to this obscure little site:
https://bugzilla.kernel.org/show_bug.cgi?id=60824
Comment 77 Swyter 2020-06-21 20:30:28 UTC
Still having the same problem on Linux 5.7.4. 75.58, in my case it's one of these super common, round, unmarked dongles: 
https://web.archive.org/web/https://pl.aliexpress.com/item/33058605031.html  

Here's what running `hcidump -X` while doing `hciconfig hci0 up` shows; it errors out while trying to delete the stored link key. So, same problem and different bcdDevice; 75.58, sounds like someone needs to add a bunch of extra quirks:

HCI sniffer - Bluetooth packet analyzer ver 5.54
device: hci0 snap_len: 1500 filter: 0xffffffffffffffff
> HCI Event: Command Complete (0x0e) plen 4
    Reset (0x03|0x0003) ncmd 5
    status 0x00
> HCI Event: Command Complete (0x0e) plen 12
    Read Local Supported Features (0x04|0x0003) ncmd 5
    status 0x00
    Features: 0xff 0xff 0xcd 0xfa 0xdb 0xbf 0x7b 0x87
> HCI Event: Command Complete (0x0e) plen 12
    Read Local Version Information (0x04|0x0001) ncmd 5
    status 0x00
    HCI Version: 4.0 (0x6) HCI Revision: 0x709
    LMP Version: 4.0 (0x6) LMP Subversion: 0x709
    Manufacturer: Cambridge Silicon Radio (10)
> HCI Event: Command Complete (0x0e) plen 10
    Read BD ADDR (0x04|0x0009) ncmd 5
    status 0x00 bdaddr 00:15:83:EA:<censored>:<censored>
> HCI Event: Command Complete (0x0e) plen 11
    Read Buffer Size (0x04|0x0005) ncmd 5
    status 0x00
    ACL MTU 360:4 SCO MTU 0:0
> HCI Event: Command Complete (0x0e) plen 7
    Read Class of Device (0x03|0x0023) ncmd 5
    status 0x00 class 0x000000
> HCI Event: Command Complete (0x0e) plen 252
    Read Local Name (0x03|0x0014) ncmd 5
    status 0x00 name ''
> HCI Event: Command Complete (0x0e) plen 6
    Read Voice Setting (0x03|0x0025) ncmd 5
    status 0x00 voice setting 0x0000
> HCI Event: Command Complete (0x0e) plen 5
    Read Number of Supported IAC (0x03|0x0038) ncmd 5
    0000: 00 01                                             ..
> HCI Event: Command Complete (0x0e) plen 8
    Read Current IAC LAP (0x03|0x0039) ncmd 5
    IAC 0x9e8b33 (General Inquiry Access Code)
> HCI Event: Command Complete (0x0e) plen 4
    Set Event Filter (0x03|0x0005) ncmd 5
    status 0x00
> HCI Event: Command Complete (0x0e) plen 4
    Write Connection Accept Timeout (0x03|0x0016) ncmd 5
    status 0x00
> HCI Event: Command Complete (0x0e) plen 7
    LE Read Buffer Size (0x08|0x0002) ncmd 5
    status 0x00 pktlen 0x001b maxpkt 0x12
> HCI Event: Command Complete (0x0e) plen 12
    LE Read Supported States (0x08|0x001c) ncmd 5
    0000: 00 ff 00 3c 1f 00 00 00  00                       ...<.....
> HCI Event: Command Complete (0x0e) plen 68
    Read Local Supported Commands (0x04|0x0002) ncmd 5
    status 0x00
    Commands: bfffff03feffffff0fffff1ff20fe8fe3ff78fff1c00000061f7ffff7f18
> HCI Event: Command Complete (0x0e) plen 4
    Write Extended Inquiry Response (0x03|0x0052) ncmd 5
    status 0x00
> HCI Event: Command Complete (0x0e) plen 4
    Write Inquiry Mode (0x03|0x0045) ncmd 5
    status 0x00
> HCI Event: Command Complete (0x0e) plen 5
    Read Inquiry Response Transmit Power Level (0x03|0x0058) ncmd 5
    status 0x00 level 8
> HCI Event: Command Complete (0x0e) plen 14
    Read Local Extended Features (0x04|0x0004) ncmd 5
    status 0x00 page 1 max 0
    Features: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
> HCI Event: Command Complete (0x0e) plen 4
    Set Event Mask (0x03|0x0001) ncmd 5
    status 0x00
> HCI Event: Command Complete (0x0e) plen 8
    Read Stored Link Key (0x03|0x000d) ncmd 5
    status 0x00 max 0 num 0
> HCI Event: Command Complete (0x0e) plen 4
    Write Default Link Policy Settings (0x02|0x000f) ncmd 5
    status 0x00
> HCI Event: Command Complete (0x0e) plen 8
    Read Page Scan Activity (0x03|0x001b) ncmd 5
    status 0x00 interval 512 window 18
> HCI Event: Command Complete (0x0e) plen 5
    Read Default Erroneous Data Reporting (0x03|0x005a) ncmd 5
    status 0x00 reporting 0
> HCI Event: Command Complete (0x0e) plen 5
    Read Page Scan Type (0x03|0x0046) ncmd 5
    0000: 00 00                                             ..
> HCI Event: Command Complete (0x0e) plen 4
    LE Set Event Mask (0x08|0x0001) ncmd 5
    status 0x00
> HCI Event: Command Complete (0x0e) plen 5
    LE Read White List Size (0x08|0x000f) ncmd 5
    0000: 00 08                                             ..
> HCI Event: Command Complete (0x0e) plen 4
    LE Clear White List (0x08|0x0010) ncmd 5
    status 0x00
> HCI Event: Command Complete (0x0e) plen 6
    Delete Stored Link Key (0x03|0x0012) ncmd 5
    status 0x11 deleted 0
    Error: Unsupported Feature or Parameter Value

--


This is my `uname -a` shows. I'm just running the normal Arch Linux kernel:
Linux fenix 5.7.4-arch1-1 #1 SMP PREEMPT Thu, 18 Jun 2020 16:01:07 +0000 x86_64 GNU/Linux

--

This is what `lsusb -v` shows for this device. As you can see in my case it has bcdDevice 75.58:

Bus 008 Device 003: ID 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode)
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               1.10
  bDeviceClass          224 Wireless
  bDeviceSubClass         1 Radio Frequency
  bDeviceProtocol         1 Bluetooth
  bMaxPacketSize0        64
  idVendor           0x0a12 Cambridge Silicon Radio, Ltd
  idProduct          0x0001 Bluetooth Dongle (HCI mode)
  bcdDevice           75.58
  iManufacturer           0 
  iProduct                0 
  iSerial                 0 
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength       0x00b1
    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     0x0040  1x 64 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
can't get debug descriptor: Resource temporarily unavailable
Device Status:     0x0000
  (Bus Powered)

--

This is what `dmesg` shows at startup with the thingie connected:

[  293.350687] usb 8-1: new full-speed USB device number 3 using ohci-pci
[  293.528946] usb 8-1: New USB device found, idVendor=0a12, idProduct=0001, bcdDevice=75.58
[  293.528953] usb 8-1: New USB device strings: Mfr=0, Product=0, SerialNumber=0
[  295.680774] Bluetooth: hci0: command 0x2003 tx timeout
[  298.027478] Bluetooth: hci0: command 0x2007 tx timeout

--

Seems like they have stolen bdaddr space from 00:15:83 IVT corporation. Anyway, hope that helps, let me know if anyone needs something else to diagnose to test a proper Kernel patch that gets mainlined. I'm all ears. :)
Comment 78 Swyter 2020-06-23 02:03:59 UTC
Okay, so after investigating the problem in-depth (and doing a bunch of heavy testing) I made what I think is a leaner and meaner +20/-8 line patch, and submitted it for kernel review. It would be great if you guys could test it and let me know if everything works correctly on your end, too:

https://patchwork.kernel.org/patch/11619143/

I'm fairly happy with the compactness of it all, the idea is that it should work universally, and be generic and future-proof. Because new cloned dongles are coming up all the time and they will eventually squat all the remaining ID space.

For those that want to show their real name and e-mail, feel free to drop a line in your message so that it can be added at the end of the commit message like this; the more testing the better:

Tested-by: Your Name <real@email.address>

I already credited M. Wisniewski for opening the issue back in 2013.
That's it, let me know what you think!
Comment 79 Andrés Rodríguez 2020-06-24 02:44:00 UTC
(In reply to Swyter from comment #78)
> Okay, so after investigating the problem in-depth (and doing a bunch of
> heavy testing) I made what I think is a leaner and meaner +20/-8 line patch,
> and submitted it for kernel review. It would be great if you guys could test
> it and let me know if everything works correctly on your end, too:
> 
> https://patchwork.kernel.org/patch/11619143/

I was unable to get a bcdDevice 2520 to work with this patch, even though it seems to apply the quirks:

---

lsusb -v:

Bus 005 Device 002: ID 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode)
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass          224 Wireless
  bDeviceSubClass         1 Radio Frequency
  bDeviceProtocol         1 Bluetooth
  bMaxPacketSize0        64
  idVendor           0x0a12 Cambridge Silicon Radio, Ltd
  idProduct          0x0001 Bluetooth Dongle (HCI mode)
  bcdDevice           25.20
  iManufacturer           0 
  iProduct                2 CSR8510 A10
  iSerial                 0 
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength       0x00b1
    bNumInterfaces          2
    bConfigurationValue     1
    iConfiguration          0 
    bmAttributes         0xa0
      (Bus 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     0x83  EP 3 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     0x01  EP 1 OUT
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               1
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               1
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       0
      bNumEndpoints           2

---

dmesg | grep CSR
[    3.449503] usb 5-1: Product: CSR8510 A10
[   12.619478] Bluetooth: hci0: CSR: Unbranded CSR clone detected; adding workaround

---

Let me know if I can help.
Comment 80 Swyter 2020-06-24 02:51:59 UTC
Hi, Andrés. Thanks for testing v1! I just submitted a revised v2 after following the recommendations of Marcel Holtmann and finding a better way of classifying them by type:

https://patchwork.kernel.org/patch/11622161/


In your case, and as it says after iProduct in your lsusb -v dump, yours should be a legit Cambridge Silicon Radio CSR8510 A10 chip and detected as such.

Those have the HCI_QUIRK_BROKEN_STORED_LINK_KEY bug.

Same as my dongle. Give v2 a go. :)
Comment 81 Andrés Rodríguez 2020-06-24 14:03:31 UTC
Hi Swyter, unfortunately I'm still unable to list the device. Blueman found no adapters and neither does bluetoothctl list.

dmesg info messages say it's still being recognized and given the bcdDevice I assume the quirk is being applied but seemingly is not enough:

[   67.847429] Bluetooth: hci0: CSR: New controller detected; bcdDevice=0x2520, HCI manufacturer=10, HCI rev=0x3120, LMP subver=0x22bb
[   67.847432] Bluetooth: hci0: CSR: Unbranded CSR clone detected; adding workaround

This is a cheap chinese dongle that says "CSR 4.0" on the side, I took a (crappy) photo of the PCB: https://i.imgur.com/3I5aKMZ.jpg and here's a stock one from the vendor showing the box and the dongle: https://i.imgur.com/wyjJTU6.jpg

The super small nigh-unreadable text in the main chip says "AP1P181"

Let me know if you want me to try anything else.
Comment 82 Swyter 2020-06-24 16:48:30 UTC
Hmm. That's interesting, so HCI reports that the chip manufacturer is fine; Cambridge Silicon Radio (10), but then the following check fails and treats it as counterfeit... Which (if I've done my research correctly) *isn't true*, your dongle should be legit and suffering from the Stored Link Key bug, like mine, which also never showed up in `bluetoothctl` before this. ¯\_(ツ)_/¯

If you could try changing this part:

> +     if (le16_to_cpu(rp->manufacturer) == 10 &&
> +         le16_to_cpu(rp->hci_rev) == le16_to_cpu(rp->lmp_subver)) {


...to this:

> +     if (le16_to_cpu(rp->manufacturer) == 10) {

...and find that it works for you, then we may be onto something. Until now all the CSR chips I've found put the same little version numbers in both fields, but it may not be as constant as I thought. Back to basics.


In any case doing `while true; do sudo hcidump -X; done` in a terminal window that keeps running (you can stop it with Ctrl + C) even when your thingie is disconnected, then trying to plug it in, and then copying the interesting parts of that to GitHub Gist or some other paste place to link here may be useful. If you are on Arch there's a handy bluez-utils-compat AUR package with these utilities.

Some interesting keywords to look for in the logs, any errors are probably useful, given some context:
- Error: Unsupported Feature or Parameter Value
- Stored Link Key

Thanks again for testing!
Comment 83 Andrés Rodríguez 2020-06-24 17:23:20 UTC
Before removing hci_rev check (patch 2.0 as-is)

hcidump -X

https://gist.github.com/mixedCase/67bfaa752050aa4a705e538f9d478ec3

dmesg:

[14225.389482] usb 1-2: new full-speed USB device number 6 using xhci_hcd
[14225.549112] usb 1-2: New USB device found, idVendor=0a12, idProduct=0001, bcdDevice=25.20
[14225.549115] usb 1-2: New USB device strings: Mfr=0, Product=2, SerialNumber=0
[14225.549117] usb 1-2: Product: CSR8510 A10
[14225.557143] Bluetooth: hci0: CSR: New controller detected; bcdDevice=0x2520, HCI manufacturer=10, HCI rev=0x3120, LMP subver=0x22bb
[14225.557144] Bluetooth: hci0: CSR: Unbranded CSR clone detected; adding workaround

---

After removing hci_rev check

hcidump -X

https://gist.github.com/mixedCase/2e1c670e5d4ff414558b35db37472058

dmesg:

[13938.833774] usb 1-2: new full-speed USB device number 4 using xhci_hcd
[13938.996271] usb 1-2: New USB device found, idVendor=0a12, idProduct=0001, bcdDevice=25.20
[13938.996274] usb 1-2: New USB device strings: Mfr=0, Product=2, SerialNumber=0
[13938.996276] usb 1-2: Product: CSR8510 A10
[13939.004322] Bluetooth: hci0: CSR: New controller detected; bcdDevice=0x2520, HCI manufacturer=10, HCI rev=0x3120, LMP subver=0x22bb
[13939.004324] Bluetooth: hci0: CSR: Modern CSR controller type detected
Comment 84 Swyter 2020-06-24 18:42:48 UTC
Interesting. Sounds like another quirk for that specific model that was hidden until now; they don't support the Read Default Erroneous Data Reporting command.

Let's try something, continuing with the same patches as before, change this in net/bluetooth/hci_core.c:

>       if (hdev->commands[18] & 0x04)
>               hci_req_add(req, HCI_OP_READ_DEF_ERR_DATA_REPORTING, 0, NULL);

...to this:
>       if (false)
>               hci_req_add(req, HCI_OP_READ_DEF_ERR_DATA_REPORTING, 0, NULL);

...and see if the log moves a bit, maybe that fixes it. Who knows? Save the log somewhere.


Chances are that the last change wasn't enough. So additionally, after that change this in net/bluetooth/hci_core.c:
>       /* Set erroneous data reporting if supported to the wideband speech
>        * setting value
>        */
>       if (hdev->commands[18] & 0x08) {

...to this:
>       /* Set erroneous data reporting if supported to the wideband speech
>        * setting value
>        */
>       if (false) {


Technically with that Linux should ignore the wideband error thingy altogether. Sounds like we need a HCI_QUIRK_WIDEBAND_SPEECH_NOT_SUPPORTED. The opposite of the HCI_QUIRK_WIDEBAND_SPEECH_SUPPORTED that already exists.

Anyway, good progress. This is a different bug. ¯\_(ツ)_/¯
Comment 85 Sergey Kondakov 2020-06-24 21:37:35 UTC
Created attachment 289871 [details]
CSR_ds4_fail.btsnoop

(In reply to Swyter from comment #80)
> Hi, Andrés. Thanks for testing v1! I just submitted a revised v2 after
> following the recommendations of Marcel Holtmann and finding a better way of
> classifying them by type:
> 
> https://patchwork.kernel.org/patch/11622161/
> 
> 
> In your case, and as it says after iProduct in your lsusb -v dump, yours
> should be a legit Cambridge Silicon Radio CSR8510 A10 chip and detected as
> such.
> 
> Those have the HCI_QUIRK_BROKEN_STORED_LINK_KEY bug.
> 
> Same as my dongle. Give v2 a go. :)

Tried it for my DS4. Unfortunately the result is the same as when I tried to hardcode my ID: gamepad thinks that it's paired but system does not register it. I've fiddled about with `btmon` and it seems that everything goes wrong at:
HCI Event: Role Change (0x12) plen 8
        Status: Role Switch Failed (0x35)
        Role: Slave (0x01)

You may read full dump with `btmon -r <file>`

`dmesg --color=always | grep -i CSR` says:
[   11.516062] Bluetooth: hci0: CSR: New controller detected; bcdDevice=0x8891, HCI manufacturer=10, HCI rev=0x811, LMP subver=0x811
[   11.516065] Bluetooth: hci0: CSR: Modern CSR controller type detected
Comment 86 Alex 2020-06-24 21:44:01 UTC
Hi Swyter,

I also tried your patch v2 and actually in my case see no difference with the previous ones I tried (see my comments 55/56 https://bugzilla.kernel.org/show_bug.cgi?id=60824#c55 )

Linux recognizes the controller, but it's unusable:

Can't init device hci0: Invalid argument (22)

> HCI Event: Command Complete (0x0e) plen 4                                    
>                                                                  #22 [hci0]
> 11.191461
      Set Event Filter (0x03|0x0005) ncmd 1
        Status: Invalid HCI Command Parameters (0x12)
= Close Index: 00:1A:7D:DA:71:12                                                                                                                     [hci0] 11.191493


I've seen several people here have this issue, and I believe that comment 59 may be quite relevant here:

> Set Event fails, looking at hci_core.c the set filter and previous calls are
> made only if device supports BREDR, is there any way to tell device doesn't
> support, or patch this ?
Comment 87 Swyter 2020-06-24 22:24:15 UTC
Hi, guys. Keep in mind that this patch basically uncovers other problems in your respective dongles, so at the bare minimum it stays as-is. And that's a good thing; it's a good start point so that other fixes can be implemented on top.

In any case the errors need to appear in context. It's a conversation flow, we need to know more than the last few words to see what went wrong.

That's why `while true; do sudo hcidump -X; done` and your log is very useful. Also, please use `lsusb -v -d 0a12:0001` instead of a standard one, the bcdDevice is the most important part. The main bug here is that every single dongle in this thread has the same 0A12:0001 VID/PID.

We need to compare and see what's different between them to apply different behaviors. Every bit helps.
Comment 88 Andrés Rodríguez 2020-06-25 00:04:12 UTC
@Swyter
I'm happy to report some progress!

After patching the bitwise 0x04 comparison, the controller can finally be detected, but is unable to find any devices (tested against a Wiimote and an Android phone).

This is the hcidump -X:

https://gist.github.com/mixedCase/d6962b3d24e13cf4443e8193c1451c5d

These are the relevant dmesg lines:

[   50.227320] Bluetooth: hci0: CSR: New controller detected; bcdDevice=0x2520, HCI manufacturer=10, HCI rev=0x3120, LMP subver=0x22bb
[   50.227330] Bluetooth: hci0: CSR: Modern CSR controller type detected
[   50.251489] Bluetooth: BNEP (Ethernet Emulation) ver 1.3
[   50.251490] Bluetooth: BNEP filters: protocol multicast
[   50.251493] Bluetooth: BNEP socket layer initialized
[   50.340205] NET: Registered protocol family 38
[   50.362740] Bluetooth: RFCOMM TTY layer initialized
[   50.362745] Bluetooth: RFCOMM socket layer initialized
[   50.362756] Bluetooth: RFCOMM ver 1.11

After trying to find devices with Blueman:

[  107.543868] Bluetooth: hci0: command 0x2005 tx timeout
[  109.677220] Bluetooth: hci0: command 0x200b tx timeout
[  111.810719] Bluetooth: hci0: command 0x200c tx timeout

---

After patching out both comparisons, the hcidump -X changes a little bit:

https://gist.github.com/mixedCase/e286bbc5f43807bd04c59c2c75cfb88f

I notice in there my machine's hostname (Enterprise) which is the default bluez identifier.

Thanks for all the help so far! Hope we can find a pattern here.
Comment 89 Sergey Kondakov 2020-06-25 04:39:47 UTC
Created attachment 289879 [details]
lsusb -vvd 0a12:0001

(In reply to Swyter from comment #87)
> Hi, guys. Keep in mind that this patch basically uncovers other problems in
> your respective dongles, so at the bare minimum it stays as-is. And that's a
> good thing; it's a good start point so that other fixes can be implemented
> on top.
> 
> In any case the errors need to appear in context. It's a conversation flow,
> we need to know more than the last few words to see what went wrong.
> 
> That's why `while true; do sudo hcidump -X; done` and your log is very
> useful. Also, please use `lsusb -v -d 0a12:0001` instead of a standard one,
> the bcdDevice is the most important part. The main bug here is that every
> single dongle in this thread has the same 0A12:0001 VID/PID.
> 
> We need to compare and see what's different between them to apply different
> behaviors. Every bit helps.

Sure. But why do you insist on using `hcidump`, a thing that was deprecated years ago, unmaintained and not build by default to dissuade from packaging it, instead of `btmon` that is necessary part of bluez ?
Comment 90 Swyter 2020-06-25 07:34:32 UTC
Because it's what I know, plain and simple. It's what I have been using and it's what I've been comfortable recommending. As long as they are HCI logs and *they exist* it doesn't matter the format, doing `btmon -w my.log` is much nicer than `hcidump -X`, that's for sure, so thanks for that. I'm learning as I go, I figured that if no one was stepping up I might as well give it a try. Seems like a good way of submitting a first patch and learning a few things. ¯\_(ツ)_/¯

I took a look at your DS4 logs. I would take similar captures on Windows to compare, maybe the role switch isn't really needed. If you could link your Windows drivers here it may also be useful, maybe the dongle needs to be configured with vendor commands before using it. **Update**: Tested DS4 pairing myself with BlueZ and no, the `Accept Connection Request` packet doesn't show up and it connects normally, the spec says that this isn't non-fatal, and in this case the one erroring out due to timeout and disconnecting is the DS4, so that's something to keep in mind.

From what I see, HCI_OP_ACCEPT_CONN_REQ seems to be called by the SCO layer in sco_conn_defer_accept():
https://github.com/torvalds/linux/blob/cb8e59cc87201af93dfbb6c3dccc8fcad72a09c2/net/bluetooth/sco.c#L741
Or alternatively from here, I believe:
https://github.com/torvalds/linux/blob/cb8e59cc87201af93dfbb6c3dccc8fcad72a09c2/net/bluetooth/hci_event.c#L2742

It's a wild guess, but it may be sound-related.

--

Another thing to keep in mind is that the bluez-utils package has a nifty `bccmd` tool for CSR devices (a clone of a proprietary tool, actually) that is able to get and set most of the internal firmware properties and detect the chip type, in theory. It doesn't work for me, though. I'm guessing there's an alternative way of accessing the vendor commands via USB, or the interface has changed since then.

But at least worth a shot on your end. Maybe you guys have more luck doing `bccmd chiprev`.
Comment 91 Sergey Kondakov 2020-06-25 11:16:59 UTC
Created attachment 289883 [details]
ISSC_ds4_pass.btsnoop

(In reply to Swyter from comment #90)
> Because it's what I know, plain and simple. It's what I have been using and
> it's what I've been comfortable recommending. As long as they are HCI logs
> and *they exist* it doesn't matter the format, doing `btmon -w my.log` is
> much nicer than `hcidump -X`, that's for sure, so thanks for that. I'm
> learning as I go, I figured that if no one was stepping up I might as well
> give it a try. Seems like a good way of submitting a first patch and
> learning a few things. ¯\_(ツ)_/¯

Sure, it's just that not only hcidump likely to not be installed by default or even packaged, the fact that it's long time obsoleted means that it can also be incorrect and no one is going to debug it. btmon's file dumps are binary though, so you would need to use `tee` to dump text as it scrolls or use `btmon -r`.

> I took a look at your DS4 logs. I would take similar captures on Windows to
> compare, maybe the role switch isn't really needed. If you could link your
> Windows drivers here it may also be useful, maybe the dongle needs to be
> configured with vendor commands before using it. **Update**: Tested DS4
> pairing myself with BlueZ and no, the `Accept Connection Request` packet
> doesn't show up and it connects normally, the spec says that this isn't
> non-fatal, and in this case the one erroring out due to timeout and
> disconnecting is the DS4, so that's something to keep in mind.
> 
> From what I see, HCI_OP_ACCEPT_CONN_REQ seems to be called by the SCO layer
> in sco_conn_defer_accept():
> https://github.com/torvalds/linux/blob/
> cb8e59cc87201af93dfbb6c3dccc8fcad72a09c2/net/bluetooth/sco.c#L741
> Or alternatively from here, I believe:
> https://github.com/torvalds/linux/blob/
> cb8e59cc87201af93dfbb6c3dccc8fcad72a09c2/net/bluetooth/hci_event.c#L2742
> 
> It's a wild guess, but it may be sound-related.
> 

I might have made that dump with '-S' option which adds SCO messages that otherwise might be ignored, just for completeness.

DualShocks 3 and 4 are fiddly to connect, when connecting to "new" dongle you need to:
1) Remove any OS entries of it.
2) Force DS4 into pairing mode by holding SELECT+PS until light flashes rapidly, for DS3 you need to connect it to USB. It will write dongle's MAC/UID into itself.
3) Now you can switch it on normally. I'm pretty sure DS wants to be the master in that connection.

It works fine on my old 2.x ISSC dongle which I tried to replace with fancier 4.x dongles twice while having 2.x as backup. First 4.x dongle killed itself for no reason a minute after plugging in, bastards didn't even refund me for its corpse. And second one is this CSR. But timeouts seem irrelevant, sometimes they just don't react properly fast enough during pairing and they also refuse to connect to a dongle that's not in their memory.

On Windows I just use Windows' stock drivers and DS4Windows https://github.com/Ryochan7/DS4Windows for polling rate / latency, lights controls, battery state tracking and xinput emulation. On Linux there is no control (polling/latency would be really nice for battery/responsiveness balancing and parity with new generation of consoles that advertise 1ms wireless latency which DS4 should be well capable of) but I'm trying out https://github.com/TheDrHax/ds4drv-cemuhook now. 

I think that Windows' BT stack just not as picky. There is no way they would do per-device workarounds for garbage bin dongles like that. They JUST recently (like last year or something) added USB audio driver after years of relying on crappy, often licensed separately, third-party per-device implementations.

> 
> Another thing to keep in mind is that the bluez-utils package has a nifty
> `bccmd` tool for CSR devices (a clone of a proprietary tool, actually) that
> is able to get and set most of the internal firmware properties and detect
> the chip type, in theory. It doesn't work for me, though. I'm guessing
> there's an alternative way of accessing the vendor commands via USB, or the
> interface has changed since then.
> 
> But at least worth a shot on your end. Maybe you guys have more luck doing
> `bccmd chiprev`.

Fails for me with "Can't execute command: No such device or address (6)"
Comment 92 Mike Johnson 2020-06-27 02:32:02 UTC
@Swyter:
I have exactly the same dongle as Andrés Rodríguez , lsusb identical.  Exactly the same symptoms, recognized by usb, not by bluetooth anything (except hciconfig -a hci0 did show it).
After doing the v2 patch, then the suggested edits in comments 82 & 84, I am paired and functioning to my stereo A2DP.  I can't be mistaken unless my ears are too.
Very happy here.  I'll keep an eye on this bug, happy to assist in any way I can.  Thank you!
Comment 93 Swyter 2020-07-05 19:34:18 UTC
Alright, I have submitted another patch for kernel review:
https://patchwork.kernel.org/patch/11644615/

This v3 should cover Mike Johnson's test and take all the other reviewer feedback into account. The checks may still need some fine-tuning in the future.

But again, it's a good start point for counterfeit dongles. Better than nothing, which is what we have now. Small, progressive improvements are the way forward.

So yeah, no panacea Bluetooth fix here. Let me know how it goes. :)
Comment 94 Real Name 2020-07-06 00:24:02 UTC
I just rebuilt a kernel with the v3 patch and it works fine, though I still need to pass reset=1 and enable_autosuspend=0 to btusb (it needs both).
Comment 95 Real Name 2020-07-06 00:29:29 UTC
Forgot to say I bought exactly the same dongle as Mike Johnson and Andrés Rodríguez, if you need more info I can help you as well.
Comment 96 Real Name 2020-07-06 03:17:02 UTC
I'm sorry for the flood but now I have this warning spamming my dmesg:

[ 8901.594641] Bluetooth: hci0: SCO packet for unknown connection handle 0
Comment 97 Mike Johnson 2020-07-06 11:08:53 UTC
I have no errors here Real Name.  Working fine for days.
Comment 98 Real Name 2020-07-06 13:45:41 UTC
Ok, it seems that the easiest way to trigger that error is if I try to configure my headset as a HSP/HFP device, but I've seen it on other occasions as well. Which is to say I have absolutely no idea what's going on.

The patch does work very well though. When I tried to pair devices under Windows it threw a BSOD at me, but on Linux I can modprobe/rmmod, change ports and it's up and running just the same.
Comment 99 Ricardo Rodrigues 2020-07-08 12:31:15 UTC
(In reply to Swyter from comment #93)
> Alright, I have submitted another patch for kernel review:
> https://patchwork.kernel.org/patch/11644615/
> 
> This v3 should cover Mike Johnson's test and take all the other reviewer
> feedback into account. The checks may still need some fine-tuning in the
> future.
> 
> But again, it's a good start point for counterfeit dongles. Better than
> nothing, which is what we have now. Small, progressive improvements are the
> way forward.
> 
> So yeah, no panacea Bluetooth fix here. Let me know how it goes. :)

Your patch V3 works great, I'm using this cheap dongle https://en.aliexpress.com/i/4000517165819.html?spm=a2g03.12057483.0.0.54aa146b5xe42n with kernel 5.7.7 without problems, great job!
Comment 100 M.Hanny Sabbagh 2020-07-14 11:53:41 UTC
It is my honor to be the #100th comment in this thread and to also confirm that the patch v3 worked like a charm here. (With reset=1 and enable_autosuspend=0 added to btusb too).

Thank you for saving my money and time.
Comment 101 AndreyTarkovsky 2020-07-18 19:05:15 UTC
(In reply to M.Hanny Sabbagh from comment #100)
> It is my honor to be the #100th comment in this thread and to also confirm
> that the patch v3 worked like a charm here. (With reset=1 and
> enable_autosuspend=0 added to btusb too).
> 
> Thank you for saving my money and time.

Unfortunately I can not say the same. Using Arch Linux here and tried a lot of patches on kernel 5.7.7 and 5.7.8 as showed on my forum post here https://bbs.archlinux.org/viewtopic.php?pid=1915544#p1915544
Comment 102 Real Name 2020-07-18 19:16:59 UTC
(In reply to AndreyTarkovsky from comment #101)
> Unfortunately I can not say the same. Using Arch Linux here and tried a lot
> of patches on kernel 5.7.7 and 5.7.8 as showed on my forum post here
> https://bbs.archlinux.org/viewtopic.php?pid=1915544#p1915544

Did you try running 'sudo hciconfig hci0 up'? Unless Arch does something different to their kernels. I patched a stock Fedora kernel (built from source RPM).
Comment 103 AndreyTarkovsky 2020-07-18 21:39:03 UTC
(In reply to Real Name from comment #102)
> (In reply to AndreyTarkovsky from comment #101)
> > Unfortunately I can not say the same. Using Arch Linux here and tried a lot
> > of patches on kernel 5.7.7 and 5.7.8 as showed on my forum post here
> > https://bbs.archlinux.org/viewtopic.php?pid=1915544#p1915544
> 
> Did you try running 'sudo hciconfig hci0 up'? Unless Arch does something
> different to their kernels. I patched a stock Fedora kernel (built from
> source RPM).

hciconfig dev
hci0:   Type: Primary  Bus: USB
        BD Address: 00:1A:7D:DA:71:10  ACL MTU: 640:4  SCO MTU: 64:8
        DOWN 
        RX bytes:1084 acl:0 sco:0 events:50 errors:0
        TX bytes:662 acl:0 sco:0 commands:50 errors:0

sudo hciconfig hci0 up
Can't init device hci0: Invalid request code (56)

Looks like there is something special on my dongle. dmesg showed it was recognized as a CSR clone:

[  194.023832] Bluetooth: hci0: CSR: Unbranded CSR clone detected; adding workarounds...
[  194.032848] debugfs: File 'dut_mode' in directory 'hci0' already present!
[  194.077761] audit: type=1106 audit(1595108086.134:91): pid=1605 uid=0 auid=1000 ses=3 msg='op=PAM:session_close grantors=pam_limits,pam_unix,pam_permit acct="root" exe="/usr/bin/sudo" hostname=? addr=? terminal=/dev/pts/0 res=success'
[  194.077970] audit: type=1104 audit(1595108086.134:92): pid=1605 uid=0 auid=1000 ses=3 msg='op=PAM:setcred grantors=pam_unix,pam_permit,pam_env acct="root" exe="/usr/bin/sudo" hostname=? addr=? terminal=/dev/pts/0 res=success'
Comment 104 AndreyTarkovsky 2020-07-19 00:04:12 UTC
Maybe this can help. Tried Knoppix(kernel 5.3.5-64) distro on Virtual Box and dmesg said this about my usb bluetooth dongle:

[  307.982384] usb 1-2: new full-speed USB device number 3 using ohci-pci
[  308.475005] usb 1-2: New USB device found, idVendor=0a12, idProduct=0001, bcdDevice=25.20
[  308.475008] usb 1-2: New USB device strings: Mfr=0, Product=2, SerialNumber=0
[  308.475010] usb 1-2: Product: CSR8510 A10
[  308.575313] Bluetooth: Core ver 2.22
[  308.575416] NET: Registered protocol family 31
[  308.575417] Bluetooth: HCI device and connection manager initialized
[  308.575423] Bluetooth: HCI socket layer initialized
[  308.575425] Bluetooth: L2CAP socket layer initialized
[  308.575429] Bluetooth: SCO socket layer initialized
[  308.582531] usbcore: registered new interface driver btusb
[  308.732775] Bluetooth: BNEP (Ethernet Emulation) ver 1.3
[  308.732777] Bluetooth: BNEP filters: protocol multicast
[  308.732781] Bluetooth: BNEP socket layer initialized
Comment 105 Real Name 2020-07-19 00:58:09 UTC
(In reply to AndreyTarkovsky from comment #104)
> [  307.982384] usb 1-2: new full-speed USB device number 3 using ohci-pci
> [  308.475005] usb 1-2: New USB device found, idVendor=0a12, idProduct=0001,
> bcdDevice=25.20
> [  308.475008] usb 1-2: New USB device strings: Mfr=0, Product=2,
> SerialNumber=0
> [  308.475010] usb 1-2: Product: CSR8510 A10

Looks exactly like mine. Post the output of 'sudo lsusb -vd 0a12:0001'.
Comment 106 AndreyTarkovsky 2020-07-19 01:50:46 UTC
(In reply to Real Name from comment #105)
> (In reply to AndreyTarkovsky from comment #104)
> > [  307.982384] usb 1-2: new full-speed USB device number 3 using ohci-pci
> > [  308.475005] usb 1-2: New USB device found, idVendor=0a12,
> idProduct=0001,
> > bcdDevice=25.20
> > [  308.475008] usb 1-2: New USB device strings: Mfr=0, Product=2,
> > SerialNumber=0
> > [  308.475010] usb 1-2: Product: CSR8510 A10
> 
> Looks exactly like mine. Post the output of 'sudo lsusb -vd 0a12:0001'.

Here:

sudo lsusb -vd 0a12:0001

Bus 001 Device 004: ID 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode)
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass          224 Wireless
  bDeviceSubClass         1 Radio Frequency
  bDeviceProtocol         1 Bluetooth
  bMaxPacketSize0        64
  idVendor           0x0a12 Cambridge Silicon Radio, Ltd
  idProduct          0x0001 Bluetooth Dongle (HCI mode)
  bcdDevice           25.20
  iManufacturer           0 
  iProduct                2 CSR8510 A10
  iSerial                 0 
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength       0x00b1
    bNumInterfaces          2
    bConfigurationValue     1
    iConfiguration          0 
    bmAttributes         0xa0
      (Bus 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     0x83  EP 3 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     0x01  EP 1 OUT
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               1
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               1
    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     0x02  EP 2 OUT
        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     0x82  EP 2 IN
        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     0x02  EP 2 OUT
        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     0x82  EP 2 IN
        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     0x02  EP 2 OUT
        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     0x82  EP 2 IN
        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     0x02  EP 2 OUT
        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     0x82  EP 2 IN
        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     0x02  EP 2 OUT
        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     0x82  EP 2 IN
        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     0x02  EP 2 OUT
        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     0x82  EP 2 IN
        bmAttributes            1
          Transfer Type            Isochronous
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0031  1x 49 bytes
        bInterval               1
can't get device qualifier: Resource temporarily unavailable
can't get debug descriptor: Resource temporarily unavailable
Device Status:     0x0000
  (Bus Powered)
Comment 107 Real Name 2020-07-19 15:41:21 UTC
(In reply to AndreyTarkovsky from comment #106)
>...

Still looks like mine, maybe a slightly different chip that needs more quirks. Someone more knowledgeable about those quirks might be able to help you.
Comment 108 Oussama BEN BRAHIM 2020-07-20 21:13:31 UTC
many thanks @Swyter.It works like a charm.
This is my first time patching and building a custom kernel. It's quite fancy experience.
this is lsusb output if it can help.
#lsusb -vd 0a12:0001

Bus 003 Device 007: ID 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode)
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               1.10
  bDeviceClass          224 Wireless
  bDeviceSubClass         1 Radio Frequency
  bDeviceProtocol         1 Bluetooth
  bMaxPacketSize0        64
  idVendor           0x0a12 Cambridge Silicon Radio, Ltd
  idProduct          0x0001 Bluetooth Dongle (HCI mode)
  bcdDevice           88.91
  iManufacturer           0 
  iProduct                2 (error)
  iSerial                 0 
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength       0x00b1
    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     0x02  EP 2 OUT
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 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               1
    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     0x03  EP 3 OUT
        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     0x83  EP 3 IN
        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     0x03  EP 3 OUT
        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     0x83  EP 3 IN
        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     0x03  EP 3 OUT
        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     0x83  EP 3 IN
        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     0x03  EP 3 OUT
        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     0x83  EP 3 IN
        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     0x03  EP 3 OUT
        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     0x83  EP 3 IN
        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     0x03  EP 3 OUT
        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     0x83  EP 3 IN
        bmAttributes            1
          Transfer Type            Isochronous
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0031  1x 49 bytes
        bInterval               1
can't get debug descriptor: Resource temporarily unavailable
Device Status:     0x0000
  (Bus Powered)
Comment 109 Albin Kauffmann 2020-07-24 15:43:29 UTC
Hi,
Like Andrey, with patch v3 and reset=0 + enable_autosuspend=0, I can't make my Bluetooth adapter work :-/
I am also using an ArchLinux kernel (patched).

Here is my lsusb, if it can help:

sudo lsusb -vd 0a12:0001
 
Bus 001 Device 014: ID 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode)
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass          224 Wireless
  bDeviceSubClass         1 Radio Frequency
  bDeviceProtocol         1 Bluetooth
  bMaxPacketSize0        64
  idVendor           0x0a12 Cambridge Silicon Radio, Ltd
  idProduct          0x0001 Bluetooth Dongle (HCI mode)
  bcdDevice           88.91
  iManufacturer           0 
  iProduct                2 BT DONGLE10
  iSerial                 0 
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength       0x00b1
    bNumInterfaces          2
    bConfigurationValue     1
    iConfiguration          0 
    bmAttributes         0x80
      (Bus Powered)
    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     0x02  EP 2 OUT
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 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               1
    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     0x03  EP 3 OUT
        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     0x83  EP 3 IN
        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     0x03  EP 3 OUT
        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     0x83  EP 3 IN
        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     0x03  EP 3 OUT
        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     0x83  EP 3 IN
        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     0x03  EP 3 OUT
        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     0x83  EP 3 IN
        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     0x03  EP 3 OUT
        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     0x83  EP 3 IN
        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     0x03  EP 3 OUT
        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     0x83  EP 3 IN
        bmAttributes            1
          Transfer Type            Isochronous
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0031  1x 49 bytes
        bInterval               1
can't get device qualifier: Resource temporarily unavailable
can't get debug descriptor: Resource temporarily unavailable
Device Status:     0x0000
  (Bus Powered)

Many thanks!
Comment 110 Albin Kauffmann 2020-07-24 15:46:53 UTC
Oh, I should have added that btmon gives me the following error when plugging the USB dongle:

< HCI Command: Read Current IAC LAP (0x03|0x0039) plen 0                                                                                                                                                                #21 [hci0] 39.239547
> HCI Event: Command Complete (0x0e) plen 8                                    
>                                                                              
>                                                           #22 [hci0]
> 39.241502
      Read Current IAC LAP (0x03|0x0039) ncmd 1
        Status: Success (0x00)
        Number of IAC: 1
        Access code: 0x9e8b33 (General Inquiry)
< HCI Command: Set Event Filter (0x03|0x0005) plen 1                                                                                                                                                                    #23 [hci0] 39.241510
        Type: Clear All Filters (0x00)
> HCI Event: Command Complete (0x0e) plen 4                                    
>                                                                              
>                                                           #24 [hci0]
> 39.243501
      Set Event Filter (0x03|0x0005) ncmd 1
        Status: Invalid HCI Command Parameters (0x12)
= Close Index: 00:1A:7D:DA:71:12
Comment 111 Swyter 2020-07-26 21:26:47 UTC
Just submitted v4 for kernel review. Its behavior should be identical to v3, it only contains a few minor technical changes and logic flow tweaks, to appease the BlueZ gods. Nothing new.

We'll see if they like this one. If it needs to be trimmed down and submitted as a tiny patch series then I can also do that. As long as it gets mainlined in some shape or form:

https://patchwork.kernel.org/patch/11686157/

Thanks again for your comments and reports. I have credited some of you with a Tested-By line, hope you guys don't mind. Just let me know. ¯\_(ツ)_/¯
Comment 112 Real Name 2020-07-27 03:31:55 UTC
SCO routing seems less broken, now it cycles between several handles instead of being stuck in handle 0. It also stops eventually, so no more endless dmesg spam. I'll attach it, maybe it can help figuring out a fix (couldn't find anything on Google for those counterfeit controllers).

Switching between headset mode and A2DP doesn't crash my session anymore. So, nice improvement.
Comment 113 Real Name 2020-07-27 03:33:59 UTC
Created attachment 290593 [details]
SCO packets dmesg bcdDevice=25.20
Comment 114 AndreyTarkovsky 2020-07-27 04:16:48 UTC
it still does not work here on Arch Linux, kernel 5.7.9. Interesting that on Linux Mint 20, trying it in a VM, Mint recognized my dongle on bluetoothctl as showed here http://ix.io/2sq3 (this output was catched when I unplugged and plugged again the dongle)but didn't work either.
Comment 115 Markus Däschler 2020-07-27 05:53:00 UTC
Thanks for the patch! I tested with v3 in kernel 5.7.10-1-MANJARO. It works for me with following issues:
- connecting worked not so well until I enabled USB port over sysfs completely with setting power/control to "on" (enable_autosuspend=0 seems not to be sufficient in my case)
- dongle doesn't support more as one simultan connection. But I think this is a firmware problem and not a driver one


My lsusb output:

Bus 004 Device 017: ID 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode)
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               1.10
  bDeviceClass          224 Wireless
  bDeviceSubClass         1 Radio Frequency
  bDeviceProtocol         1 Bluetooth
  bMaxPacketSize0        64
  idVendor           0x0a12 Cambridge Silicon Radio, Ltd
  idProduct          0x0001 Bluetooth Dongle (HCI mode)
  bcdDevice           88.91
  iManufacturer           0
  iProduct                2 USB1.1-A䀹嘔
  iSerial                 0
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength       0x00b1
    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     0x02  EP 2 OUT
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 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               1
    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     0x03  EP 3 OUT
        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     0x83  EP 3 IN
        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     0x03  EP 3 OUT
        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     0x83  EP 3 IN
        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     0x03  EP 3 OUT
        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     0x83  EP 3 IN
        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     0x03  EP 3 OUT
        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     0x83  EP 3 IN
        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     0x03  EP 3 OUT
        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     0x83  EP 3 IN
        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     0x03  EP 3 OUT
        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     0x83  EP 3 IN
        bmAttributes            1
          Transfer Type            Isochronous
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x003f  1x 63 bytes
        bInterval               1
can't get debug descriptor: Resource temporarily unavailable
Device Status:     0x0000
  (Bus Powered)
Comment 116 Swyter 2020-07-31 16:18:21 UTC
Well, good news. Marcel seemed happy with v4 and the patch has been accepted:

https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/?id=cde1a8a992875a7479c4321b2a4a190c2e92ec2a

Thanks for testing, hopefully we'll get to enjoy our slightly less broken dongles soon-ish. This was my first kernel patch stint, and all in all I think that after the first submission (oof!) things seemed surprisingly accessible and formative, I barely knew anything about Bluetooth or mailing lists before this. So don't get discouraged, the information is there. ¯\_(ツ)_/¯
Comment 117 Real Name 2020-07-31 16:24:59 UTC
Great. Now to make Fedora backport it.

Yeah I will eventually tackle the SCO routing issue, though it not working even on Windows (i.e. nowhere to reverse-engineer from) doesn't give me high hopes of making it work anywhere else.
Comment 118 Aragmor 2020-08-03 08:05:12 UTC
Tested with kernel 5.8.0-050800-generic x86_64 on Ubunutu 20.04

Works for bcdDevice 88.91
Broken for bcdDevice 25.20

is this patch included in newest kernel?

lsusb -v log for 88.91 

Bus 001 Device 013: ID 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode)
Couldn't open device, some information will be missing
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass          224 Wireless
  bDeviceSubClass         1 Radio Frequency
  bDeviceProtocol         1 Bluetooth
  bMaxPacketSize0        64
  idVendor           0x0a12 Cambridge Silicon Radio, Ltd
  idProduct          0x0001 Bluetooth Dongle (HCI mode)
  bcdDevice           88.91
  iManufacturer           0 
  iProduct                2 
  iSerial                 0 
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength       0x00b1
    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     0x02  EP 2 OUT
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 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               1
    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     0x03  EP 3 OUT
        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     0x83  EP 3 IN
        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     0x03  EP 3 OUT
        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     0x83  EP 3 IN
        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     0x03  EP 3 OUT
        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     0x83  EP 3 IN
        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     0x03  EP 3 OUT
        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     0x83  EP 3 IN
        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     0x03  EP 3 OUT
        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     0x83  EP 3 IN
        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     0x03  EP 3 OUT
        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     0x83  EP 3 IN
        bmAttributes            1
          Transfer Type            Isochronous
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0031  1x 49 bytes
        bInterval               1


lsusb -v log for 25.20 


Bus 001 Device 012: ID 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode)
Couldn't open device, some information will be missing
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass          224 Wireless
  bDeviceSubClass         1 Radio Frequency
  bDeviceProtocol         1 Bluetooth
  bMaxPacketSize0        64
  idVendor           0x0a12 Cambridge Silicon Radio, Ltd
  idProduct          0x0001 Bluetooth Dongle (HCI mode)
  bcdDevice           25.20
  iManufacturer           0 
  iProduct                2 
  iSerial                 0 
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength       0x00b1
    bNumInterfaces          2
    bConfigurationValue     1
    iConfiguration          0 
    bmAttributes         0xa0
      (Bus 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     0x83  EP 3 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     0x01  EP 1 OUT
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               1
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               1
    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     0x02  EP 2 OUT
        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     0x82  EP 2 IN
        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     0x02  EP 2 OUT
        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     0x82  EP 2 IN
        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     0x02  EP 2 OUT
        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     0x82  EP 2 IN
        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     0x02  EP 2 OUT
        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     0x82  EP 2 IN
        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     0x02  EP 2 OUT
        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     0x82  EP 2 IN
        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     0x02  EP 2 OUT
        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     0x82  EP 2 IN
        bmAttributes            1
          Transfer Type            Isochronous
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0031  1x 49 bytes
        bInterval               1
Comment 119 Swyter 2020-08-03 08:18:19 UTC
By the way, guys. While knowing the bcdDevice/lsusb is interesting, the important part to narrow down these dongles is knowing their HCI version, HCI Revision, LMP version, LMP Subversion and Manufacturer fields.

So please include some kind of `hciconfig -a` output or the 'Read Local Version Information' packet from your `btmon -w my.log` session that should show up at the start of your capture. That's what actually allows us to add specific workarounds.
Comment 120 Aragmor 2020-08-03 08:27:35 UTC
Created attachment 290729 [details]
btmon -w for working bt dongle 4.0

hciconfig -a

hci0:	Type: Primary  Bus: USB
	BD Address: 00:1A:7D:DA:71:11  ACL MTU: 310:10  SCO MTU: 64:8
	UP RUNNING PSCAN ISCAN 
	RX bytes:622 acl:0 sco:0 events:38 errors:0
	TX bytes:952 acl:0 sco:0 commands:38 errors:0
	Features: 0xff 0xff 0x8f 0xfe 0xdb 0xff 0x5b 0x87
	Packet type: DM1 DM3 DM5 DH1 DH3 DH5 HV1 HV2 HV3 
	Link policy: RSWITCH HOLD SNIFF PARK 
	Link mode: SLAVE ACCEPT 
	Name: 'ardom'
	Class: 0x1c0104
	Service Classes: Rendering, Capturing, Object Transfer
	Device Class: Computer, Desktop workstation
	HCI Version: 4.0 (0x6)  Revision: 0x22bb
	LMP Version: 4.0 (0x6)  Subversion: 0x22bb
	Manufacturer: Cambridge Silicon Radio (10)
Comment 121 Aragmor 2020-08-03 08:28:28 UTC
Created attachment 290731 [details]
btmon -w for broken bt dongle 4.0

hciconfig -a

hci0:	Type: Primary  Bus: USB
	BD Address: 00:1A:7D:DA:71:10  ACL MTU: 640:4  SCO MTU: 64:8
	DOWN 
	RX bytes:501 acl:0 sco:0 events:22 errors:0
	TX bytes:326 acl:0 sco:0 commands:22 errors:1
	Features: 0xff 0xff 0x8f 0xfa 0x9b 0xff 0x59 0x87
	Packet type: DM1 DM3 DM5 DH1 DH3 DH5 HV1 HV2 HV3 
	Link policy: RSWITCH HOLD SNIFF PARK 
	Link mode: SLAVE ACCEPT
Comment 122 Aragmor 2020-08-03 08:29:02 UTC
Created attachment 290733 [details]
btmon -w for broken bt dongle 5.0

hciconfig -a

hci0:	Type: Primary  Bus: USB
	BD Address: 00:1A:7D:DA:71:10  ACL MTU: 640:4  SCO MTU: 64:8
	DOWN 
	RX bytes:501 acl:0 sco:0 events:22 errors:0
	TX bytes:326 acl:0 sco:0 commands:22 errors:1
	Features: 0xff 0xff 0x8f 0xfa 0x9b 0xff 0x59 0x87
	Packet type: DM1 DM3 DM5 DH1 DH3 DH5 HV1 HV2 HV3 
	Link policy: RSWITCH HOLD SNIFF PARK 
	Link mode: SLAVE ACCEPT
Comment 123 Swyter 2020-08-03 08:47:53 UTC
Looks like the last two are fake CSR (i.e. the interesting ones), but because they don't initialize properly we can't actually see HCI/LMP/Manufacturer stuff we are interested in.

Sounds like a packet capture is the only way of finding these values. So please use `btmon -w my.log` (or alternatively `hcidump -X`) to capture the Bluetooth traffic as shown in previous comments. The good thing is that they should get stuck early on, so I don't expect a lot of traffic once you plug that in.

Search for 'Read Local Version Information' in this thread to see examples.

So yeah, if possible, please include the bcdDevice + hciconfig -a + 'Read Local Version Information' packet in your tests. The bigger the corpus of counterfeit dongles, the more we can extrapolate and make better workarounds that work for everyone.
Comment 124 Aragmor 2020-08-03 09:03:14 UTC
Created attachment 290735 [details]
'hcidump -X' while executing 'hciconfig hci0 up'
Comment 125 Aragmor 2020-08-03 09:08:14 UTC
Created attachment 290737 [details]
`btmon -w` while executing `hciconfig hci0 up` for fake BT dongle 4.0
Comment 126 Aragmor 2020-08-03 09:08:29 UTC
Created attachment 290739 [details]
`btmon -w` while executing `hciconfig hci0 up` for fake BT dongle 5.0
Comment 127 AndreyTarkovsky 2020-08-03 14:54:12 UTC
Created attachment 290745 [details]
(btmon -w) while executing `hciconfig hci0 up` for fake BT dongle 4.0

Plugged the dongle and did the command as showed in the last comments.
Comment 128 vic 2020-08-10 22:35:12 UTC
Created attachment 290829 [details]
Relevant info

(In reply to Swyter from comment #111)
> Just submitted v4 for kernel review. Its behavior should be identical to v3,
> it only contains a few minor technical changes and logic flow tweaks, to
> appease the BlueZ gods. Nothing new.
> ...
> https://patchwork.kernel.org/patch/11686157/



Tried your patch on my current in use kernel 5.7.12 but unfortunately can't get my fake CSR to initiate properly. Hcidump and other relevant info in attachment.
Comment 129 Olivier JUDITH 2020-08-13 19:23:07 UTC
Created attachment 290889 [details]
hcdump_acr_5.0
Comment 130 Olivier JUDITH 2020-08-13 19:24:02 UTC
Created attachment 290891 [details]
btmon_acr_5.0
Comment 131 Olivier JUDITH 2020-08-13 19:25:16 UTC
Created attachment 290893 [details]
lspci_acr_5.0
Comment 132 Olivier JUDITH 2020-08-13 19:32:18 UTC
Hi, 

Encoutering issue with a new bluetooth dongle (hci1) acquired from Gearbest site.

hciconfig hci0 up 
Can't init device hci0: Invalid request code (56)

I tried on 5.4 kernel and  moved to 5.8.1-050801-generic the same behaviour. 

hci1:	Type: Primary  Bus: USB
	BD Address: 00:1A:7D:DA:71:10  ACL MTU: 640:4  SCO MTU: 64:8
	DOWN 
	RX bytes:501 acl:0 sco:0 events:22 errors:0
	TX bytes:329 acl:0 sco:0 commands:22 errors:0
	Features: 0xff 0xff 0x8f 0xfa 0x9b 0xff 0x59 0x87
	Packet type: DM1 DM3 DM5 DH1 DH3 DH5 HV1 HV2 HV3 
	Link policy: RSWITCH HOLD SNIFF PARK 
	Link mode: SLAVE ACCEPT 

hci0:	Type: Primary  Bus: USB
	BD Address: 4C:1D:96:6D:CB:48  ACL MTU: 1021:4  SCO MTU: 96:6
	UP RUNNING 
	RX bytes:19359 acl:0 sco:0 events:3062 errors:0
	TX bytes:748521 acl:0 sco:0 commands:3061 errors:0
	Features: 0xbf 0xfe 0x0f 0xfe 0xdb 0xff 0x7b 0x87
	Packet type: DM1 DM3 DM5 DH1 DH3 DH5 HV1 HV2 HV3 
	Link policy: RSWITCH SNIFF 
	Link mode: SLAVE ACCEPT 
	Name: 'VivoBook'
	Class: 0x1c010c
	Service Classes: Rendering, Capturing, Object Transfer
	Device Class: Computer, Laptop
	HCI Version: 5.1 (0xa)  Revision: 0x100
	LMP Version: 5.1 (0xa)  Subversion: 0x100
	Manufacturer: Intel Corp. (2)

Any help wil be appreciated. 

Regards
Comment 133 Olivier JUDITH 2020-08-13 20:09:33 UTC
Hi , 

Sorry , forgot about it , i patched my kernel as described on this link https://gist.github.com/nevack/6b36b82d715dc025163d9e9124840a07#gistcomment-3415350 
and it works like a charm

rgds
Comment 134 vic 2020-08-15 00:16:04 UTC
(In reply to Swyter from comment #111)
> Just submitted v4 for kernel review. Its behavior should be identical to v3,
> it only contains a few minor technical changes and logic flow tweaks, to
> appease the BlueZ gods. Nothing new.
> ...
> https://patchwork.kernel.org/patch/11686157/

Just to correct my last comment #128. The patch indeed work.
First time I tried I didn't pay attention to the patch, I just applied the patch. Then I built only the module (btusb) for my in use kernel version. For obvious reasons it didn't work.

Today with more time I realized the stupidity I did, then I built the entire kernel. Now after load the btusb module with the options "reset=1 enable_autosuspend=0" the dongle initiates and apparently works correctly.
I'm sorry for the misinformation on my last comment.

Thank you Swyter for your time on fixing this.

Hope to see the patch in mainline kernel soon.
Comment 135 Swyter 2020-08-16 14:38:41 UTC
Well, then I have good news for you. Because I have just received two e-mails from Sasha Levin saying that my Bluetooth patch has been added to the 5.8-stable and 5.7-stable trees. So hopefully we'll see it running in mainstream distros soon™ without having to wait for 5.9 to land. :)
Comment 136 MMD 2020-08-18 18:47:50 UTC
(In reply to Swyter from comment #116)
> Well, good news. Marcel seemed happy with v4 and the patch has been accepted:
> 
> https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/
> ?id=cde1a8a992875a7479c4321b2a4a190c2e92ec2a
> 
> Thanks for testing, hopefully we'll get to enjoy our slightly less broken
> dongles soon-ish. This was my first kernel patch stint, and all in all I
> think that after the first submission (oof!) things seemed surprisingly
> accessible and formative, I barely knew anything about Bluetooth or mailing
> lists before this. So don't get discouraged, the information is there.
> ¯\_(ツ)_/¯

Dear Swyter, Thanks for this patch.
Can you please give step by step details to apply this patch on Ubuntu 20.04 
Kernel version is 4.5.0-42-generic
Will be very helpful for novice like me.
Thanks
Comment 137 Swyter 2020-08-18 22:53:02 UTC
Hi! There's actually a script that should help with this, at least as reference:
https://gist.github.com/nevack/6b36b82d715dc025163d9e9124840a07

It's for newer kernels, though. So while the btusb.c part should more or less apply cleanly (because the existing/original CSR workaround stuff has been there for a while) the ERR_DATA_REPORTING stuff (on hci_core.c) is new and will need to be stripped out when back-porting the patch.

Who knows, maybe it's a good idea to ask someone from Canonical to add it to Ubuntu, once it's been more battle-tested. Hopefully (as it officially gets into stable kernels) distros downstream will pick this up, even on super old Linux versions.

Hope that helps. :)
Comment 138 Mike Johnson 2020-08-20 05:43:50 UTC
Just compiled the 5.8.2 vanilla kernel in Gentoo, yep, v4 is there, no more patches!
Comment 139 vic 2020-08-21 00:23:34 UTC
Created attachment 292041 [details]
lsusb -v && Local Version Information

While trying to scan for BLE devices with 'sudo hcitool -i hci0 lescan' I got the following error: 'Set scan parameters failed: Input/output error'

Capturing with btmon while trying to scan gave me this:

< HCI Command: LE Set Scan Parameters (0x08|0x000b) plen 7
        Type: Active (0x01)
        Interval: 10.000 msec (0x0010)
        Window: 10.000 msec (0x0010)
        Own address type: Public (0x00)
        Filter policy: Accept all advertisement (0x00)
> HCI Event: Command Complete (0x0e) plen 4
      LE Set Scan Parameters (0x08|0x000b) ncmd 1
        Status: Unknown HCI Command (0x01)
Comment 140 MMD 2020-08-22 14:39:45 UTC
(In reply to Swyter from comment #137)
> Hi! There's actually a script that should help with this, at least as
> reference:
> https://gist.github.com/nevack/6b36b82d715dc025163d9e9124840a07
> 
> It's for newer kernels, though. So while the btusb.c part should more or
> less apply cleanly (because the existing/original CSR workaround stuff has
> been there for a while) the ERR_DATA_REPORTING stuff (on hci_core.c) is new
> and will need to be stripped out when back-porting the patch.
> 
> Who knows, maybe it's a good idea to ask someone from Canonical to add it to
> Ubuntu, once it's been more battle-tested. Hopefully (as it officially gets
> into stable kernels) distros downstream will pick this up, even on super old
> Linux versions.
> 
> Hope that helps. :)

Hi tried this script, but it gives below error
cp: cannot stat '/usr/lib/modules/5.8.2-050802-generic/build/.config': No such file or director

I checked there is no such directory and file.

I have Ubuntu 20.04 LTS with Kernel 5.4.0-42-generic. Then updated kernel to hoping that 5.8.2-050802-generic hoping by Bluetooth device will work with this .(As you mentioned this script is accepted in 5.7 and 5.8 version of kernel)
With new kernel 5.8.2-050802-generic, it detects logitech M337 mouse , but not able to configure. Then I tried above script and got error
cp: cannot stat '/usr/lib/modules/5.8.2-050802-generic/build/.config': No such file or director
Comment 141 MMD 2020-08-23 06:58:43 UTC
(In reply to MMD from comment #140)
> (In reply to Swyter from comment #137)
> > Hi! There's actually a script that should help with this, at least as
> > reference:
> > https://gist.github.com/nevack/6b36b82d715dc025163d9e9124840a07
> > 
> > It's for newer kernels, though. So while the btusb.c part should more or
> > less apply cleanly (because the existing/original CSR workaround stuff has
> > been there for a while) the ERR_DATA_REPORTING stuff (on hci_core.c) is new
> > and will need to be stripped out when back-porting the patch.
> > 
> > Who knows, maybe it's a good idea to ask someone from Canonical to add it
> to
> > Ubuntu, once it's been more battle-tested. Hopefully (as it officially gets
> > into stable kernels) distros downstream will pick this up, even on super
> old
> > Linux versions.
> > 
> > Hope that helps. :)
> 
> Hi tried this script, but it gives below error
> cp: cannot stat '/usr/lib/modules/5.8.2-050802-generic/build/.config': No
> such file or director
> 
> I checked there is no such directory and file.
> 
> I have Ubuntu 20.04 LTS with Kernel 5.4.0-42-generic. Then updated kernel to
> hoping that 5.8.2-050802-generic hoping by Bluetooth device will work with
> this .(As you mentioned this script is accepted in 5.7 and 5.8 version of
> kernel)
> With new kernel 5.8.2-050802-generic, it detects logitech M337 mouse , but
> not able to configure. Then I tried above script and got error
> cp: cannot stat '/usr/lib/modules/5.8.2-050802-generic/build/.config': No
> such file or director

I tried some command as suggested by you on
https://gist.github.com/nevack/6b36b82d715dc025163d9e9124840a07

Here is the output of its


lsusb -vvd 0a12:0001... gives bcdDevice 25.20

dmesg |grep 'CSR clone detected'
[   75.420911] Bluetooth: hci0: CSR: Unbranded CSR clone detected; adding workarounds...
[ 4880.814947] Bluetooth: hci0: CSR: Unbranded CSR clone detected; adding workarounds...
[22664.573526] Bluetooth: hci0: CSR: Unbranded CSR clone detected; adding workarounds...
[23268.855461] Bluetooth: hci0: CSR: Unbranded CSR clone detected; adding workarounds...

btmon -w my.log
Bluetooth monitor ver 5.54
= Note: Linux version 5.8.2-050802-generic (x86_64)                                                                                                                       0.574027
= Note: Bluetooth subsystem version 2.22                                                                                                                                       0.574029
= New Index: 00:1A:7D:DA:71:10 (Primary,USB,hci0)                                                                                                                       [hci0] 0.574030
@ MGMT Open: bluetoothd (privileged) version 1.17                                                                                                                     {0x0001} 0.574031
@ MGMT Open: btmon (privileged) version 1.17

hcidump -X
HCI sniffer - Bluetooth packet analyzer ver 5.53
device: hci0 snap_len: 1500 filter: 0xffffffffffffffff
Comment 142 MMD 2020-08-25 15:17:09 UTC
(In reply to Swyter from comment #137)
> Hi! There's actually a script that should help with this, at least as
> reference:
> https://gist.github.com/nevack/6b36b82d715dc025163d9e9124840a07
> 
> It's for newer kernels, though. So while the btusb.c part should more or
> less apply cleanly (because the existing/original CSR workaround stuff has
> been there for a while) the ERR_DATA_REPORTING stuff (on hci_core.c) is new
> and will need to be stripped out when back-porting the patch.
> 
> Who knows, maybe it's a good idea to ask someone from Canonical to add it to
> Ubuntu, once it's been more battle-tested. Hopefully (as it officially gets
> into stable kernels) distros downstream will pick this up, even on super old
> Linux versions.
> 
> Hope that helps. :)

Yes...finally it is working...
I installed kernel 5.8.3 and ran script at..
And it is working...
Thank you very much....
Comment 143 Babak 2020-08-26 17:01:32 UTC
Created attachment 292177 [details]
repeatedly calling hcidump -X
Comment 144 Babak 2020-08-26 17:04:09 UTC
Created attachment 292179 [details]
btmon -w dump
Comment 145 Babak 2020-08-26 17:04:58 UTC
Created attachment 292181 [details]
lsusb for CSR 4.0 dongle
Comment 146 Babak 2020-08-26 17:08:02 UTC
Hi everyone, I have bought a dongle just like Andres's in https://bugzilla.kernel.org/show_bug.cgi?id=60824#c81 and my system has problems activating it. This is my system:

Linux localhost.localdomain 5.7.9-200.fc32.x86_64 #1 SMP Fri Jul 17 16:23:37 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux

These are result of running commands recommended here:

$ hciconfig -a
hci0:	Type: Primary  Bus: USB
	BD Address: 00:1A:7D:DA:71:10  ACL MTU: 640:2  SCO MTU: 64:8
	DOWN 
	RX bytes:538 acl:0 sco:0 events:25 errors:0
	TX bytes:338 acl:0 sco:0 commands:25 errors:0
	Features: 0xff 0xff 0x8f 0xfa 0xdb 0xff 0x5b 0x87
	Packet type: DM1 DM3 DM5 DH1 DH3 DH5 HV1 HV2 HV3 
	Link policy: RSWITCH HOLD SNIFF PARK 
	Link mode: SLAVE ACCEPT 

Local Version Information from btmon output:
< HCI Command: Read Local Version Information (0x04|0x0001) plen 0                               #5 [hci0] 3.570144
> HCI Event: Command Complete (0x0e) plen 12                                   
>                  #6 [hci0] 3.572090
      Read Local Version Information (0x04|0x0001) ncmd 1
        Status: Success (0x00)
        HCI version: Bluetooth 4.0 (0x06) - Revision 12576 (0x3120)
        LMP version: Bluetooth 4.0 (0x06) - Subversion 8891 (0x22bb)
        Manufacturer: Cambridge Silicon Radio (10)

hcidump -X resulted in this : https://bugzilla.kernel.org/attachment.cgi?id=292177

btmon -w : https://bugzilla.kernel.org/attachment.cgi?id=292179

lsusb : https://bugzilla.kernel.org/attachment.cgi?id=292181

thanks for the great work
Comment 147 Pavel Volkov 2020-09-01 19:39:28 UTC
My dongle worked fine with kernel 5.7, broken with 5.8.0 (problems connecting with headphones) and seems to be fixed again in 5.8.5.

Same device as comment 118.
Comment 148 Swyter 2020-09-02 02:28:56 UTC
Yeah, I tested 5.8.2-arch when it came out and it was a bit disappointing, to be honest. Something in that timespan caused a regression. It was still an improvement, because the counterfeit detection worked fine and the dongle talked back and forth, but it suffered from weird connection problems, so it probably didn't play well with some of the Bluetooth stack changes introduced recently.

As you said, my patch on kernel 5.7 worked more or less fine. I haven't had time to properly track down the issue or see what happens in newer kernel versions with the patch included (from 5.8.2 onwards, I think). 

https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/diff/drivers/bluetooth/btusb.c?id=v5.8.2&id2=v5.8.1

But maybe it has ironed out itself. ¯\_(ツ)_/¯

If anyone has time to do some regression testing to narrow down the issue and better document what's going on, it would probably help a lot.
Comment 149 vic 2020-09-04 01:24:27 UTC
What about BLE, anyone can get this dongles work with BLE devices?
I tried without success like I said in my last comment #139.

I don't even know if this dongles work with BLE or not I just know they are advertised as Bluetooth 4.0. And HCI version during a packet capture is reporting 0x6 (Bluetooth Core Specification 4.0) so unless they are faking that too it should support BLE.

Does anyone here know if it supports BLE on Microsoft Windows?

During my tests trying to scan for BLE devices I got this on my packet capture log:

LE Set Scan Parameters (0x08|0x000b) ncmd 1
    Status: Unknown HCI Command (0x01)

It clearly doesn't recognize the LE scan command.
Comment 150 Real Name 2020-09-04 01:33:00 UTC
(In reply to vic from comment #149)
> Does anyone here know if it supports BLE on Microsoft Windows?

Mine at least doesn't. Trying to pair a device as BLE device doesn't do anything.

I was assessing if there was anything to get from the Windows driver but it seemingly doesn't have anything new to offer. But I'm far from an expert, so anyone with more knowledge is invited to chime in.
Comment 151 Maltahlgaming 2020-09-09 14:12:34 UTC
(In reply to Real Name from comment #150)
> (In reply to vic from comment #149)
> > Does anyone here know if it supports BLE on Microsoft Windows?
> 
> Mine at least doesn't. Trying to pair a device as BLE device doesn't do
> anything.
> 
> I was assessing if there was anything to get from the Windows driver but it
> seemingly doesn't have anything new to offer. But I'm far from an expert, so
> anyone with more knowledge is invited to chime in.

I have tried with my own fake CSR Bluetooth 5.0 adapter on Windows 10 and that works fine after i manually override the default plug and play driver with the generic bluetooth dongle driver in Device Manager. I could connect and use BLE devices without issues but on Linux it can see other devices but not connect regardless of bluetooth version.

Details on the dongle from Linux Kernel 5.8.3

>
Bus 001 Device 020: ID 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode)
Couldn't open device, some information will be missing
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               1.10
  bDeviceClass          224 Wireless
  bDeviceSubClass         1 Radio Frequency
  bDeviceProtocol         1 Bluetooth
  bMaxPacketSize0        64
  idVendor           0x0a12 Cambridge Silicon Radio, Ltd
  idProduct          0x0001 Bluetooth Dongle (HCI mode)
  bcdDevice           88.91
  iManufacturer           0 
  iProduct                2 
  iSerial                 0 
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength       0x00b1
    bNumInterfaces          2
    bConfigurationValue     1
    iConfiguration          0 
    bmAttributes         0xe0
      Self Powered
      Remote Wakeup
    MaxPower              100mA
>
Comment 152 MMD 2020-09-09 14:49:32 UTC
I am using Kernel 5.8.5. Bluetooth mouse is working fine, but some times it starts lagging and becomes very slow.Especially, when I start downloading files on Telegram, mouse becomes very slow. I tried some solutions , but problem is not solved.

Anybody know solution for this ?
Comment 153 Anupam Srivastava 2020-09-12 15:54:12 UTC
As a complete newbie in kernel space I wanted to pitch in and say that there are many types of cheap Chinese USB-Bluetooth chips in market that are just a tinsy bit different:

Bus 001 Device 003: ID 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode)
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass          224 Wireless
  bDeviceSubClass         1 Radio Frequency
  bDeviceProtocol         1 Bluetooth
  bMaxPacketSize0        64
  idVendor           0x0a12 Cambridge Silicon Radio, Ltd
  idProduct          0x0001 Bluetooth Dongle (HCI mode)
  bcdDevice           25.20
  iManufacturer           0
  iProduct                2 CSR8510 A10
  iSerial                 0
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength       0x00b1
    bNumInterfaces          2
    bConfigurationValue     1
    iConfiguration          0
    bmAttributes         0xa0
      (Bus Powered)
      Remote Wakeup
    MaxPower              100mA

The device gets detected but doesn't respond to any commands including 'power up'. I am thinking if it will be possible to have a proper support of such device in Linux. They do ship with drivers for Windows. If anyone would be so kind to point me to start pointing I would be very interested in hacking some support for it.
Comment 154 Flole 2020-09-23 14:06:48 UTC
(In reply to Alex from comment #86)
> Hi Swyter,
> 
> I also tried your patch v2 and actually in my case see no difference with
> the previous ones I tried (see my comments 55/56
> https://bugzilla.kernel.org/show_bug.cgi?id=60824#c55 )
> 
> Linux recognizes the controller, but it's unusable:
> 
> Can't init device hci0: Invalid argument (22)
> 
> > HCI Event: Command Complete (0x0e) plen 4                                   
> >                                                                  #22 [hci0]
> > 11.191461
>       Set Event Filter (0x03|0x0005) ncmd 1
>         Status: Invalid HCI Command Parameters (0x12)
> = Close Index: 00:1A:7D:DA:71:12                                            
> [hci0] 11.191493
> 
> 
> I've seen several people here have this issue, and I believe that comment 59
> may be quite relevant here:
> 
> > Set Event fails, looking at hci_core.c the set filter and previous calls
> are
> > made only if device supports BREDR, is there any way to tell device doesn't
> > support, or patch this ?

I have the same device, and my fix was simply changing the #define that checks if a device supports BREDR to "false" (aka disabling BREDR support completely) and that solved it.
Comment 155 vinodmishra 2020-09-27 12:45:53 UTC
(In reply to Flole from comment #154)
> (In reply to Alex from comment #86)
> > Hi Swyter,
> > 
> > I also tried your patch v2 and actually in my case see no difference with
> > the previous ones I tried (see my comments 55/56
> > https://bugzilla.kernel.org/show_bug.cgi?id=60824#c55 )
> > 
> > Linux recognizes the controller, but it's unusable:
> > 
> > Can't init device hci0: Invalid argument (22)
> > 
> > > HCI Event: Command Complete (0x0e) plen 4                                 
> > >                                                                  #22
> [hci0]
> > > 11.191461
> >       Set Event Filter (0x03|0x0005) ncmd 1
> >         Status: Invalid HCI Command Parameters (0x12)
> > = Close Index: 00:1A:7D:DA:71:12                                            
> > [hci0] 11.191493
> > 
> > 
> > I've seen several people here have this issue, and I believe that comment
> 59
> > may be quite relevant here:
> > 
> > > Set Event fails, looking at hci_core.c the set filter and previous calls
> > are
> > > made only if device supports BREDR, is there any way to tell device
> doesn't
> > > support, or patch this ?
> 
> I have the same device, and my fix was simply changing the #define that
> checks if a device supports BREDR to "false" (aka disabling BREDR support
> completely) and that solved it.
Thanks so much. 
Same device and same issue on Pi Zero. Changing the "#define lmp_bredr_capable(dev)" in hci_core.h to return false did the trick.
Comment 156 Dani 2020-10-16 21:46:46 UTC
It seems like this patch is fake CSRs of up to Bluetooth 4.0? I have the 5.0 one and I can't get it to work. I can't run: hciconfig hci0 up and also btmon.
Comment 157 Joao Vieira 2020-10-29 00:26:34 UTC
I'm using v5.9.0 and my device is no more no being detectable. It was when using v5.4.0 and I was able to use it with my readmi airdots but not with my dualshock 4

btmon -w my.log
Bluetooth monitor ver 5.54
= Note: Linux version 5.9.0 (armv7l)                                         0.389794
= Note: Bluetooth subsystem version 2.22                                     0.389809
@ MGMT Open: bluetoothd (privileged) version 1.18                   {0x0001} 0.389816
@ MGMT Open: btmon (privileged) version 1.18                        {0x0002} 0.389977
@ RAW Open: hcitool (privileged) version 2.22                      {0x0003} 29.538239
@ RAW Close: hcitool                                               {0x0003} 29.538398
@ RAW Open: hcitool (privileged) version 2.22                      {0x0003} 29.538529
@ RAW Close: hcitool                                               {0x0003} 29.538556

lsusb -vvd 0a12:0001...| grep bcdDevice
  bcdDevice           25.20
  
dmesg |grep 'CSR clone detected'
<nothing>

hcidump -X
HCI sniffer - Bluetooth packet analyzer ver 5.54
Can't attach to device hci0. No such device(19)
Comment 158 Yuri Santos 2020-11-10 14:03:50 UTC
Created attachment 293615 [details]
hciconfig -a
Comment 159 Yuri Santos 2020-11-10 14:06:55 UTC
Created attachment 293617 [details]
btmon -w mylog.txt

Mine btmon log of my broken dongle

My kernel is 5.9.6-arch1-1
Comment 160 Yuri Santos 2020-11-10 14:08:49 UTC
Created attachment 293619 [details]
lsusb log of my broken dongle
Comment 161 sisisisol 2020-11-18 02:21:42 UTC
(In reply to Dani from comment #156)
> It seems like this patch is fake CSRs of up to Bluetooth 4.0? I have the 5.0
> one and I can't get it to work. I can't run: hciconfig hci0 up and also
> btmon.

Me too
Comment 162 Yuri Santos 2020-11-26 20:03:45 UTC
(In reply to vinodmishra from comment #155)
> (In reply to Flole from comment #154)
> > (In reply to Alex from comment #86)
> > > Hi Swyter,
> > > 
> > > I also tried your patch v2 and actually in my case see no difference with
> > > the previous ones I tried (see my comments 55/56
> > > https://bugzilla.kernel.org/show_bug.cgi?id=60824#c55 )
> > > 
> > > Linux recognizes the controller, but it's unusable:
> > > 
> > > Can't init device hci0: Invalid argument (22)
> > > 
> > > > HCI Event: Command Complete (0x0e) plen 4                               
> > > >                                                                  #22
> > [hci0]
> > > > 11.191461
> > >       Set Event Filter (0x03|0x0005) ncmd 1
> > >         Status: Invalid HCI Command Parameters (0x12)
> > > = Close Index: 00:1A:7D:DA:71:12                                          
> > > [hci0] 11.191493
> > > 
> > > 
> > > I've seen several people here have this issue, and I believe that comment
> > 59
> > > may be quite relevant here:
> > > 
> > > > Set Event fails, looking at hci_core.c the set filter and previous
> calls
> > > are
> > > > made only if device supports BREDR, is there any way to tell device
> > doesn't
> > > > support, or patch this ?
> > 
> > I have the same device, and my fix was simply changing the #define that
> > checks if a device supports BREDR to "false" (aka disabling BREDR support
> > completely) and that solved it.
> Thanks so much. 
> Same device and same issue on Pi Zero. Changing the "#define
> lmp_bredr_capable(dev)" in hci_core.h to return false did the trick.

Could you provide more detailed information about how to do this? I'm trying to do the same thing but not sure which drivers i have to compile to apply this change.
Comment 163 Hans de Goede 2020-12-12 14:43:43 UTC
After seeing the:

"[v3] Bluetooth: btusb: Fix and detect most of the Chinese Bluetooth controllers"
https://patchwork.kernel.org/project/bluetooth/patch/6bce2c08-48f0-f49c-d70c-280475220550@gmail.com/

Patch land, I decided to give my own fake CSR dongles marked with "V5.0" on the outside another try. After much experimenting I have managed to get muy variant, which uses a "Barrot 8041a02" chip to work, the patches for this are pending upstream here:

https://git.kernel.org/pub/scm/linux/kernel/git/bluetooth/bluetooth-next.git/commit/?id=d74e0ae7e03032b47b8631cc1e52a7ae1ce988c0
https://git.kernel.org/pub/scm/linux/kernel/git/bluetooth/bluetooth-next.git/commit/?id=0671c0662383eefc272e107364cba7fe229dee44

The second patch contains the fix for the "Barrot 8041a02" chip, but if you want to try this, you need to apply both since the first patch introduces a new local variable which is used in the second.

Note this only fixes "v5.0" dongles with the Barrot chip.

Also important to note here is that frankly these clones are of very poor quality. I guess most of you are getting these from aliexpress. If you look for CSR8510 at aliexpress and then for offers saying "original csr8510" chip (and the dongle will be marked csr 4.0, then you should be getting a dongle with a real CSR chip for almost the same price and those work so much better it just is not funny!
Comment 164 Yuri Santos 2020-12-21 04:35:05 UTC
(In reply to vinodmishra from comment #155)
> (In reply to Flole from comment #154)
> > (In reply to Alex from comment #86)
> > > Hi Swyter,
> > > 
> > > I also tried your patch v2 and actually in my case see no difference with
> > > the previous ones I tried (see my comments 55/56
> > > https://bugzilla.kernel.org/show_bug.cgi?id=60824#c55 )
> > > 
> > > Linux recognizes the controller, but it's unusable:
> > > 
> > > Can't init device hci0: Invalid argument (22)
> > > 
> > > > HCI Event: Command Complete (0x0e) plen 4                               
> > > >                                                                  #22
> > [hci0]
> > > > 11.191461
> > >       Set Event Filter (0x03|0x0005) ncmd 1
> > >         Status: Invalid HCI Command Parameters (0x12)
> > > = Close Index: 00:1A:7D:DA:71:12                                          
> > > [hci0] 11.191493
> > > 
> > > 
> > > I've seen several people here have this issue, and I believe that comment
> > 59
> > > may be quite relevant here:
> > > 
> > > > Set Event fails, looking at hci_core.c the set filter and previous
> calls
> > > are
> > > > made only if device supports BREDR, is there any way to tell device
> > doesn't
> > > > support, or patch this ?
> > 
> > I have the same device, and my fix was simply changing the #define that
> > checks if a device supports BREDR to "false" (aka disabling BREDR support
> > completely) and that solved it.
> Thanks so much. 
> Same device and same issue on Pi Zero. Changing the "#define
> lmp_bredr_capable(dev)" in hci_core.h to return false did the trick.

Thanks, i did that. Seems to have a advance, but still not working as expected.


Info and logs:

https://gist.github.com/Yrds/5c2d610c86facc9b1f0522a6509e9e23
Comment 165 er.krali 2021-01-20 08:52:23 UTC
(In reply to Yuri Santos from comment #164)
> (In reply to vinodmishra from comment #155)
> > (In reply to Flole from comment #154)

[snip]

> > Thanks so much. 
> > Same device and same issue on Pi Zero. Changing the "#define
> > lmp_bredr_capable(dev)" in hci_core.h to return false did the trick.
> 
> Thanks, i did that. Seems to have a advance, but still not working as
> expected.
> 
> 
> Info and logs:
> 
> https://gist.github.com/Yrds/5c2d610c86facc9b1f0522a6509e9e23

I can report some success here using the solution proposed here:

https://askubuntu.com/a/1304723

IOW, disabling the "clear event filter" step altogether in hci_core.c (lines around 296-297).

Perhaps this could be added as another quirk, but that's sadly beyond my ability.

For reference, here's the data of my model (Bluetooth 5.0, bcdDevice 8891) :

    Features: 0xbf 0x3e 0x4d 0xfa 0xdb 0x3d 0x7b 0xc7
    HCI Version: 5.0 (0x9) HCI Revision: 0x810
    LMP Version: 5.0 (0x9) LMP Subversion: 0x2312
    Manufacturer: Cambridge Silicon Radio (10)

  idVendor           0x0a12 Cambridge Silicon Radio, Ltd
  idProduct          0x0001 Bluetooth Dongle (HCI mode)
  bcdDevice           88.91
  iManufacturer           0 
  iProduct                2 BT DONGLE10

I have tried pairing a couple of devices and it has worked so far.

Hopefully a cleaner version of this hack will be able to get into the official kernel.
Comment 166 mirh 2021-01-22 13:25:42 UTC
So.. I hate to bring yet another variable (and probably yet another scenario) to the equation, but have people in here tried to also consider electrical interference?

I had been using my fake CSR (lsusb is identical to comment 77, except bcdUSB=2.00 and MaxPower=0mA) for months on my old Core 2 Quad PC with WH-1000XM2. Arguably I was getting even a better run with A2DP and LDAC than windows itself, which is quite the achievement considering how infamous the linux wireless audio stack is. 

I changed to a more modern Z97 system, and lo and behold I was getting all kinds of crazy errors, disconnections, stuttering, failures to connect.. you name it. After bisecting all my software I eventually turned to the hardware, and see yourself:

https://www.intel.com/content/dam/www/public/us/en/documents/white-papers/usb3-frequency-interference-papers.pdf

Now, with an USB extension cord (or the USB 2.0 port on my laptop *very* far from all the others), I can get a rock solid signal.. at least up to the distance of literally a finger from the antenna inside the headphones. More than that, and anything goes. Sometimes I can listen to an entire album with a normal posture and position, others I have almost to touch the bluetooth receiver. 

A long cry from when I could even go to the bathroom meters, a wall, and a wooden door away (which is more or less what the AR3012 built-in in my laptop can still score instead). 

Something is rotten here electromagnetically but I cannot figure out anything more (reported RSSI in btmgmt looks indeed like shit). 
I tried to disable some of the usb power saving stuff, to no avail. 
And I wonder if the "hci0: unexpected event for opcode 0x0000" error that I'm only getting on the the first connect on the new Intel southbridges is in any way related.
Comment 167 Hans de Goede 2021-01-22 13:45:24 UTC
mirh, hi, interesting comment.

I wonder if this perhaps is a USB packet timing issue, rather then a signal strength issue, esp. the " "hci0: unexpected event for opcode 0x0000" error that I'm only getting..." bit makes me wonder this.

Your old PC was likely using an EHCI controller. Where as your new PC is using a xHCI controller, or a mix of EHCI + xHCI.  There is a subtle problem with USB1/2 compatibility and xHCI controllers. the UHCI/EHCI USB1/2 controllers have a frameclock of 1 ms and when sending a new USB packet to a device just after the frame clock-tick, it will get delayed until the next frame. The xHCI controller however will send any new USB control/bulk transfers *immediately* if there is room for it on the BUs schedule (IOW if the bus is otherwise idle).

I've recently helped fix support for some old USB scanners by inserting a 1 ms delay for some requests during the initialization of the scanner since the new xHCI behavior made the time between 2 requests too short for the firmware of the scanner to handle.  I wonder if something similar is going on here.
Comment 168 mirh 2021-01-22 15:50:59 UTC
Uh. Actually, now that you make me check my journal logs (unfortunately the old computer is no longer with me).. It was using uhci_hcd indeed. 

https://www.intel.com/content/dam/doc/datasheet/i-o-controller-hub-7-datasheet.pdf#page=46

Not sure if due to some advanced switcheroo logic, or just out of luckily plugging it in inside the right port. 

That could also explain why the damn adapter is still glitchy even when I plug it in my other A50M netbook with all USB 2.0 ports.
Comment 169 Hans de Goede 2021-01-22 16:19:20 UTC
Ah, so your old PC was that old, ok. So there are basically 4 generations of USB controllers which are relevant here:

1. The first USB-2 capable Intel PCs use UHCI for USB-1, and EHCI for USB-2. Ports directly on the motherboard are automatically muxed to the UHCI/EHCI controller depending on device speed (and some BT dongles are USB1).

When a USB-2 hub is plugged into this generation and then an USB-1 device plugged into the HUB, then the USB-1 device will be handled by the EHCI controller. If you still have your old PC you can check if the BT USB adapter you are using perhaps dislikes being routed through the TT (transaction translator) of a hub, but putting an USB-2.0 hub in between.

2. Later USB-2 capable Intel PCs dropped the UHCI controllers (and the muxing of ports) instead integrating a USB-2 hub with the EHCI controller(s)

3. The first USB-3 capable motherboards had a combinationn of USB-3 ports connected to a XHCI controller and also had some EHCI controllers. Also the USB-3 ports could be muxed to the EHCI controller (loosing USB-3 support) for use with operating systems which do not support the XHCI controller. With the 1st gen the ports were actually muxed to the EHCI by default IIRC.

4. Current PCs often only have a XHCI controller which serves both the USB-3 and USB-2 ports of the PC.
Comment 170 fredleb 2021-01-31 15:05:02 UTC
Hi !

Not sure it helps but this is the one I bought: https://ebay.us/Om8h1k

Of course, before I discovered this thread...

Should I get another stick or is there any chance that this will ever work ? Anything I can do to help ?

Thanks for your efforts all !

Cheers,
FL
Comment 171 Sergey Kondakov 2021-01-31 15:47:03 UTC
(In reply to fredleb from comment #170)
> Hi !
> 
> Not sure it helps but this is the one I bought: https://ebay.us/Om8h1k
> 
> Of course, before I discovered this thread...
> 
> Should I get another stick or is there any chance that this will ever work ?
> Anything I can do to help ?
> 
> Thanks for your efforts all !
> 
> Cheers,
> FL

Likely. After all fiddling about, I gave up on that thing.

Instead I bought Orico BTA-508 (on BT5 RTL8761B chip) from https://www.aliexpress.com/item/1005001273586697.html They also have previous BT4 version of a dongle based on real CSR8510 chip and proper firmware: https://www.aliexpress.com/item/32734449020.html - I've seen reports that this one actually works too.

For BT5 RTL8761B I had to manually extract firmware file from its Windows driver, current release kernel does not have any and one known from Github did not work for me: https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/572#note_776534
Comment 174 Diego Morais 2021-05-06 03:33:32 UTC
I have a CSR Dongle with the exact same problem on Debian 10. I am a new linux user, so my question is how to apply the patch suggested this comment (In reply to Gustavo Padovan from comment #6)
> Created attachment 107379 [details]
> mark Delete Stored Keys as non-critical failure
> 
> Please apply this patch and check if it works. Also capture logs and send
> them here.
> 
> This is a modified version of a patch Johan Hedberg did some time ago.



Thanks
Comment 175 Steeve McCauley 2021-05-06 08:38:48 UTC
(In reply to Diego Morais from comment #174)
> I have a CSR Dongle with the exact same problem on Debian 10. I am a new
> linux user, so my question is how to apply the patch suggested this comment
> (In reply to Gustavo Padovan from comment #6)
> > Created attachment 107379 [details]
> > mark Delete Stored Keys as non-critical failure
> > 
> > Please apply this patch and check if it works. Also capture logs and send
> > them here.
> > 
> > This is a modified version of a patch Johan Hedberg did some time ago.
> 
> 
> 
> Thanks

Probably best to ask for debian advice in a debian forum.  I'm not a debian user but I'd try updating the kernel, found this on google,

https://www.osradar.com/how-to-install-linux-kernel-5-10-debian-10/
Comment 176 Diego Morais 2021-05-06 13:40:47 UTC
(In reply to Steeve McCauley from comment #175)
> (In reply to Diego Morais from comment #174)
> > I have a CSR Dongle with the exact same problem on Debian 10. I am a new
> > linux user, so my question is how to apply the patch suggested this comment
> > (In reply to Gustavo Padovan from comment #6)
> > > Created attachment 107379 [details]
> > > mark Delete Stored Keys as non-critical failure
> > > 
> > > Please apply this patch and check if it works. Also capture logs and send
> > > them here.
> > > 
> > > This is a modified version of a patch Johan Hedberg did some time ago.
> > 
> > 
> > 
> > Thanks
> 
> Probably best to ask for debian advice in a debian forum.  I'm not a debian
> user but I'd try updating the kernel, found this on google,
> 
> https://www.osradar.com/how-to-install-linux-kernel-5-10-debian-10/

Thanks for your response.

Installed the kernel mentioned with no success.

uname -r
5.10.0-0.bpo.4-amd64

I would like to try applying the patch mentioned in my last post, is it complicated?

Thanks again!
Comment 177 mirh 2021-05-16 23:32:52 UTC
(In reply to Hans de Goede from comment #169)
> When a USB-2 hub is plugged into this generation and then an USB-1 device
> plugged into the HUB, then the USB-1 device will be handled by the EHCI
> controller. If you still have your old PC you can check if the BT USB
> adapter you are using perhaps dislikes being routed through the TT
> (transaction translator) of a hub, but putting an USB-2.0 hub in between.

I could only test this now with the Windows 7 default CSR drivers, but indeed this is what happens. 

I tried directly all the row of ports on the P5QPL-AM, and not a single hitch. I plugged in my "Techole UH411" USB hub (technically it's USB 3, but I'd hope it doesn't matter much on this motherboard), and boom. Basically same behaviour I was getting on the newer PC with connection and disconnection cycles all over the place.
Comment 178 Hans de Goede 2021-05-17 09:59:46 UTC
(In reply to mirh from comment #177)
> I could only test this now with the Windows 7 default CSR drivers, but
> indeed this is what happens. 
> 
> I tried directly all the row of ports on the P5QPL-AM, and not a single
> hitch. I plugged in my "Techole UH411" USB hub (technically it's USB 3, but
> I'd hope it doesn't matter much on this motherboard), and boom. Basically
> same behaviour I was getting on the newer PC with connection and
> disconnection cycles all over the place.

Ok, so it misbehaves with the Windows drivers too once a USB-2 hub (with its TT) gets into play. So other then only using the dongle directly plugged into really old (by now) motherboars there really is not much which you can do here I'm afraid.

I suggest you buy a new dongle. If you search on say aliexpress (*) for csr8510 then you will find several dongles which are advertised as "original csr8510 chip" in my experience these indeed contain a real CSR8510 chip and they work a lot better then the clones. So the best advice which I have is just to order one of those.

This advice goes for everyone in this thread who is still having issues. Trying to get these clone to work with Linux is a good thing to do, since this will also help other users with such clones. But if you just want something which works then just buying a dongle with a real CSR8510 chip is the way to go (these things are pretty affordable).



*) Not my favorite source because of the environmental impact of shipping, but ...
Comment 179 Kai Krakow 2021-05-17 11:36:04 UTC
(In reply to Hans de Goede from comment #178)

> I suggest you buy a new dongle. If you search on say aliexpress (*) for
> csr8510 then you will find several dongles which are advertised as "original
> csr8510 chip" in my experience these indeed contain a real CSR8510 chip and
> they work a lot better then the clones. So the best advice which I have is
> just to order one of those.

Is there a way the kernel could identify those as a fake/clone, and advertise this in dmesg? It would make debugging user reports much easier as we could just say "get an original instead of a fake/clone".

This chipset (and clones) seems to be very common, almost any USB dongle I can find has this chipset (or a clone) inside (according to lsusb), and some work, others don't. This chip is even in dongles of manufactures who somewhat claim that the Bluetooth dongle is completely made by themselves (with no mention of the CSR chip inside), or maybe these are just fake dongles with a brand name on it, I'm not sure. It's difficult to get something else even if you're not looking explicitly for CSR.
Comment 180 Swyter 2021-05-17 13:55:45 UTC
Newer versions of the kernel should detect (most) fake CSR dongles and warn via dmesg, check this out: https://github.com/torvalds/linux/commit/cde1a8a992875a7479c4321b2a4a190c2e92ec2a#diff-82175cb30d8f0e6fd9fb8b83571c33aac5db6db4d5f79dd97d4255116a79c79eR1813

My mainlined patch also adds a few known workarounds, which with the latest bluez changes seem insufficient. But when I originally submitted the patch it made my dongle work just fine. So in theory using an older patched kernel should work. 

Improvements are welcome, while getting a new dongle is a decent solution ideally we'd fix the counterfeit ones enough to work as well as on Windows. The problem is that bluez is a moving target, with new modes being introduced all the time, regressing these fickle chips.
Comment 181 Kai Krakow 2021-05-17 22:39:56 UTC
(In reply to Swyter from comment #180)
> Newer versions of the kernel should detect (most) fake CSR dongles and warn
> via dmesg

Oh nice, thanks for the info.

If I see this correctly, it's submitted for 5.13: Is that what you mean by "newer kernels"? Will it be backported to stable?
Comment 182 Kai Krakow 2021-05-17 22:46:52 UTC
Nevermind, I found out that it's in 5.10 already. My git foo didn't work as I expected, seems it appeared in 5.9.
Comment 183 Swyter 2021-05-17 23:11:21 UTC
It ended up being included starting with Linux v5.9-rc1 in July last year, I think I originally tested it with a late v5.7 or v5.8 kernel. Then it regressed shortly afterwards. ¯\_(ツ)_/¯

That's why I said a few months ago that trying to find what broke it is a good start point. Solving it seems like a matter of finding the culprit by narrowing down the range of changes between a known working point and now. Then it should be a matter of testing and sending a small patch that builds onto what's already there in less than ten lines, adding one or more missing quirks.

If I were to start working on another fix now I would also compare the packet flow between the Windows and Linux Bluetooth stacks and see what's up and why it locks up after receiving very trivial stuff. Linux is probably doing something extra. :)

Comment #165 here and above (testing getting rid of the event filter thingie) seems also like a good candidate to expand the quirk list: https://bugzilla.kernel.org/show_bug.cgi?id=60824#c165

Food for thought.
Comment 184 Lucas Rizzini 2021-05-30 01:09:34 UTC
(In reply to Mauro Fontana from comment #67)
> Created attachment 289017 [details]
> lsusb for bcdDevice 25.20
> 
> Okay, managed to compiled the module with the fixups option and loaded.
> Unfortunately, although the module loads without problems, the BT adapter
> won't work.
> 
> hciconfig hci0 up 
> 
> ends in connection timed out.
> 
> I attach the full lsusb -v output for this device. Is there any other
> helpful info I can provide? Being able to solve this would be great, as in
> my country all the BT dongles I've seen online are CSR dongles.

Same here. I managed to compile the module on kernel 5.4.6 with the patch that has the fixups made by Fernando Carvalho, but the symptoms are the same as without it; no bluetooth adapter found with bluetoothctl or any other front end. 

Dmesg shows the patch and the fixups are indeed applied.

lsusb -v -> https://pastebin.com/HDc9z10e

/etc/modprobe.d/csr-bluetoothbongle.conf:
<code>options btusb fixups=0x0800000:0x000004:0x0a12:0x0001:0x8891</code>

dmesg:
<code>
[ 2080.767176] usbcore: registered new interface driver btusb
[ 2086.045608] usb 2-4: new full-speed USB device number 11 using xhci_hcd
[ 2086.187920] usb 2-4: config 1 interface 1 altsetting 0 endpoint 0x3 has wMaxPacketSize 0, skipping
[ 2086.187922] usb 2-4: config 1 interface 1 altsetting 0 endpoint 0x83 has wMaxPacketSize 0, skipping
[ 2086.188519] usb 2-4: New USB device found, idVendor=0a12, idProduct=0001, bcdDevice=88.91
[ 2086.188520] usb 2-4: New USB device strings: Mfr=0, Product=2, SerialNumber=0
[ 2086.188522] usb 2-4: Product: BT DONGLE10
[ 2086.190717] btusb: New fixups. Device: 0x0a12:0x0001/0x8891. Rule 1/1 (5 terms): 0x0a12:0x0001/0x8891
[ 2086.190718] btusb: driver flags: initial => 0x0000000000000004
[ 2086.190719] btusb: driver flags: masked  => 0x0000000000800000</code>
Comment 185 Brett 2021-06-24 11:43:16 UTC
Hey everyone!  I'm currently running 5.12.12-arch1-1 and I'm having the same issues with the CRS bluetooth dongle. I've found that it begins to work if I suspend my computer and then wake it up.  This has worked every time I've tried it so far.  I'm not sure what this means for figuring out a fix, but I believe it should be helpful.  Let me know if you need more info regarding my setup.
Comment 186 Swyter 2021-07-16 23:47:43 UTC
Turns out Hans de Goede completed the work I started last year trying to
improve Chinese-clone detection of CSR controller chips. And seems like it all points to the same power reset issue *and* workaround.

The workaround was already present in the kernel since December 2020: https://github.com/torvalds/linux/commit/0671c0662383eefc272e107364cba7fe229dee44

Here's my submitted patch, give it a go. In theory you don't need anything else, no `reset=1 enable_autosuspend=0`, just relaxing the check: https://patchwork.kernel.org/project/bluetooth/patch/906e95ce-b0e5-239e-f544-f34d8424c8da@gmail.com/


PS: For more information and some discussion take a look here: https://gist.github.com/nevack/6b36b82d715dc025163d9e9124840a07#gistcomment-3815490
Comment 187 Swyter 2021-07-29 22:12:09 UTC
Quick update. Marcel Holtmann has accepted the original force-suspend-for-everyone patch in bluetooth-next. So with this my main dongle (it looks like this: https://i.imgur.com/N8Dkaii.jpg) should finally work great:

https://patchwork.kernel.org/project/bluetooth/patch/906e95ce-b0e5-239e-f544-f34d8424c8da@gmail.com/


There's a complementary, tentative patch here disabling HCI_FLT_CLEAR_ALL with a new quirk:

https://gist.github.com/nevack/6b36b82d715dc025163d9e9124840a07#gistcomment-3818325

Please confirm that it works fine on your end when combined with the force-suspend one. Giving me a Tested-by: Name Surname <e-mail here>, if you'd like.

That should fix another good bunch of clones. I believe.

Let me know how it goes. ¯\_(ツ)_/¯
Comment 188 Jack 2021-08-02 18:12:36 UTC
The last hunk of that last patch fails to apply to 5.13.7, although it looks like at least some of it is already there (net/bluetooth/hci_request.c).  Also, is there a quick summary of what I should post to identify and report the failure with my dongle?  (shows up as BT DONGLE10, and gives "Bluetooth: hci0: CSR: Failed to suspend the device for our Barrot 8041a02 receive-issue workaround"
Comment 189 Sergey Kondakov 2021-08-07 21:16:24 UTC
Both patches applied fine for me on 5.13.7 using '-p1 -F3' options. My dingy bcdDevice=88.91/LMP_sv=0x811 CSR 4.0 seems to paired with an A2DP headset. Haven't tested DualShock 3/4 gamepads though, ones that completely failed under it previously. I'm not confident to declare that it's 100% fine but I assume that it is, so I've inserted that fake CSR into my backup machine.
Comment 190 Jay 2021-08-12 14:27:54 UTC
With both patches I can finally use my China Bluetooth Dongle CSR V5.0! Works perfectly with my Sony bluetooth headset. Thanks a lot!
On Arch Linux 5.13.9-arch1-1
Comment 191 Swyter 2021-08-12 14:51:06 UTC
Good to hear. The force-suspend-for-everyone patch has landed on linux-next: https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/?id=f4292e2faf522f899b642d2040a2edbcbd455b9f

So that only leaves the `HCI_FLT_CLEAR_ALL` thing to do, so far. Maybe someone else wants to tackle this one. I don't mind, but sending not-so-thoroughly tested patches for things I can't verify directly is a bit eh.

@Jay, does it work fine with just the first patch? That's important.

Also please post your `hciconfig -a` *or* 'Read Local Version Information' packet from your `btmon -w my.log` as shown here:
https://bugzilla.kernel.org/show_bug.cgi?id=60824#c119

We're interested in the HCI Version / Revision and LMP Version / Subversion fields, which don't appear in your lsusb dumps, and show what really makes your dongle unique.

Thanks a lot, guys.
Comment 192 Jack 2021-08-12 18:16:19 UTC
The dongle itself says V5.0, does show up in lsusb, but is not seen by bluetootctl.

dmesg:
[88730.215224] usb 1-2: new full-speed USB device number 15 using xhci_hcd
[88730.533384] usb 1-2: New USB device found, idVendor=0a12, idProduct=0001, bcdDevice=88.91
[88730.533390] usb 1-2: New USB device strings: Mfr=0, Product=2, SerialNumber=0
[88730.533392] usb 1-2: Product: BT DONGLE10
[88730.546179] Bluetooth: hci0: CSR: Unbranded CSR clone detected; adding workarounds and force-suspending once...
[88730.546186] Bluetooth: hci0: CSR: Failed to suspend the device for our Barrot 8041a02 receive-issue workaround

< HCI Command: Read Local Version In.. (0x04|0x0001) plen 0  #1 [hci0] 6.834674
> HCI Event: Command Complete (0x0e) plen 12                 #2 [hci0] 6.838502
      Read Local Version Information (0x04|0x0001) ncmd 1
        Status: Success (0x00)
        HCI version: Bluetooth 4.0 (0x06) - Revision 12576 (0x3120)
        LMP version: Bluetooth 4.0 (0x06) - Subversion 8891 (0x22bb)
        Manufacturer: Cambridge Silicon Radio (10)

I still can't figure out how to get the quirks to work, as dmesg still shows
[   20.500180] btusb: unknown parameter 'fixups' ignored
Comment 193 Yuri Santos 2021-08-13 03:39:14 UTC
I did new tests (In reply to Swyter from comment #191)
> Good to hear. The force-suspend-for-everyone patch has landed on linux-next:
> https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/
> ?id=f4292e2faf522f899b642d2040a2edbcbd455b9f
> 
> So that only leaves the `HCI_FLT_CLEAR_ALL` thing to do, so far. Maybe
> someone else wants to tackle this one. I don't mind, but sending
> not-so-thoroughly tested patches for things I can't verify directly is a bit
> eh.
> 
> @Jay, does it work fine with just the first patch? That's important.
> 
> Also please post your `hciconfig -a` *or* 'Read Local Version Information'
> packet from your `btmon -w my.log` as shown here:
> https://bugzilla.kernel.org/show_bug.cgi?id=60824#c119
> 
> We're interested in the HCI Version / Revision and LMP Version / Subversion
> fields, which don't appear in your lsusb dumps, and show what really makes
> your dongle unique.
> 
> Thanks a lot, guys.

I did new tests but unfortunately doesn't work yet, but give better results since my last test few months ago, look my logs from btmon -w and lsusb -v:

https://gist.github.com/Yrds/6eca36c188c822bab33ef99630dace5b

I can do more tests with new incoming patches.

Thank you for the patches, it improved a lot.
Comment 194 Jay 2021-08-13 11:09:11 UTC
(In reply to Swyter from comment #191)

> @Jay, does it work fine with just the first patch? That's important.

With just the first patch it does not work:
[  107.129483] usb 1-1: new full-speed USB device number 6 using xhci_hcd
[  107.516042] usb 1-1: New USB device found, idVendor=0a12, idProduct=0001, bcdDevice=88.91
[  107.516050] usb 1-1: New USB device strings: Mfr=0, Product=2, SerialNumber=0
[  107.516052] usb 1-1: Product: BT DONGLE10
[  107.538827] Bluetooth: hci0: CSR: Unbranded CSR clone detected; adding workarounds and force-suspending once...
[  107.538835] Bluetooth: hci0: CSR: Failed to suspend the device for our Barrot 8041a02 receive-issue workaround

It works only with both patches.

> Also please post your `hciconfig -a` *or* 'Read Local Version Information'
> packet from your `btmon -w my.log` as shown here:
> https://bugzilla.kernel.org/show_bug.cgi?id=60824#c119
> 
> We're interested in the HCI Version / Revision and LMP Version / Subversion
> fields, which don't appear in your lsusb dumps, and show what really makes
> your dongle unique.

The new bluez package does not contain hciconfig any more. btmon does not trace any 'Read Local Version Information' packet. Is there another easy way to get that information?
Comment 195 Jack 2021-08-14 23:30:24 UTC
Yahoo.  Upgraded to kernel 5.13.10.  dmesg is similar to earlier kernel (Comment 192) but the device is now recognized, and I can pair it with my Sony BT headphones.  Not really sure what changed that made the difference.

[  105.530371] usb 1-1: new full-speed USB device number 6 using xhci_hcd
[  105.850394] usb 1-1: New USB device found, idVendor=0a12, idProduct=0001, bcdDevice=88.91
[  105.850403] usb 1-1: New USB device strings: Mfr=0, Product=2, SerialNumber=0
[  105.850406] usb 1-1: Product: BT DONGLE10
[  105.908027] btusb: unknown parameter 'fixups' ignored
[  105.908193] usbcore: registered new interface driver btusb
[  105.911173] Bluetooth: hci0: CSR: Unbranded CSR clone detected; adding workarounds and force-suspending once...
[  105.911178] Bluetooth: hci0: CSR: Failed to suspend the device for our Barrot 8041a02 receive-issue workaround
[  184.834006] Bluetooth: RFCOMM TTY layer initialized
[  184.834012] Bluetooth: RFCOMM socket layer initialized
[  184.834017] Bluetooth: RFCOMM ver 1.11
[ 2108.854428] input: WH-CH700N (AVRCP) as /devices/virtual/input/input23

btmon info same as in Comment 192.

I do find it interesting that it says V5.0 on the device, but btmon shows Bluetooth 4.0, although for a cheap dongle from eBay, I'm not surprised.
Comment 196 Swyter 2021-08-15 05:28:42 UTC
The 'Read Local Version Information' packet should show up when you unplug and re-plug the dongle, it's one of the first HCI packets that get transmitted during initialization. Even if the dongle gets stuck it should happen after asking that.
Comment 197 Jay 2021-08-16 06:39:01 UTC
Here is the output:

< HCI Command: Read Local Version I.. (0x04|0x0001) plen 0  #1 [hci0] 14.114796
> HCI Event: Command Complete (0x0e) plen 12                #2 [hci0] 14.118624
      Read Local Version Information (0x04|0x0001) ncmd 1
        Status: Success (0x00)
        HCI version: Bluetooth 4.0 (0x06) - Revision 12576 (0x3120)
        LMP version: Bluetooth 4.0 (0x06) - Subversion 8891 (0x22bb)
        Manufacturer: Cambridge Silicon Radio (10)

I wonder that it says Bluetooth 4.0, because it was sold as 5.0 and also on the plug "V5.0" is printed.
Comment 198 guimarcalsilva 2021-09-08 22:40:32 UTC
I tested it using a live image of Fedora Rawride from September 8 2021 with the development version of Kernel 5.15. The dongle is detected but I can't turn it on in the settings or in blueman:

[1125.221008] usb 1-4: USB disconnect, device number 14
[1130.356918] usb 1-4: new full-speed USB device number 15 using xhci_hcd
[1130.486202] usb 1-4: New USB device found, idVendor=0a12, idProduct-0001, bcdDevice=25.20
[1130.486219] usb 1-4: New USB device strings: Mfr=0, Product=2, SerialNumber=0 [1130.486227] usb 1-4: Product: CSR8510 A10
[1130.496424] Bluetooth: hci0: CSR: Unbranded CSR clone detected; adding workarounds and force-suspending once... 
[1135.982384] Bluetooth: hci0: CSR: Failed to suspend the device for our Barrot 8041a02 receive-issue workaround
[1141.099165] Bluetooth: hci0: setting interface failed (110)

My dongle is packaged as a Bluetooth 5 device. Unfortunately I couldn't run hciconfig because for some reason dnf refused to work on the live image. I'll try bringing more logs later.
Comment 199 guimarcalsilva 2021-09-08 23:36:05 UTC
(In reply to guimarcalsilva from comment #198)
> I tested it using a live image of Fedora Rawride from September 8 2021 with
> the development version of Kernel 5.15. The dongle is detected but I can't
> turn it on in the settings or in blueman:
> 
> [1125.221008] usb 1-4: USB disconnect, device number 14
> [1130.356918] usb 1-4: new full-speed USB device number 15 using xhci_hcd
> [1130.486202] usb 1-4: New USB device found, idVendor=0a12, idProduct-0001,
> bcdDevice=25.20
> [1130.486219] usb 1-4: New USB device strings: Mfr=0, Product=2,
> SerialNumber=0 [1130.486227] usb 1-4: Product: CSR8510 A10
> [1130.496424] Bluetooth: hci0: CSR: Unbranded CSR clone detected; adding
> workarounds and force-suspending once... 
> [1135.982384] Bluetooth: hci0: CSR: Failed to suspend the device for our
> Barrot 8041a02 receive-issue workaround
> [1141.099165] Bluetooth: hci0: setting interface failed (110)
> 
> My dongle is packaged as a Bluetooth 5 device. Unfortunately I couldn't run
> hciconfig because for some reason dnf refused to work on the live image.
> I'll try bringing more logs later.

Update - I managed to make it work with the same live image on my laptop (before I had tested on my desktop), but first I had to change the USB port it was connected to. It didn`t work before doing that. 

On Fedora there`s no hciconfig anymore, and since my laptop already has a internal bluetooth adapter btmon looks confusing. I made sure to select the right adapter on blueman and also on bluetoothctl.

I connected my DualShock 4 to my laptop using the adapter and it worked after changing USB ports and also I had to try a couple of times.

Dmesg

[ 2205.255388] blueman-manager (4133) used greatest stack depth: 11800 bytes left
[ 2215.403794] usb 1-4: new full-speed USB device number 13 using xhci_hcd
[ 2215.533560] usb 1-4: New USB device found, idVendor=0a12, idProduct=0001, bcdDevice=25.20
[ 2215.533566] usb 1-4: New USB device strings: Mfr=0, Product=2, SerialNumber=0
[ 2215.533569] usb 1-4: Product: CSR8510 A10
[ 2215.542252] Bluetooth: hci0: CSR: Unbranded CSR clone detected; adding workarounds and force-suspending once...
[ 2215.542266] Bluetooth: hci0: CSR: Failed to suspend the device for our Barrot 8041a02 receive-issue workaround
[ 2479.091850] sony 0005:054C:09CC.0004: unknown main item tag 0x0
[ 2479.110875] input: Wireless Controller Touchpad as /devices/pci0000:00/0000:00:14.0/usb1/1-4/1-4:1.0/bluetooth/hci0/hci0:48/0005:054C:09CC.0004/input/input27
[ 2479.111617] input: Wireless Controller Motion Sensors as /devices/pci0000:00/0000:00:14.0/usb1/1-4/1-4:1.0/bluetooth/hci0/hci0:48/0005:054C:09CC.0004/input/input28
[ 2479.120271] input: Wireless Controller as /devices/pci0000:00/0000:00:14.0/usb1/1-4/1-4:1.0/bluetooth/hci0/hci0:48/0005:054C:09CC.0004/input/input26
[ 2479.121803] sony 0005:054C:09CC.0004: input,hidraw0: BLUETOOTH HID v81.00 Gamepad [Wireless Controller] on 00:1a:7d:da:71:10


The 00:1a:7d:da:71:10 address is from the fake bluetooth dongle. The internal bluetooth uses 54:8C:A0:A8:AC:E0. I`m sure I`m connecting through the right bluetooth adapter because when I disconnect the dongle the controller gets disconnected and a bluetoothctl + list only shows the internal adapter.


The question now is why do I have to change USB ports for it to work on my laptop and why it didn`t work on my desktop with the same live system. I`ll try once again on my desktop and see if I manage to make it work.
Comment 200 guimarcalsilva 2021-09-09 00:02:03 UTC
Okay, last comment, sorry for the spam, I had to change computers again.

I tried changing USB ports on my desktop PC but bluetoothctl and list don`t find any device, no matter what USB port I tried.

To make the btmon log short I restarted and only reconnected the dongle once. When it says ~delete index~ is when I removed the dongle from the PC

Bluetooth monitor ver 5.61
= Note: Linux version 5.15.0-0.rc0.20210902git4ac6d90867a4.4.fc36...   0.818595
= Note: Bluetooth subsystem version 2.22                               0.818599
= New Index: 00:00:00:00:00:00 (Primary,USB,hci0)               [hci0] 0.818623
@ MGMT Open: bluetoothd (privileged) version 1.21             {0x0001} 0.818629
= Delete Index: 00:00:00:00:00:00                             [hci0] 102.690038
= New Index: 00:00:00:00:00:00 (Primary,USB,hci0)             [hci0] 111.738639
= Open Index: 00:00:00:00:00:00                               [hci0] 111.739301
< HCI Command: Read Local Version... (0x04|0x0001) plen 0  #1 [hci0] 111.740893
> HCI Event: Command Complete (0x0e) plen 12               #2 [hci0] 111.743184
      Read Local Version Information (0x04|0x0001) ncmd 1
        Status: Success (0x00)
        HCI version: Bluetooth 5.0 (0x09) - Revision 12576 (0x3120)
        LMP version: Bluetooth 5.0 (0x09) - Subversion 8891 (0x22bb)
        Manufacturer: Cambridge Silicon Radio (10)
< HCI Command: Reset (0x03|0x0003) plen 0                  #3 [hci0] 117.018099
= Close Index: 00:00:00:00:00:00                              [hci0] 127.252640

In the two last lines it resets and closes the index even if I don`t do anything. I hope I could help.
Comment 201 Swyter 2021-09-10 07:37:14 UTC
Quick update: I have received two e-mails from gregkh saying that he has added my "Bluetooth: btusb: Make the CSR clone chip force-suspend workaround more generic" patch to the 5.14-stable and 5.13-stable trees. So, hopefully, if I'm not wrong, this means that it will get a lot more use and feedback in the following months. Neat. ¯\_(ツ)_/¯
Comment 202 sakuramail 2021-09-24 03:11:07 UTC
Last tested on 5.10/5.11/5.12, the controller was detected and I was able to power it on with bluetoothctl, but was never able to pair with anything due to a protocol error on dmesg. Testing now on:

$ uname -r
5.14.6-artix1-1

$ lsusb
Bus 001 Device 004: ID 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode)

# dmesg
[16890.185351] usb 1-2: new full-speed USB device number 4 using xhci_hcd
[16890.502677] usb 1-2: New USB device found, idVendor=0a12, idProduct=0001, bcdDevice=25.20
[16890.502684] usb 1-2: New USB device strings: Mfr=0, Product=2, SerialNumber=0
[16890.502686] usb 1-2: Product: CSR8510 A10
[16890.518436] Bluetooth: hci0: CSR: Unbranded CSR clone detected; adding workarounds and force-suspending once...
[16895.708850] Bluetooth: hci0: CSR: Failed to suspend the device for our Barrot 8041a02 receive-issue workaround
[16900.829464] Bluetooth: hci0: setting interface failed (110)

[mgmt]# info
Index list with 0 items

The controller does not appear anymore, tried multiple usb ports.
Comment 203 Luis Oropeza 2021-11-03 01:20:35 UTC
Hi, I'm facing this issue when my bluetooth dongle does not work in linux. I'm not much handy when it comes to doing complicated things in linux, messing with the kernel and stuff like that. I can't find information on how to use this patch and also what is the actual patch. 

My adapter id is the following: 0a12:0001

When I try to turn on bluetooth with bluetoothctl I recive this output: "no default controller available"

and the output of hciconfig is the following:

hci0:	Type: Primary  Bus: USB
	BD Address: 00:1A:7D:DA:71:12  ACL MTU: 679:8  SCO MTU: 48:16
	DOWN 
	RX bytes:367 acl:0 sco:0 events:12 errors:0
	TX bytes:37 acl:0 sco:0 commands:12 errors:0

I can't turn it up :(

English is not my first language so I'm sorry for any grammatical error, if anyone could guide me in how to start and how to apply the patch I'd be on your debt
Comment 204 guimarcalsilva 2021-11-03 01:25:54 UTC
(In reply to Luis Oropeza from comment #203)
> Hi, I'm facing this issue when my bluetooth dongle does not work in linux.
> I'm not much handy when it comes to doing complicated things in linux,
> messing with the kernel and stuff like that. I can't find information on how
> to use this patch and also what is the actual patch. 
> 
> My adapter id is the following: 0a12:0001
> 
> When I try to turn on bluetooth with bluetoothctl I recive this output: "no
> default controller available"
> 
> and the output of hciconfig is the following:
> 
> hci0: Type: Primary  Bus: USB
>       BD Address: 00:1A:7D:DA:71:12  ACL MTU: 679:8  SCO MTU: 48:16
>       DOWN 
>       RX bytes:367 acl:0 sco:0 events:12 errors:0
>       TX bytes:37 acl:0 sco:0 commands:12 errors:0
> 
> I can't turn it up :(
> 
> English is not my first language so I'm sorry for any grammatical error, if
> anyone could guide me in how to start and how to apply the patch I'd be on
> your debt

I also can't get it to work even with the patches, but the patch should be already available by default starting from linux 5.14.

To know your kernel version, just type in a terminal

uname -r

If your kernel is older than version 5.14, you can try updating your distro or trying another with a more recent kernel like Fedora or Manjaro. You can simply boot with USB without installing and test your Bluetooth dongle.
Comment 205 Luis Oropeza 2021-11-03 17:56:37 UTC

(In reply to guimarcalsilva from comment #204)
> (In reply to Luis Oropeza from comment #203)
> > Hi, I'm facing this issue when my bluetooth dongle does not work in linux.
> > I'm not much handy when it comes to doing complicated things in linux,
> > messing with the kernel and stuff like that. I can't find information on
> how
> > to use this patch and also what is the actual patch. 
> > 
> > My adapter id is the following: 0a12:0001
> > 
> > When I try to turn on bluetooth with bluetoothctl I recive this output: "no
> > default controller available"
> > 
> > and the output of hciconfig is the following:
> > 
> > hci0: Type: Primary  Bus: USB
> >       BD Address: 00:1A:7D:DA:71:12  ACL MTU: 679:8  SCO MTU: 48:16
> >       DOWN 
> >       RX bytes:367 acl:0 sco:0 events:12 errors:0
> >       TX bytes:37 acl:0 sco:0 commands:12 errors:0
> > 
> > I can't turn it up :(
> > 
> > English is not my first language so I'm sorry for any grammatical error, if
> > anyone could guide me in how to start and how to apply the patch I'd be on
> > your debt
> 
> I also can't get it to work even with the patches, but the patch should be
> already available by default starting from linux 5.14.
> 
> To know your kernel version, just type in a terminal
> 
> uname -r
> 
> If your kernel is older than version 5.14, you can try updating your distro
> or trying another with a more recent kernel like Fedora or Manjaro. You can
> simply boot with USB without installing and test your Bluetooth dongle.

I've been using fedora 34, and there was no use, yesterday I updated to fedora 35 and the issue remains. I try using manjaro in live usb mode but is the same, I can't get it to work. My kernel version 5.14.10-300.fc35.x86_64
Comment 206 Jack 2021-11-07 19:22:33 UTC
I just upgraded to kernel 5.15.0.  My dongle seemed to be recognized, but was not recognized as a controller.  Adding the patch I have labelled as skip-HCI_FLT_CLEAR_ALL.patch got things working.  So, one of the patches (which I had labelled as Bluetooth-btusb-Make-the-CSR-clone-chip-force-suspend-workaround-more-generic.diff) is included in the upstream kernel sources as of 5.14.somethign, but only part of the other one.  Similar to my earlier comment 195, selected output from dmesg:

[   11.715825] usb 1-2: New USB device found, idVendor=0a12, idProduct=0001, bcdDevice=88.91
[   11.715831] usb 1-2: New USB device strings: Mfr=0, Product=2, SerialNumber=0
[   11.715833] usb 1-2: Product: BT DONGLE10

[   20.888671] btusb: unknown parameter 'fixups' ignored
[   20.889220] usbcore: registered new interface driver btusb
[   20.891778] Bluetooth: hci0: CSR: Unbranded CSR clone detected; adding workarounds and force-suspending once...
[   20.891788] Bluetooth: hci0: CSR: Failed to suspend the device for our Barrot 8041a02 receive-issue workaround

[   27.326897] Bluetooth: BNEP (Ethernet Emulation) ver 1.3
[   27.326903] Bluetooth: BNEP filters: protocol multicast
[   27.326910] Bluetooth: BNEP socket layer initialized
[   58.539089] Bluetooth: RFCOMM TTY layer initialized
[   58.539100] Bluetooth: RFCOMM socket layer initialized
[   58.539107] Bluetooth: RFCOMM ver 1.11
[  109.777696] input: WH-CH700N (AVRCP) as /devices/virtual/input/input23

I'm also still curious how to get the "fixups" recognized, although it doesn't appear I actually need any now.
Comment 207 Reginaldo Coimbra Vieira 2021-11-17 03:28:44 UTC
Hello everyone! Well, I got it and I am going to share my experience with all of you, guys, and I do hope this is going to be fixed in the kernel soon.

The problem happens when the event HCI_OP_SET_EVENT_FLT (Clear Event Filters) is triggered. I thought: what would come up if that event did not happen at all? So, I tried to skip it...

In the file include/net/bluetooth/hci.h, there are a couple of quirks to be applied against some device. Maybe, a new one could be created to address such specific problem (e.g.: HCI_QUIRK_CLEAR_EVENT_FAILURE or something like that) for good practices. Anyways... I have used the quirk HCI_QUIRK_BROKEN_ERR_DATA_REPORTING that is already used to address other problems of that same particular driver to address that another problem too.

So, in the file net/bluetooth/hci_core.c, I have changed the function bredr_setup this way (this is the function that causes that problem that prevents it from being recognised as a controller):

static void bredr_setup(struct hci_request *req)
{
        __le16 param;
        //__u8 flt_type;        // move this line into the "if" below

        /* Read Buffer Size (ACL mtu, max pkt, etc.) */
        hci_req_add(req, HCI_OP_READ_BUFFER_SIZE, 0, NULL);

        /* Read Class of Device */
        hci_req_add(req, HCI_OP_READ_CLASS_OF_DEV, 0, NULL);

        /* Read Local Name */
        hci_req_add(req, HCI_OP_READ_LOCAL_NAME, 0, NULL);

        /* Read Voice Setting */
        hci_req_add(req, HCI_OP_READ_VOICE_SETTING, 0, NULL);

        /* Read Number of Supported IAC */
        hci_req_add(req, HCI_OP_READ_NUM_SUPPORTED_IAC, 0, NULL);

        /* Read Current IAC LAP */
        hci_req_add(req, HCI_OP_READ_CURRENT_IAC_LAP, 0, NULL);

        // Changed lines by me are below

        //flt_type = HCI_FLT_CLEAR_ALL;		// replaced this line to the following
        //hci_req_add(req, HCI_OP_SET_EVENT_FLT, 1, &flt_type); // replaced this line to the following

        /* Clear Event Filters if the device is able to do so */
        if (!test_bit(HCI_QUIRK_BROKEN_ERR_DATA_REPORTING, &req->hdev->quirks)) {
                __u8 flt_type;

                flt_type = HCI_FLT_CLEAR_ALL;
                hci_req_add(req, HCI_OP_SET_EVENT_FLT, 1, &flt_type);
        }

        // Change ends here

        /* Connection accept timeout ~20 secs */
        param = cpu_to_le16(0x7d00);
        hci_req_add(req, HCI_OP_WRITE_CA_TIMEOUT, 2, &param);
}

Then, I just compile that driver from the /usr/src folder, copy the /pathToTheChangedKernel/net/bluetooth/bluetooth.ko to /lib/modules/kernel/extra/bluetooth.ko and run the depmod. Change the paths below accordingly to where the source of your system kernel and your changed kernel are.

# cd /usr/src/kernels/5.14.17.x86_64
# make M=/pathToTheChangedKernel/net/bluetooth bluetooth.ko
  CC [M]  /kernel/5.14.17.x86_64/net/bluetooth/af_bluetooth.o
  CC [M]  /kernel/5.14.17.x86_64/net/bluetooth/hci_core.o
  CC [M]  /kernel/5.14.17.x86_64/net/bluetooth/hci_conn.o
  CC [M]  /kernel/5.14.17.x86_64/net/bluetooth/hci_event.o
  CC [M]  /kernel/5.14.17.x86_64/net/bluetooth/mgmt.o
  CC [M]  /kernel/5.14.17.x86_64/net/bluetooth/hci_sock.o
  CC [M]  /kernel/5.14.17.x86_64/net/bluetooth/hci_sysfs.o
  CC [M]  /kernel/5.14.17.x86_64/net/bluetooth/l2cap_core.o
  CC [M]  /kernel/5.14.17.x86_64/net/bluetooth/l2cap_sock.o
  CC [M]  /kernel/5.14.17.x86_64/net/bluetooth/smp.o
  CC [M]  /kernel/5.14.17.x86_64/net/bluetooth/lib.o
  CC [M]  /kernel/5.14.17.x86_64/net/bluetooth/ecdh_helper.o
  CC [M]  /kernel/5.14.17.x86_64/net/bluetooth/hci_request.o
  CC [M]  /kernel/5.14.17.x86_64/net/bluetooth/mgmt_util.o
  CC [M]  /kernel/5.14.17.x86_64/net/bluetooth/mgmt_config.o
  CC [M]  /kernel/5.14.17.x86_64/net/bluetooth/sco.o
  CC [M]  /kernel/5.14.17.x86_64/net/bluetooth/leds.o
  CC [M]  /kernel/5.14.17.x86_64/net/bluetooth/msft.o
  LD [M]  /kernel/5.14.17.x86_64/net/bluetooth/bluetooth.o
  MODPOST /kernel/5.14.17.x86_64/net/bluetooth/Module.symvers
  CC [M]  /kernel/5.14.17.x86_64/net/bluetooth/bluetooth.mod.o
  LD [M]  /kernel/5.14.17.x86_64/net/bluetooth/bluetooth.ko
  BTF [M] /kernel/5.14.17.x86_64/net/bluetooth/bluetooth.ko

# cp /pathToTheChangedKernel/net/bluetooth/bluetooth.ko /lib/modules/5.14.17.x86_64/extra/bluetooth.ko
# depmod -aeF /boot/System.map 5.14.17.x86_64

The warning below still appears in the log, but it has not represented any negative impact at all for me:

Bluetooth: hci0: CSR: Failed to suspend the device for our Barrot 8041a02 receive-issue workaround

For me, it is working perfectly from that change on. Woohoo!!! I do hope some snippet code like that one would be inserted into the kernel soon.

I do hope that it works perfectly for you too and let's get some pint of beer to celebrate. It did not beat us. We all beat it instead! Please, give me feedback :)
Comment 208 pverda 2022-01-01 15:32:52 UTC
I have a bluetooth dongle that previously worked but stopped working after a kernel upgrade (> 5.13.15). The dongle needs module options for btusb: enable_autosuspend=0 reset=1. After the dongle stopped working the relevant error messages in the log file are:
Bluetooth: hci0: CSR: Failed to suspend the device for our Barrot 8041a02 receive-issue workaround
Bluetooth: hci0: setting interface failed (110)
This means that a suspend is causing the problem. Examining the code in btusb.c shows that there is now a single suspend for all CSR clones: "Because these are widespread problems we prefer generic solutions; so apply this initialization quirk to every controller that gets here, it should be harmless. The alternative is to not work at all." The new code is were the error occurred. I have restored the code from the btusb_setup_csr function with the original code from btusb.c used in kernel 5.13.15 where only the Barrot chip gets this initialization quirk. After recompiling this module the dongle works without any problem. The generic solution is therefore not harmless for this controller.

The information about this dongle is:

idVendor=0a12, idProduct=0001, bcdDevice=25.20
USB device strings: Mfr=0, Product=2, SerialNumber=0
Product: CSR8510 A10

hci0:	Type: Primary  Bus: USB
	BD Address: 00:1A:7D:DA:71:10  ACL MTU: 640:4  SCO MTU: 64:8
	UP RUNNING PSCAN 
	RX bytes:11673690 acl:19123 sco:0 events:287 errors:0
	TX bytes:9022 acl:184 sco:0 commands:74 errors:0
	Features: 0xff 0xff 0x8f 0xfa 0xdb 0xff 0x5b 0x87
	Packet type: DM1 DM3 DM5 DH1 DH3 DH5 HV1 HV2 HV3 
	Link policy: RSWITCH HOLD SNIFF PARK 
	Link mode: PERIPHERAL ACCEPT 
	Name: 'DESKTOP'
	Class: 0x000950
	Service Classes: Unspecified
	Device Class: Invalid Device Class!
	HCI Version: 4.0 (0x6)  Revision: 0x3120
	LMP Version: 4.0 (0x6)  Subversion: 0x22bb
	Manufacturer: Cambridge Silicon Radio (10)
Comment 209 Swyter 2022-01-01 16:10:42 UTC
Well, then your dongle is even more broken than the rest of the bunch. Because a reset is something USB devices get all the time, and the benefits surpass the drawbacks. But good to know, we'll blacklist that one. No worries.

As you can probably guess it's hard to please everybody. We're volunteers, and you are the only one who has complained since that patch got mainlined, so I think it was still a good idea. We'll eventually get all these absolute trash dongles working.
Comment 210 Hans de Goede 2022-01-01 18:12:06 UTC
pverda, if I understand you correctly you were using the dongle with:
"enable_autosuspend=0 reset=1" options to the btusb module before what happens with newer kernels if you remove this workaround ?

Note that we are trying to get things to work with all these clones automatically for everyone, without needing to set any module options. People should be able to just plug in the dongle and have it work.
Comment 211 Swyter 2022-01-01 18:55:30 UTC
pverda: Please try running this patch to see if your [HCI Revision: 0x3120, LMP Subversion: 0x22bb] dongle likes it, maybe the problem is due to the notorious HCI_FLT_CLEAR_ALL bug, like most of the remaining ones: https://raw.githubusercontent.com/void-linux/void-packages/be587c070716d820eceee2377f966874ae51eb67/srcpkgs/linux5.15/patches/btusb-quirk-HCI_FLT_CLEAR_ALL.patch

I checked and I actually own what seems like the same BT 4.0 "V5.0" (note the lack of space) marked dongle. Same internal IDs for everything, and it works fine with that patch. So give it a go.
Comment 212 guimarcalsilva 2022-01-01 21:00:15 UTC
Hi, I know this is very weird but I noticed the bluetooth adapter works just fine if I pass it through a VM using Gnome Boxes, but no matter what I do it doesn't work on a real machine. On the virtual machine, I'm running OpenSuse Tumbleweed with kernel 5.15.5.1 (also worked with KDE Neon with kernel 5.11) and on the host, I have the kernel 5.15.11-200. I have no idea why it can't get an HCI address on a real machine (check my prior comments) but it can on a VM with any kernel version.

I hope I'm not spamming this with useless information, sorry if that's the case.

On the VM hciconfig shows:

hci0:   Type: Primary  Bus: USB
        BD Address: 00:1A:7D:DA:71:10  ACL MTU: 310:4  SCO MTU: 64:8
        UP RUNNING 
        RX bytes:12949005 acl:284564 sco:0 events:91 errors:0
        TX bytes:1460 acl:17 sco:0 commands:56 errors:0

Dmesg on the VM shows:

[  797.515701] usb 4-1: USB disconnect, device number 2
[  821.123684] usb 4-1: new full-speed USB device number 3 using uhci_hcd
[  821.388913] usb 4-1: New USB device found, idVendor=0a12, idProduct=0001, bcdDevice=25.20
[  821.388917] usb 4-1: New USB device strings: Mfr=0, Product=2, SerialNumber=0
[  821.388919] usb 4-1: Product: CSR8510 A10
[  821.395210] Bluetooth: hci0: CSR: Unbranded CSR clone detected; adding workarounds and force-suspending once...
[  821.395214] Bluetooth: hci0: CSR: Failed to suspend the device for our Barrot 8041a02 receive-issue workaround


There's also a BTMON log on the VM I'll add after this post as an attachment because it's too big. Note the log was taken by disconnecting the adapter, running btmon and connecting it. I have no idea why it's that long.

I hope this can help somewhat.
Comment 213 guimarcalsilva 2022-01-01 21:01:17 UTC
Created attachment 300200 [details]
Adapter on a VM works just fine - btmon log

Adapter on a VM works just fine, but not on a real system - btmon log
Comment 214 Scott 2022-01-01 23:20:48 UTC
I also have this issue with a ver 5.0 CSR clone dongle.
Comment 215 Swyter 2022-01-02 02:54:44 UTC
Just a quick heads-up, I have submitted the initial version of the `HCI_FLT_CLEAR_ALL` patch (the one that fixes the fake "V5.0" CSR dongles) for review, but this may take a while:

https://patchwork.kernel.org/project/bluetooth/patch/6a3f5e8b-fbc1-bad8-aef0-3e2cf9be364e@gmail.com/
Comment 216 pverda 2022-01-02 09:33:48 UTC
Hans de Goede: I have done some testing. If I use the current module the well known errors are produced in both ways. That is with and without the module options. If I use the modified btusb module with all the quirks except the Barrot quirk the dongle functions without any error if the module options are there. If I use it without the module options I can't connect to the dongle. I also have lots of command timeout errors in my log file. 
Swyter: I do not have the full kernel source tree on my system. I only have the kernel-devel package and this is limited in its capabilities. About the dongle: The dongle is a rectangular one with the print "CSR 4.0" on it. I bought it a couple of years ago on aliexpress. It has the peculiarity that is support aptx.
Comment 217 Reginaldo Coimbra Vieira 2022-01-06 16:55:07 UTC
Perfect, Swyter (comment #215)! That patch is great!

Before that, I was using my suggestion in the comment #207 to use the dongle. It was working great too. The only drawback that I found was patching the file "net/bluetooth/hci_core.c" in every kernel update.

I have just tested your patch too with the kernel 5.15.12 and it has been working great! As I commented before (comment #207), the proposal of adding a "quirk" declaration in the file include/net/bluetooth/hci.h and to do the proper change in the other ones is a much better solution.

Congratulations!
Comment 218 Paul Menzel 2022-01-18 12:19:52 UTC
Second iteration of the patch *[PATCH v2] Bluetooth: btusb: Add a new quirk to skip HCI_FLT_CLEAR_ALL on fake CSR controllers* [1].

[1]: https://patchwork.kernel.org/project/bluetooth/patch/4957ed07-36b8-58a0-2307-d2e6e2940527@gmail.com/
Comment 219 Reginaldo Coimbra Vieira 2022-01-22 02:47:45 UTC
Paul Menzel (comment #218), your patch is perfect too! I have just compiled it with the kernel 5.15.15 and tested your proposal. The dongle is working.

Congratulations!
Comment 220 Swyter 2022-01-22 05:05:51 UTC
Glad that v2 works. It's more or less the same thing, but now I understand a bit better what is actually going on in the Bluetooth driver. So yeah, maybe still in need of some tuning. It will get mainlined sooner or later; I'll keep tweaking the thingie until Marcel likes it. No rush.

After that I'm thinking of making another one blacklisting two fake dongles that don't seem to like getting force-suspended. Maybe pverda's case is a false positive, but this seems like the best way of doing it; opt-in.

With that I think we'll finally reach some 80 or 90% of compatibility in the Chinese Bluetooth saga. Maybe other people will keep improving the quirk list. ¯\_(ツ)_/¯
Comment 221 Looonger 2022-01-23 20:21:51 UTC
I can't apply patch v2 on kernels 5.16.1 or 5.16.2 (I could on 5.16.0 though).
Surprisingly, my device started working without any patches on kernel 5.17-rc1. 
:)
Comment 222 Reginaldo Coimbra Vieira 2022-01-24 03:44:22 UTC
The function "bredr_setup" was removed from the file "/net/bluetooth/hci_core.c". Good news seem to come from the kernel 5.17 on, really! Lots of things have been changed...

https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/diff/net/bluetooth/hci_core.c?id=v5.17-rc1&id2=v5.16

Thanks!
Comment 223 Artium 2022-01-27 20:16:00 UTC
Created attachment 300341 [details]
btmon -w my.log for bcdDevice 88.91

Hope this helps.

Bluetooth monitor ver 5.53
= Note: Linux version 5.13.0-27-generic (x86_64)                                                                                0.014382
= Note: Bluetooth subsystem version 2.22                                                                                        0.014388
= New Index: 00:1A:7D:DA:71:13 (Primary,USB,hci0)                                                                        [hci0] 0.014390
@ MGMT Open: bluetoothd (privileged) version 1.20                                                                      {0x0001} 0.014392
@ MGMT Open: btmon (privileged) version 1.20                                                                           {0x0002} 0.014479
@ RAW Open: hciconfig version 2.22                                                                                    {0x0003} 60.544023
@ RAW Close: hciconfig                                                                                                {0x0003} 60.544469
@ RAW Open: hciconfig version 2.22                                                                                    {0x0003} 69.380485
@ RAW Close: hciconfig                                                                                                {0x0003} 69.380893
@ RAW Open: hciconfig (privileged) version 2.22                                                                       {0x0003} 79.123846
= Open Index: 00:1A:7D:DA:71:13                                                                                         [hci0] 79.268817
= Index Info: 00:1A:7D:DA:71:13 (Cambridge Silicon Radio)                                                               [hci0] 79.268854
< HCI Command: Read Local Version Information (0x04|0x0001) plen 0                                                   #1 [hci0] 79.268932
> HCI Event: Command Complete (0x0e) plen 12                                   
>                                      #2 [hci0] 79.272734
      Read Local Version Information (0x04|0x0001) ncmd 1
        Status: Success (0x00)
        HCI version: Bluetooth 5.0 (0x09) - Revision 2064 (0x0810)
        LMP version: Bluetooth 5.0 (0x09) - Subversion 8978 (0x2312)
        Manufacturer: Cambridge Silicon Radio (10)
< HCI Command: Reset (0x03|0x0003) plen 0                                                                            #3 [hci0] 79.272969
> HCI Event: Command Complete (0x0e) plen 4                                    
>                                      #4 [hci0] 79.284725
      Reset (0x03|0x0003) ncmd 1
        Status: Success (0x00)
< HCI Command: Read Local Supported Features (0x04|0x0003) plen 0                                                    #5 [hci0] 79.284870
> HCI Event: Command Complete (0x0e) plen 12                                   
>                                      #6 [hci0] 79.287702
      Read Local Supported Features (0x04|0x0003) ncmd 1
        Status: Success (0x00)
        Features: 0xbf 0x3e 0x4d 0xfa 0xdb 0x3d 0x7b 0xc7
          3 slot packets
          5 slot packets
          Encryption
          Slot offset
          Timing accuracy
          Role switch
          Sniff mode
          Power control requests
          Channel quality driven data rate (CQDDR)
          SCO link
          HV2 packets
          HV3 packets
          CVSD synchronous data
          Power control
          Transparent synchronous data
          Flow control lag (most significant bit)
          Enhanced Data Rate ACL 2 Mbps mode
          Enhanced inquiry scan
          Interlaced inquiry scan
          Interlaced page scan
          RSSI with inquiry results
          Extended SCO link (EV3 packets)
          EV4 packets
          EV5 packets
          AFH capable slave
          AFH classification slave
          LE Supported (Controller)
          3-slot Enhanced Data Rate ACL packets
          5-slot Enhanced Data Rate ACL packets
          Pause encryption
          AFH capable master
          AFH classification master
          Enhanced Data Rate eSCO 2 Mbps mode
          Extended Inquiry Response
          Simultaneous LE and BR/EDR (Controller)
          Secure Simple Pairing
          Encapsulated PDU
          Erroneous Data Reporting
          Non-flushable Packet Boundary Flag
          Link Supervision Timeout Changed Event
          Inquiry TX Power Level
          Enhanced Power Control
          Extended features
          Unknown features (0x4000000000000000)
< HCI Command: Read Local Version Information (0x04|0x0001) plen 0                                                   #7 [hci0] 79.287785
> HCI Event: Command Complete (0x0e) plen 12                                   
>                                      #8 [hci0] 79.290703
      Read Local Version Information (0x04|0x0001) ncmd 1
        Status: Success (0x00)
        HCI version: Bluetooth 5.0 (0x09) - Revision 2064 (0x0810)
        LMP version: Bluetooth 5.0 (0x09) - Subversion 8978 (0x2312)
        Manufacturer: Cambridge Silicon Radio (10)
< HCI Command: Read BD ADDR (0x04|0x0009) plen 0                                                                     #9 [hci0] 79.290779
> HCI Event: Command Complete (0x0e) plen 10                                   
>                                     #10 [hci0] 79.293696
      Read BD ADDR (0x04|0x0009) ncmd 1
        Status: Success (0x00)
        Address: 00:1A:7D:DA:71:13 (cyber-blue(HK)Ltd)
< HCI Command: Read Buffer Size (0x04|0x0005) plen 0                                                                #11 [hci0] 79.293917
> HCI Event: Command Complete (0x0e) plen 11                                   
>                                     #12 [hci0] 79.296698
      Read Buffer Size (0x04|0x0005) ncmd 1
        Status: Success (0x00)
        ACL MTU: 679  ACL max packet: 8
        SCO MTU: 48   SCO max packet: 16
< HCI Command: Read Class of Device (0x03|0x0023) plen 0                                                            #13 [hci0] 79.296749
> HCI Event: Command Complete (0x0e) plen 7                                    
>                                     #14 [hci0] 79.299704
      Read Class of Device (0x03|0x0023) ncmd 1
        Status: Success (0x00)
        Class: 0x000000
          Major class: Miscellaneous
          Minor class: 0x00
< HCI Command: Read Local Name (0x03|0x0014) plen 0                                                                 #15 [hci0] 79.299817
> HCI Event: Command Complete (0x0e) plen 252                                  
>                                     #16 [hci0] 79.317704
      Read Local Name (0x03|0x0014) ncmd 1
        Status: Success (0x00)
        Name: CSR8510 A10

< HCI Command: Read Voice Setting (0x03|0x0025) plen 0                                                              #17 [hci0] 79.317863
> HCI Event: Command Complete (0x0e) plen 6                                    
>                                     #18 [hci0] 79.320707
      Read Voice Setting (0x03|0x0025) ncmd 1
        Status: Success (0x00)
        Setting: 0x0000
          Input Coding: Linear
          Input Data Format: 1's complement
          Input Sample Size: 8-bit
          # of bits padding at MSB: 0
          Air Coding Format: CVSD
< HCI Command: Read Number of Supported IAC (0x03|0x0038) plen 0                                                    #19 [hci0] 79.320795
> HCI Event: Command Complete (0x0e) plen 5                                    
>                                     #20 [hci0] 79.323704
      Read Number of Supported IAC (0x03|0x0038) ncmd 1
        Status: Success (0x00)
        Number of IAC: 2
< HCI Command: Read Current IAC LAP (0x03|0x0039) plen 0                                                            #21 [hci0] 79.323801
> HCI Event: Command Complete (0x0e) plen 8                                    
>                                     #22 [hci0] 79.326704
      Read Current IAC LAP (0x03|0x0039) ncmd 1
        Status: Success (0x00)
        Number of IAC: 1
        Access code: 0x9e8b33 (General Inquiry)
< HCI Command: Set Event Filter (0x03|0x0005) plen 1                                                                #23 [hci0] 79.326769
        Type: Clear All Filters (0x00)
> HCI Event: Command Complete (0x0e) plen 4                                    
>                                     #24 [hci0] 79.329709
      Set Event Filter (0x03|0x0005) ncmd 1
        Status: Invalid HCI Command Parameters (0x12)
= Close Index: 00:1A:7D:DA:71:13                                                                                        [hci0] 79.329830
@ RAW Close: hciconfig
Comment 224 ekusupuroito 2022-02-03 21:18:58 UTC
Just updated to 5.17-rc2, with my USB dongle I got this in dmesg:

[   75.841855] Bluetooth: hci0: CSR: Unbranded CSR clone detected; adding workarounds and force-suspending once...
[   75.841861] Bluetooth: hci0: CSR: Failed to suspend the device for our Barrot 8041a02 receive-issue workaround
[   75.883842] Bluetooth: hci0: unexpected cc 0x0c25 length: 2 < 3
[   75.883849] Bluetooth: hci0: Opcode 0x c25 failed: -38
Comment 225 Swyter 2022-03-05 07:07:11 UTC
Quick heads up, had some time today and sent v3 for kernel review. We'll see if they like it: https://patchwork.kernel.org/project/bluetooth/patch/3b6c7c18-dc48-b924-bd09-3638a5c741a4@gmail.com/
Comment 226 Swyter 2022-03-10 18:25:31 UTC
Super neat, the v4 patch series has been merged by Marcel in bluetooth-next, maybe it even gets backported to stable kernels:

* https://git.kernel.org/bluetooth/bluetooth-next/c/d35c9b22957a
* https://git.kernel.org/bluetooth/bluetooth-next/c/4afc6c743557

That means it's probably going to get merged into the parent net-next tree and if there are no weird regressions Linus Torvalds merges that and it's going to eventually be part of the next kernel version. Whenever that happens, thanks for testing. @tornaria and @lemonteus are credited in the commit log. :)

With this all my Chinese dongles (even those purchased for kernel work) finally work on Linux. I'm sure there are still more quirks to add, but hopefully other random people will start chipping away at it as a learning experience. It's been fun.
Comment 227 kortiego 2022-03-12 21:53:57 UTC
Hi, compiled 5.17 rc7 kernel with last 2 patches V4 by Marcel (also tested with V3 patch, and got the same result). For some reason I'm still experiencing the same issue:

[  478.034839] Bluetooth: hci0: CSR: Unbranded CSR clone detected; adding workarounds and force-suspending once...
[  478.034847] Bluetooth: hci0: CSR: Couldn't suspend the device for our Barrot 8041a02 receive-issue workaround
[  480.908163] Bluetooth: hci0: command 0x0c01 tx timeout
[  480.908164] Bluetooth: hci0: Opcode 0x c01 failed: -110
                                                   
More info from lsusb about my dongle:

Bus 001 Device 008: ID 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode)
Couldn't open device, some information will be missing
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               1.10
  bDeviceClass          224 Wireless
  bDeviceSubClass         1 Radio Frequency
  bDeviceProtocol         1 Bluetooth
  bMaxPacketSize0        64
  idVendor           0x0a12 Cambridge Silicon Radio, Ltd
  idProduct          0x0001 Bluetooth Dongle (HCI mode)
  bcdDevice           88.91
  iManufacturer           0 
  iProduct                2 USB2.0-BT
  iSerial                 0 
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength       0x00c8
    bNumInterfaces          2
    bConfigurationValue     1
    iConfiguration          0 
    bmAttributes         0xc0
      Self Powered
    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     0x04  EP 4 OUT
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 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               1
    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     0x05  EP 5 OUT
        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     0x83  EP 3 IN
        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     0x05  EP 5 OUT
        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     0x83  EP 3 IN
        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     0x05  EP 5 OUT
        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     0x83  EP 3 IN
        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     0x05  EP 5 OUT
        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     0x83  EP 3 IN
        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     0x05  EP 5 OUT
        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     0x83  EP 3 IN
        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     0x05  EP 5 OUT
        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     0x83  EP 3 IN
        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       5
      bNumEndpoints           2
      bInterfaceClass       224 Wireless
      bInterfaceSubClass      1 Radio Frequency
      bInterfaceProtocol      1 Bluetooth
      iInterface              0 
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x05  EP 5 OUT
        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     0x83  EP 3 IN
        bmAttributes            1
          Transfer Type            Isochronous
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x003f  1x 63 bytes
        bInterval               1
Comment 228 pverda 2022-03-30 14:57:31 UTC
Apparently there are quite some dongles that choke on suspending. These dongles really need the module option enable_autosuspend=0 and will not work without it. Unfortunately the Barrot quirck in btusb_setup_csr prevents this to function properly. To avoid this I propose the following modification in the module btusb.c

In function btusb_setup_csr changing this:
<code>
                pm_runtime_allow(&data->udev->dev);

                ret = pm_runtime_suspend(&data->udev->dev);
                if (ret >= 0)
                        msleep(200);
                else
                        bt_dev_err(hdev, "CSR: Failed to suspend the device for our Barrot 8041a02 receive-issue workaround");

                pm_runtime_forbid(&data->udev->dev);

                device_set_wakeup_capable(&data->udev->dev, false);

                /* Re-enable autosuspend if this was requested */
                if (enable_autosuspend)
                        usb_enable_autosuspend(data->udev);
</code>
into this:
<code>
                if (enable_autosuspend) {
                        pm_runtime_allow(&data->udev->dev);

                        ret = pm_runtime_suspend(&data->udev->dev);
                        if (ret >= 0)
                                msleep(200);
                        else
                                bt_dev_err(hdev, "CSR: Failed to suspend the device for our Barrot 8041a02 receive-issue workaround");

                        pm_runtime_forbid(&data->udev->dev);

                        device_set_wakeup_capable(&data->udev->dev, false);

                        /* Re-enable autosuspend if this was requested */
                        usb_enable_autosuspend(data->udev);
                }
</code>
If the module options are absent, as it is supposed to be for plug and play, there is no difference. The default of enable_autosuspend = true. The modification of the function also honors the true meaning of enable_autosuspend. That is stop suspending if made 0.
I have tested the above modification in my system: Fedora 35 with kernel 5.16.17-200 and it works. My dongle is one that needs kernel options enable_autosuspend=0 and reset=1.
Comment 229 Yuri Santos 2022-03-30 16:49:02 UTC
just reporting my dongle it's working on 5.17-1 kernel's version, never worked before.


these lines are reported on dmesg but device now function normally:

[ 3281.331944] Bluetooth: hci0: CSR: Unbranded CSR clone detected; adding workarounds and force-suspending once...
[ 3281.331952] Bluetooth: hci0: CSR: Couldn't suspend the device for our Barrot 8041a02 receive-issue workaround

output of lsusb:

yuri@archlinux ~> sudo lsusb -d 0a12:0001 -v                                                                              130

Bus 008 Device 007: ID 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode)
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass          224 Wireless
  bDeviceSubClass         1 Radio Frequency
  bDeviceProtocol         1 Bluetooth
  bMaxPacketSize0        64
  idVendor           0x0a12 Cambridge Silicon Radio, Ltd
  idProduct          0x0001 Bluetooth Dongle (HCI mode)
  bcdDevice           88.91
  iManufacturer           0
  iProduct                2 BT DONGLE10
  iSerial                 0
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength       0x00b1
    bNumInterfaces          2
    bConfigurationValue     1
    iConfiguration          0
    bmAttributes         0x80
      (Bus Powered)
    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     0x02  EP 2 OUT
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 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               1
    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     0x03  EP 3 OUT
        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     0x83  EP 3 IN
        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     0x03  EP 3 OUT
        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     0x83  EP 3 IN
        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     0x03  EP 3 OUT
        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     0x83  EP 3 IN
        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     0x03  EP 3 OUT
        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     0x83  EP 3 IN
        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     0x03  EP 3 OUT
        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     0x83  EP 3 IN
        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     0x03  EP 3 OUT
        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     0x83  EP 3 IN
        bmAttributes            1
          Transfer Type            Isochronous
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0031  1x 49 bytes
        bInterval               1
Device Status:     0x0000
  (Bus Powered)
Comment 230 Yuri Santos 2022-03-30 16:49:20 UTC
just reporting my dongle it's working on 5.17-1 kernel's version, never worked before.


these lines are reported on dmesg but device now function normally:

[ 3281.331944] Bluetooth: hci0: CSR: Unbranded CSR clone detected; adding workarounds and force-suspending once...
[ 3281.331952] Bluetooth: hci0: CSR: Couldn't suspend the device for our Barrot 8041a02 receive-issue workaround

output of lsusb:

yuri@archlinux ~> sudo lsusb -d 0a12:0001 -v                                                                              130

Bus 008 Device 007: ID 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode)
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass          224 Wireless
  bDeviceSubClass         1 Radio Frequency
  bDeviceProtocol         1 Bluetooth
  bMaxPacketSize0        64
  idVendor           0x0a12 Cambridge Silicon Radio, Ltd
  idProduct          0x0001 Bluetooth Dongle (HCI mode)
  bcdDevice           88.91
  iManufacturer           0
  iProduct                2 BT DONGLE10
  iSerial                 0
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength       0x00b1
    bNumInterfaces          2
    bConfigurationValue     1
    iConfiguration          0
    bmAttributes         0x80
      (Bus Powered)
    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     0x02  EP 2 OUT
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 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               1
    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     0x03  EP 3 OUT
        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     0x83  EP 3 IN
        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     0x03  EP 3 OUT
        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     0x83  EP 3 IN
        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     0x03  EP 3 OUT
        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     0x83  EP 3 IN
        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     0x03  EP 3 OUT
        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     0x83  EP 3 IN
        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     0x03  EP 3 OUT
        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     0x83  EP 3 IN
        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     0x03  EP 3 OUT
        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     0x83  EP 3 IN
        bmAttributes            1
          Transfer Type            Isochronous
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0031  1x 49 bytes
        bInterval               1
Device Status:     0x0000
  (Bus Powered)
Comment 231 Chardinson 2022-04-19 03:01:41 UTC
I bought a dongle and apparently it only works with kernel version 5.17.

[CharDSon@fedora ~]$ sudo lsusb -d 0a12:0001 -v
[sudo] password for CharDSon: 

Bus 001 Device 005: ID 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode)
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass          224 Wireless
  bDeviceSubClass         1 Radio Frequency
  bDeviceProtocol         1 Bluetooth
  bMaxPacketSize0        64
  idVendor           0x0a12 Cambridge Silicon Radio, Ltd
  idProduct          0x0001 Bluetooth Dongle (HCI mode)
  bcdDevice           88.91
  iManufacturer           0 
  iProduct                2 BT DONGLE10
  iSerial                 0 
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength       0x00b1
    bNumInterfaces          2
    bConfigurationValue     1
    iConfiguration          0 
    bmAttributes         0x80
      (Bus Powered)
    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     0x02  EP 2 OUT
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 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               1
    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     0x03  EP 3 OUT
        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     0x83  EP 3 IN
        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     0x03  EP 3 OUT
        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     0x83  EP 3 IN
        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     0x03  EP 3 OUT
        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     0x83  EP 3 IN
        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     0x03  EP 3 OUT
        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     0x83  EP 3 IN
        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     0x03  EP 3 OUT
        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     0x83  EP 3 IN
        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     0x03  EP 3 OUT
        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     0x83  EP 3 IN
        bmAttributes            1
          Transfer Type            Isochronous
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0031  1x 49 bytes
        bInterval               1
Device Status:     0x0000
  (Bus Powered)
Comment 232 Jack 2022-10-08 23:44:00 UTC
I guess it's just been too quiet here.  I have one of those Chinese dongles that started working based on patches much earlier in this thread, and then without the patch with an earlier 5.1x kernel.  It worked fine with all of the 5.19.x kernels I used, but it won't work with 6.0.0.  From dmesg:

[19435.084529] usb 1-2: new full-speed USB device number 7 using xhci_hcd
[19435.402402] usb 1-2: New USB device found, idVendor=0a12, idProduct=0001, bcdDevice=88.91
[19435.402411] usb 1-2: New USB device strings: Mfr=0, Product=2, SerialNumber=0
[19435.402413] usb 1-2: Product: BT DONGLE10
[19435.415159] Bluetooth: hci0: CSR: Unbranded CSR clone detected; adding workarounds and force-suspending once...
[19435.415166] Bluetooth: hci0: CSR: Couldn't suspend the device for our Barrot 8041a02 receive-issue workaround
[19435.415171] Bluetooth: hci0: HCI Delete Stored Link Key command is advertised, but not supported.
[19435.415173] Bluetooth: hci0: HCI Set Event Filter command not supported.
[19435.456635] usb 1-2: USB disconnect, device number 7
[19435.457303] Bluetooth: hci0: Opcode 0x c58 failed: -19
[19438.934106] usb 1-2: new full-speed USB device number 8 using xhci_hcd
[19439.255461] usb 1-2: New USB device found, idVendor=0a12, idProduct=0001, bcdDevice=88.91
[19439.255469] usb 1-2: New USB device strings: Mfr=0, Product=2, SerialNumber=0
[19439.255472] usb 1-2: Product: BT DONGLE10
[19439.264346] ------------[ cut here ]------------
[19439.264352] notifier callback hci_suspend_notifier [bluetooth] already registered
[19439.264388] WARNING: CPU: 6 PID: 13828 at kernel/notifier.c:28 notifier_chain_register+0x3e/0x70
[19439.264395] Modules linked in: auth_rpcgss nfsv4 dns_resolver nfs lockd grace fscache netfs sunrpc bnep amdgpu mfd_core iommu_v2 gpu_sched drm_buddy vfat fat btusb btrtl uvcvideo btbcm btintel videobuf2_vmalloc videobuf2_memops snd_usb_audio videobuf2_v4l2 bluetooth videobuf2_common snd_usbmidi_lib videodev snd_rawmidi rfkill sr_mod mc ecdh_generic sd_mod cdrom radeon i2c_algo_bit drm_ttm_helper vboxnetadp(OE) vboxnetflt(OE) kvm_amd snd_hda_codec_realtek ttm snd_hda_codec_generic ppdev ledtrig_audio vboxdrv(OE) snd_hda_codec_hdmi drm_display_helper kvm drm_kms_helper snd_hda_intel nct6775 syscopyarea irqbypass nct6775_core snd_intel_dspcfg sysfillrect snd_hda_codec crct10dif_pclmul hwmon_vid sysimgblt crc32_pclmul crc32c_intel aic7xxx fb_sys_fops snd_hwdep scsi_transport_spi ghash_clmulni_intel snd_hda_core drm snd_pcm backlight xhci_pci aesni_intel snd_timer xhci_pci_renesas sp5100_tco snd crypto_simd cec cryptd i2c_piix4 ahci xhci_hcd soundcore ccp k10temp libahci i2c_core rapl pcspkr
[19439.264466]  efi_pstore parport_pc parport gpio_amdpt gpio_generic acpi_cpufreq efivarfs
[19439.264477] CPU: 6 PID: 13828 Comm: kworker/6:2 Tainted: G           OE      6.0.0-gentoo-x86_64-01 #1
[19439.264482] Hardware name: Micro-Star International Co., Ltd. MS-7A34/B350 TOMAHAWK (MS-7A34), BIOS 1.M0 01/23/2019
[19439.264485] Workqueue: usb_hub_wq hub_event
[19439.264493] RIP: 0010:notifier_chain_register+0x3e/0x70
[19439.264497] Code: 10 7f 33 75 04 84 d2 75 3b 48 8d 78 08 48 8b 40 08 48 85 c0 74 20 48 39 c6 75 e0 48 8b 36 48 c7 c7 50 a2 34 a2 e8 f9 d1 a7 00 <0f> 0b b8 ef ff ff ff e9 46 18 d6 00 48 89 46 08 31 c0 48 89 37 e9
[19439.264500] RSP: 0018:ffffb2af8fb8f7d8 EFLAGS: 00010286
[19439.264503] RAX: 0000000000000000 RBX: ffffffffc1073290 RCX: 0000000000000000
[19439.264505] RDX: 0000000000000001 RSI: ffffffffa239a2ab RDI: 00000000ffffffff
[19439.264507] RBP: ffffffffa264f0a0 R08: 0000000000000000 R09: ffffffffa2dbdda0
[19439.264509] R10: 0000000000000001 R11: 0000000000000001 R12: ffff9f62c0a70b78
[19439.264511] R13: ffffffffa264f0c8 R14: ffff9f62c0a70d08 R15: ffffffffc0d22700
[19439.264513] FS:  0000000000000000(0000) GS:ffff9f69ba780000(0000) knlGS:0000000000000000
[19439.264516] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[19439.264518] CR2: 00007ffc4d8b3248 CR3: 0000000301a2e000 CR4: 00000000003506e0
[19439.264521] Call Trace:
[19439.264523]  <TASK>
[19439.264525]  blocking_notifier_chain_register+0x3d/0x80
[19439.264530]  hci_register_dev+0x32b/0x3d0 [bluetooth]
[19439.264558]  btusb_probe+0xc24/0xdea [btusb]
[19439.264563]  ? recalibrate_cpu_khz+0x10/0x10
[19439.264567]  ? ktime_get_mono_fast_ns+0x3d/0x90
[19439.264571]  usb_probe_interface+0xf6/0x2d0
[19439.264576]  really_probe+0xe1/0x3a0
[19439.264579]  ? pm_runtime_barrier+0x61/0xb0
[19439.264582]  __driver_probe_device+0x78/0x180
[19439.264585]  driver_probe_device+0x2c/0xb0
[19439.264588]  __device_attach_driver+0x8c/0x100
[19439.264591]  ? driver_allows_async_probing+0x60/0x60
[19439.264593]  ? driver_allows_async_probing+0x60/0x60
[19439.264596]  bus_for_each_drv+0x7e/0xd0
[19439.264599]  __device_attach+0xca/0x230
[19439.264602]  bus_probe_device+0x8e/0xb0
[19439.264604]  device_add+0x45c/0x970
[19439.264607]  ? preempt_count_add+0x70/0xa0
[19439.264611]  usb_set_configuration+0x483/0x890
[19439.264616]  usb_generic_driver_probe+0x50/0x70
[19439.264619]  usb_probe_device+0x47/0x110
[19439.264621]  really_probe+0xe1/0x3a0
[19439.264624]  ? pm_runtime_barrier+0x61/0xb0
[19439.264626]  __driver_probe_device+0x78/0x180
[19439.264629]  driver_probe_device+0x2c/0xb0
[19439.264632]  __device_attach_driver+0x8c/0x100
[19439.264634]  ? driver_allows_async_probing+0x60/0x60
[19439.264637]  ? driver_allows_async_probing+0x60/0x60
[19439.264639]  bus_for_each_drv+0x7e/0xd0
[19439.264642]  __device_attach+0xca/0x230
[19439.264644]  bus_probe_device+0x8e/0xb0
[19439.264647]  device_add+0x45c/0x970
[19439.264649]  ? blake2s_update+0x5c/0xe0
[19439.264654]  usb_new_device.cold+0x148/0x36a
[19439.264659]  hub_event+0xfa8/0x1950
[19439.264665]  process_one_work+0x1e5/0x3b0
[19439.264668]  ? rescuer_thread+0x390/0x390
[19439.264671]  worker_thread+0x50/0x3b0
[19439.264673]  ? rescuer_thread+0x390/0x390
[19439.264675]  kthread+0xe8/0x110
[19439.264678]  ? kthread_complete_and_exit+0x20/0x20
[19439.264681]  ret_from_fork+0x22/0x30
[19439.264687]  </TASK>
[19439.264688] ---[ end trace 0000000000000000 ]---
[19439.264702] btusb: probe of 1-2:1.0 failed with error -17
[19441.764603] general protection fault, probably for non-canonical address 0xff4c265eff4ee67f: 0000 [#1] PREEMPT SMP NOPTI
[19441.764612] CPU: 6 PID: 13828 Comm: kworker/6:2 Tainted: G        W  OE      6.0.0-gentoo-x86_64-01 #1
[19441.764615] Hardware name: Micro-Star International Co., Ltd. MS-7A34/B350 TOMAHAWK (MS-7A34), BIOS 1.M0 01/23/2019
[19441.764618] Workqueue: pm pm_runtime_work
[19441.764624] RIP: 0010:queued_spin_lock_slowpath+0x25b/0x2a0
[19441.764629] Code: ff f3 90 48 8b 13 48 85 d2 74 f6 eb d6 c1 ea 12 83 e0 03 ff ca 48 c1 e0 04 48 63 d2 48 05 00 c0 02 00 48 03 04 d5 20 18 43 a2 <48> 89 18 8b 43 08 85 c0 75 09 f3 90 8b 53 08 85 d2 74 f7 48 8b 13
[19441.764631] RSP: 0018:ffffb2af8fb8fcf8 EFLAGS: 00010082
[19441.764634] RAX: ff4c265eff4ee67f RBX: ffff9f69ba7ac000 RCX: 0000000000000007
[19441.764636] RDX: 0000000000003ffe RSI: ffffffffa239a2ab RDI: ffffffffa2368164
[19441.764638] RBP: ffff9f64a246118c R08: ffff9f632c210800 R09: ffff9f64a2464ca8
[19441.764640] R10: 0000000000000003 R11: 00000000010a1ab1 R12: 00000000001c0000
[19441.764641] R13: 00000000001c0000 R14: 0000000000000002 R15: ffff9f69ba7b2105
[19441.764643] FS:  0000000000000000(0000) GS:ffff9f69ba780000(0000) knlGS:0000000000000000
[19441.764645] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[19441.764647] CR2: 000000f403928000 CR3: 00000006bdec2000 CR4: 00000000003506e0
[19441.764649] Call Trace:
[19441.764652]  <TASK>
[19441.764656]  btusb_suspend+0x87/0x1c0 [btusb]
[19441.764662]  usb_suspend_both+0xaa/0x220
[19441.764667]  usb_runtime_suspend+0x2b/0x70
[19441.764670]  ? usb_autoresume_device+0x60/0x60
[19441.764673]  __rpm_callback+0x5b/0x140
[19441.764675]  ? usb_autoresume_device+0x60/0x60
[19441.764678]  rpm_callback+0x79/0x90
[19441.764680]  ? usb_autoresume_device+0x60/0x60
[19441.764682]  rpm_suspend+0x14a/0x730
[19441.764685]  ? vtime_task_switch_generic+0x8d/0xf0
[19441.764687]  ? _raw_spin_unlock+0x12/0x40
[19441.764691]  ? finish_task_switch.isra.0+0x96/0x2d0
[19441.764694]  pm_runtime_work+0x94/0xa0
[19441.764697]  process_one_work+0x1e5/0x3b0
[19441.764700]  ? rescuer_thread+0x390/0x390
[19441.764702]  worker_thread+0x50/0x3b0
[19441.764704]  ? rescuer_thread+0x390/0x390
[19441.764706]  kthread+0xe8/0x110
[19441.764709]  ? kthread_complete_and_exit+0x20/0x20
[19441.764712]  ret_from_fork+0x22/0x30
[19441.764717]  </TASK>
[19441.764718] Modules linked in: auth_rpcgss nfsv4 dns_resolver nfs lockd grace fscache netfs sunrpc bnep amdgpu mfd_core iommu_v2 gpu_sched drm_buddy vfat fat btusb btrtl uvcvideo btbcm btintel videobuf2_vmalloc videobuf2_memops snd_usb_audio videobuf2_v4l2 bluetooth videobuf2_common snd_usbmidi_lib videodev snd_rawmidi rfkill sr_mod mc ecdh_generic sd_mod cdrom radeon i2c_algo_bit drm_ttm_helper vboxnetadp(OE) vboxnetflt(OE) kvm_amd snd_hda_codec_realtek ttm snd_hda_codec_generic ppdev ledtrig_audio vboxdrv(OE) snd_hda_codec_hdmi drm_display_helper kvm drm_kms_helper snd_hda_intel nct6775 syscopyarea irqbypass nct6775_core snd_intel_dspcfg sysfillrect snd_hda_codec crct10dif_pclmul hwmon_vid sysimgblt crc32_pclmul crc32c_intel aic7xxx fb_sys_fops snd_hwdep scsi_transport_spi ghash_clmulni_intel snd_hda_core drm snd_pcm backlight xhci_pci aesni_intel snd_timer xhci_pci_renesas sp5100_tco snd crypto_simd cec cryptd i2c_piix4 ahci xhci_hcd soundcore ccp k10temp libahci i2c_core rapl pcspkr
[19441.764783]  efi_pstore parport_pc parport gpio_amdpt gpio_generic acpi_cpufreq efivarfs
[19441.764792] ---[ end trace 0000000000000000 ]---
[19441.820869] RIP: 0010:queued_spin_lock_slowpath+0x25b/0x2a0
[19441.820885] Code: ff f3 90 48 8b 13 48 85 d2 74 f6 eb d6 c1 ea 12 83 e0 03 ff ca 48 c1 e0 04 48 63 d2 48 05 00 c0 02 00 48 03 04 d5 20 18 43 a2 <48> 89 18 8b 43 08 85 c0 75 09 f3 90 8b 53 08 85 d2 74 f7 48 8b 13
[19441.820889] RSP: 0018:ffffb2af8fb8fcf8 EFLAGS: 00010082
[19441.820893] RAX: ff4c265eff4ee67f RBX: ffff9f69ba7ac000 RCX: 0000000000000007
[19441.820895] RDX: 0000000000003ffe RSI: ffffffffa239a2ab RDI: ffffffffa2368164
[19441.820897] RBP: ffff9f64a246118c R08: ffff9f632c210800 R09: ffff9f64a2464ca8
[19441.820899] R10: 0000000000000003 R11: 00000000010a1ab1 R12: 00000000001c0000
[19441.820900] R13: 00000000001c0000 R14: 0000000000000002 R15: ffff9f69ba7b2105
[19441.820902] FS:  0000000000000000(0000) GS:ffff9f69ba780000(0000) knlGS:0000000000000000
[19441.820904] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[19441.820906] CR2: 000000f403928000 CR3: 00000006bdec2000 CR4: 00000000003506e0
[19441.820909] note: kworker/6:2[13828] exited with preempt_count 1

Is there anything other useful info I can provide, or any patch to test?
Comment 233 Paul Menzel 2022-10-11 06:53:58 UTC
Please open a separate issue for this regression. Best send an email to the mailing list, and as it’s a regression, follow the instructions too [1], so it gets tracked. (Even better would be, if you could bisect.)


[1]: https://www.kernel.org/doc/html/latest/process/handling-regressions.html
Comment 234 Jack 2022-10-11 13:21:23 UTC
I'll try to do that, and I can try bisection.  The good (?) news is that I have repeated the failure in a reboot, but without those long traces in dmesg, so that bit might just be a red herring.
Comment 235 Swyter 2022-10-15 17:59:34 UTC
I can confirm someone messed up and broke my submitted patch. I'm on the Linux kernel 5.15.73 and `btmon` shows that the Bluetooth stack is asking to set the event filter *again*, when the added quick should make sure it doesn't; locking up the dongle.

< HCI Command: Set Event Filter (0x03|0x0005) plen 1                                                                                                     #23 [hci0] 5.316838
        Type: Clear All Filters (0x00)
> HCI Event: Command Complete (0x0e) plen 4                                    
>                                                                          #24
> [hci0] 5.319751
      Set Event Filter (0x03|0x0005) ncmd 1
        Status: Invalid HCI Command Parameters (0x12)
= Close Index: 00:1A:7D:xx:xx:xx

Well done. On Linux kernel 6.0 I can't even get the cloned dongle to show up on `btmon`. So things are doubly messed up and even more unstable.

Who's going to fix this? I have other stuff to do. ¯\_(ツ)_/¯
Comment 236 Swyter 2022-10-15 18:02:39 UTC
Quirk, or workaround, not 'quick'. And yeah, if someone could `git bisect` this it would solve half of the problem.
Comment 237 Jack 2022-10-15 19:12:33 UTC
I"m working my way through the pages on reporting a regression.  I'm running Gentoo, with the gentoo-sources kernel source.  This is not pure vanilla, but as far as I can tell, no patches related to this problem.  Can someone confirm that I really  need to compile from a git clone of the vanilla sources to do a proper bisect worth posting?  Will a regression bug be accepted prior to confirming with pure vanilla sources?

In my case, 5.19.10 and 5.19.14 work fine, but 6.0.0 and 6.0.1 fail, and I'm compiling 6.0.2 right now, just to test, although I don't expect any magical fix.
Comment 238 Swyter 2022-10-15 19:43:56 UTC
Last time I bisected a regression in the kernel I just used the official Arch Linux one as base, I think you should be able a downstream kernel just fine.

If you have a second computer in the same LAN and can access the regressed computer via SSH you can automate the bisection, compiling and rebooting with a handy Bash script like this one for a different problem, you'll need to tailor it to this Bluetooth issue, hope that helps: https://gist.github.com/Swyter/8b67b96075de02b9111e834de0ce5f8a#file-_auto_bisecter-sh
Comment 239 Zijun Hu 2022-10-27 09:59:26 UTC
i maybe find the root cause for this issue.

the device seems a fake device actually but it is not detected as fake device.


below error show it seems a fake device and HCI_QUIRK_BROKEN_FILTER_CLEAR_ALL should be set

< HCI Command: Set Event Filter (0x03|0x0005) plen 1        #23 [hci0] 4.130423
        Type: Clear All Filters (0x00)
> HCI Event: Command Complete (0x0e) plen 4                 #24 [hci0] 4.133374
      Set Event Filter (0x03|0x0005) ncmd 1
        Status: Invalid HCI Command Parameters (0x12)

but current fake device detect logic miss this new device.
< HCI Command: Read Local Version In.. (0x04|0x0001) plen 0  #1 [hci0] 4.073336
> HCI Event: Command Complete (0x0e) plen 12                 #2 [hci0] 4.077324
      Read Local Version Information (0x04|0x0001) ncmd 1
        Status: Success (0x00)
        HCI version: Bluetooth 4.0 (0x06) - Revision 12576 (0x3120)
        LMP version: Bluetooth 4.0 (0x06) - Subversion 8891 (0x22bb)
        Manufacturer: Cambridge Silicon Radio (10)


i will fix it as below:

+++ b/drivers/bluetooth/btusb.c
@@ -2155,7 +2155,7 @@ static int btusb_setup_csr(struct hci_dev *hdev)
                is_fake = true;

        else if (le16_to_cpu(rp->lmp_subver) <= 0x22bb &&
-                le16_to_cpu(rp->hci_ver) > BLUETOOTH_VER_4_0)
+                le16_to_cpu(rp->hci_ver) >= BLUETOOTH_VER_4_0)
                is_fake = true;
Comment 240 Zijun Hu 2022-10-28 02:59:39 UTC
I am sorry, please ignore my last wrong comments.

this issue should be caused by that below commit is not be picked up.

https://git.kernel.org/pub/scm/linux/kernel/git/bluetooth/bluetooth-next.git/commit/?id=b3cf94c8b6b2f1a2b94825a025db291da2b151fd
Comment 241 Paul Menzel 2022-10-28 08:44:30 UTC
Zijun, that commit is in Linux since v5.18-rc1, so that cannot be, cf. `git tag --contains b3cf94c8b6b2f1a2b94825a025db291da2b151fd`.
Comment 242 Swyter 2022-10-29 14:43:03 UTC
I think this patch series by a Qualcomm engineer essentially removed my quirk/workaround because, uh, they thought it was unnecessary:

https://patchwork.kernel.org/project/netdevbpf/list/?series=661703&archive=both&state=*

He argues that the quirk is not necessary because the code should check if the dongle says if it's supported or not.
The problem is that for these Chinese CSR clones they say that it would work, but it's a lie. Take a look:

= New Index: 00:00:00:00:00:00 (Primary,USB,hci0)                              [hci0] 11.272194
= Open Index: 00:00:00:00:00:00                                                [hci0] 11.272384
< HCI Command: Read Local Version Information (0x04|0x0001) plen 0          #1 [hci0] 11.272400
> HCI Event: Command Complete (0x0e) plen 12                                #2
> [hci0] 11.276039
      Read Local Version Information (0x04|0x0001) ncmd 1
        Status: Success (0x00)
        HCI version: Bluetooth 5.0 (0x09) - Revision 2064 (0x0810)
        LMP version: Bluetooth 5.0 (0x09) - Subversion 8978 (0x2312)
        Manufacturer: Cambridge Silicon Radio (10)
...
< HCI Command: Read Local Supported Features (0x04|0x0003) plen 0           #5 [hci0] 11.648370
> HCI Event: Command Complete (0x0e) plen 68                               #12
> [hci0] 11.668030
      Read Local Supported Commands (0x04|0x0002) ncmd 1
        Status: Success (0x00)
        Commands: 163 entries
          ...
          Read Default Erroneous Data Reporting (Octet 18 - Bit 2)
          Write Default Erroneous Data Reporting (Octet 18 - Bit 3)
          ...
...
< HCI Command: Read Default Erroneous Data Reporting (0x03|0x005a) plen 0  #47 [hci0] 11.748352
= Close Index: 00:1A:7D:DA:71:XX                                               [hci0] 13.776824


As you can see in the `btmon` dump our dongle stops responding, it dies after we ask that. So thanks for deleting my fix, absolutely surreal.
Comment 243 Swyter 2022-10-29 20:39:56 UTC
Submitted a patch series trying to re-fix this re-mess. We'll see:
https://patchwork.kernel.org/project/bluetooth/list/?series=690177
Comment 244 JustANormalTinkererMihir 2022-10-30 10:45:39 UTC
Recompiled the kernel using the patch, doesn't work for me.
Here's the dmesg log
[ 4192.433733] Bluetooth: hci0: CSR: Setting up dongle with HCI ver=9 rev=0810; LMP ver=9 subver=2312; manufacturer=10
[ 4192.433750] Bluetooth: hci0: CSR: Unbranded CSR clone detected; adding workarounds...
[ 4192.433752] Bluetooth: hci0: CSR: Unbranded CSR clone detected; force-suspending once...
[ 4192.792888] Bluetooth: hci0: HCI Delete Stored Link Key command is advertised, but not supported.
[ 4192.792896] Bluetooth: hci0: HCI Read Transmit Power Level command is advertised, but not supported.
[ 4192.792898] Bluetooth: hci0: HCI Enhanced Setup Synchronous Connection command is advertised, but not supported.
[ 4195.075805] Bluetooth: hci0: command 0x0c5a tx timeout
[ 4195.075813] Bluetooth: hci0: Opcode 0x c5a failed: -110
Comment 245 Swyter 2022-10-30 10:49:35 UTC
With the first patch [1/3] it should also say «HCI Read Default Erroneous Data Reporting command is advertised, but not supported» in your dmesg, so make sure you've actually merged-in all three patches in the series.
Comment 246 JustANormalTinkererMihir 2022-10-30 11:43:28 UTC
It seems that patch 3/3 fails to apply due to the line  static bool enable_poll_sync = IS_ENABLED(CONFIG_BT_HCIBTUSB_POLL_SYNC); not being there is the kernel.org 6.0.6 kernel adding that line makes all the patches apply and the module compiles. I have merged all the patches, I can confirm that changes were made to the btusb.c and other files after applying the first patch. The error still remains the same after recompilation
Comment 247 JustANormalTinkererMihir 2022-10-30 12:52:58 UTC
Sorry Swyter! It seems I made a mistake while compiling. I am so sorry, the patch works fine. Sorry for wasting your time
Comment 248 Zijun Hu 2022-10-31 03:03:33 UTC
Hi ALL,
let me summarize my points

1)For the original 4.0 controller issue shown below, don't need to fix since i believe the latest bluetooth-next tree doesn't have this issue.

< HCI Command: Set Event Filter (0x03|0x0005) plen 1        #23 [hci0] 4.130423
        Type: Clear All Filters (0x00)
> HCI Event: Command Complete (0x0e) plen 4                 #24 [hci0] 4.133374

      Set Event Filter (0x03|0x0005) ncmd 1
        Status: Invalid HCI Command Parameters (0x12)
< HCI Command: Read Local Version In.. (0x04|0x0001) plen 0  #1 [hci0] 4.073336
> HCI Event: Command Complete (0x0e) plen 12                 #2 [hci0] 4.077324

      Read Local Version Information (0x04|0x0001) ncmd 1
        Status: Success (0x00)
        HCI version: Bluetooth 4.0 (0x06) - Revision 12576 (0x3120)
        LMP version: Bluetooth 4.0 (0x06) - Subversion 8891 (0x22bb)
        Manufacturer: Cambridge Silicon Radio (10)

2) for the new 5.0 controller error. it is a new 5.0 BT controller. why not to fix this BT firmware bug?
could you please provide btmon log of these HCI commands?

HCI_Read_Local_Version_-Information
HCI_Read_Local_Supported_-Commands
HCI_Read_Local_Supported_Features
HCI_Read_Default_-Erroneous_Data_Reporting

[ 4195.075805] Bluetooth: hci0: command 0x0c5a tx timeout
[ 4195.075813] Bluetooth: hci0: Opcode 0x c5a failed: -110

> [hci0] 11.276039

      Read Local Version Information (0x04|0x0001) ncmd 1
        Status: Success (0x00)
        HCI version: Bluetooth 5.0 (0x09) - Revision 2064 (0x0810)
        LMP version: Bluetooth 5.0 (0x09) - Subversion 8978 (0x2312)
        Manufacturer: Cambridge Silicon Radio (10)
Comment 249 JustANormalTinkererMihir 2022-10-31 11:00:47 UTC
< HCI Command: Read Local Version Information (0x04|0x0001) plen 0                                                                                  #8 [hci0] 9.481997
> HCI Event: Command Complete (0x0e) plen 12                                   
>                                                                     #9 [hci0]
> 9.483762
      Read Local Version Information (0x04|0x0001) ncmd 1
        Status: Success (0x00)
        HCI version: Bluetooth 5.0 (0x09) - Revision 2064 (0x0810)
        LMP version: Bluetooth 5.0 (0x09) - Subversion 8978 (0x2312)

 HCI Command: Read Local Supported Commands (0x04|0x0002) plen 0                                                                                  #18 [hci0] 9.860418
> HCI Event: Command Complete (0x0e) plen 68                                   
>                                                                    #19 [hci0]
> 9.866388
      Read Local Supported Commands (0x04|0x0002) ncmd 1
        Status: Success (0x00)
        Commands: 163 entries
          Inquiry (Octet 0 - Bit 0)
          Inquiry Cancel (Octet 0 - Bit 1)
          Periodic Inquiry Mode (Octet 0 - Bit 2)
          Exit Periodic Inquiry Mode (Octet 0 - Bit 3)
          Create Connection (Octet 0 - Bit 4)
          Disconnect (Octet 0 - Bit 5)
          Create Connection Cancel (Octet 0 - Bit 7)
          Accept Connection Request (Octet 1 - Bit 0)
          Reject Connection Request (Octet 1 - Bit 1)
          Link Key Request Reply (Octet 1 - Bit 2)
          Link Key Request Negative Reply (Octet 1 - Bit 3)
          PIN Code Request Reply (Octet 1 - Bit 4)
          PIN Code Request Negative Reply (Octet 1 - Bit 5)
          Change Connection Packet Type (Octet 1 - Bit 6)
          Authentication Requested (Octet 1 - Bit 7)
          Set Connection Encryption (Octet 2 - Bit 0)
          Change Connection Link Key (Octet 2 - Bit 1)
          Temporary Link Key (Octet 2 - Bit 2)
          Remote Name Request (Octet 2 - Bit 3)
          Remote Name Request Cancel (Octet 2 - Bit 4)
          Read Remote Supported Features (Octet 2 - Bit 5)
          Read Remote Extended Features (Octet 2 - Bit 6)
          Read Remote Version Information (Octet 2 - Bit 7)
          Read Clock Offset (Octet 3 - Bit 0)
          Read LMP Handle (Octet 3 - Bit 1)
          Hold Mode (Octet 4 - Bit 1)
          Sniff Mode (Octet 4 - Bit 2)
          Exit Sniff Mode (Octet 4 - Bit 3)
          Park State (Octet 4 - Bit 4)
          Exit Park State (Octet 4 - Bit 5)
          QoS Setup (Octet 4 - Bit 6)
          Role Discovery (Octet 4 - Bit 7)
          Switch Role (Octet 5 - Bit 0)
          Read Link Policy Settings (Octet 5 - Bit 1)
          Write Link Policy Settings (Octet 5 - Bit 2)
          Read Default Link Policy Settings (Octet 5 - Bit 3)
          Write Default Link Policy Settings (Octet 5 - Bit 4)
          Flow Specification (Octet 5 - Bit 5)
          Set Event Mask (Octet 5 - Bit 6)
          Reset (Octet 5 - Bit 7)
          Set Event Filter (Octet 6 - Bit 0)
          Flush (Octet 6 - Bit 1)
          Read PIN Type (Octet 6 - Bit 2)
          Write PIN Type (Octet 6 - Bit 3)
          Create New Unit Key (Octet 6 - Bit 4)
          Read Stored Link Key (Octet 6 - Bit 5)
          Write Stored Link Key (Octet 6 - Bit 6)
          Delete Stored Link Key (Octet 6 - Bit 7)
          Write Local Name (Octet 7 - Bit 0)
          Read Local Name (Octet 7 - Bit 1)
          Read Connection Accept Timeout (Octet 7 - Bit 2)
          Write Connection Accept Timeout (Octet 7 - Bit 3)
          Read Page Timeout (Octet 7 - Bit 4)
          Write Page Timeout (Octet 7 - Bit 5)
          Read Scan Enable (Octet 7 - Bit 6)
          Write Scan Enable (Octet 7 - Bit 7)
          Read Page Scan Activity (Octet 8 - Bit 0)
          Write Page Scan Activity (Octet 8 - Bit 1)
          Read Inquiry Scan Activity (Octet 8 - Bit 2)
          Write Inquiry Scan Activity (Octet 8 - Bit 3)
          Read Class of Device (Octet 9 - Bit 0)
          Write Class of Device (Octet 9 - Bit 1)
          Read Voice Setting (Octet 9 - Bit 2)
          Write Voice Setting (Octet 9 - Bit 3)
          Read Automatic Flush Timeout (Octet 9 - Bit 4)
          Write Automatic Flush Timeout (Octet 9 - Bit 5)
          Read Num Broadcast Retransmissions (Octet 9 - Bit 6)
          Write Num Broadcast Retransmissions (Octet 9 - Bit 7)
          Read Hold Mode Activity (Octet 10 - Bit 0)
          Write Hold Mode Activity (Octet 10 - Bit 1)
          Read Transmit Power Level (Octet 10 - Bit 2)
          Read Sync Flow Control Enable (Octet 10 - Bit 3)
          Write Sync Flow Control Enable (Octet 10 - Bit 4)
          Set Controller To Host Flow Control (Octet 10 - Bit 5)
          Host Buffer Size (Octet 10 - Bit 6)
          Host Number of Completed Packets (Octet 10 - Bit 7)
          Read Link Supervision Timeout (Octet 11 - Bit 0)
          Write Link Supervision Timeout (Octet 11 - Bit 1)
          Read Number of Supported IAC (Octet 11 - Bit 2)
          Read Current IAC LAP (Octet 11 - Bit 3)
          Write Current IAC LAP (Octet 11 - Bit 4)
          Set AFH Host Channel Classification (Octet 12 - Bit 1)
          Read Inquiry Scan Type (Octet 12 - Bit 4)
          Write Inquiry Scan Type (Octet 12 - Bit 5)
          Read Inquiry Mode (Octet 12 - Bit 6)
          Write Inquiry Mode (Octet 12 - Bit 7)
          Read Page Scan Type (Octet 13 - Bit 0)
          Write Page Scan Type (Octet 13 - Bit 1)
          Read AFH Channel Assessment Mode (Octet 13 - Bit 2)
          Write AFH Channel Assessment Mode (Octet 13 - Bit 3)
          Read Local Version Information (Octet 14 - Bit 3)
          Read Local Supported Features (Octet 14 - Bit 5)
          Read Local Extended Features (Octet 14 - Bit 6)
          Read Buffer Size (Octet 14 - Bit 7)
          Read BD ADDR (Octet 15 - Bit 1)
          Read Failed Contact Counter (Octet 15 - Bit 2)
          Reset Failed Contact Counter (Octet 15 - Bit 3)
          Read Link Quality (Octet 15 - Bit 4)
          Read RSSI (Octet 15 - Bit 5)
          Read AFH Channel Map (Octet 15 - Bit 6)
          Read Clock (Octet 15 - Bit 7)
          Read Loopback Mode (Octet 16 - Bit 0)
          Write Loopback Mode (Octet 16 - Bit 1)
          Enable Device Under Test Mode (Octet 16 - Bit 2)
          Setup Synchronous Connection (Octet 16 - Bit 3)
          Accept Synchronous Connection Request (Octet 16 - Bit 4)
          Reject Synchronous Connection Request (Octet 16 - Bit 5)
          Read Extended Inquiry Response (Octet 17 - Bit 0)
          Write Extended Inquiry Response (Octet 17 - Bit 1)
          Refresh Encryption Key (Octet 17 - Bit 2)
          Sniff Subrating (Octet 17 - Bit 4)
          Read Simple Pairing Mode (Octet 17 - Bit 5)
          Write Simple Pairing Mode (Octet 17 - Bit 6)
          Read Local OOB Data (Octet 17 - Bit 7)
          Read Inquiry Response TX Power Level (Octet 18 - Bit 0)
          Write Inquiry Transmit Power Level (Octet 18 - Bit 1)
          Read Default Erroneous Data Reporting (Octet 18 - Bit 2)
          Write Default Erroneous Data Reporting (Octet 18 - Bit 3)
          IO Capability Request Reply (Octet 18 - Bit 7)
          User Confirmation Request Reply (Octet 19 - Bit 0)
          User Confirmation Request Neg Reply (Octet 19 - Bit 1)
          User Passkey Request Reply (Octet 19 - Bit 2)
          User Passkey Request Negative Reply (Octet 19 - Bit 3)
          Remote OOB Data Request Reply (Octet 19 - Bit 4)
          Write Simple Pairing Debug Mode (Octet 19 - Bit 5)
          Enhanced Flush (Octet 19 - Bit 6)
          Remote OOB Data Request Neg Reply (Octet 19 - Bit 7)
          Send Keypress Notification (Octet 20 - Bit 2)
          IO Capability Request Negative Reply (Octet 20 - Bit 3)
          Read Encryption Key Size (Octet 20 - Bit 4)
          Read Enhanced Transmit Power Level (Octet 24 - Bit 0)
          Read LE Host Supported (Octet 24 - Bit 5)
          Write LE Host Supported (Octet 24 - Bit 6)
          LE Set Event Mask (Octet 25 - Bit 0)
          LE Read Buffer Size (Octet 25 - Bit 1)
          LE Read Local Supported Features (Octet 25 - Bit 2)
          LE Set Random Address (Octet 25 - Bit 4)
          LE Set Advertising Parameters (Octet 25 - Bit 5)
          LE Read Advertising Channel TX Power (Octet 25 - Bit 6)
          LE Set Advertising Data (Octet 25 - Bit 7)
          LE Set Scan Response Data (Octet 26 - Bit 0)
          LE Set Advertise Enable (Octet 26 - Bit 1)
          LE Set Scan Parameters (Octet 26 - Bit 2)
          LE Set Scan Enable (Octet 26 - Bit 3)
          LE Create Connection (Octet 26 - Bit 4)
          LE Create Connection Cancel (Octet 26 - Bit 5)
          LE Read Accept List Size (Octet 26 - Bit 6)
          LE Clear Accept List (Octet 26 - Bit 7)
          LE Add Device To Accept List (Octet 27 - Bit 0)
          LE Remove Device From Accept List (Octet 27 - Bit 1)
          LE Connection Update (Octet 27 - Bit 2)
          LE Set Host Channel Classification (Octet 27 - Bit 3)
          LE Read Channel Map (Octet 27 - Bit 4)
          LE Read Remote Used Features (Octet 27 - Bit 5)
          LE Encrypt (Octet 27 - Bit 6)
          LE Rand (Octet 27 - Bit 7)
          LE Start Encryption (Octet 28 - Bit 0)
          LE Long Term Key Request Reply (Octet 28 - Bit 1)
          LE Long Term Key Request Neg Reply (Octet 28 - Bit 2)
          LE Read Supported States (Octet 28 - Bit 3)
          LE Receiver Test (Octet 28 - Bit 4)
          LE Transmitter Test (Octet 28 - Bit 5)


> HCI Event: Command Complete (0x0e) plen 12                                   
>                                                                    #13 [hci0]
> 9.856388
      Read Local Supported Features (0x04|0x0003) ncmd 1
        Status: Success (0x00)
        Features: 0xbf 0x3e 0x4d 0xfa 0xdb 0x3d 0x7b 0xc7
          3 slot packets
          5 slot packets
          Encryption
          Slot offset
          Timing accuracy
          Role switch
          Sniff mode
          Power control requests
          Channel quality driven data rate (CQDDR)
          SCO link
          HV2 packets
          HV3 packets
          CVSD synchronous data
          Power control
          Transparent synchronous data
          Flow control lag (most significant bit)
          Enhanced Data Rate ACL 2 Mbps mode
          Enhanced inquiry scan
          Interlaced inquiry scan
          Interlaced page scan
          RSSI with inquiry results
          Extended SCO link (EV3 packets)
          EV4 packets
          EV5 packets
          AFH capable peripheral
          AFH classification peripheral
          LE Supported (Controller)
          3-slot Enhanced Data Rate ACL packets
          5-slot Enhanced Data Rate ACL packets
          Pause encryption
          AFH capable central
          AFH classification central
          Enhanced Data Rate eSCO 2 Mbps mode
          Extended Inquiry Response
          Simultaneous LE and BR/EDR (Controller)
          Secure Simple Pairing
          Encapsulated PDU
          Erroneous Data Reporting
          Non-flushable Packet Boundary Flag
          Link Supervision Timeout Changed Event
          Inquiry TX Power Level
          Enhanced Power Control
          Extended features

I cannot find the command HCI_Read_Default_-Erroneous_Data_Reporting in the btmon log, I don't really know how to use that thing. Also the adapter now works fine after applying the patches, I just made a mistake while compiling and only compiled the btusb module and not the whole bluetooth module, my bad.
Comment 250 JustANormalTinkererMihir 2022-10-31 11:09:37 UTC
It seems that my terminal failed to copy the last line of the commands correctly so here it fixed:

< HCI Command: Read Local Version In.. (0x04|0x0001) plen 0  #1 [hci0] 9.448239
> HCI Event: Command Complete (0x0e) plen 12                 #2 [hci0] 9.450137
      Read Local Version Information (0x04|0x0001) ncmd 1
        Status: Success (0x00)
        HCI version: Bluetooth 5.0 (0x09) - Revision 2064 (0x0810)
        LMP version: Bluetooth 5.0 (0x09) - Subversion 8978 (0x2312)
        Manufacturer: Cambridge Silicon Radio (10)


< HCI Command: Read Local Support.. (0x04|0x0002) plen 0  #127 [hci0] 10.188575
> HCI Event: Command Complete (0x0e) plen 68              #128 [hci0] 10.194513
      Read Local Supported Commands (0x04|0x0002) ncmd 1
        Status: Success (0x00)
        Commands: 163 entries
          Inquiry (Octet 0 - Bit 0)
          Inquiry Cancel (Octet 0 - Bit 1)
          Periodic Inquiry Mode (Octet 0 - Bit 2)
          Exit Periodic Inquiry Mode (Octet 0 - Bit 3)
          Create Connection (Octet 0 - Bit 4)
          Disconnect (Octet 0 - Bit 5)
          Create Connection Cancel (Octet 0 - Bit 7)
          Accept Connection Request (Octet 1 - Bit 0)
          Reject Connection Request (Octet 1 - Bit 1)
          Link Key Request Reply (Octet 1 - Bit 2)
          Link Key Request Negative Reply (Octet 1 - Bit 3)
          PIN Code Request Reply (Octet 1 - Bit 4)
          PIN Code Request Negative Reply (Octet 1 - Bit 5)
          Change Connection Packet Type (Octet 1 - Bit 6)
          Authentication Requested (Octet 1 - Bit 7)
          Set Connection Encryption (Octet 2 - Bit 0)
          Change Connection Link Key (Octet 2 - Bit 1)
          Temporary Link Key (Octet 2 - Bit 2)
          Remote Name Request (Octet 2 - Bit 3)
          Remote Name Request Cancel (Octet 2 - Bit 4)
          Read Remote Supported Features (Octet 2 - Bit 5)
          Read Remote Extended Features (Octet 2 - Bit 6)
          Read Remote Version Information (Octet 2 - Bit 7)
          Read Clock Offset (Octet 3 - Bit 0)
          Read LMP Handle (Octet 3 - Bit 1)
          Hold Mode (Octet 4 - Bit 1)
          Sniff Mode (Octet 4 - Bit 2)
          Exit Sniff Mode (Octet 4 - Bit 3)
          Park State (Octet 4 - Bit 4)
          Exit Park State (Octet 4 - Bit 5)
          QoS Setup (Octet 4 - Bit 6)
          Role Discovery (Octet 4 - Bit 7)
          Switch Role (Octet 5 - Bit 0)
          Read Link Policy Settings (Octet 5 - Bit 1)
          Write Link Policy Settings (Octet 5 - Bit 2)
          Read Default Link Policy Settings (Octet 5 - Bit 3)
          Write Default Link Policy Settings (Octet 5 - Bit 4)
          Flow Specification (Octet 5 - Bit 5)
          Set Event Mask (Octet 5 - Bit 6)
          Reset (Octet 5 - Bit 7)
          Set Event Filter (Octet 6 - Bit 0)
          Flush (Octet 6 - Bit 1)
          Read PIN Type (Octet 6 - Bit 2)
          Write PIN Type (Octet 6 - Bit 3)
          Create New Unit Key (Octet 6 - Bit 4)
          Read Stored Link Key (Octet 6 - Bit 5)
          Write Stored Link Key (Octet 6 - Bit 6)
          Delete Stored Link Key (Octet 6 - Bit 7)
          Write Local Name (Octet 7 - Bit 0)
          Read Local Name (Octet 7 - Bit 1)
          Read Connection Accept Timeout (Octet 7 - Bit 2)
          Write Connection Accept Timeout (Octet 7 - Bit 3)
          Read Page Timeout (Octet 7 - Bit 4)
          Write Page Timeout (Octet 7 - Bit 5)
          Read Scan Enable (Octet 7 - Bit 6)
          Write Scan Enable (Octet 7 - Bit 7)
          Read Page Scan Activity (Octet 8 - Bit 0)
          Write Page Scan Activity (Octet 8 - Bit 1)
          Read Inquiry Scan Activity (Octet 8 - Bit 2)
          Write Inquiry Scan Activity (Octet 8 - Bit 3)
          Read Class of Device (Octet 9 - Bit 0)
          Write Class of Device (Octet 9 - Bit 1)
          Read Voice Setting (Octet 9 - Bit 2)
          Write Voice Setting (Octet 9 - Bit 3)
          Read Automatic Flush Timeout (Octet 9 - Bit 4)
          Write Automatic Flush Timeout (Octet 9 - Bit 5)
          Read Num Broadcast Retransmissions (Octet 9 - Bit 6)
          Write Num Broadcast Retransmissions (Octet 9 - Bit 7)
          Read Hold Mode Activity (Octet 10 - Bit 0)
          Write Hold Mode Activity (Octet 10 - Bit 1)
          Read Transmit Power Level (Octet 10 - Bit 2)
          Read Sync Flow Control Enable (Octet 10 - Bit 3)
          Write Sync Flow Control Enable (Octet 10 - Bit 4)
          Set Controller To Host Flow Control (Octet 10 - Bit 5)
          Host Buffer Size (Octet 10 - Bit 6)
          Host Number of Completed Packets (Octet 10 - Bit 7)
          Read Link Supervision Timeout (Octet 11 - Bit 0)
          Write Link Supervision Timeout (Octet 11 - Bit 1)
          Read Number of Supported IAC (Octet 11 - Bit 2)
          Read Current IAC LAP (Octet 11 - Bit 3)
          Write Current IAC LAP (Octet 11 - Bit 4)
          Set AFH Host Channel Classification (Octet 12 - Bit 1)
          Read Inquiry Scan Type (Octet 12 - Bit 4)
          Write Inquiry Scan Type (Octet 12 - Bit 5)
          Read Inquiry Mode (Octet 12 - Bit 6)
          Write Inquiry Mode (Octet 12 - Bit 7)
          Read Page Scan Type (Octet 13 - Bit 0)
          Write Page Scan Type (Octet 13 - Bit 1)
          Read AFH Channel Assessment Mode (Octet 13 - Bit 2)
          Write AFH Channel Assessment Mode (Octet 13 - Bit 3)
          Read Local Version Information (Octet 14 - Bit 3)
          Read Local Supported Features (Octet 14 - Bit 5)
          Read Local Extended Features (Octet 14 - Bit 6)
          Read Buffer Size (Octet 14 - Bit 7)
          Read BD ADDR (Octet 15 - Bit 1)
          Read Failed Contact Counter (Octet 15 - Bit 2)
          Reset Failed Contact Counter (Octet 15 - Bit 3)
          Read Link Quality (Octet 15 - Bit 4)
          Read RSSI (Octet 15 - Bit 5)
          Read AFH Channel Map (Octet 15 - Bit 6)
          Read Clock (Octet 15 - Bit 7)
          Read Loopback Mode (Octet 16 - Bit 0)
          Write Loopback Mode (Octet 16 - Bit 1)
          Enable Device Under Test Mode (Octet 16 - Bit 2)
          Setup Synchronous Connection (Octet 16 - Bit 3)
          Accept Synchronous Connection Request (Octet 16 - Bit 4)
          Reject Synchronous Connection Request (Octet 16 - Bit 5)
          Read Extended Inquiry Response (Octet 17 - Bit 0)
          Write Extended Inquiry Response (Octet 17 - Bit 1)
          Refresh Encryption Key (Octet 17 - Bit 2)
          Sniff Subrating (Octet 17 - Bit 4)
          Read Simple Pairing Mode (Octet 17 - Bit 5)
          Write Simple Pairing Mode (Octet 17 - Bit 6)
          Read Local OOB Data (Octet 17 - Bit 7)
          Read Inquiry Response TX Power Level (Octet 18 - Bit 0)
          Write Inquiry Transmit Power Level (Octet 18 - Bit 1)
          Read Default Erroneous Data Reporting (Octet 18 - Bit 2)
          Write Default Erroneous Data Reporting (Octet 18 - Bit 3)
          IO Capability Request Reply (Octet 18 - Bit 7)
          User Confirmation Request Reply (Octet 19 - Bit 0)
          User Confirmation Request Neg Reply (Octet 19 - Bit 1)
          User Passkey Request Reply (Octet 19 - Bit 2)
          User Passkey Request Negative Reply (Octet 19 - Bit 3)
          Remote OOB Data Request Reply (Octet 19 - Bit 4)
          Write Simple Pairing Debug Mode (Octet 19 - Bit 5)
          Enhanced Flush (Octet 19 - Bit 6)
          Remote OOB Data Request Neg Reply (Octet 19 - Bit 7)
          Send Keypress Notification (Octet 20 - Bit 2)
          IO Capability Request Negative Reply (Octet 20 - Bit 3)
          Read Encryption Key Size (Octet 20 - Bit 4)
          Read Enhanced Transmit Power Level (Octet 24 - Bit 0)
          Read LE Host Supported (Octet 24 - Bit 5)
          Write LE Host Supported (Octet 24 - Bit 6)
          LE Set Event Mask (Octet 25 - Bit 0)
          LE Read Buffer Size (Octet 25 - Bit 1)
          LE Read Local Supported Features (Octet 25 - Bit 2)
          LE Set Random Address (Octet 25 - Bit 4)
          LE Set Advertising Parameters (Octet 25 - Bit 5)
          LE Read Advertising Channel TX Power (Octet 25 - Bit 6)
          LE Set Advertising Data (Octet 25 - Bit 7)
          LE Set Scan Response Data (Octet 26 - Bit 0)
          LE Set Advertise Enable (Octet 26 - Bit 1)
          LE Set Scan Parameters (Octet 26 - Bit 2)
          LE Set Scan Enable (Octet 26 - Bit 3)
          LE Create Connection (Octet 26 - Bit 4)
          LE Create Connection Cancel (Octet 26 - Bit 5)
          LE Read Accept List Size (Octet 26 - Bit 6)
          LE Clear Accept List (Octet 26 - Bit 7)
          LE Add Device To Accept List (Octet 27 - Bit 0)
          LE Remove Device From Accept List (Octet 27 - Bit 1)
          LE Connection Update (Octet 27 - Bit 2)
          LE Set Host Channel Classification (Octet 27 - Bit 3)
          LE Read Channel Map (Octet 27 - Bit 4)
          LE Read Remote Used Features (Octet 27 - Bit 5)
          LE Encrypt (Octet 27 - Bit 6)
          LE Rand (Octet 27 - Bit 7)
          LE Start Encryption (Octet 28 - Bit 0)
          LE Long Term Key Request Reply (Octet 28 - Bit 1)
          LE Long Term Key Request Neg Reply (Octet 28 - Bit 2)
          LE Read Supported States (Octet 28 - Bit 3)
          LE Receiver Test (Octet 28 - Bit 4)
          LE Transmitter Test (Octet 28 - Bit 5)
          LE Test End (Octet 28 - Bit 6)


< HCI Command: Read Local Support.. (0x04|0x0003) plen 0  #121 [hci0] 10.182585
> HCI Event: Command Complete (0x0e) plen 12              #122 [hci0] 10.184514
      Read Local Supported Features (0x04|0x0003) ncmd 1
        Status: Success (0x00)
        Features: 0xbf 0x3e 0x4d 0xfa 0xdb 0x3d 0x7b 0xc7
          3 slot packets
          5 slot packets
          Encryption
          Slot offset
          Timing accuracy
          Role switch
          Sniff mode
          Power control requests
          Channel quality driven data rate (CQDDR)
          SCO link
          HV2 packets
          HV3 packets
          CVSD synchronous data
          Power control
          Transparent synchronous data
          Flow control lag (most significant bit)
          Enhanced Data Rate ACL 2 Mbps mode
          Enhanced inquiry scan
          Interlaced inquiry scan
          Interlaced page scan
          RSSI with inquiry results
          Extended SCO link (EV3 packets)
          EV4 packets
          EV5 packets
          AFH capable peripheral
          AFH classification peripheral
          LE Supported (Controller)
          3-slot Enhanced Data Rate ACL packets
          5-slot Enhanced Data Rate ACL packets
          Pause encryption
          AFH capable central
          AFH classification central
          Enhanced Data Rate eSCO 2 Mbps mode
          Extended Inquiry Response
          Simultaneous LE and BR/EDR (Controller)
          Secure Simple Pairing
          Encapsulated PDU
          Erroneous Data Reporting
          Non-flushable Packet Boundary Flag
          Link Supervision Timeout Changed Event
          Inquiry TX Power Level
          Enhanced Power Control
          Extended features
          Unknown features (0x4000000000000000)
Comment 251 Zijun Hu 2022-10-31 12:47:14 UTC
Hi justanormaltinkerermihir

you can use below command to send HCI_Read_Default_-Erroneous_Data_Reporting
hcitool -i hci0 cmd 03 5a
Comment 252 Swyter 2022-10-31 12:56:19 UTC
Here are full `btmon` dumps for three different fake CSR dongles, you can see where the controller goes bananas at the end and stops responding: https://gist.github.com/Swyter/34b93e3abda433a742e024e3a6ec8e69
Comment 253 JustANormalTinkererMihir 2022-10-31 13:11:29 UTC
It just outputs this:

< HCI Command: ogf 0x03, ocf 0x005a, plen 0


and dmesg shows this: [  921.174808] Bluetooth: hci0: command 0x0c5a tx timeout
Comment 254 Zijun Hu 2022-10-31 13:21:22 UTC
Hi justanormaltinkerermihir,

you maybe catch bton log of that command by below steps:
1) open one terminal and run  btmon
2) open another terminal and run hcitool -i hci0 cmd 03 5a
3) catch dmesg log for this hci command.
Comment 255 JustANormalTinkererMihir 2022-10-31 14:12:09 UTC
@ RAW Open: hcitool version 2.22                                                                                                                    {0x0002} 60.186930
@ RAW Close: hcitool                                                                                                                                {0x0002} 60.186936
@ RAW Open: hcitool version 2.22                                                                                                                    {0x0002} 60.186945
@ RAW Close: hcitool                                                                                                                                {0x0002} 60.186946
@ RAW Open: hcitool version 2.22                                                                                                             {0x0002} [hci0] 60.186958
< HCI Command: Read Default Erroneous Data Reporting (0x03|0x005a) plen 0                                                                       #4487 [hci0] 60.186997

Dmesg log [4491.418284] Bluetooth: hci0: command 0x0c5a tx timeout


It locks up the bluetooth dongle and I have to reconnect it for it to work again
Comment 256 Zijun Hu 2022-11-01 03:14:53 UTC
it seems there are indeed CSR devices which say they support HCI_Read_Default_-Erroneous_Data_Reporting from output of both HCI_Read_Local_Supported_-Commands
and HCI_Read_Local_Supported_Features. but  they don't support the command actually.

but is it worth for such getting info commands error to cause BT initialization 
failure?

/* HCI Controller init stage 3 command sequence */
static const struct hci_init_stage hci_init3[] = {
	/* HCI_OP_SET_EVENT_MASK */
	HCI_INIT(hci_set_event_mask_sync),
	/* HCI_OP_READ_STORED_LINK_KEY */
	HCI_INIT(hci_read_stored_link_key_sync),
	/* HCI_OP_WRITE_DEF_LINK_POLICY */
	HCI_INIT(hci_setup_link_policy_sync),
	/* HCI_OP_READ_PAGE_SCAN_ACTIVITY */
	HCI_INIT(hci_read_page_scan_activity_sync),
	/* HCI_OP_READ_DEF_ERR_DATA_REPORTING */
	HCI_INIT(hci_read_def_err_data_reporting_sync),
	/* HCI_OP_READ_PAGE_SCAN_TYPE */
	HCI_INIT(hci_read_page_scan_type_sync),
	/* HCI_OP_READ_LOCAL_EXT_FEATURES */
	HCI_INIT(hci_read_local_ext_features_all_sync),
	{}
};
Comment 257 JustANormalTinkererMihir 2022-11-13 17:22:37 UTC
It seems that these v5.0 bluetooth dongle cause kernel panic at times, Swyter can you unplug and replug your bluetooth dongle a lot of times and reproduce this issue. I've made a bug report here https://bugzilla.kernel.org/show_bug.cgi?id=21668 but just wanted to check if you can reproduce this too

Thanks,
Comment 258 Leonardo Eugênio 2022-11-22 02:56:24 UTC
Created attachment 303259 [details]
kernel fault with CSR 5.0 dongle

Using patch series 690177, here's the `dmesg` output for the issue mentioned by JustANormalTinkererMihir, where the dongle is plugged and unplugged repeatedly and causes a kernel fault. This problem also occurs randomly during normal usage after a while even if not connected to anything.

The bug report mentioned by JustANormalTinkererMihir seems to be missing so I'm leaving this report here.
Comment 259 Swyter 2022-11-22 08:00:07 UTC
Seems like @JustANormalTinkererMihir was missing a digit in the copy-paste; the correct ticket seems to be this one: https://bugzilla.kernel.org/show_bug.cgi?id=216683
Comment 260 Jack 2022-11-25 02:45:51 UTC
I have been getting that same kernel fault, most commonly without any unplug/replug, and usually when no BT device (headset) is connected.  I just posted one of my traces to that bug.
Comment 261 Swyter 2022-12-11 15:37:46 UTC
Good news on my end, it seems like Greg Kroah-Hartman has added my two latest patches to both the 5.10-stable and 6.0-stable trees. So they have been thankfully backported and not only shipped as part of future Linux versions, and all is well with the world.

Happy to at least see this fixed, even if Luiz Augusto von Dentz didn't accept my third patch to add a kernel command-line toggle to improve compatibility, haven't received any signals afterwards and I don't know how to ask them again. Maybe someone wants to pick that one up and fight for it.

But yeah, in general the sweat paid off.
Comment 262 Swyter 2022-12-12 15:55:50 UTC
Quick heads up, the patch thingie that adds further dmesg logging for diagnostics has seemingly ended up in 5.10 and 5.15, and 6.0 (which is the version that originally broke it) now additionally adds that and the removed quirk. Cool beans.
Comment 263 Swyter 2022-12-23 18:36:27 UTC
For those using Arch Linux, the patches arrived to the «core» repo yesterday with the linux 6.1.1.arch1-1 package. Your dongles should work out of the box again:

https://github.com/archlinux/linux/commit/42d7731e3e7409f9444ff44e30c025958f1b14f0
https://github.com/archlinux/linux/commit/955aebd445e2b49622f2184b7abb82b05c060549

https://github.com/archlinux/linux/commits/v6.1.1-arch1?after=56bc7b09f7640a2b6e974ccbb191693fbb25f4d9+174&branch=v6.1.1-arch1

Some other mainstream distros may be in a similar situation, let me know how it goes. Happy to see this going downstream fast. :)

[    6.711218] Bluetooth: hci0: CSR: Setting up dongle with HCI ver=9 rev=0810; LMP ver=9 subver=2312; manufacturer=10
[    6.711226] Bluetooth: hci0: CSR: Unbranded CSR clone detected; adding workarounds and force-suspending once...
[    7.061122] systemd[1]: Starting Bluetooth service...
[    7.083941] Bluetooth: hci0: HCI Delete Stored Link Key command is advertised, but not supported.
[    7.083945] Bluetooth: hci0: HCI Read Default Erroneous Data Reporting command is advertised, but not supported.
[    7.083948] Bluetooth: hci0: HCI Set Event Filter command not supported.

Check your `dmesg | grep Bluetooth` out.
Comment 264 Yuri Santos 2022-12-23 18:42:12 UTC
(In reply to Swyter from comment #263)
> For those using Arch Linux, the patches arrived to the «core» repo yesterday
> with the linux 6.1.1.arch1-1 package. Your dongles should work out of the
> box again:
> 
> https://github.com/archlinux/linux/commit/
> 42d7731e3e7409f9444ff44e30c025958f1b14f0
> https://github.com/archlinux/linux/commit/
> 955aebd445e2b49622f2184b7abb82b05c060549
> 
> https://github.com/archlinux/linux/commits/v6.1.1-
> arch1?after=56bc7b09f7640a2b6e974ccbb191693fbb25f4d9+174&branch=v6.1.1-arch1
> 
> Some other mainstream distros may be in a similar situation, let me know how
> it goes. Happy to see this going downstream fast. :)
> 
> [    6.711218] Bluetooth: hci0: CSR: Setting up dongle with HCI ver=9
> rev=0810; LMP ver=9 subver=2312; manufacturer=10
> [    6.711226] Bluetooth: hci0: CSR: Unbranded CSR clone detected; adding
> workarounds and force-suspending once...
> [    7.061122] systemd[1]: Starting Bluetooth service...
> [    7.083941] Bluetooth: hci0: HCI Delete Stored Link Key command is
> advertised, but not supported.
> [    7.083945] Bluetooth: hci0: HCI Read Default Erroneous Data Reporting
> command is advertised, but not supported.
> [    7.083948] Bluetooth: hci0: HCI Set Event Filter command not supported.
> 
> Check your `dmesg | grep Bluetooth` out.

Can confirm. It's now working on my machine with Archlinux kernel 6.1.1-zen1-1-zen. I was experiencing crashes when plugging my usb dongle, but I'm not sure the root of the problem. But after this patch I'm not experiencing any crashes.

My `dmesg | grep Bluetooth` output:
[19477.778324] Bluetooth: Core ver 2.22
[19477.778352] Bluetooth: HCI device and connection manager initialized
[19477.778355] Bluetooth: HCI socket layer initialized
[19477.778357] Bluetooth: L2CAP socket layer initialized
[19477.778361] Bluetooth: SCO socket layer initialized
[19477.809618] Bluetooth: hci0: CSR: Setting up dongle with HCI ver=6 rev=3120; LMP ver=6 subver=22bb; manufacturer=10
[19477.809623] Bluetooth: hci0: CSR: Unbranded CSR clone detected; adding workarounds and force-suspending once...
[19477.809626] Bluetooth: hci0: CSR: Couldn't suspend the device for our Barrot 8041a02 receive-issue workaround
[19477.809632] Bluetooth: hci0: HCI Delete Stored Link Key command is advertised, but not supported.
[19477.809634] Bluetooth: hci0: HCI Read Default Erroneous Data Reporting command is advertised, but not supported.
[19477.809636] Bluetooth: hci0: HCI Set Event Filter command not supported.
[19484.411012] Bluetooth: BNEP (Ethernet Emulation) ver 1.3
[19484.411016] Bluetooth: BNEP filters: protocol multicast
[19484.411022] Bluetooth: BNEP socket layer initialized
[19484.412616] Bluetooth: MGMT ver 1.22
Comment 265 guimarcalsilva 2022-12-23 22:33:01 UTC
Let me preface this by saying that this specific dongle might be already broken since even on Windows it works but disconnects after a while. Personally, I've given up on those fake adapters and ended up buying a good one, but I'll share my test results here just in case it helps someone else.


For me, with this latest patch (On Arch with kernel 6.1.1-arch1-1) the dongle still doesn't work.


When I boot up with it connected, btmon gives it an empty index:


> New Index: 00:00:00:00:00:00 (Primary,USB,hci0)


dmesg outputs:


> [    4.915236] Bluetooth: hci0: CSR: Setting up dongle with HCI ver=9
> rev=3120; LMP ver=9 subver=22bb; manufacturer=10
> [    4.915243] Bluetooth: hci0: CSR: Unbranded CSR clone detected; adding
> workarounds and force-suspending once...
> [    5.466031] usb 1-5: new full-speed USB device number 5 using xhci_hcd
> [    9.953845] Bluetooth: hci0: CSR: Couldn't suspend the device for our
> Barrot 8041a02 receive-issue workaround
> [    9.953958] Bluetooth: hci0: HCI Delete Stored Link Key command is
> advertised, but not supported.
> [    9.953967] Bluetooth: hci0: HCI Read Default Erroneous Data Reporting
> command is advertised, but not supported.
> [    9.953974] Bluetooth: hci0: HCI Set Event Filter command not supported.
> [   12.086015] Bluetooth: hci0: Opcode 0x c03 failed: -110


Curiously, if I disconnect it and reconnect it quickly, btmon does give it a valid index:


> = New Index: 00:1A:7D:DA:71:10 (Primary,USB,hci0)


And Dmesg outputs the following (notice the two last messages are different):


> [   79.189612] Bluetooth: hci0: CSR: Setting up dongle with HCI ver=9
> rev=3120; LMP ver=9 subver=22bb; manufacturer=10
> [   79.189644] Bluetooth: hci0: CSR: Unbranded CSR clone detected; adding
> workarounds and force-suspending once...
> [   79.189654] Bluetooth: hci0: CSR: Couldn't suspend the device for our
> Barrot 8041a02 receive-issue workaround
> [   79.190111] Bluetooth: hci0: HCI Delete Stored Link Key command is
> advertised, but not supported.
> [   79.190124] Bluetooth: hci0: HCI Read Default Erroneous Data Reporting
> command is advertised, but not supported.
> [   79.190131] Bluetooth: hci0: HCI Set Event Filter command not supported.
> [   79.231713] Bluetooth: hci0: unexpected cc 0x0c25 length: 2 < 3
> [   79.231781] Bluetooth: hci0: Opcode 0x c25 failed: -38


This only happens if I connect it quickly after disconnecting, it I take a few more seconds, btmon still gives it an empty Index.

Either way, the dongle doesn't work at all and doesn't even show up in Plasma, even with a non-zero Index.

I hope this can be useful.
Comment 266 jhonatan 2023-02-08 15:30:55 UTC
Having precisely the same issue as mentioned in previous commment by guimarcalsilva@gmail.com

logs:

> Feb 08 12:25:27 jho kernel: Bluetooth: hci0: CSR: Couldn't suspend the device
> for our Barrot 8041a02 receive-issue workaround
> Feb 08 12:25:27 jho kernel: Bluetooth: hci0: HCI Delete Stored Link Key
> command is advertised, but not supported.
> Feb 08 12:25:27 jho kernel: Bluetooth: hci0: HCI Read Default Erroneous Data
> Reporting command is advertised, but not supported.
> Feb 08 12:25:27 jho kernel: Bluetooth: hci0: HCI Set Event Filter command not
> supported.
> Feb 08 12:25:29 jho kernel: Bluetooth: hci0: Opcode 0x c03 failed: -110
Comment 267 olevenets2 2023-02-24 22:05:36 UTC
(In reply to Swyter from comment #263)
> For those using Arch Linux, the patches arrived to the «core» repo yesterday
> with the linux 6.1.1.arch1-1 package. Your dongles should work out of the
> box again:
> 
> https://github.com/archlinux/linux/commit/
> 42d7731e3e7409f9444ff44e30c025958f1b14f0
> https://github.com/archlinux/linux/commit/
> 955aebd445e2b49622f2184b7abb82b05c060549
> 

Hello, I tried to build a kernel from the 6.1 branch that already has these patches for my Raspberry pi, but it still doesn't work with my Cambridge Silicon Radio

olevenets2@raspberrypi:~ $ dmesg | grep Bluetooth
[    8.232694] Bluetooth: Core ver 2.22
[    8.232849] Bluetooth: HCI device and connection manager initialized
[    8.232883] Bluetooth: HCI socket layer initialized
[    8.232906] Bluetooth: L2CAP socket layer initialized
[    8.232939] Bluetooth: SCO socket layer initialized
[    8.639913] Bluetooth: hci0: CSR: Setting up dongle with HCI ver=9 rev=3120; LMP ver=9 subver=22bb; manufacturer=10
[    8.639963] Bluetooth: hci0: CSR: Unbranded CSR clone detected; adding workarounds and force-suspending once...
[   13.791472] Bluetooth: hci0: CSR: Couldn't suspend the device for our Barrot 8041a02 receive-issue workaround
[   13.791497] Bluetooth: hci0: HCI Delete Stored Link Key command is advertised, but not supported.
[   13.791501] Bluetooth: hci0: HCI Read Default Erroneous Data Reporting command is advertised, but not supported.
[   13.791506] Bluetooth: hci0: HCI Set Event Filter command not supported.
[   15.810307] Bluetooth: hci0: Opcode 0x c03 failed: -110
[   15.816711] Bluetooth: hci0: CSR: Local version failed (-32)
[   15.816732] Bluetooth: hci0: HCI Delete Stored Link Key command is advertised, but not supported.
[   15.816737] Bluetooth: hci0: HCI Read Default Erroneous Data Reporting command is advertised, but not supported.
[   15.816742] Bluetooth: hci0: HCI Set Event Filter command not supported.
[   16.080095] Bluetooth: BNEP (Ethernet Emulation) ver 1.3
[   16.080119] Bluetooth: BNEP filters: protocol multicast
[   16.080140] Bluetooth: BNEP socket layer initialized
Comment 268 olevenets2 2023-02-26 00:15:08 UTC
This Chinese dongle worked well with the 4.4 kernel, after which it was broken in newer versions of the kernel

olevenets2@home:~/linux$ lsusb -vv -d 0a12:0001

Bus 007 Device 002: ID 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode)
Couldn't open device, some information will be missing
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass          224 Wireless
  bDeviceSubClass         1 Radio Frequency
  bDeviceProtocol         1 Bluetooth
  bMaxPacketSize0        64
  idVendor           0x0a12 Cambridge Silicon Radio, Ltd
  idProduct          0x0001 Bluetooth Dongle (HCI mode)
  bcdDevice           25.20
  iManufacturer           0 
  iProduct                2 CSR8510 A10
  iSerial                 0 
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength       0x00b1
    bNumInterfaces          2
    bConfigurationValue     1
    iConfiguration          0 
    bmAttributes         0xa0
      (Bus 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     0x83  EP 3 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     0x01  EP 1 OUT
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               1
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               1
    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     0x02  EP 2 OUT
        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     0x82  EP 2 IN
        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     0x02  EP 2 OUT
        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     0x82  EP 2 IN
        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     0x02  EP 2 OUT
        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     0x82  EP 2 IN
        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     0x02  EP 2 OUT
        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     0x82  EP 2 IN
        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     0x02  EP 2 OUT
        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     0x82  EP 2 IN
        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     0x02  EP 2 OUT
        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     0x82  EP 2 IN
        bmAttributes            1
          Transfer Type            Isochronous
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0031  1x 49 bytes
        bInterval               1
Comment 269 olevenets2 2023-03-08 20:43:40 UTC
I was able to fix my dongle on the 5.15 branch by removing the barrot reset code from the btusb driver in the kernel. I have tried this on other kernel versions 5.19-6.2 but it doesn't work there. I also tried compiling different versions of the kernel with different patches from this topic, I could not get any result
Comment 270 Vitaliy Ognev 2023-04-20 17:35:43 UTC
Got mine somehow working (scanning, pairing) by applying following patch:

diff --git a/net/bluetooth/hci_sync.c b/net/bluetooth/hci_sync.c
index 5a6aa1627791..b27fe44ec41e 100644
--- a/net/bluetooth/hci_sync.c
+++ b/net/bluetooth/hci_sync.c
@@ -3605,7 +3605,7 @@ static const struct hci_init_stage hci_init2[] = {
        /* HCI_OP_READ_INQ_RSP_TX_POWER */
        HCI_INIT(hci_read_inq_rsp_tx_power_sync),
        /* HCI_OP_READ_LOCAL_EXT_FEATURES */
-       HCI_INIT(hci_read_local_ext_features_1_sync),
+       // HCI_INIT(hci_read_local_ext_features_1_sync),
        /* HCI_OP_WRITE_AUTH_ENABLE */
        HCI_INIT(hci_write_auth_enable_sync),
        {}


still with lot of errors in dmesg. My dongle having "Hoco." label on it and looks like following in lsusb:

Bus 001 Device 005: ID 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode)
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               1.10
  bDeviceClass          224 Wireless
  bDeviceSubClass         1 Radio Frequency
  bDeviceProtocol         1 Bluetooth
  bMaxPacketSize0        64
  idVendor           0x0a12 Cambridge Silicon Radio, Ltd
  idProduct          0x0001 Bluetooth Dongle (HCI mode)
  bcdDevice           88.91
  iManufacturer           0 
  iProduct                2 USB2.0-BT
  iSerial                 0 
  bNumConfigurations      1
Comment 271 Marcos Ferreira 2023-06-25 15:31:07 UTC
The device support will be dropped down?
There is a possibility to keep this device working since the changes above can make to the device work, even with some logs in dmesg...
Comment 272 MarTCM 2023-07-14 14:58:11 UTC
(In reply to Marcos Ferreira from comment #271)
> The device support will be dropped down?
> There is a possibility to keep this device working since the changes above
> can make to the device work, even with some logs in dmesg...

That patch doesn't seem to work anymore *sigh*
Comment 273 MarTCM 2023-07-14 15:07:35 UTC
(In reply to MarTCM from comment #272)
> (In reply to Marcos Ferreira from comment #271)
> > The device support will be dropped down?
> > There is a possibility to keep this device working since the changes above
> > can make to the device work, even with some logs in dmesg...
> 
> That patch doesn't seem to work anymore *sigh*

nvm the file was changed and so did the number of the line that needed changing I ended up doing it manually and I'm now waiting for the kernel to compile.
Comment 274 egor 2023-07-27 19:23:41 UTC
Hello! I am experienceing this bug with kernel version 5.15.0-78-generic
Comment 275 demiancarvalho 2023-10-17 12:18:01 UTC
Hello! I am experiencing this bug with kernel version 6.5.7-xanmod1
Comment 276 mallo 2023-12-27 14:54:36 UTC
Hello! I am experiencing this bug with kernel version 6.6.8-x64v1-xanmod1
Comment 277 Henrique Lechner 2024-02-11 13:59:02 UTC
My bluetooth USB device: Baseus BA04

lsusb:
Bus 003 Device 012: ID 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode)

Kernel with the problem: 6.7.4
Kernel without the problem: 6.1.77 (installed via AUR: linux-lts61)


When I tried with kernel 6.1 to connect to my PS5 controller already paired with the kernel 6.7 it do not work, once I removed it and re-paired it did work.

Once the pair was done on kernel 6.1 I could go back to 6.7 and it connected without issue.
Comment 278 5vr 2024-02-22 19:59:29 UTC
(In reply to Henrique Lechner from comment #277)
> My bluetooth USB device: Baseus BA04
> 
> lsusb:
> Bus 003 Device 012: ID 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth
> Dongle (HCI mode)
> 
> Kernel with the problem: 6.7.4
> Kernel without the problem: 6.1.77 (installed via AUR: linux-lts61)
> 
> 
> When I tried with kernel 6.1 to connect to my PS5 controller already paired
> with the kernel 6.7 it do not work, once I removed it and re-paired it did
> work.
> 
> Once the pair was done on kernel 6.1 I could go back to 6.7 and it connected
> without issue.

Could you see Bluetooth devices pop up already before doing that?
Comment 279 Henrique Lechner 2024-02-23 16:45:45 UTC
(In reply to 5vr from comment #278)
> (In reply to Henrique Lechner from comment #277)
> > My bluetooth USB device: Baseus BA04
> > 
> > lsusb:
> > Bus 003 Device 012: ID 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth
> > Dongle (HCI mode)
> > 
> > Kernel with the problem: 6.7.4
> > Kernel without the problem: 6.1.77 (installed via AUR: linux-lts61)
> > 
> > 
> > When I tried with kernel 6.1 to connect to my PS5 controller already paired
> > with the kernel 6.7 it do not work, once I removed it and re-paired it did
> > work.
> > 
> > Once the pair was done on kernel 6.1 I could go back to 6.7 and it
> connected
> > without issue.
> 
> Could you see Bluetooth devices pop up already before doing that?

Yes, I'm using GUI (gnome-bluetooth) when not paired it shows in the bluetooth device list to pair, but when I click to pair with kernel 6.7 it shows as paired but it do not connect.

However if I pair when using a kernel 6.1 it will connect even on kernel 6.7 later. If paired with kernel 6.7 it do not connect on 6.1

Note You need to log in before you can comment on or make changes to this bug.