Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

CSR8510 A10 - BLE dongle stability issues #304

Closed
habakuk1979 opened this issue Jul 18, 2021 · 5 comments
Closed

CSR8510 A10 - BLE dongle stability issues #304

habakuk1979 opened this issue Jul 18, 2021 · 5 comments
Labels
0 | type: question 1 | state: invalid This doesn't seem right or isn't an issue

Comments

@habakuk1979
Copy link

habakuk1979 commented Jul 18, 2021

hello, servus!

My name is peter and I am from Braunau /Austria. This is probably a bit off topic but:
Since about 2 years I am working ambitiously on connecting a GoPro to an Odroid via HTTP, UDP and BLE in order to get a powerful node-red controlled dashcam/balckbox for my cars (fleet control).
(please see: https://github.com/cepoon/GoProRemote, https://github.com/KonradIT/goprowifihack, https://github.com/sepp89117/GoPro-Multiple-Smart-Remote-ESP8266)

However I stumbled over your thread: #96

and figured that you are deep into debugging of BLE connections.

Our hardware configuration (unfortunately old):

  • Odroid C2 with BluetoothModule2 (CSR8510 A10)
  • Ubuntu 18.04 (Kernel 3.16.85+)
  • WifiModule 5A (concurrent mode (STA+Client) on hostapd 2.9)
  • Bluez 5.53
  • btusb 0.7
    (- GoPro Hero5 balck)

However, we do suffer from an comparable annoying problem since more than a year(!). We do have an unstable BLE Connection between Dongle and Gopro. When just paired, the first connection stays up for about 30mins, but the reconnect is a problem: gets connected but after 2 - 15 sec: disconnect. Mainly because of:

#Issue 1: (btmon) Why is it disconnecting after MTU request?

@ Discovering: 0x00 (6)

HCI Event: Command Status (0x0f) plen 4 #111 [hci0] 55.051270
LE Create Connection (0x08|0x000d) ncmd 1
Status: Success (0x00)
HCI Event: LE Meta Event (0x3e) plen 19 #112 [hci0] 55.626431
LE Connection Complete (0x01)
Status: Success (0x00)
Handle: 71
Role: Master (0x00)
Peer address type: Random (0x01)
Peer address: C9:0F:D9:47:48:B4 (Static)
Connection interval: 70.00 msec (0x0038)
Connection latency: 0 (0x0000)
Supervision timeout: 420 msec (0x002a)
Master clock accuracy: 0x00
@ Device Connected: C9:0F:D9:47:48:B4 (2) flags 0x0000
<< ACL Data TX: Handle 71 flags 0x00 dlen 7 #113 [hci0] 55.627789
ATT: Exchange MTU Request (0x02) len 2
Client RX MTU: 517
HCI Event: Disconnect Complete (0x05) plen 4 #114 [hci0] 56.035562
Status: Success (0x00)
Handle: 71
Reason: Connection Failed to be Established (0x3e)
@ Device Disconnected: C9:0F:D9:47:48:B4 (2) reason 0

#issue 2: btmon: Error: Timeout/ Disconnect after attribute not found!? (main issue obviously)

@ Discovering: 0x00 (6)
<< HCI Command: LE Create Connect.. (0x08|0x000d) plen 25 #102 [hci0] 21.277573
Scan interval: 60.000 msec (0x0060)
Scan window: 30.000 msec (0x0030)
Filter policy: White list is not used (0x00)
Peer address type: Random (0x01)
Peer address: C9:0F:D9:47:48:B4 (Static)
Own address type: Public (0x00)
Min connection interval: 50.00 msec (0x0028)
Max connection interval: 70.00 msec (0x0038)
Connection latency: 0 (0x0000)
Supervision timeout: 420 msec (0x002a)
Min connection length: 0.000 msec (0x0000)
Max connection length: 0.000 msec (0x0000)

HCI Event: Command Status (0x0f) plen 4 #103 [hci0] 21.281234
LE Create Connection (0x08|0x000d) ncmd 1
Status: Success (0x00)
HCI Event: LE Meta Event (0x3e) plen 19 #104 [hci0] 21.474300
LE Connection Complete (0x01)
Status: Success (0x00)
Handle: 71
Role: Master (0x00)
Peer address type: Random (0x01)
Peer address: C9:0F:D9:47:48:B4 (Static)
Connection interval: 70.00 msec (0x0038)
Connection latency: 0 (0x0000)
Supervision timeout: 420 msec (0x002a)
Master clock accuracy: 0x00
@ Device Connected: C9:0F:D9:47:48:B4 (2) flags 0x0000
<< ACL Data TX: Handle 71 flags 0x00 dlen 7 #105 [hci0] 21.475604
ATT: Exchange MTU Request (0x02) len 2
Client RX MTU: 517
HCI Event: Number of Completed Packets (0x13) plen 5 #106 [hci0] 21.786387
Num handles: 1
Handle: 71
Count: 1
ACL Data RX: Handle 71 flags 0x02 dlen 7 #107 [hci0] 21.849441
ATT: Exchange MTU Response (0x03) len 2
Server RX MTU: 517
<< ACL Data TX: Handle 71 flags 0x00 dlen 7 #108 [hci0] 21.849849
ATT: Read Request (0x0a) len 2
Handle: 0x0004
HCI Event: Number of Completed Packets (0x13) plen 5 #109 [hci0] 21.919448
Num handles: 1
Handle: 71
Count: 1
ACL Data RX: Handle 71 flags 0x02 dlen 15 #110 [hci0] 21.989485
ATT: Read Response (0x0b) len 10
Value: 476f50726f2038353339
<< ACL Data TX: Handle 71 flags 0x00 dlen 7 #111 [hci0] 21.989865
ATT: Read Request (0x0a) len 2
Handle: 0x0006
HCI Event: Number of Completed Packets (0x13) plen 5 #112 [hci0] 22.059476
Num handles: 1
Handle: 71
Count: 1
ACL Data RX: Handle 71 flags 0x02 dlen 7 #113 [hci0] 22.135894
ATT: Read Response (0x0b) len 2
Value: 8000
<< ACL Data TX: Handle 71 flags 0x00 dlen 7 #114 [hci0] 22.136253
ATT: Read Request (0x0a) len 2
Handle: 0x000e
HCI Event: Number of Completed Packets (0x13) plen 5 #115 [hci0] 22.199508
Num handles: 1
Handle: 71
Count: 1
ACL Data RX: Handle 71 flags 0x02 dlen 6 #116 [hci0] 22.269695
ATT: Read Response (0x0b) len 1
Value: 05
<< ACL Data TX: Handle 71 flags 0x00 dlen 7 #117 [hci0] 22.270106
ATT: Read Request (0x0a) len 2
Handle: 0x0020
HCI Event: Number of Completed Packets (0x13) plen 5 #118 [hci0] 22.339554
Num handles: 1
Handle: 71
Count: 1
ACL Data RX: Handle 71 flags 0x02 dlen 12 #119 [hci0] 22.409721
ATT: Read Response (0x0b) len 7
Value: 00000000000000
<< ACL Data TX: Handle 71 flags 0x00 dlen 11 #120 [hci0] 22.410113
ATT: Read By Group Type Request (0x10) len 6
Handle range: 0x0001-0xffff
Attribute group type: Primary Service (0x2800)
HCI Event: Number of Completed Packets (0x13) plen 5 #121 [hci0] 22.479592
Num handles: 1
Handle: 71
Count: 1
ACL Data RX: Handle 71 flags 0x02 dlen 27 #122 [hci0] 22.549760
ACL Data RX: Handle 71 flags 0x01 dlen 9 #123 [hci0] 22.551041
ATT: Read By Group Type Response (0x11) len 31
Attribute data length: 6
Attribute group list: 5 entries
Handle range: 0x0001-0x0001
UUID: Generic Attribute Profile (0x1801)
Handle range: 0x0002-0x0008
UUID: Generic Access Profile (0x1800)
Handle range: 0x0009-0x000b
UUID: Tx Power (0x1804)
Handle range: 0x000c-0x000f
UUID: Battery Service (0x180f)
Handle range: 0x0010-0x0020
UUID: Device Information (0x180a)
<< ACL Data TX: Handle 71 flags 0x00 dlen 9 #124 [hci0] 22.551281
ATT: Write Request (0x12) len 4
Handle: 0x000f
Data: 0100
HCI Event: Number of Completed Packets (0x13) plen 5 #125 [hci0] 22.695655
Num handles: 1
Handle: 71
Count: 1
ACL Data RX: Handle 71 flags 0x02 dlen 5 #126 [hci0] 22.759830
ATT: Write Response (0x13) len 0
<< ACL Data TX: Handle 71 flags 0x00 dlen 11 #127 [hci0] 22.760241
ATT: Read By Group Type Request (0x10) len 6
Handle range: 0x0021-0xffff
Attribute group type: Primary Service (0x2800)
HCI Event: Number of Completed Packets (0x13) plen 5 #128 [hci0] 22.829698
Num handles: 1
Handle: 71
Count: 1
ACL Data RX: Handle 71 flags 0x02 dlen 26 #129 [hci0] 22.899859
ATT: Read By Group Type Response (0x11) len 21
Attribute data length: 20
Attribute group list: 1 entry
Handle range: 0x0021-0x002c
UUID: Vendor specific (b5f90001-aa8d-11e3-9046-0002a5d5c51b)
<< ACL Data TX: Handle 71 flags 0x00 dlen 11 #130 [hci0] 22.900311
ATT: Read By Group Type Request (0x10) len 6
Handle range: 0x002d-0xffff
Attribute group type: Primary Service (0x2800)
HCI Event: Number of Completed Packets (0x13) plen 5 #131 [hci0] 23.039754
Num handles: 1
Handle: 71
Count: 1
ACL Data RX: Handle 71 flags 0x02 dlen 12 #132 [hci0] 23.109915
ATT: Read By Group Type Response (0x11) len 7
Attribute data length: 6
Attribute group list: 1 entry
Handle range: 0x002d-0x0041
UUID: GoPro, Inc. (0xfea6)
<< ACL Data TX: Handle 71 flags 0x00 dlen 11 #133 [hci0] 23.110286
ATT: Read By Group Type Request (0x10) len 6
Handle range: 0x0042-0xffff
Attribute group type: Primary Service (0x2800)
HCI Event: Number of Completed Packets (0x13) plen 5 #134 [hci0] 23.185785
Num handles: 1
Handle: 71
Count: 1
ACL Data RX: Handle 71 flags 0x02 dlen 26 #135 [hci0] 23.319981
ATT: Read By Group Type Response (0x11) len 21
Attribute data length: 20
Attribute group list: 1 entry
Handle range: 0x0042-0x0047
UUID: Vendor specific (b5f90090-aa8d-11e3-9046-0002a5d5c51b)
<< ACL Data TX: Handle 71 flags 0x00 dlen 11 #136 [hci0] 23.320349
ATT: Read By Group Type Request (0x10) len 6
Handle range: 0x0048-0xffff
Attribute group type: Primary Service (0x2800)
HCI Event: Number of Completed Packets (0x13) plen 5 #137 [hci0] 23.389838
Num handles: 1
Handle: 71
Count: 1
ACL Data RX: Handle 71 flags 0x02 dlen 9 #138 [hci0] 23.458793
ATT: Error Response (0x01) len 4
Read By Group Type Request (0x10)
Handle: 0x0048
Error: Attribute Not Found (0x0a)
HCI Event: Disconnect Complete (0x05) plen 4 #139 [hci0] 24.160066
Status: Success (0x00)
Handle: 71
Reason: Connection Timeout (0x08)
@ Device Disconnected: C9:0F:D9:47:48:B4 (2) reason 1


for sure there are Authentification failures too, but I cannot btmon-capture 'em right now.

However, it is really hard to find somebody who has a glue what is going on here, and where the best, we should start to debug.

So please can you help us any further.

We are struggeling for a solution on this for years.

greets

peter

@kakra
Copy link
Collaborator

kakra commented Jul 19, 2021

Servus!

This is probably addressed to @atar-axis - I'm not sure if he can still give some insight here. He's the original author of the driver and worked through the early stages of getting the controller work. But maintainership has been transferred to me since, and I didn't really dug deep into Bluetooth, or BLE for that matter.

But I collected a bunch of known problems with work-arounds or fixes here:

You may want to take a look there as a starting point.

Also, there are a few reports at https://github.com/bluez/bluez/issues?q=is%3Aissue+is%3Aopen+ble about BLE, maybe even look through the complete set of issues there. There have been a lot of fixes lately to bluez, I don't think your problem is really related to the CSR A10 dongle, or its kernel driver, at least not if you're using the latest kernels (mainline or LTS 5.10). Also, I'd be guessing that you tried different dongles if you struggled for years - so that probably rules out kernel or driver issues. Thus, the people from the bluez project may most likely help you best - although it seems they are lacking some man power.

My latest experience for connection problems is instability of previous working connections, even unable to connect again when paired successfully previously. What worked for me was stopping the Bluetooth services, then purging /var/lib/bluetooth/$DONGLE_MAC/cache clean, rebooting, then removing the affected device and pairing it again. There may be some artifacts left in the attribute caches due to previous bugs in bluez. I think bluez has an option to disable attribute caching, maybe that helps.

All I can say is that currently, all my controllers work fine (after doing the above cleanup, with kernel 5.10.50 with L2CAP patch and bluez 5.60 on Gentoo): Xbox Series One S, Xbox Elite 2 (both classic Bluetooth), and Xbox Series X|S (BLE).

There's one issue, tho: The XB1S controller feels a bit laggy, the XBE2 controller loses connection sometimes (which may be related to intermediate scanning activity of the bluetooth service, and games do not detect that, the controller eventually times out after 30-60s), and the XBXS controller sometimes drops the connection then reconnects a few seconds later (and games immediately detect the connection loss, which may partly be due to my BLE latency settings I've put into the bluez config).

Possibly related:

@kakra kakra added this to Known in Bluetooth issues via automation Jul 21, 2021
@habakuk1979
Copy link
Author

@kakra

thanks for your input - unfortunately nothing new on that side - I hope I can get in touch with atar-axis.

@habakuk1979
Copy link
Author

habakuk1979 commented Jul 21, 2021

@atar-axis

Servus and hello!

I would really appreciate your input on my issue here (see above!)

Please help.

kakar said, you were possibly the right guy to help me out on this.

@atar-axis
Copy link
Owner

Hey there,
It took me a while to find the pairing issue/bug back when xpadneo started because I only know a little about the Bluetooth Specifications.

What I did back then was compiling the Bluetooth stack by myself and replacing the original module. This helped me especially to find where the problem is (I added some printk(...) commands). I then found out that the original module was not fully implementing a special but optional feature.

Anyway, I would suggest to talk to the Bluetooth guys at the kernel mailing list.

@kakra
Copy link
Collaborator

kakra commented Sep 17, 2022

Closing old Bluetooth issues, please report to the bluez project if the problem persists.

@kakra kakra closed this as not planned Won't fix, can't repro, duplicate, stale Sep 17, 2022
@kakra kakra moved this from Known to Desktop agents in Bluetooth issues Sep 17, 2022
@kakra kakra moved this from Desktop agents to Inactive/outdated in Bluetooth issues Sep 17, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
0 | type: question 1 | state: invalid This doesn't seem right or isn't an issue
Projects
Bluetooth issues
  
Inactive/outdated
Development

No branches or pull requests

3 participants