链接RPI 的BLE Gatt Server 频繁弹 配对对话框问题解决方法

当我把demo代码放在rpi上跑的时候,虽然能跑通,但是手机上不停弹出配对对话框,点否还会断开链接后非常无奈,折腾了一个周未也无果。最后猜知道需要在代码/配置里自己配置一个免PIN的agent才行。

方法1 在CLI上 执行如下命令

sudo bluetoothctl <<EOF
power on
discoverable on
pairable on
agent NoInputNoOutput
default-agent 
EOF

方法二: 在代码加上NoInputNoOutput
注册一个Agent 并且把 capability设置为NoInputNoOutput

path = "/test/agent"
agent = Agent(bus, path)
capability = "NoInputNoOutput"
obj = bus.get_object(BLUEZ_SERVICE_NAME, "/org/bluez")
manager = dbus.Interface(obj, "org.bluez.AgentManager1")
manager.RegisterAgent(path, capability)
manager.RequestDefaultAgent(path)