0

在一个新地方的第一个小项目,我遇到了一些麻烦 - 希望我能得到一些想法。我们有一个使用 NRF 芯片的 BLE 设备,我们刚刚启用了安全和绑定。我们希望设置我们的 linux 测试装置,以便设备可以配对和绑定,而无需操作员接受每个设备的绑定请求。在现场,最终用户至少需要将设备与智能手机绑定一次。

我使用 bt-agent --compatibility=NoInputNoOutput 设置了一个代理,如下所述: https ://www.kynetics.com/docs/2018/pairing_agents_bluez/

在我的 linux 桌面(Ubuntu 20.10)上,无需用户交互,绑定就可以很好地工作。问题是,当我移除代理时,我曾希望绑定过程能够恢复正常。它没有——它仍然不需要用户交互来建立绑定。在我“忘记”设备后,从我的 Android 手机完成的类似操作按预期工作。

我正在寻找更多关于如何在我的 linux 计算机上重置此设备的绑定/配对的想法,以便我可以轻松地在需要用户输入和不需要用户输入之间来回切换(用于测试和演示目的)。我尝试了以下方法:

  • 在 /var/lib/bluetooth//cache 中删除我的设备的缓存条目
  • 使用 bluetoothctl => remove aa:bb:cc:dd:ee:ff 删除设备
  • 使用 bluetoothctl => agent off 删除所有代理(直到没有更多代理保留)
  • 可能还有其他一些现在没有想到的事情

无论如何,当我在我的蓝牙列表中单击它(或选择在 bluetoothctl 中连接)时,设备会自动绑定。关于如何将我的 linux 盒子返回到需要用户交互以进行绑定过程的状态的任何其他想法?

太感谢了

4

1 回答 1

0

我希望Remove the device using bluetoothctl => remove aa:bb:cc:dd:ee:ff已经删除了设备和绑定信息。这使我怀疑您的代理仍在后台运行,并在请求进行配对/绑定时被触发。我的假设是,退出bt-agent时注册的代理将未注册。脚本还能在后台运行吗bt-agentbt-agent代理在退出时不是未注册吗?

bt-agent的系统上没有,因为它似乎不是标准 BlueZ 产品的一部分,所以我无法重现该问题。要在配对和退出时获取更多调试信息bt-agent,请打开单独的终端并运行以下命令以更清楚地了解正在发生的事情:

  • bluetootctl
  • journalctl -f -u bluetooth
  • sudo busctl monitor org.bluez
  • sudo btmon
于 2021-03-10T08:00:08.313 回答