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

问题描述 投票:41回答:4

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

非常感谢您的帮助。

linux bluetooth bluetooth-lowenergy bluez gatt
4个回答
45
投票

尝试一下...

像以前一样运行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的句柄。但是,我仍然发现仅使用交互模式会更容易。


10
投票

看起来像Bluez的旧版本(hcitool和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随时查看!


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

2
投票

要保留CCC值,您需要将两个设备配对。配对后,您无需再次设置CCC。下次重新连接时,将找到设置,该设置将保存在智能钥匙的闪存中。尝试通过SMP配对后进行配置。

© www.soinside.com 2019 - 2024. All rights reserved.