低功耗蓝牙:在linux中监听通知/指示

时间:2013-03-27 10:47:56

标签: linux bluetooth bluetooth-lowenergy bluez gatt

我试图通过Linux机器与BLE模块通信(该模块正在运行心率配置文件)。到目前为止,除了听取通知和指示(例如,听取心率测量通知)之外,我已经能够做我需要的一切。我使用的是内核版本3.5和bluez-5.3。

到目前为止使用的成功命令:

hcitool lescan
hcitool lecc
gatttool -b <Mac Address> --primary
gatttool -b <MAC Address> --characteristics
gatttool -b <MAC Address> --char-read
gatttool -b <MAC Address> --char-desc
gatttool -b <MAC Address> --interactive

命令失败:

gatttool -b <MAC Address> --listen

非常感谢任何帮助。

4 个答案:

答案 0 :(得分:44)

试试这个......

像以前一样运行gatttool -b <MAC Address> --interactive。您将收到提示,然后键入connect。您应该会在提示中看到CON,表示您已连接到该设备。然后输入char-read-uuid 2902。您应该获得设备上所有CCC(客户端特性配置)属性的列表。 You can try setting them all to 0100 to get notifications, 0200 for indications, 0300 for both, or 0000 for everything off.输入help以查看所有命令及其参数。

编辑:

--listen参数的使用要求您将其与其他命令结合以打开通知和/或指示。所以这是一个适用于Bluez 4.101的例子:

gatttool -b <MAC Address> --char-write-req --handle=0x0031 --value=0100 --listen

显然,您需要将句柄更改为要为其启用通知的CCC句柄。但是,我仍然觉得使用交互模式更容易。

答案 1 :(得分:10)

看起来旧版本的Bluez(hcitool&amp; gatttool)不允许您写入蓝牙低功耗设备。我最终安装了一个较新的版本(撰写本文时为5.17),以便启用通知等。

要获取所有句柄的列表,您可以运行以下命令:

char-desc

然后您可以从句柄中读取:

char-read-hnd 0x000e

(以上句柄适用于我的nrf51822电池电量级)

句柄是您从char-desc.

获得的列表中的句柄

就像Tim上面所说,你可以写通知相关句柄来获取指示或通知。 (在我的情况下,我的设备只有通知)

char-write-req 0x000f 0100

(以上句柄适用于我的nrf51822电池电量级别通知)

在我的情况下,在电池电量发生变化之前,电池通知不应发送任何内容。

我写了一篇关于使用Bluez进行设置的相当冗长的博客文章。你可以在这里找到它:Get Started with Bluetooth Low Energy随意查看它!

答案 2 :(得分:5)

阅读Mio Alpha心率的最终答案:

gatttool -b xx:xx:xx:xx:xx:xx -t random --char-write-req -a 0x0025 -n 0100 --listen

Characteristic value was written successfully
Notification handle = 0x0024 value: 10 4b 33 03 
Notification handle = 0x0024 value: 10 4b 33 03 
Notification handle = 0x0024 value: 10 4b 33 03 
Notification handle = 0x0024 value: 10 4a 3e 03 
Notification handle = 0x0024 value: 10 4c 28 03 28 03 
Notification handle = 0x0024 value: 10 4c 28 03 
Notification handle = 0x0024 value: 10 4b 33 03 
Notification handle = 0x0024 value: 10 4a 3e 03 3e 03

答案 3 :(得分:2)

保留两个设备配对所需的CCC值。一旦它们配对,您就不需要再次设置CCC。在下次重新连接时,它将找到该设置,该设置将保存在Key fob的FLASH中。尝试通过SMP配对后进行配置。