蓝牙-Linux:使用bluetoothctl更改外观广告失败

3
我喜欢使用树莓派作为心率传感器,并通过蓝牙传输这些数据给其他健康/运动应用程序。最终,通过python和bluez工具,我已经能够创建一个BLTH GATT服务器并通过服务0x180d广告HR-数据,一切都正常运转。但是,我遇到了一个问题:我无法更改BLTH在Generic Access(0x1800)中的外观。通过UUID 0x2A01可以找到此处的外观。我尝试通过bluetoothctl手动修改它:菜单advertise、appearance 833(用于心率)、appearance on、back、advertise on。但是,这会失败,出现以下提示信息:Failed to register advertisement: org.bluez.Error.Failed。无论我将外观更改为哪个值(即使该值是众所周知且被接受的),它都会导致广告失败。如果我关闭外观,则会开始广告。您能否给我一些提示或帮助?我已经将bluez从5.50更新到5.54,还使用了实验模式的bluez。此外,我正在使用所有更新的最新的raspian操作系统。非常感谢您的帮助!
1个回答

7

以下是我在树莓派上使用的步骤:

pi@raspberrypi:~ $ bluetoothctl 
[bluetooth]# menu advertise 
[bluetooth]# clear
[bluetooth]# uuids 0x180D
[bluetooth]# appearance 833
[bluetooth]# name heart_test
[bluetooth]# discoverable on
[bluetooth]# back
[bluetooth]# advertise on
[CHG] Controller 00:02:5B:03:44:07 SupportedInstances: 0x04
[CHG] Controller 00:02:5B:03:44:07 ActiveInstances: 0x01
Advertising object registered
UUID: Heart Rate(0x180D)
Tx Power: off
LocalName: heart_test
Appearance: Heart Rate Belt (0x0341)
Discoverable: on
[bluetooth]#

当我在nRF应用程序中进行扫描时,它给了我以下信息:

view of scan in nRF app


1
嘿ukBaz, 这真的很有帮助。 正如我所预料的那样,我错过了一些东西,原来是已经注册了UUID 0x180D。我已经在我的Python脚本中完成了这个步骤,并且期望在进行通用设置之前需要做这个。非常感谢,这真的帮了我大忙! - KingPo
我看对了吗,Python-Bluezero库还没有包含这个改变外观的功能?还是我又错过了什么? - KingPo
1
已经有一些功能被添加到BlueZ API,需要将这些功能添加到Bluezero中。请在存储库上提出问题或提交拉取请求。 - ukBaz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接