【问题标题】:bluez5 ble advertise stops after first connectbluez5 ble 广告在第一次连接后停止
【发布时间】:2014-09-02 13:38:15
【问题描述】:
我们不清楚 bluez5 中的leadv 命令的功能。
连接到设备并再次断开连接后,无法重新连接到同一设备。只有再次调用leadv后才能重新连接。
我们已经在各种平台(raspberrypi、x86)和各种版本的 bluez5(5.15、5.16、5.18、5.21)和来自 Broadcom 和 csr 的 bt 加密狗上重现了这种行为。
是否可以在不重新广告的情况下多次重新连接?
带有 gatt 服务器的蓝牙正在运行
我们发出了以下命令
hciconfig hci0 up
hciconfig hci0 noscan
hciconfig hci0 name foo
hciconfig hci0 leadv 0
【问题讨论】:
标签:
raspberry-pi
bluetooth-lowenergy
bluez
【解决方案1】:
我也遇到了同样的问题。
有趣的是,在断开连接期间,“hcidump”没有显示 bluez 向蓝牙控制器发出的任何命令,这表明它关闭了广告。
我正在使用此解决方法在设备断开连接后立即重新启用广告:
sudo dbus-monitor --system --profile | grep --line-buffered --only-matching InterfacesRemoved | xargs -n1 -I % sudo /home/pi/bluez/bluez-5.25/tools/hciconfig hci0 leadv 0
解释:
- '--line-buffered' 是必需的,因为 dbus-monitor 不会刷新其输出
- '-I %' 使 xargs 不会将 grep 的“InterfaceRemoved”附加到执行的命令中
【解决方案2】:
事实证明,实际上可以自动重新启用广告,但它似乎只适用于选定的 bluez/kernel 组合。我们终于让它与 bluez 5.21 和用于 Broadcom 和 csr 加密狗的树莓派内核 3.16 一起工作。从那以后我们就没有尝试过其他组合,因为我们很快就切换到了自定义硬件 (TI CC2451)。