Bluetooth 如何设置Bluez 5在配对过程中询问pin码

Bluetooth 如何设置Bluez 5在配对过程中询问pin码,bluetooth,raspberry-pi3,bluez,pairing,Bluetooth,Raspberry Pi3,Bluez,Pairing,我使用QDbus实现了org.bluez.Agent1接口,我想设置一个固定pin(我将提供给用户),以便验证所有配对请求,并在pin错误时拒绝它们。代理功能应该是“NoInputNoOutput”,因为项目将部署在RaspberryPi 3上,而不使用键盘或显示器。有办法解决这个问题吗?谢谢对于固定密钥配对,您不应将功能初始化为“NoInputOutput”。NoInputOutput表示此设备没有显示,也没有键盘/UI。在向BlueZ注册时提及代理的此功能意味着指示BlueZ(Bluetoo

我使用QDbus实现了org.bluez.Agent1接口,我想设置一个固定pin(我将提供给用户),以便验证所有配对请求,并在pin错误时拒绝它们。代理功能应该是“NoInputNoOutput”,因为项目将部署在RaspberryPi 3上,而不使用键盘或显示器。有办法解决这个问题吗?谢谢

对于固定密钥配对,您不应将功能初始化为“NoInputOutput”。NoInputOutput表示此设备没有显示,也没有键盘/UI。在向BlueZ注册时提及代理的此功能意味着指示BlueZ(Bluetooth D)不要调用任何代理API进行身份验证

这通常对autopair非常有用,无需任何手动干预。您可以看到这一点,它使用NoInputOutput功能来连接设备,而无需任何干预

您需要的是“基于设备的SSP支持指示BlueZ调用”或“的功能”

您可以在代理中实现DisplayPinCode/DisplayPasskey,以始终回复常量。因此,尝试连接的蓝牙设备可以使用相同的固定PIN进行配对

在这里,Display Pin/Passkey只是一种命名约定,或者提示代理开发人员编写向导/UI或任何形式的显示操作。但您可以完全忽略显示操作,并使用静态/恒定6位键进行配对回复


通常,当设备(iPhone/Android移动设备/任何支持蓝牙的设备)尝试从设备端对“”或“”进行配对调用时,Bluez(在rasperry pi中)会调用此代理API。

我们在一个项目中遇到了相同的问题,我转而使用LE设备,因为苹果设备只能出于“安全”原因连接到LE设备


我没有太多的参考资料,但如果这能帮助您进行研究的话。

我将代理功能更改为仅按您的建议显示,但从Android设备配对时,我注意到只调用RequestConfirmation。我正在使用Android createBondmethod@Cristiano:对不起。RequestConfirmation也会显示在屏幕上。所以Android可能会默认这一点。你能试试“KeyboardOnly”吗,这使得Android在UI中输入键。解决了,我错过了树莓上的hciconfig hci0 sspmode 0。我能够在RequestPin中返回一个固定字符串,并将其插入以与之配对。谢谢但是,我在iOS设备上看不到树莓,你知道吗?@Cristiano你是否已经设置了“可发现”属性?是的,这只是iOS的问题。我可以从Android、Linux和Windows中看到覆盆子