1

我一直在努力使我的 RPi 2 像汽车蓝牙接收器一样工作,一切都很好,除了我不知道如何在 Bluez5 中自动配对蓝牙设备。在过去,我会使用蓝牙代理和一个简单的脚本,但从 4 -> 5 的移动似乎已经消失了。设置的性质意味着我曾经在 RPi 上没有 kb/鼠标它在车里,所以它需要是一个完全自动化的设置,任何人都可以扫描 RPi,如果可能硬编码的 PIN 是正确的,则需要自动完成对设备的信任,无需 cli 输入。

我已经在网上搜索过,但似乎每个人都说使用 bluetoothctl 对他们有用,但是在这个特殊的设置中,我希望能够让朋友配对他们自己的手机,不得不信任具有 RPi 的设备这辆车并不理想。

4

2 回答 2

2

我不确定你为什么说 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代码的相应部分来做到这一点。我会把它留给你作为练习。

于 2015-05-14T12:02:49.770 回答
1

我已经安装了 bluez-5.43。这是如何在树莓派上自动化配对过程。

(1)首先测试这样一行以确保蓝牙代理工作:

 bluez-5.43/test/simple-agent -c NoInputNoOutput

(2)为了自动配对,把这段代码放到一个shell文件中(我命名为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)并搜索“简单代理”的“测试”文件夹以找到文件路径。从这里,您应该能够构建如上所示的命令行 (1)。希望它也对你有用。

于 2019-07-26T18:08:36.270 回答