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

kuhbmx9i  于 2023-03-17  发布在  Linux
关注(0)|答案(5)|浏览(224)

我正在尝试通过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

任何帮助都将不胜感激。

kdfy810k

kdfy810k1#

试试这个...
像之前一样运行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的句柄。然而,我仍然发现只使用交互模式要容易得多。

slwdgvem

slwdgvem2#

看起来旧版本的Bluez(hcitool & gatttool)不允许你写低功耗蓝牙设备。我最终安装了一个新版本(5.17),以启用通知等。
要获取所有句柄的列表,您可以运行以下命令:

char-desc

然后可以从句柄读取:

char-read-hnd 0x000e

(the上面的处理是为我的nrf 51822电池水平)
其中句柄是从char-desc.获得的列表中的一个
就像Tim上面说的,你可以写通知相关的句柄来获得指示或通知。(在我的例子中,我的设备只有通知)

char-write-req 0x000f 0100

(the以上句柄用于我的nrf 51822电池电量通知)
在我的情况下,电池通知不应该发送任何东西,直到电池水平已经改变。
我写了一篇很长的博客文章来介绍如何安装Bluez。你可以在这里找到它:Get Started with Bluetooth Low Energy欢迎随时查看!

mfuanj7w

mfuanj7w3#

在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
b1zrtrql

b1zrtrql4#

要保留CCC值,您需要配对两个设备。一旦配对,您不需要再次设置CCC。下次重新连接时,它将找到设置,该设置将保存在密钥卡的c闪存中。通过SMP配对后,尝试配置。

4c8rllxm

4c8rllxm5#

gatttool -B B8:F0:09:CC:63:A6 --侦听--句柄0x 52--字符写入请求--值0x 1
这工作甚至通知被隐藏!

相关问题