我使用QDbus实现了org.bluez.Agent1接口,我想设置一个固定的针脚(我将提供给用户)以验证所有配对请求,如果针脚错误则拒绝它们。代理功能应为“ NoInputNoOutput”,因为该项目将在没有键盘或显示器的情况下部署在RaspberryPi 3上。有办法解决吗?谢谢
答案 0 :(得分:1)
对于固定键配对,不应将功能初始化为“ NoInputOutput”。 NoInputOutput表示没有显示,并且此设备没有键盘/ UI。在向BlueZ注册时为您的代理提及此功能意味着指示BlueZ(蓝牙)不要调用任何代理API进行身份验证。
这通常对自动配对非常有用,而无需任何手动干预。您可以看到此sample code,它使用NoInputOutput功能来连接设备,而无需任何干预。
您需要的是“ DisplayOnly”功能,该功能可根据设备对SSP的支持指示BlueZ呼叫“ DisplayPinCode”或“ DisplayPasskey”。
您可以在代理中实现DisplayPinCode / DisplayPasskey,以始终回复恒定 PIN。因此,尝试连接的蓝牙设备可以使用相同的固定PIN进行配对。
此处显示Pin / Passkey只是命名约定或对代理开发人员的提示,用于编写向导/ UI或任何形式的显示操作。但是您可以完全忽略显示操作,并使用静态/恒定6位数字键进行配对答复。
通常,当尝试配对的设备(iPhone / Android移动设备/任何具有蓝牙功能的设备)从设备上调用“ RequestPasskey”或“ RequestPinCode”时,Bluez(在rasperry pi中)会调用此Agent API设备端。
答案 1 :(得分:0)
我们在一个项目中遇到了同样的问题,我转移到LE设备上是因为苹果设备仅出于“安全”原因才能够连接到LE设备。
我没有那么多参考,但这是否可以帮助您进行研究。