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

You*_*eed 40 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
Run Code Online (Sandbox Code Playgroud)

命令失败:

gatttool -b <MAC Address> --listen
Run Code Online (Sandbox Code Playgroud)

任何帮助是极大的赞赏.

Tim*_*all 44

试试这个...

gatttool -b <MAC Address> --interactive像以前一样跑.你会得到一个提示,然后你输入connect.您应该CON在提示符中看到一条,表明您已连接到该设备.然后输入char-read-uuid 2902.您应该获得设备上所有CCC(客户端特性配置)属性的列表. 您可以尝试将它们全部设置为0100以获取通知,将0200设置为指示,将0300设置为两者,或将0000设置为关闭所有内容. 键入help以查看所有命令及其参数.

编辑:

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

gatttool -b <MAC Address> --char-write-req --handle=0x0031 --value=0100 --listen
Run Code Online (Sandbox Code Playgroud)

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

  • @AgDude,对我来说,我必须设置CCC值并同时收听.我使用的确切命令是gatttool -b <MAC地址> --char-write-req --handle = 0xXXXX --value = XXXX --listen (5认同)

jar*_*lff 10

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

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

char-desc
Run Code Online (Sandbox Code Playgroud)

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

char-read-hnd 0x000e
Run Code Online (Sandbox Code Playgroud)

(以上手柄适用于我的nrf51822电池级别)

句柄是你得到的列表中的一个 char-desc.

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

char-write-req 0x000f 0100
Run Code Online (Sandbox Code Playgroud)

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

在我的情况下,电池通知不应发送任何东西,直到电池电量发生变化.

我写了一篇关于使用Bluez进行设置的相当冗长的博文.你可以在这里找到它:蓝牙低功耗入门免费查看!


小智 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
Run Code Online (Sandbox Code Playgroud)