我正在尝试让蓝牙在 Raspberry Pi 3 中工作。
我正在使用 buildroot:
- BlueZ 5.45(更改软件包以获取最新版本)
- 不使用 systemd,但我运行
bluetoothd
因为 bluez 脚本适用于 systemd。 - 在 buildroot 中我启用了 bt 固件。
- 我可以看到 hci_uart.ko 文件和蓝牙固件 hcd 文件
- 我从 cmdline.txt 中删除了
console=ttyAMA0,115200
- 我为busybox添加了
rfkill
,但我只看到了wifi接口(interface),没有蓝牙接口(interface)。
运行:
hciattach /dev/ttyAMA0 bcm43xx 921600 noflow -
输出显示:
bcm43xx_init
Initialization timed out
试过115200,一样。
注释:
- 使用 BlueZ 3 时,我收到
无效 ID
- 我读到它与 BlueZ 版本有某种关系,所以我确实采用了最新的
以上都是经过深度搜索后拍摄的。
那么我在这里缺少什么?
如何让蓝牙在我的 Raspberry Pi 3 中开始运行 使用 buildroot 作为图像创建者?
谢谢大家!
最佳答案
主要问题是buildroot添加了pi3-miniuart-bt覆盖 在config.txt中。
要删除它,我们需要从 post-image.sh 脚本中删除 if 作为上述脚本的参数。
在树莓派 3 中,ttyAMA0 被分配给蓝牙,pi3-miniuart-bt 将其恢复为串行 com 端口,这会再次断开蓝牙连接。
总结 buildroot 中的步骤。
- 添加蓝牙固件。
- 添加 bluez 5 实用程序。
- 将软件包从 bluez 5.44 更改为 5.45
- 添加上面的 sleep 。 (删除bluez中的.stamp_build重新构建)
- 从 cmdline.txt 中删除
/dev/ttyAMA0
构建后,检查目标(pi3)
- BCM4343 hcd 固件
- hci_uart.ko 应该在那里
在 busybox init 的情况下,hci_uart 不会运行(仅在 systemd 中)
所以只是modprobe hci_uart
。运行 lsmod 来查看它是否正在运行。
要启动服务并加载固件,请使用 hciattach:
hciattach /dev/ttyAMA0 bcm43xx 921600 noflow -
启动蓝牙守护进程:
/usr/libexec/bluetooth/bluetoothd &
使用bluetoothctl
启动蓝牙硬件(开机并打开代理)。
现在您应该使用 hcitool dev 看到它。
同样,如果您不删除叠加层,您将超时。
那个。现在应该可以看到 hci 设备。 你可以使用以下命令查看它:
rfkill list
(从 busybox-menuconfig 安装)hciconfig -a
上述步骤无法使控制台在 Pi 3 上正常工作,但这是一个不同的故事。
关于bluetooth - bcm43xx_init buildroot raspberry pi 3 hciattach 初始化超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44554255/