![如何制作自动连接的蓝牙从设备](https://linux22.com/image/192049/%E5%A6%82%E4%BD%95%E5%88%B6%E4%BD%9C%E8%87%AA%E5%8A%A8%E8%BF%9E%E6%8E%A5%E7%9A%84%E8%93%9D%E7%89%99%E4%BB%8E%E8%AE%BE%E5%A4%87.png)
我想做的概念很简单:使 Linux 计算机成为自动接受连接(来自手机)的蓝牙从设备。总体目标是自动连接并将数据从手机应用程序传输到 Linux 计算机上的 python。以下是我认为需要的步骤:
我首先使用 hciconfig 设置蓝牙适配器:
sudo hciconfig hci0 noauth
sudo hciconfig hci0 name thisdevice
sudo hciconfig hci0 lm SLAVE
sudo hciconfig hci0 lm ACCEPT
sudo hciconfig hci0 sspmode 1
sudo hciconfig hci0 reset
sudo hciconfig hci0 piscan
然后我需要一个使用 Bluetoothctl 的蓝牙代理来进行身份验证:
bluetoothctl
discoverable on
pairable on
agent NoInputNoOutput
然后我需要使用手机进行连接。但是,为了连接,我仍然必须在 bluetoothctl 中的终端中输入 YES。(它要求确认正确的 Pin)。这是一个问题,并且破坏了 NoInputNoOutput 设置的整个目的。
然后我可以运行使用 Pybluez 和advertise_service 函数的python 程序。然后我可以从手机应用程序连接到该服务。
这是正确的事件顺序吗?如何让蓝牙自动验证? (修改bluez中的代理代码?)
谢谢
答案1
我绝不是这个话题的专家,我宁愿说我尝试了同样的事情 3 天,才勉强活下来。我现在放弃了,把我的树莓派扔到所有其他未完成的项目堆里。
不过,我认为我穿越这个地狱的旅程可能对你有价值。agent off
在注册新代理之前尝试输入:
bluetoothctl
agent off
agent NoInputNoOutput
discoverable on
pairable on
在输入这些命令时在第二个终端上运行btmon
应该会显示正在注册的新 NoInputNoOutput 代理。
答案2
尝试这个:
bt-agent -c NoInputNoOutput -d