2014-12-03 206 views
0

我试图用我的Ubuntu桌面连接蓝牙低能量血氧计,但我遇到了一些问题。使用蓝牙4.01连接蓝牙LE设备

我可以看到设备只需使用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或密钥。这只是一个简单的代理,它将数据发送给与其连接的任何人。

感谢您使用hcitool lecc命令

回答

0

尝试:

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

我也面临着与我的血氧饱和度相同的问题。我还没有完成它的底部,但我有我的情况的解决方法。因人而异。

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

这就是简短的回答:-)下面是更详细的研究。

如果你以根用户身份运行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 

我看来像的血氧仪请求配对(第一ACL数据转储),但像它应该的bluez不启动一个。将此与初始成功连接进行比较。该血氧仪请求配对,并在该点当地的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的还是对我而言它的用户错误的错误。

+0

非常感谢您的详细解答。事实上,这是我面临的同样的问题。它连接一次或两次,然后失败,直到我重新启动机器。你使用的是什么bluez版本?我知道bluez 5.X的bluetoothctl完美地与血氧仪配合工作,但由于兼容性问题,我真的需要在bluez 4.X上运行。 – user1378063 2014-12-11 17:22:42

+0

我拥有的问题可以用bluez4和bluez5重现。解除配对(无需重新启动),然后为您连接工作的解决方法?试图确定你的问题是否相同。 – kaylum 2014-12-11 22:10:21

+0

事情是,我从来没有能够在第一个地方配对设备。不是用蓝牙管理器,也不用任何其他控制台命令。所以当我运行“bt-device -r”时,它只是返回一个“不存在”消息。 – user1378063 2014-12-14 14:44:55

0

尝试:

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

然后键入connect