我正在使用 Raspberry Pi 为我的汽车制作蓝牙立体声音响。实际上,我正在制作一个蓝牙扬声器。我目前可以使用此脚本发现并连接到 Pi:
#!/bin/bash
sudo bluetoothctl <<EOF
power on
discoverable on
pairable on
agent off # For some reason, the agent needs to be turned off before reassignment?
agent NoInputNoOutput
default-agent
EOF
脚本的输出已经有点不确定,因为它似乎同时发送所有命令,导致一些命令不按顺序完成。
另一个奇怪的是任何其他代理如何通过
bluetoothctl
完美地工作,但是NoInputNoOutput
,我在没有干预的情况下处理连接的唯一方法,只是无法在对等方忘记配对后处理重新连接。
我希望能够忘记任何设备上的配对,并让 Pi 在之后处理重新连接,而无需我的手机告诉我:
iPhone 无法再连接到“TacoBox”。忘记此设备并重新配对。
连接 iPhone 后,您可能需要添加 trust 命令以确认 iPhone 的绑定/配对。该命令的工作原理如下:-
trust <iPhone's MAC address>
例如
trust 00:11:22:33:44:55
您需要修改脚本以捕获连接设备的 MAC 地址,然后将其用作“信任”参数。首先,我会手动测试它,以确保它在修改脚本之前正常工作。
另一件事是尝试使用以下配置更新 /etc/bluetooth/main.conf:-
AlwaysPairable=true
AutoConnect=true
但是,我会将这些保留为稍后的手段,因为它们可以被视为安全风险,因为它们将设备配置为始终可在无需用户干预的情况下配对。
最后,我会在脚本中添加 sleep 参数,以便命令不会“同时发送”,并且您的脚本变得更加连续。
一些相关参考:-