我使用 QDbus 实现了 org.bluez.Agent1 接口,我想设置一个固定引脚(我将提供给用户),以便验证所有配对请求,并在引脚错误时拒绝它们。代理功能应为“NoInputNoOutput”,因为该项目将部署在没有键盘或显示器的 RaspberryPi 3 上。有办法解决这个问题吗?谢谢
您不应将固定密钥配对的功能初始化为“NoInputOutput”。 NoInputOutput 意味着该设备没有显示并且没有键盘/UI。在注册 BlueZ 时为您的 Agent 提及此功能意味着指示 BlueZ (bluetoothd) 不要调用任何 Agent API 进行身份验证。
这对于无需任何手动干预的自动配对通常很有用。你可以看到这个示例代码 https://gist.github.com/parthitce/eb6b751df3235f7247babc4c9aba41d8,它使用 NoInputOutput 功能来连接设备,无需任何干预。
你需要的是“仅显示 https://git.kernel.org/pub/scm/bluetooth/bluez.git/tree/doc/agent-api.txt#n34“指示 BlueZ 呼叫的能力”显示密码 https://git.kernel.org/pub/scm/bluetooth/bluez.git/tree/doc/agent-api.txt#n91" or "显示密码 https://git.kernel.org/pub/scm/bluetooth/bluez.git/tree/doc/agent-api.txt#n126“基于您设备的 SSP 支持。
您可以在代理中实现 DisplayPinCode/DisplayPasskey 来回复constant始终输入 PIN 码。因此尝试连接的蓝牙设备可以使用相同的恒定 PIN 码进行配对。
这里的 Display Pin /Passkey 只是命名约定或提示 Agent 开发人员编写向导/UI 或任何形式的显示操作。但您可以完全忽略显示操作并回复静态/恒定的6位数字密钥进行配对。
通常,当设备(iPhone/Android 移动设备/任何支持蓝牙的设备)尝试配对调用时,Bluez(在树莓派中)会调用此代理 API”请求密码 https://git.kernel.org/pub/scm/bluetooth/bluez.git/tree/doc/agent-api.txt#n115" or "请求密码 https://git.kernel.org/pub/scm/bluetooth/bluez.git/tree/doc/agent-api.txt#n80”来自设备端。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)