在Bluez 5.31中禁用对LE广告的随机地址的支持

时间:2015-07-27 12:03:34

标签: ubuntu bluetooth-lowenergy raspbian bluez

我正在使用BT / LE双模式加密狗以LE模式运行并使用自定义制造数据(充当OOB介质)。 该功能在ubuntu桌面系统(KERNEL - 3.13.0-57-generic)中运行良好,但在raspbian(KERNEL - 4.0.9+)中失败。我猜它与hci的内核实现有关,但我不确定。

在Ubuntu中,在仅LE模式下运行双模加密狗我可以使用hcitool(lescan)查看我的mac地址。但如果我用raspbian运行它,我可以看到随机地址广告而不是公共广告。

同样使用btmgmt的static-addr命令无法正常工作。 (仍然得到随机地址)。

那么,如何禁用随机地址或如何使用公共地址而不是随机地址?

提前致谢。

2 个答案:

答案 0 :(得分:1)

这似乎是由激活的隐私功能触发的。

请参阅Core 4.0 Specification10.7.1 Privacy Feature in a Peripheral部分。

  

支持外设中的隐私功能取决于存在   和两个特征的价值:周边隐私标志   第12.3节和重新连接地址中定义的特性   第12.4节中定义的特性。当外围设备   隐私标志特征设置为1,启用隐私(也是   称为隐私启用外围设备)。

同时检查12.3 PERIPHERAL PRIVACY FLAG CHARACTERISTIC以获取有关属性句柄和值的详细信息,也许您可​​以在设备中找到它。

为什么Ubuntu和Raspi之间存在差异,我只能猜测版本不完全相同。

如果您能发现广告配置中发送到蓝牙模块的hci命令有任何差异,您也可以尝试查看btmon

答案 1 :(得分:1)

这确实是内核蓝牙驱动程序的功能。新实现具有随机地址功能。但是这可以通过给出以下命令来修复btmgmt。

  1. 关闭电源(需要禁用经典BT) 关闭电源
  2. 打开文件(您必须有一个控制器才能删除经典的BT控制器)

    le on

  3. 关闭bredr

    bredr off

  4. 打开电源

    打开电源

  5. 设置可连接(这将使hci驱动程序使用公共地址而不是随机地址)

    可连接

  6. 设置可发现(如果没有这个,bluez将丢弃该设备,因此无法通过dbus api获得。除非您更改bluez实现)

  7. 开始投放广告

    广告

  8. 希望这有帮助