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

Ubuntu 在Bluez 5.31中禁用对LE广告的随机地址的支持,ubuntu,bluetooth-lowenergy,raspbian,bluez,Ubuntu,Bluetooth Lowenergy,Raspbian,Bluez,我正在使用BT/LE双模式加密狗,以自定义制造数据的LE纯模式运行(用作OOB介质)。 该功能在ubuntu桌面系统(内核-3.13.0-57-generic)中运行良好,但在raspbian(内核-4.0.9+)中失败。我猜这与hci的内核实现有关,但我不确定 在Ubuntu中,在LE only模式下运行双模式加密狗,我可以使用hcitool(lescan)查看我的mac地址。但如果我用raspbian运行它,我可以看到随机地址广告,而不是公共地址广告 另外,使用btmgmt中的静态addr命

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

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

另外,使用btmgmt中的静态addr命令也不起作用。(仍在获取随机地址)

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


提前感谢。

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

请参阅的外设中的
10.7.1隐私功能部分

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

同时检查
12.3外围设备隐私标志特性
,了解属性句柄和值的详细信息,也许您可以在设备中找到它

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


如果您可以在广告配置中发现发送到蓝牙模块的hci命令有任何差异,您也可以尝试使用
btmon
进行检查。

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

请参阅的外设中的
10.7.1隐私功能部分

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

同时检查
12.3外围设备隐私标志特性
,了解属性句柄和值的详细信息,也许您可以在设备中找到它

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


您还可以尝试使用
btmon
检查是否可以在广告配置中发现发送到蓝牙模块的hci命令的任何差异。

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

  • 关闭电源(需要禁用经典BT) 断电
  • 启用le(您必须有一个控制器,才能删除经典BT控制器)

    乐安

  • 关闭bredr

    布雷德洛夫

  • 接通电源

    通电

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

    可连接到

  • 设置可发现(如果没有此选项,bluez将丢弃设备,因此无法通过dbus api使用。除非更改bluez实现)

    迪斯科舞曲

  • 开始做广告

    广告


  • 希望这有帮助

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

  • 关闭电源(需要禁用经典BT) 断电
  • 启用le(您必须有一个控制器,才能删除经典BT控制器)

    乐安

  • 关闭bredr

    布雷德洛夫

  • 接通电源

    通电

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

    可连接到

  • 设置可发现(如果没有此选项,bluez将丢弃设备,因此无法通过dbus api使用。除非更改bluez实现)

    迪斯科舞曲

  • 开始做广告

    广告


  • 希望这有帮助

    谢谢你的回答。版本完全相同。事实上,它是用完全相同的选项从相同的源代码编译而成的。我的猜测是内核HCI驱动程序实现可能不同。再次感谢您的提示,我将使用btmgmt禁用隐私,并将返回给您。哦,对了,我只是看到我们可以使用
    btmgmt
    设置/取消设置!伟大的谢谢你的回答。版本完全相同。事实上,它是用完全相同的选项从相同的源代码编译而成的。我的猜测是内核HCI驱动程序实现可能不同。再次感谢您的提示,我将使用btmgmt禁用隐私,并将返回给您。哦,对了,我只是看到我们可以使用
    btmgmt
    设置/取消设置!伟大的必须有一种方法可以在不更改为可连接的情况下关闭地址随机化。也许这只是btmgmt的一个问题,它会自动设置很多参数。隐私开启/关闭对该行为没有任何影响?@Dominik Gebhart将隐私设置为关闭对随机地址行为没有任何影响。另外,btmgmt不会自动设置这些参数。事实上,它使用了bluez守护进程中使用的函数e,g(扫描,连接)。是的,你是对的,我刚才浏览了代码,它使用了doc/mgmt-api.txt中引用的bluez管理api。这让我很困惑。我有一个应用程序使用短时间间隔发送的不可连接广告,我使用公共地址在另一个应用程序中查找。背景