【发布时间】:2019-01-02 13:01:30
【问题描述】:
我使用 QDbus 实现了 org.bluez.Agent1 接口,我想设置一个固定的 pin(我将提供给用户),以便验证所有配对请求并在 pin 错误时拒绝它们。代理功能应该是“NoInputNoOutput”,因为该项目将部署在没有键盘或显示器的 RaspberryPi 3 上。有没有办法解决这个问题?谢谢
【问题讨论】:
标签: bluetooth raspberry-pi3 bluez pairing
我使用 QDbus 实现了 org.bluez.Agent1 接口,我想设置一个固定的 pin(我将提供给用户),以便验证所有配对请求并在 pin 错误时拒绝它们。代理功能应该是“NoInputNoOutput”,因为该项目将部署在没有键盘或显示器的 RaspberryPi 3 上。有没有办法解决这个问题?谢谢
【问题讨论】:
标签: bluetooth raspberry-pi3 bluez pairing
我们在一个项目中遇到了同样的问题,我转向了 LE 设备,因为 Apple 设备只能出于“安全”原因连接到 LE 设备。
我对此没有太多参考,但如果这可以帮助您进行研究。
【讨论】:
对于固定密钥配对,您不应将该功能初始化为“NoInputOutput”。 NoInputOutput 表示没有显示,并且此设备没有键盘/UI。在向 BlueZ 注册时为您的代理提及此功能意味着,指示 BlueZ(蓝牙)不要调用任何代理 API 进行身份验证。
这对于无需任何人工干预的自动配对通常很有用。你可以看到这个sample code,它使用 NoInputOutput 功能连接设备,无需任何干预。
您需要的是“DisplayOnly”功能,以根据您设备的 SSP 支持指示 BlueZ 调用“DisplayPinCode”或“DisplayPasskey”。
您可以在您的代理中实施 DisplayPinCode/DisplayPasskey 以始终回复常量 PIN。因此尝试连接的蓝牙设备可以使用相同的固定 PIN 码进行配对。
这里的 Display Pin /Passkey 只是命名约定或提示代理开发人员编写向导/UI 或任何形式的显示操作。但是你可以完全忽略显示操作,回复静态/常量6位密钥进行配对。
通常,当设备(iPhone/Android 移动设备/任何支持蓝牙的设备)尝试配对从设备端调用“RequestPasskey”或“RequestPinCode”时,Bluez(在 rasperry pi 中)调用此代理 API。
【讨论】: