我一直在努力让我的RPi 2像车载蓝牙接收器一样工作,一切都很好,除了我不知道如何在Bluez5中自动配对蓝牙设备。在过去,我会使用蓝牙代理和一个简单的脚本,但随着4 -> 5的移动,这似乎已经不复存在。设置的本质意味着,一旦RPi在车内,我就没有kb/鼠标,所以它需要是一个完全自动化的设置,任何人都可以扫描RPi,如果可能硬编码的PIN码是正确的,则需要自动完成对设备的信任,而不是cli输入。
我在网上搜索了一遍,但似乎每个人都说使用bluetoothctl对他们来说很管用,但在这种特殊的设置中,我希望朋友们能够配对自己的手机,必须信任车载RPi的设备是不理想的。
发布于 2015-05-14 20:02:50
我不明白为什么你说在bluez5中使用简单的脚本是不可能的。我想你可以做到的。下面是一个如何实现的示例。
下载bluez5源代码并编辑test/simple-agent。注释掉代码行,如下所示:
def RequestAuthorization(self, device):
print("RequestAuthorization (%s)" % (device))
#auth = ask("Authorize? (yes/no): ")
#if (auth == "yes"):
return
#raise Rejected("Pairing rejected")它的作用是删除授权提示并始终接受配对请求。
现在可以启动具有NoInputNoOutput功能的simple-agent,以便它使用简单的配对,并将通过上面的代码路径:
./simple-agent -c NoInputNoOutput
之后,您应该能够在没有任何用户提示或PIN码的情况下与RPi配对。
请注意,这只是您可以执行的操作的一个示例。如果您想要一个硬编码的PIN码而不是简单的配对,那么编辑相同simple-agent代码的适当部分来实现此目的。我会把它作为练习留给你。
发布于 2019-07-27 02:08:36
我已经安装了bluez-5.43。这是如何在覆盆子pi上自动化配对过程。
(1)首先测试一条这样的线路,以确保蓝牙代理工作正常:
bluez-5.43/test/simple-agent -c NoInputNoOutput(2)要实现自动配对,请将此代码放入一个外壳文件(我将其命名为pairbot.sh):
if [ "$(id -un)" != "pi" ]; then
exec sudo -u pi $0 "$@"
fi
export XAUTHORITY=/home/pi/.Xauthority
export DISPLAY=:0
lxterminal --command="/bin/bash -c '/home/pi/bluez-5.43/test/simple-agent -c NoInputNoOutput &; read'"(3)进入crontab:
sudo cronetab -e(4)在底部增加:
@reboot sleep 20 && /home/pi/pairbot.sh > /home/pi/blelog.txt 2>&1(5)重启并测试是否正常。
对于其他面临同样问题的人,我的建议是查看您的bluez文件夹(或者,如果您没有bluez文件夹,请安装最新版本的bluez),然后在显示"test“的文件夹中搜索"simple agent”,以找到文件路径。从这里,您应该能够构造上面所示的命令行(1)。希望它也能为你工作。
https://stackoverflow.com/questions/30233442
复制相似问题