使用bluez 4.01连接蓝牙LE设备

时间:2014-12-03 19:42:41

标签: linux ubuntu bluetooth bluetooth-lowenergy bluez

我试图将蓝牙低能量血氧计连接到我的Ubuntu桌面,但我遇到了一些问题。

我可以使用hcitool lescan看到设备很好,但是当我输入

时我无法连接

sudo gatttool -b 00:1C:05:FF:ED:A9 -I [ ][00:1C:05:FF:ED:A9][LE]> connect

这些是来自hcidump -X的日志:

HCI Event: Command Status (0x0f) plen 4 LE Create Connection (0x08|0x000d) status 0x00 ncmd 1 HCI Event: Command Status (0x0f) plen 4 LE Start Encryption (0x08|0x0019) status 0x00 ncmd 1 HCI Event: Encrypt Change (0x08) plen 4 status 0x06 handle 64 encrypt 0x00 Error: PIN or Key Missing HCI Event: Command Status (0x0f) plen 4 Disconnect (0x01|0x0006) status 0x00 ncmd 1 HCI Event: Disconn Complete (0x05) plen 4 status 0x00 handle 64 reason 0x16 Reason: Connection Terminated by Local Host

这看起来像某种身份验证失败。问题是血氧计不需要任何PIN或密码。它只是一个简单的代理,可以将数据发送给任何连接的人。

谢谢

3 个答案:

答案 0 :(得分:0)

尝试使用hcitool lecc命令:

sudo hcitool lecc 00:1C:05:FF:ED:A9

答案 1 :(得分:0)

我的血氧计也遇到了同样的问题。我还没有找到它的底部,但我的确有一个解决办法。 YMMV。

在我的情况下,连接最初几次正常,然后停止使用您显示的相同PIN错误。我的解决方法是删除与oximiter的配对(由最初成功的连接创建)。我通过" bt-device -r XX:XX:XX:XX:XX:XX"来做到这一点。之后连接成功。也就是说,需要在再次连接之前删除任何先前的配对。

这是简短的回答:-)这里有更详细的研究。

如果以root身份运行hcidump(sudo hcidump -X),它将为您提供更详细的数据。你可能会看到的是:

> ACL data: handle 69 flags 0x02 dlen 6
    SMP: Security Request (0x0b)
      auth req 0x00
< HCI Command: LE Start Encryption (0x08|0x0019) plen 28
  0000: 45 00 ec 8e 25 1b 09 46  b3 f7 7e ae 20 be 0c 63  E...%..F..~. ..c
  0010: fc cf ef e5 82 61 e0 eb  d4 bd 54 f6              .....a....T.
> HCI Event: Command Status (0x0f) plen 4
    LE Start Encryption (0x08|0x0019) status 0x00 ncmd 0
> HCI Event: Command Status (0x0f) plen 4
    Unknown (0x00|0x0000) status 0x00 ncmd 1
> HCI Event: Encrypt Change (0x08) plen 4
    status 0x06 handle 69 encrypt 0x00
    Error: PIN or Key Missing

在我看来,oximiter请求配对(第一个ACL数据转储),但bluez不会像它应该的那样启动一个。将此与初始成功连接进行比较。 oximiter请求配对,此时本地bluez确实响应了一对请求:

> ACL data: handle 70 flags 0x02 dlen 6
    SMP: Security Request (0x0b)
      auth req 0x00
< ACL data: handle 70 flags 0x00 dlen 11
    SMP: Pairing Request (0x01)
      capability 0x03 oob 0x00 auth req 0x01
      max key size 0x10 init key dist 0x00 resp key dist 0x01
      Capability: NoInputNoOutput (OOB data not present)
      Authentication: Bonding (No MITM Protection)
      Initiator Key Distribution:    
      Responder Key Distribution:  LTK  
> HCI Event: Number of Completed Packets (0x13) plen 5
    handle 70 packets 1
> ACL data: handle 70 flags 0x02 dlen 11
    SMP: Pairing Response (0x02)
      capability 0x03 oob 0x00 auth req 0x01
      max key size 0x10 init key dist 0x00 resp key dist 0x01
      Capability: NoInputNoOutput (OOB data not present)
      Authentication: Bonding (No MITM Protection)
      Initiator Key Distribution:    
      Responder Key Distribution:  LTK

我还在调查,以确定这是否是bluez中的错误,或者我的用户是否有错误。

答案 2 :(得分:0)

尝试:

sudo gatttool -t random -b 00:1C:05:FF:ED:A9 -I

然后输入connect