【发布时间】:2021-05-11 12:27:51
【问题描述】:
我正在使用带有 BlueZ v5.5 的 Raspberry Pi 3 与蓝牙秤进行通信。
问题:我可以配对秤并在配对后立即与之通信(读/写特征)。但是,如果我断开电子秤,我将无法重新连接。
我在 Raspberry Pi 方面所做的事情:
- sudo bluetoothctl
- (默认我注册了代理KeyboardDisplay)
- 开始扫描
- (我看到了设备的 ADV)
- 扫描关闭
- 信任 MAC 地址
- 配对 MAC 地址
- (我输入秤屏幕上显示的 6 位密码)
- (已建立连接)
- 信任 MAC 地址
- 断开 MAC 地址
- 连接 MAC 地址
- (连接失败)
这是 btmon 的输出:
< HCI Command: LE Create Connection (0x08|0x000d) plen 25
Scan interval: 60.000 msec (0x0060)
Scan window: 60.000 msec (0x0060)
Filter policy: White list is not used (0x00)
Peer address type: Public (0x00)
Peer address: MAC ADDRESS
Own address type: Public (0x00)
Min connection interval: 10.00 msec (0x0008)
Max connection interval: 20.00 msec (0x0010)
Connection latency: 0 (0x0000)
Supervision timeout: 6000 msec (0x0258)
Min connection length: 0.000 msec (0x0000)
Max connection length: 0.000 msec (0x0000)
> HCI Event: Command Status (0x0f) plen 4
LE Create Connection (0x08|0x000d) ncmd 1
Status: Success (0x00)
> HCI Event: LE Meta Event (0x3e) plen 19
LE Connection Complete (0x01)
Status: Success (0x00)
Handle: 64
Role: Master (0x00)
Peer address type: Public (0x00)
Peer address: MAC ADDRESS
Connection interval: 18.75 msec (0x000f)
Connection latency: 0 (0x0000)
Supervision timeout: 6000 msec (0x0258)
Master clock accuracy: 0x00
@ MGMT Event: Device Connected (0x000b) plen 37
LE Address: MAC ADDRESS
Flags: 0x00000000
Data length: 24
Flags: 0x06
LE General Discoverable Mode
BR/EDR Not Supported
16-bit Service UUIDs (partial): 1 entry
Weight Scale (0x181d)
Appearance: Weight Scale (0x0c80)
Unknown EIR field 0x1b: 00610601d3ca5d
Service Data (UUID 0x181d):
@ MGMT Event: Device Connected (0x000b) plen 37
LE Address: MAC ADDRESS
Flags: 0x00000000
Data length: 24
Flags: 0x06
LE General Discoverable Mode
BR/EDR Not Supported
16-bit Service UUIDs (partial): 1 entry
Weight Scale (0x181d)
Appearance: Weight Scale (0x0c80)
Unknown EIR field 0x1b: 00610601d3ca5d
Service Data (UUID 0x181d):
< HCI Command: LE Read Remote Used Features (0x08|0x0016) plen 2
Handle: 64
> HCI Event: Command Status (0x0f) plen 4
LE Read Remote Used Features (0x08|0x0016) ncmd 1
Status: Success (0x00)
> HCI Event: LE Meta Event (0x3e) plen 12
LE Read Remote Used Features (0x04)
Status: Success (0x00)
Handle: 64
Features: 0x01 0x00 0x00 0x00 0x00 0x00 0x00 0x00
LE Encryption
< HCI Command: LE Start Encryption (0x08|0x0019) plen 28
Handle: 64
Random number: 0x3a0760acb556aa15
Encrypted diversifier: 0xa2f4
Long term key: 1639a13299a91d0000519e1041643419
> HCI Event: Command Status (0x0f) plen 4
LE Start Encryption (0x08|0x0019) ncmd 1
Status: Success (0x00)
> HCI Event: Encryption Change (0x08) plen 4
Status: PIN or Key Missing (0x06)
Handle: 64
Encryption: Disabled (0x00)
< HCI Command: Disconnect (0x01|0x0006) plen 3
Handle: 64
Reason: Authentication Failure (0x05)
> HCI Event: Command Status (0x0f) plen 4
Disconnect (0x01|0x0006) ncmd 1
Status: Success (0x00)
> HCI Event: Disconnect Complete (0x05) plen 4
Status: Success (0x00)
Handle: 64
Reason: Connection Terminated By Local Host (0x16)
@ MGMT Event: Device Disconnected (0x000c) plen 8
LE Address: MAC ADDRESS
Reason: Connection terminated due to authentication failure (0x04)
我浏览了大量页面和线程,但无法解决这个问题。任何建议将不胜感激。非常感谢!
【问题讨论】:
-
阅读Weight Scale Profile 1.0 规范。似乎说客户端可以连接到秤而无需先绑定。您是否尝试过
remove来自bluetoothctl的秤;然后发现并连接而不先配对?它还说,如果没有要发送的重量数据,秤将断开连接。会不会这样。此外,当您通过配对连接时,会发现哪些特征?0x2A9E(体重秤功能)和0x2A9F(用户控制点)的值是多少? -
从btmon日志可以看到你的pin码被拒绝了....
-
@ukBaz,我尝试在不配对的情况下进行连接。连接正在建立,然后在 1-2 秒后断开,很可能是出于相同的原因 - 未能建立加密。
-
@MartijnvanWelie,这个日志来自我没有输入任何密码时的重新连接过程。
-
您好,我也有同样的问题,您解决了吗?
标签: bluetooth raspberry-pi raspberry-pi3 bluez