问题标签 [gatttool]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
bluetooth-lowenergy - 如何找到BLE设备不同UUID对应的句柄
使用 gattool,我可以找到与我的智能手表手柄相对应的 UUID,如下所示:
但是,我很困惑,如何确定哪个句柄适用于哪个 BLE 功能。例如,https ://www.bluetooth.com/specifications/gatt/characteristics/ 上的页面显示电池电量规格功能位于 0x2A19。但是,我不知道在哪里或如何在上面的 char-desc 输出中获取与 0x2A19 对应的 UUID。我怎么得到这个?
编辑:感谢答案中非常有用的描述(两者都非常好)。我已经添加了上面的特征信息。我还有一些额外的信息可能有用也可能没用。
通过反复试验,我能够确定血压测量值(从我按下表带上的按钮时获得)是从通知句柄的第三个和第四个条目(十六进制格式)获得的(见输出):
但是,当什么都不做时,即没有按下任何按钮,我得到:
相同的通知句柄在第 11 个条目中给出了心率(按下该按钮时):
然而,在所有情况下,第一个条目也发生了变化(并且它们似乎对操作和不作为是唯一的)。
例如,我想知道我是否可以访问这些信息,以及如何触发 BP 测量。再次感谢!
如果我的问题不清楚或需要更多信息,请在评论中告诉我。我很乐意根据需要提供更多信息。感谢您花时间阅读和提出建议/指示。
bluetooth - Gatttool 在几秒钟后停止接收通知(不是因为断开连接)
我使用 gattool 连接 Linux 虚拟机(Ubuntu)上的 BLE 设备。系统中共有三个角色:peripheral、central、laptop(只接收日志信息进行调试)
连接后,我需要向外围设备发送一条消息,以便在中央与外围设备交互时向 Linux 发送日志信息。所以我的代码是这样的:
如果外围设备可以继续向笔记本电脑发送日志记录,它可以正常打印通知。但是,如果外围设备在 (4-5) 秒内停止发送日志记录并在此之后恢复,则笔记本电脑将不再打印出该消息。但它并没有断开,因为之后我仍然可以写入外围并收到正常的反馈。而且也没有错误(gatttool:5840): GLib-WARNING **: Invalid file descriptor.
它的可能原因是什么以及如何解决它?谢谢!
样本结果:
经过测试,我认为它更接近于“接收通知并存储它,但直到下一个命令到gatttool时才将它打印到终端”如果我向外围设备发送一些命令,这意味着外围设备也会向笔记本电脑发送一些命令,无论 gatttool 的下一个命令是什么,它都会打印出“已保存”的通知。测试结果:
来自 btmon 的结果。外围设备在 19:36:30 左右发出通知,但是当我在 Linux 上发送另一个 cmd 时,btmon 上的时间戳是 19:37。
bluetooth - 无法连接到树莓派上的 BLE 设备(gatttool/bluetoothctl)
就像标题说的那样,我无法连接到我的树莓派 3 上的 le 设备。我试过: - 通过 bluetoothctl 我得到一个 AuthenthicationFailure - 通过 gatttool 我得到连接被拒绝(111)
我搜索了很多解决方案并已经尝试过(确保): - btmgmt le up - 将 bluez/bluez 重新安装到最新版本 - 使用 gatttool 时使用“-t random”
并且知道我真的不知道下一步该做什么。
什么可能很重要: uname -r = 4.19.58-v7+ bluetoothctl -v = 5.50 使用 Android 应用程序 nRF 连接到 le 设备的连接工作正常。
有人可以帮我吗?
在此先感谢,玛格达
bluetooth-lowenergy - Gatttool 非交互模式,多个 char-write-req
我想检索一个 stryd footpod 的数据。我想听 2 个单独的 uuid。在交互模式下,我会使用
但是,当我将它用作 perl 脚本的一部分时,我想利用非交互模式。
使用单个句柄启动 gatttool 可以正常工作:
但是如何同时通过两个句柄?以下不起作用。
谢谢!
python - 无法连接小米手环 3
我正在尝试使用我获得的一些库通过 Python 连接到 Mi Band 3,但我无法 - bluepy 返回此类错误:
我也尝试使用 gatttool 连接到设备,还有一些我不明白的问题:
也许你们中的任何人都可以给我一些建议,我在获取设备访问权限时做错了什么。我可以访问 VM 上的 BT,因为我可以在 MB3 中从控制台或设置中列出设备。
我的环境:
Ubuntu 19.10 上:Windows 10 教育版中的 VirtualBox 6.0.14
笔记本 MSIGP63 8RE-403XPL
连接时手环未与 MiFit 配对。
我相信你可以帮助我解决这个问题。
linux - gatttool 安全级别的含义(低 | 中 | 高)
linux gatttool三个安全级别(低、中、高)如何对应BLE安全模式和级别?gatttool 提供 3 种安全级别(低、中、高),而 BLE 安全规范有 4 种不同的安全级别(1、2、3 和 4)和至少 3 种不同的安全模式(1、2 和混合)。我试图了解 gatttool 中的每个安全级别(低、中和高)在 BLE 安全规范中对应的内容,或者至少只是了解这三者之间的区别。
提前致谢!
python-3.x - 无法读取/写入 BLE 中的特性
我有一个 BLED112 加密狗和一个 BLE 设备,其中包含具有服务特性的 GATT 配置文件。我已经安装了 pygatt 来与我的 BLE 设备通信。
以下是我连接到我的 BLE 设备并读取/写入特性的 python 代码:-
我能够连接到我的设备。但是,我在读取或写入时收到以下错误:
C:\Python\Python37-32\lib\site-packages\pygatt\backends\bgapi\bgapi.py",第 570 行,在 expect_any 中引发 exc pygatt.backends.bgapi.exceptions.ExpectedResponseTimeout:等待 10.000000 秒后超时[]
我已经包含 wait_for_response=True
在我的写指令中,但我仍然遇到这个问题。
我如何在没有任何错误的情况下读/写特征?
PS:在扫描时,我观察到上面的 UUID 属于“描述符”。
这是我收到错误的原因吗?
有没有办法在 pygatt 中写入“描述符”(而不是特征)?
python-3.x - pygatt:无法执行 device.subscribe()
我正在尝试订阅 GATT 特性。
我已经为我的 BLE 设备中的 GATT 特性设置了“指示”、“通知”和“读取”属性。
我能够连接到我的 BLE 设备并读取/写入其他特性。
但是,我无法针对此特定特征执行 device.subscribe() 函数。
当我使用
我得到了错误
pygatt.backends.bgapi.exceptions.ExpectedResponseTimeout:等待 10.000000 秒后超时 []
在链接 https://github.com/peplin/pygatt/blob/master/pygatt/device.py中,订阅函数有参数“wait_for_response”
在我的代码中,如果我使用
它显示错误
TypeError: subscribe() 得到了一个意外的关键字参数“wait_for_response”
我如何消除这些错误并订阅特性?
编辑:
我将属性读取和写入以及通知和指示添加到特征
我可以使用以下代码读取和写入特征:-
但是,只是我无法订阅它。
我真的被困在这里了。
任何帮助深表感谢!
bluetooth - gatttool 特性在非交互模式下写入
我想gatttool
在 shell 脚本中使用。
我想要实现的类似于这些:
- Gatttool 非交互模式 --char-write
- 非交互模式下的 Gatttool
- 如何使用 gatttool 非交互模式
- Gatttool 非交互模式,多个 char-write-req
- GATTTool 无法读取/写入特征
在交互模式下,我可以这样做:
现在,如果我以非交互方式运行:
它只是挂起,我需要打破它,CTRL+C
并且不会向设备发送任何内容。
现在,以上所有问题都建议使用--char-write-req
而不是--char-write
.
但这是误导,因为请求和命令意味着不同的东西。
我的设备不接受请求,只接受命令(即使在交互模式下!)。因此,尝试发送相同的数据request
将失败:
现在当然使用上述问题 ( --char-write-req
) 中的建议将失败:
那么,如果我不想为此使用任何 Python 或类似的过度杀伤力,那么编写特征命令的非交互式替代方法是什么?
bluetooth-lowenergy - 间歇性出现连接错误:使用 gatttool 连接时未实现功能 (38)
我正在做一个项目,我需要从 BLE 环境传感器获取数据到树莓派上,并定期将其发送到服务器。我可以发送的越多越好。我在网上找到了一个脚本,它适用于我正在使用的特定类型的传感器,但它只读取一次数据并且不会更新,除非某些设备连接到传感器并断开连接。
因此,例如,如果我连续两次运行脚本,它将包含相同的数据,但如果我运行一次脚本,然后用我的手机连接和断开传感器,然后再次运行脚本,它将有新的, 更新数据。现在,我正在尝试使其完全自动化,并且不想每次都与手机保持连接和断开连接以获取新数据,因此我发现运行 gatttool 和连接具有与我相同的效果是连接和断开我的手机。所以我想出了一个有点笨拙的自动化解决方案,它都通过 crontab 运行:
- 运行脚本,使用 gatttool 连接并立即断开与传感器的连接
- 运行数据收集脚本并将数据发送到服务器
- 尽快重复
第 3 步是问题所在。我不能随心所欲地运行这个系列。理想的间隔是每 30 秒收集和发送一次数据,但由于某种原因,我间歇性地从 gatttool 收到错误消息:
我在 cron 计划的每次迭代中都会收到此错误,直到我设置了间隔以便脚本仅每2 分钟运行一次,即使如此,我也会间歇性地收到错误。我需要数据保持一致,并且绝对不像 2 分钟那样稀疏。1 分钟是我可以承受的发送数据的绝对最大间隔。
我怎样才能摆脱这个错误?
我连接和断开设备的脚本: