-
Notifications
You must be signed in to change notification settings - Fork 64
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
Unexpected response. Expected Read By Group Response got Read By Type Request #34
Comments
While the libblepp bug on Linux is not fixed we will fallback to bluepy (See libblepp issue here edrosten/libblepp#34)
Hi, sorry for the slow response. Is this still causing a problem? If so, would you be able to run the library in super verbose mode and paste the log? |
Yes, certainly. How can I enable this mode? Side note: I am now sporadically having the same problem with bluepy (unexpected response), also with the Bluez v5.50 but on Ubuntu 16.04. On Ubuntu 18.04 it still seams to run without problems. This mainly happens when I initiate connections simultaneously to multiple devices, so I had to add little random delay on startup for each peripheral. |
If you #include <blepp/logging.h>
Then do
BLEPP::log_level = BLEPP::Debug
You'll get a lot of info, and it should contain a dump of every packet. We
will hopefully be able to see what the offending packet is.
Given that it's apparently happening elsewhere my guess isthat you might
have a buggy device or its using an obscure clause in the standard that
none of us BLE state machine writers have noticed.
…-Ed
On Wed, 5 Sep 2018, 11:26 Boris Gromov, ***@***.***> wrote:
Yes, certainly. How can I enable this mode?
Side note: I am now sporadically having the same problem with bluepy
(unexpected response), also with the Bluez v5.50 but on Ubuntu 16.04. On
Ubuntu 18.04 it still seams to run without problems. This mainly happens
when I initiate connections simultaneously to multiple devices, so I had to
add little random delay on startup for each peripheral.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
<#34 (comment)>,
or mute the thread
<https://github.com/notifications/unsubscribe-auth/ABGW61BMn_3IupcJduj6TrxE-2FS4tIFks5uX6bbgaJpZM4WIVBo>
.
|
It didn't produce that much output, basically it fails on connect:
Hope it helps. Thanks |
Here is a slightly longer log for a virtual device on iPhone made with LightBlue app:
|
Sorry for the rather slow response, things have been a bit busy recently. This is very odd, and I don't really understand what's going on. It looks like the ble device is replying to your laptop with a request to read data which shouldn't happen. As best I can see no only should that device never send one of those packets, it's not even a well formed packet (maybe). It appears to be trying to read a 32 bit UUID. My version of the standard (admittedly old) allows or only 16 and 128 bit UUIDs for those packets. I don't think my tool has quite enough logging to debug this problem. Would you be able to run an HCI sniffer? The options are hcidump or btmon. I weakly prefer the latter since it has nice syntax highlighting. If you could capture highlighted packet dumps that would be really great, but anything would help at this point. |
Additional: It's trying to read a 32 bit UUID with the ID ffff0028. Or more likely 2800ffff. Does that have any significance to you? |
Sorry, took me a while to get back to this problem.
I don't do anything like this explicitly, though I am not sure how it is implemented in the underlying Warble library. The custom characteristics I am trying to access are all 128-bit, plus a standard Battery characteristic that is 16-bit. Below is the dump from
|
Thanks, I'll take a look and see what's going on.
…On Sat, 23 Feb 2019, 16:56 Boris Gromov, ***@***.***> wrote:
Sorry, took me a while to get back to this problem.
Additional:
It's trying to read a 32 bit UUID with the ID ffff0028. Or more likely
2800ffff. Does that have any significance to you?
I don't do anything like this explicitly, though I am not sure how it is
implemented in the underlying Warble library. The custom characteristics I
am trying to access are all 128-bit, plus a standard Battery characteristic
that is 16-bit.
Below is the dump from btmon (here is pastebin
<https://pastebin.com/eLamp65p> as well) while I was attempting to
connect to a real device:
***@***.***:~$ sudo btmon
Bluetooth monitor ver 5.50
= New Index: 00:15:83:EC:7F:7C (Primary,USB,hci0) [hci0] 0.735072
= Open Index: 00:15:83:EC:7F:7C [hci0] 0.735072
= Index Info: 00:15:83:EC:7F:7C (Cambridge Silicon Radio) [hci0] 0.735073
< HCI Command: LE Add Device To White List (0x08|0x0011) plen 7 #1 [hci0] 6.488065
Address type: Random (0x01)
Address: ED:AE:B7:BB:59:C2 (Static)
> HCI Event: Command Complete (0x0e) plen 4 #2 [hci0] 6.489001
LE Add Device To White List (0x08|0x0011) ncmd 1
Status: Success (0x00)
< HCI Command: LE Set Scan Parameters (0x08|0x000b) plen 7 #3 [hci0] 6.489044
Type: Passive (0x00)
Interval: 60.000 msec (0x0060)
Window: 30.000 msec (0x0030)
Own address type: Public (0x00)
Filter policy: Ignore not in white list (0x01)
> HCI Event: Command Complete (0x0e) plen 4 #4 [hci0] 6.490020
LE Set Scan Parameters (0x08|0x000b) ncmd 1
Status: Success (0x00)
< HCI Command: LE Set Scan Enable (0x08|0x000c) plen 2 #5 [hci0] 6.490090
Scanning: Enabled (0x01)
Filter duplicates: Enabled (0x01)
> HCI Event: Command Complete (0x0e) plen 4 #6 [hci0] 6.492002
LE Set Scan Enable (0x08|0x000c) ncmd 1
Status: Success (0x00)
> HCI Event: LE Meta Event (0x3e) plen 43 #7 [hci0] 6.575130
LE Advertising Report (0x02)
Num reports: 1
Event type: Connectable undirected - ADV_IND (0x00)
Address type: Random (0x01)
Address: ED:AE:B7:BB:59:C2 (Static)
Data length: 31
Flags: 0x06
LE General Discoverable Mode
BR/EDR Not Supported
TX power: 0 dBm
128-bit Service UUIDs (complete): 1 entry
Vendor specific (427c0000-97c7-413b-8de7-490917d220aa)
Name (short): NeoPi
RSSI: -85 dBm (0xab)
< HCI Command: LE Set Scan Enable (0x08|0x000c) plen 2 #8 [hci0] 6.575198
Scanning: Disabled (0x00)
Filter duplicates: Disabled (0x00)
> HCI Event: Command Complete (0x0e) plen 4 #9 [hci0] 6.581184
LE Set Scan Enable (0x08|0x000c) ncmd 1
Status: Success (0x00)
< HCI Command: LE Create Connection (0x08|0x000d) plen 25 #10 [hci0] 6.581266
Scan interval: 60.000 msec (0x0060)
Scan window: 60.000 msec (0x0060)
Filter policy: White list is not used (0x00)
Peer address type: Random (0x01)
Peer address: ED:AE:B7:BB:59:C2 (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 #11 [hci0] 6.588942
LE Create Connection (0x08|0x000d) ncmd 1
Status: Success (0x00)
> HCI Event: LE Meta Event (0x3e) plen 19 #12 [hci0] 6.741112
LE Connection Complete (0x01)
Status: Success (0x00)
Handle: 70
Role: Master (0x00)
Peer address type: Random (0x01)
Peer address: ED:AE:B7:BB:59:C2 (Static)
Connection interval: 70.00 msec (0x0038)
Connection latency: 0 (0x0000)
Supervision timeout: 420 msec (0x002a)
Master clock accuracy: 0x00
< HCI Command: LE Read Remote Used Features (0x08|0x0016) plen 2 #13 [hci0] 6.741331
Handle: 70
@ Device Connected: ED:AE:B7:BB:59:C2 (2) flags 0x0000
02 01 06 02 0a 00 11 07 aa 20 d2 17 09 49 e7 8d ......... ...I..
3b 41 c7 97 00 00 7c 42 06 08 4e 65 6f 50 69 ;A....|B..NeoPi
> HCI Event: Command Status (0x0f) plen 4 #14 [hci0] 6.746930
LE Read Remote Used Features (0x08|0x0016) ncmd 1
Status: Success (0x00)
> ACL Data RX: Handle 70 flags 0x02 dlen 16 #15 [hci0] 6.795015
LE L2CAP: Connection Parameter Update Request (0x12) ident 3 len 8
Min interval: 12
Max interval: 16
Slave latency: 0
Timeout multiplier: 200
> HCI Event: LE Meta Event (0x3e) plen 12 #16 [hci0] 6.866163
LE Read Remote Used Features (0x04)
Status: Success (0x00)
Handle: 70
Features: 0x01 0x41 0x00 0x00 0x00 0x00 0x00 0x00
LE Encryption
LE 2M PHY
Channel Selection Algorithm #2
< ACL Data TX: Handle 70 flags 0x00 dlen 10 #17 [hci0] 6.866249
LE L2CAP: Connection Parameter Update Response (0x13) ident 3 len 2
Result: Connection Parameters accepted (0x0000)
< HCI Command: LE Connection Update (0x08|0x0013) plen 14 #18 [hci0] 6.866258
Handle: 70
Min connection interval: 15.00 msec (0x000c)
Max connection interval: 20.00 msec (0x0010)
Connection latency: 0 (0x0000)
Supervision timeout: 2000 msec (0x00c8)
Min connection length: 0.000 msec (0x0000)
Max connection length: 0.000 msec (0x0000)
< ACL Data TX: Handle 70 flags 0x00 dlen 11 #19 [hci0] 6.866332
ATT: Read By Group Type Request (0x10) len 6
Handle range: 0x0001-0xffff
Attribute group type: Primary Service (0x2800)
@ New Conn Param: ED:AE:B7:BB:59:C2 (2) hint 0 min 0x000c max 0x0010 latency 0x0000 timeout 0x00c8
> HCI Event: Command Status (0x0f) plen 4 #20 [hci0] 6.867976
LE Connection Update (0x08|0x0013) ncmd 1
Status: Success (0x00)
> ACL Data RX: Handle 70 flags 0x02 dlen 11 #21 [hci0] 6.934889
ATT: Read By Type Request (0x08) len 6
Handle range: 0x0001-0xffff
Attribute type: Device Name (0x2a00)
> HCI Event: Number of Completed Packets (0x13) plen 5 #22 [hci0] 7.075167
Num handles: 1
Handle: 70
Count: 1
> HCI Event: Number of Completed Packets (0x13) plen 5 #23 [hci0] 7.152191
Num handles: 1
Handle: 70
Count: 1
> ACL Data RX: Handle 70 flags 0x02 dlen 18 #24 [hci0] 7.214947
ATT: Read By Group Type Response (0x11) len 13
Attribute data length: 6
Attribute group list: 2 entries
Handle range: 0x0001-0x0009
UUID: Generic Access Profile (0x1800)
Handle range: 0x000a-0x000d
UUID: Generic Attribute Profile (0x1801)
> HCI Event: LE Meta Event (0x3e) plen 10 #25 [hci0] 7.424003
LE Connection Update Complete (0x03)
Status: Success (0x00)
Handle: 70
Connection interval: 20.00 msec (0x0010)
Connection latency: 0 (0x0000)
Supervision timeout: 2000 msec (0x00c8)
< ACL Data TX: Handle 70 flags 0x00 dlen 11 #26 [hci0] 7.939550
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 #27 [hci0] 7.945107
Num handles: 1
Handle: 70
Count: 1
> ACL Data RX: Handle 70 flags 0x02 dlen 18 #28 [hci0] 7.964922
ATT: Read By Group Type Response (0x11) len 13
Attribute data length: 6
Attribute group list: 2 entries
Handle range: 0x0001-0x0009
UUID: Generic Access Profile (0x1800)
Handle range: 0x000a-0x000d
UUID: Generic Attribute Profile (0x1801)
< ACL Data TX: Handle 70 flags 0x00 dlen 11 #29 [hci0] 7.965115
ATT: Read By Group Type Request (0x10) len 6
Handle range: 0x000e-0xffff
Attribute group type: Primary Service (0x2800)
> HCI Event: Number of Completed Packets (0x13) plen 5 #30 [hci0] 7.985106
Num handles: 1
Handle: 70
Count: 1
> ACL Data RX: Handle 70 flags 0x02 dlen 26 #31 [hci0] 8.004964
ATT: Read By Group Type Response (0x11) len 21
Attribute data length: 20
Attribute group list: 1 entry
Handle range: 0x000e-0x0015
UUID: Vendor specific (00001530-1212-efde-1523-785feabcd123)
< ACL Data TX: Handle 70 flags 0x00 dlen 11 #32 [hci0] 8.005128
ATT: Read By Group Type Request (0x10) len 6
Handle range: 0x0016-0xffff
Attribute group type: Primary Service (0x2800)
> HCI Event: Number of Completed Packets (0x13) plen 5 #33 [hci0] 8.025159
Num handles: 1
Handle: 70
Count: 1
> ACL Data RX: Handle 70 flags 0x02 dlen 18 #34 [hci0] 8.044984
ATT: Read By Group Type Response (0x11) len 13
Attribute data length: 6
Attribute group list: 2 entries
Handle range: 0x0016-0x0020
UUID: Device Information (0x180a)
Handle range: 0x0021-0x0024
UUID: Battery Service (0x180f)
< ACL Data TX: Handle 70 flags 0x00 dlen 11 #35 [hci0] 8.045211
ATT: Read By Group Type Request (0x10) len 6
Handle range: 0x0025-0xffff
Attribute group type: Primary Service (0x2800)
> HCI Event: Number of Completed Packets (0x13) plen 5 #36 [hci0] 8.064996
Num handles: 1
Handle: 70
Count: 1
> ACL Data RX: Handle 70 flags 0x02 dlen 26 #37 [hci0] 8.085071
ATT: Read By Group Type Response (0x11) len 21
Attribute data length: 20
Attribute group list: 1 entry
Handle range: 0x0025-0x002c
UUID: Nordic UART Service (6e400001-b5a3-f393-e0a9-e50e24dcca9e)
< ACL Data TX: Handle 70 flags 0x00 dlen 11 #38 [hci0] 8.085309
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 #39 [hci0] 8.105144
Num handles: 1
Handle: 70
Count: 1
> ACL Data RX: Handle 70 flags 0x02 dlen 26 #40 [hci0] 8.125022
ATT: Read By Group Type Response (0x11) len 21
Attribute data length: 20
Attribute group list: 1 entry
Handle range: 0x002d-0xffff
UUID: Vendor specific (427c0000-97c7-413b-8de7-490917d220aa)
< ACL Data TX: Handle 70 flags 0x00 dlen 11 #41 [hci0] 8.125243
ATT: Read By Type Request (0x08) len 6
Handle range: 0x0001-0xffff
Attribute type: Characteristic (0x2803)
> HCI Event: Number of Completed Packets (0x13) plen 5 #42 [hci0] 8.145175
Num handles: 1
Handle: 70
Count: 1
> ACL Data RX: Handle 70 flags 0x02 dlen 27 #43 [hci0] 8.165096
ATT: Read By Type Response (0x09) len 22
Attribute data length: 7
Attribute data list: 3 entries
Handle: 0x0002
Value: 0a0300002a
Handle: 0x0004
Value: 020500012a
Handle: 0x0006
Value: 020700042a
< ACL Data TX: Handle 70 flags 0x00 dlen 11 #44 [hci0] 8.165345
ATT: Read By Type Request (0x08) len 6
Handle range: 0x0007-0xffff
Attribute type: Characteristic (0x2803)
> HCI Event: Number of Completed Packets (0x13) plen 5 #45 [hci0] 8.185176
Num handles: 1
Handle: 70
Count: 1
> ACL Data RX: Handle 70 flags 0x02 dlen 20 #46 [hci0] 8.204923
ATT: Read By Type Response (0x09) len 15
Attribute data length: 7
Attribute data list: 2 entries
Handle: 0x0008
Value: 020900a62a
Handle: 0x000b
Value: 200c00052a
< ACL Data TX: Handle 70 flags 0x00 dlen 11 #47 [hci0] 8.205150
ATT: Read By Type Request (0x08) len 6
Handle range: 0x000c-0xffff
Attribute type: Characteristic (0x2803)
> HCI Event: Number of Completed Packets (0x13) plen 5 #48 [hci0] 8.245175
Num handles: 1
Handle: 70
Count: 1
> ACL Data RX: Handle 70 flags 0x02 dlen 27 #49 [hci0] 8.245443
ATT: Read By Type Response (0x09) len 22
Attribute data length: 21
Attribute data list: 1 entry
Handle: 0x000f
Value: 04100023d1bcea5f782315deef121232150000
< ACL Data TX: Handle 70 flags 0x00 dlen 11 #50 [hci0] 8.245642
ATT: Read By Type Request (0x08) len 6
Handle range: 0x0010-0xffff
Attribute type: Characteristic (0x2803)
> HCI Event: Number of Completed Packets (0x13) plen 5 #51 [hci0] 8.265176
Num handles: 1
Handle: 70
Count: 1
> ACL Data RX: Handle 70 flags 0x02 dlen 27 #52 [hci0] 8.291649
ATT: Read By Type Response (0x09) len 22
Attribute data length: 21
Attribute data list: 1 entry
Handle: 0x0011
Value: 18120023d1bcea5f782315deef121231150000
< ACL Data TX: Handle 70 flags 0x00 dlen 11 #53 [hci0] 8.291877
ATT: Read By Type Request (0x08) len 6
Handle range: 0x0012-0xffff
Attribute type: Characteristic (0x2803)
> HCI Event: Number of Completed Packets (0x13) plen 5 #54 [hci0] 8.305175
Num handles: 1
Handle: 70
Count: 1
> ACL Data RX: Handle 70 flags 0x02 dlen 27 #55 [hci0] 8.345096
ATT: Read By Type Response (0x09) len 22
Attribute data length: 21
Attribute data list: 1 entry
Handle: 0x0014
Value: 02150023d1bcea5f782315deef121234150000
< ACL Data TX: Handle 70 flags 0x00 dlen 11 #56 [hci0] 8.345323
ATT: Read By Type Request (0x08) len 6
Handle range: 0x0015-0xffff
Attribute type: Characteristic (0x2803)
> HCI Event: Number of Completed Packets (0x13) plen 5 #57 [hci0] 8.365022
Num handles: 1
Handle: 70
Count: 1
> ACL Data RX: Handle 70 flags 0x02 dlen 27 #58 [hci0] 8.385003
ATT: Read By Type Response (0x09) len 22
Attribute data length: 7
Attribute data list: 3 entries
Handle: 0x0017
Value: 021800242a
Handle: 0x0019
Value: 021a00252a
Handle: 0x001b
Value: 021c00262a
< ACL Data TX: Handle 70 flags 0x00 dlen 11 #59 [hci0] 8.385233
ATT: Read By Type Request (0x08) len 6
Handle range: 0x001c-0xffff
Attribute type: Characteristic (0x2803)
> HCI Event: Number of Completed Packets (0x13) plen 5 #60 [hci0] 8.404983
Num handles: 1
Handle: 70
Count: 1
> ACL Data RX: Handle 70 flags 0x02 dlen 27 #61 [hci0] 8.425082
ATT: Read By Type Response (0x09) len 22
Attribute data length: 7
Attribute data list: 3 entries
Handle: 0x001d
Value: 021e00282a
Handle: 0x001f
Value: 022000292a
Handle: 0x0022
Value: 122300192a
< ACL Data TX: Handle 70 flags 0x00 dlen 11 #62 [hci0] 8.425309
ATT: Read By Type Request (0x08) len 6
Handle range: 0x0023-0xffff
Attribute type: Characteristic (0x2803)
> HCI Event: Number of Completed Packets (0x13) plen 5 #63 [hci0] 8.445178
Num handles: 1
Handle: 70
Count: 1
> ACL Data RX: Handle 70 flags 0x02 dlen 27 #64 [hci0] 8.465098
ATT: Read By Type Response (0x09) len 22
Attribute data length: 21
Attribute data list: 1 entry
Handle: 0x0026
Value: 1027009ecadc240ee5a9e093f3a3b50300406e
< ACL Data TX: Handle 70 flags 0x00 dlen 11 #65 [hci0] 8.465328
ATT: Read By Type Request (0x08) len 6
Handle range: 0x0027-0xffff
Attribute type: Characteristic (0x2803)
> HCI Event: Number of Completed Packets (0x13) plen 5 #66 [hci0] 8.485178
Num handles: 1
Handle: 70
Count: 1
> ACL Data RX: Handle 70 flags 0x02 dlen 27 #67 [hci0] 8.504898
ATT: Read By Type Response (0x09) len 22
Attribute data length: 21
Attribute data list: 1 entry
Handle: 0x002a
Value: 0c2b009ecadc240ee5a9e093f3a3b50200406e
< ACL Data TX: Handle 70 flags 0x00 dlen 11 #68 [hci0] 8.505032
ATT: Read By Type Request (0x08) len 6
Handle range: 0x002b-0xffff
Attribute type: Characteristic (0x2803)
> HCI Event: Number of Completed Packets (0x13) plen 5 #69 [hci0] 8.525153
Num handles: 1
Handle: 70
Count: 1
> ACL Data RX: Handle 70 flags 0x02 dlen 27 #70 [hci0] 8.545099
ATT: Read By Type Response (0x09) len 22
Attribute data length: 21
Attribute data list: 1 entry
Handle: 0x002e
Value: 0a2f00aa20d2170949e78d3b41c79701107c42
< ACL Data TX: Handle 70 flags 0x00 dlen 11 #71 [hci0] 8.545297
ATT: Read By Type Request (0x08) len 6
Handle range: 0x002f-0xffff
Attribute type: Characteristic (0x2803)
> HCI Event: Number of Completed Packets (0x13) plen 5 #72 [hci0] 8.565173
Num handles: 1
Handle: 70
Count: 1
> ACL Data RX: Handle 70 flags 0x02 dlen 27 #73 [hci0] 8.605096
ATT: Read By Type Response (0x09) len 22
Attribute data length: 21
Attribute data list: 1 entry
Handle: 0x0030
Value: 0a3100aa20d2170949e78d3b41c79702107c42
< ACL Data TX: Handle 70 flags 0x00 dlen 11 #74 [hci0] 8.605328
ATT: Read By Type Request (0x08) len 6
Handle range: 0x0031-0xffff
Attribute type: Characteristic (0x2803)
> HCI Event: Number of Completed Packets (0x13) plen 5 #75 [hci0] 8.625135
Num handles: 1
Handle: 70
Count: 1
> ACL Data RX: Handle 70 flags 0x02 dlen 27 #76 [hci0] 8.651679
ATT: Read By Type Response (0x09) len 22
Attribute data length: 21
Attribute data list: 1 entry
Handle: 0x0032
Value: 0a3300aa20d2170949e78d3b41c797ff107c42
< ACL Data TX: Handle 70 flags 0x00 dlen 11 #77 [hci0] 8.651906
ATT: Read By Type Request (0x08) len 6
Handle range: 0x0033-0xffff
Attribute type: Characteristic (0x2803)
> HCI Event: Number of Completed Packets (0x13) plen 5 #78 [hci0] 8.665185
Num handles: 1
Handle: 70
Count: 1
> ACL Data RX: Handle 70 flags 0x02 dlen 9 #79 [hci0] 8.684843
ATT: Error Response (0x01) len 4
Read By Type Request (0x08)
Handle: 0x0033
Error: Attribute Not Found (0x0a)
< ACL Data TX: Handle 70 flags 0x00 dlen 11 #80 [hci0] 8.685063
ATT: Read By Type Request (0x08) len 6
Handle range: 0x0001-0xffff
Attribute type: Client Characteristic Configuration (0x2902)
> HCI Event: Number of Completed Packets (0x13) plen 5 #81 [hci0] 8.705172
Num handles: 1
Handle: 70
Count: 1
> ACL Data RX: Handle 70 flags 0x02 dlen 22 #82 [hci0] 8.785040
ATT: Read By Type Response (0x09) len 17
Attribute data length: 4
Attribute data list: 4 entries
Handle: 0x000d
Value: 0000
Handle: 0x0013
Value: 0000
Handle: 0x0024
Value: 0000
Handle: 0x0028
Value: 0000
< ACL Data TX: Handle 70 flags 0x00 dlen 11 #83 [hci0] 8.785237
ATT: Read By Type Request (0x08) len 6
Handle range: 0x0029-0xffff
Attribute type: Client Characteristic Configuration (0x2902)
> HCI Event: Number of Completed Packets (0x13) plen 5 #84 [hci0] 8.805096
Num handles: 1
Handle: 70
Count: 1
> ACL Data RX: Handle 70 flags 0x02 dlen 9 #85 [hci0] 8.844826
ATT: Error Response (0x01) len 4
Read By Type Request (0x08)
Handle: 0x0029
Error: Attribute Not Found (0x0a)
< ACL Data TX: Handle 70 flags 0x00 dlen 7 #86 [hci0] 8.847891
ATT: Read Request (0x0a) len 2
Handle: 0x002f
> HCI Event: Number of Completed Packets (0x13) plen 5 #87 [hci0] 8.864973
Num handles: 1
Handle: 70
Count: 1
> ACL Data RX: Handle 70 flags 0x02 dlen 9 #88 [hci0] 8.884730
ATT: Read Response (0x0b) len 4
Value: 181e5200
< HCI Command: Disconnect (0x01|0x0006) plen 3 #89 [hci0] 10.996243
Handle: 70
Reason: Remote User Terminated Connection (0x13)
> HCI Event: Command Status (0x0f) plen 4 #90 [hci0] 10.998100
Disconnect (0x01|0x0006) ncmd 1
Status: Success (0x00)
> HCI Event: Disconnect Complete (0x05) plen 4 #91 [hci0] 11.006022
Status: Success (0x00)
Handle: 70
Reason: Connection Terminated By Local Host (0x16)
@ Device Disconnected: ED:AE:B7:BB:59:C2 (2) reason 2
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
<#34 (comment)>,
or mute the thread
<https://github.com/notifications/unsubscribe-auth/ABGW61C96U_EgzqUunikbUzjMsuFhOUBks5vQXKigaJpZM4WIVBo>
.
|
Having the same issue. My program is a variance of example:
The log is here (
Any help is appreciated! I am on Raspberry Pi, and i was able to read primary service by |
I'm having a lot of difficulty debugging this without a device to try. The
btmon trace doesn't seem to line u with what the program's doing. Xavier
could you also send a bluetooth log using btmon or eqivalent that
corresonds to the fault?
…On Sun, 17 Mar 2019 at 02:36, ***@***.*** ***@***.***> wrote:
Having the same issue. My program is a variance of example:
#include <iostream>
#include <iomanip>
#include <blepp/blestatemachine.h>
#include <blepp/float.h> //BLE uses the obscure IEEE11073 decimal exponent floating point values
#include <unistd.h>
#include <thread>
#include <chrono>
#include <mutex>
#include <blepp/logging.h>
using namespace std;
using namespace chrono;
using namespace BLEPP;
int main(int argc, char **argv)
{
log_level = Debug;
BLEGATTStateMachine gatt;
std::function<void()> connected_cb = [&gatt](){
cerr << "connected ";
gatt.read_primary_services();
cerr << "service discovery called. ";
};
std::function<void()> services_read_cb = [&gatt](){
cerr << "service discovered ";
gatt.find_all_characteristics();
};
std::function<void()> find_characteristics_cb = [&gatt](){
cerr << "char discovered ";
gatt.get_client_characteristic_configuration();
};
std::function<void()> cb_get_client_characteristic_configuration = [&gatt](){
cerr << "char discovered ";
for(auto& service: gatt.primary_services) {
cerr << "Found service, type: " << service.uuid.type;
for(auto& characteristic: service.characteristics) {
cerr << "Found characteristic, type: " << service.uuid.type;
}
}
};
gatt.cb_connected = connected_cb;
gatt.cb_services_read = services_read_cb;
gatt.cb_find_characteristics = find_characteristics_cb;
gatt.cb_get_client_characteristic_configuration = cb_get_client_characteristic_configuration;
//I think this one is reasonably clear?
gatt.cb_disconnected = [](BLEGATTStateMachine::Disconnect d) {
if(d.reason != BLEGATTStateMachine::Disconnect::ConnectionClosed)
{
cerr << "Disconnect for reason " << BLEGATTStateMachine::get_disconnect_string(d) << endl;
exit(1);
}
else
exit(0);
};
//This is how to use the blocking interface. It is very simple. You provide the main
//loop and just hammer on the state machine struct.
gatt.connect_blocking("00:25:DF:1B:43:23");
cerr << "connect blocking returned";
for(;;) gatt.read_and_process_next();
std::this_thread::sleep_for(seconds(20));
}
The log is here (services_read_cb never got called)
info 1552790053.042155 log_fd_: Socket success: 224 (/home/pi/libblepp/src/blestatemachine.cc)
info 1552790053.049141 log_fd_: Socket success: 269 (/home/pi/libblepp/src/blestatemachine.cc)
info 1552790053.050961 log_fd_: Socket success: 174 (/home/pi/libblepp/src/blestatemachine.cc)
info 1552790053.052082 log_l2cap_options: options.omtu = 672
info 1552790053.053819 log_l2cap_options: options.imtu = 672
info 1552790053.054291 log_l2cap_options: options.flush_to = 65535
info 1552790053.055387 log_l2cap_options: options.mode = 0
info 1552790053.056965 log_l2cap_options: options.fcs = 1
info 1552790053.057976 log_l2cap_options: options.max_tx = 3
info 1552790053.059030 log_l2cap_options: options.txwin_size = 63
debug 1552790053.060602 connect: address = 00:25:DF:1B:43:23
debug 1552790053.061066 connect: str2ba = 0
info 1552790053.308462 log_fd_: Socket success: 296 (/home/pi/libblepp/src/blestatemachine.cc)
info 1552790053.308662 log_fd_: Socket success: 174 (/home/pi/libblepp/src/blestatemachine.cc)
info 1552790053.308791 log_l2cap_options: options.omtu = 672
info 1552790053.308903 log_l2cap_options: options.imtu = 672
info 1552790053.309010 log_l2cap_options: options.flush_to = 65535
info 1552790053.309119 log_l2cap_options: options.mode = 0
info 1552790053.309226 log_l2cap_options: options.fcs = 1
info 1552790053.309330 log_l2cap_options: options.max_tx = 3
info 1552790053.309436 log_l2cap_options: options.txwin_size = 63
connected debug 1552790053.311499 test_fd_: System call on 112( /home/pi/libblepp/src/bledevice.cc): Success ret = 7
service discovery called. connect blocking returneddebug 1552790053.405805 test_fd_: System call on 220( /home/pi/libblepp/src/bledevice.cc): Success ret = 7
debug: ---PDU packet ---
debug: 10 01 00 ff ff 00 28
debug: \x10\x01\x00\xff\xff\x00(
debug: Packet type: 10 Read By Group Request
debug: --no pretty printer available--
debug:
error 1552790053.411804 read_and_process_next: Unexpected response. Expected Read By Group Response got Read By Group Request
info 1552790053.413380 log_fd_: Socket success: 151 (/home/pi/libblepp/src/blestatemachine.cc)
Disconnect for reason Unexpected Response.
Any help is appreciated!
I am on Raspberry Pi
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
<#34 (comment)>,
or mute the thread
<https://github.com/notifications/unsubscribe-auth/ABGW6xyy9YajJlsnyRZTon0GI3HwIqe9ks5vXaotgaJpZM4WIVBo>
.
|
@edrosten If you have access to an Apple iPhone/iPad, you could get the same error with a virtual peripheral (as I mentioned here). It happens even with a virtual Heart Rate sensor which has very few services. You can create one with the free LightBlue Explorer app. |
On Sun, 24 Mar 2019 at 14:31, Boris Gromov ***@***.***> wrote:
I'm having a lot of difficulty debugging this without a device to try.
@edrosten <https://github.com/edrosten> If you have access to an Apple
iPhone/iPad, you could get the same error with a virtual peripheral (as I
mentioned here
<#34 (comment)>).
It happens even with a virtual Heart Rate sensor which has very few
services. You can create one with the free LightBlue Explorer
<https://itunes.apple.com/us/app/lightblue-explorer/id557428110> app.
OK thanks! I don't have one of my own but I can borrow one, and I'll do
that.
…-Ed
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<#34 (comment)>,
or mute the thread
<https://github.com/notifications/unsubscribe-auth/ABGW6wICvksktxVOGs4JVXqSHa3A8hyPks5vZ4wrgaJpZM4WIVBo>
.
|
Hi,
thanks for the extra info. I've been a bit rammed recently and have been
unable to dedicate any time to it. I hope I can change that soon, though.
…-Ed
On Wed, 7 Aug 2019 at 22:53, Gean Johnson ***@***.***> wrote:
Any movement on this issue? I'm seeing the same problem when trying to
connect to an RPI 3B+ running the bluez 5.50 *example-advertisement* and
*example-gatt-server* Python apps that come with bluez 5.50. Works find
if I subscribe to the service using bluepy on another RPI 3B+ or from the *nRF
Connect* app on my Galaxy S10. Is there any easy way to just throw away
the unexpected *Read By Group Type Request* and move on? Looking in a
wireshark capture, it appears the expected *Read By Group Type Response*
is the next packet in the chute.
I attached the file. The extension should be pcapng, but that was an
unrecognized type so I changed it to txt. The pcapng contains the details
for the screenshot. Hope it helps debug the issue. Appreciate it your
efforts.
[image: image]
<https://user-images.githubusercontent.com/9042304/62660461-b30daf80-b933-11e9-8ef0-faf31d759836.png>
libblepp_ReadByGroupTypeRequestUnexpected.txt
<https://github.com/edrosten/libblepp/files/3479045/libblepp_ReadByGroupTypeRequestUnexpected.txt>
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<#34?email_source=notifications&email_token=AAIZN2Y64P2H2OJSMTMVKDDQDM74PA5CNFSM4FRBKBUKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD3Z2BOA#issuecomment-519282872>,
or mute the thread
<https://github.com/notifications/unsubscribe-auth/AAIZN2Z3UTLJOWJWVWXRDO3QDM74PANCNFSM4FRBKBUA>
.
|
Glancing at it...I am not the owner of the library.
I don't think it is easily fixable, and no the error should not be ignored.
libblepp has a single queue, and a single state engine.
It might need to be split into a receive state engine + queue and a
transmit state engine + queue.
Not a trivial change.
For my own future reference, this might be reproducible on any bluetooth
server by triggering GATT requests aggressively and waiting for this out of
order scenario to happen.
This probably hasn't cropped up since it's not often the server side will
ask for gatt service declarations, usually it's the other way around, this
library being used to connect to a peripheral device and less often another
client.
I have a number of side projects going on right now, so not a ton of time
to look deeply at this..sorry.
…On Wed, Aug 7, 2019 at 5:53 PM Gean Johnson ***@***.***> wrote:
Any movement on this issue? I'm seeing the same problem when trying to
connect to an RPI 3B+ running the bluez 5.50 *example-advertisement* and
*example-gatt-server* Python apps that come with bluez 5.50. Works find
if I subscribe to the service using bluepy on another RPI 3B+ or from the *nRF
Connect* app on my Galaxy S10. Is there any easy way to just throw away
the unexpected *Read By Group Type Request* and move on? Looking in a
wireshark capture, it appears the expected *Read By Group Type Response*
is the next packet in the chute.
I attached the file. The extension should be pcapng, but that was an
unrecognized type so I changed it to txt. The pcapng contains the details
for the screenshot. Hope it helps debug the issue. Appreciate it your
efforts.
[image: image]
<https://user-images.githubusercontent.com/9042304/62660461-b30daf80-b933-11e9-8ef0-faf31d759836.png>
libblepp_ReadByGroupTypeRequestUnexpected.txt
<https://github.com/edrosten/libblepp/files/3479045/libblepp_ReadByGroupTypeRequestUnexpected.txt>
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
<#34?email_source=notifications&email_token=ABCCYHQK4UWFS3PL5RV4G4TQDM74PA5CNFSM4FRBKBUKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD3Z2BOA#issuecomment-519282872>,
or mute the thread
<https://github.com/notifications/unsubscribe-auth/ABCCYHUAO7YDSTE3SCMNTH3QDM74PANCNFSM4FRBKBUA>
.
|
same problem on NRF52832 device.
Process finished with exit code 1 |
I am getting the following error when attempt to connect to some devices:
At the same time I am able to connect to the same device with the
gatttool
, like so:and can list, read, and write characteristics.
One of the affected devices is Adafruit Feather nRF52 Bluefruit based on Nordic nRF52832 chip. Interesting that there are no problems with another device (mbientlab MetaMotion R) that is also based on Nordic nRF52 chip. The other device that fail to connect is iPhone 7 with the virtual device advertised via the LightBlue Explorer; I tried couple of different combinations of advertised services/characteristics, but it fails in all the cases.
Note: I am using
libblepp
via Warble library of mbientlab (it connects using random address as well).OS: Ubuntu 18.04
Bluez: v5.48 / v5.50 (tried both)
BLE dongle: CSR 4.0
Any idea what can be the problem?
The text was updated successfully, but these errors were encountered: