bcm43xx_init初始化超时与buildroot raspberry pi 3 hciattach

时间:2017-06-14 20:33:52

标签: bluetooth raspberry-pi3 bluez buildroot

我正在尝试让蓝牙在Raspberry Pi 3中运行。

我正在使用buildroot:

  1. BlueZ 5.45(更改包以获取最新版本)
  2. 不使用systemd,但我运行bluetoothd因为 bluez脚本适用于systemd。
  3. 在buildroot中我启用了bt固件。
  4. 我可以看到hci_uart.ko文件和蓝牙固件hcd文件
  5. 我从cmdline.txt
  6. 中删除了console=ttyAMA0,115200
  7. 我为busybox添加了rfkill,但我只看到了wifi接口,没有蓝牙接口。
  8. 运行:

    hciattach /dev/ttyAMA0 bcm43xx 921600 noflow -
    

    输出显示:

    bcm43xx_init
    Initialization timed out
    

    尝试了115200,同样。

    注意:

    1. 使用BlueZ 3时,我收到invalid id
    2. 我读到它与BlueZ版本有某种关联所以我确实采用了最新的
    3. 以上所有内容都是在深度搜索后进行的。

      那么我在这里缺少什么?

      如何让蓝牙开始在我的Raspberry Pi 3中运行 使用buildroot作为图像创建者?

      谢谢大家!

2 个答案:

答案 0 :(得分:2)

As described in the commit adding the firmware, you unfortunately need to patch bluez5_utils to get the firmware to work:

https://git.buildroot.net/buildroot/commit/?id=1f94f1aaab2e786542a83327358570a828d68f45

答案 1 :(得分:2)

主要问题是buildroot添加了pi3-miniuart-bt叠加层 在config.txt。

要删除它,我们需要从post-image.sh脚本中删除if作为上述脚本的参数。

在raspberry pi 3中,ttyAMA0被分配到蓝牙,pi3-miniuart-bt将其恢复为串行com端口,再次断开蓝牙连接。

总结buildroot中的步骤。

  1. 添加蓝牙固件。
  2. 添加bluez 5 utils。
  3. 将包从bluez 5.44更改为5.45
  4. 添加以上睡眠。 (删除bluez中的.stamp_build再次构建它)
  5. 从cmdline.txt
  6. 中删除/dev/ttyAMA0

    构建完成后,检查目标(pi3)

    1. BCM4343 hcd固件
    2. hci_uart.ko应该在那里
    3. 在busybox init的情况下,hci_uart没有运行(仅在systemd中) 所以只是modprobe hci_uart。运行lsmod以查看它正在运行。

      要启动服务并加载固件,请使用hciattach:

      hciattach /dev/ttyAMA0 bcm43xx 921600 noflow -
      

      启动bluetoothd守护程序:

      /usr/libexec/bluetooth/bluetoothd &
      

      使用bluetoothctl启动蓝牙硬件(开机和代理开启)。 现在你应该使用hcitool dev。

      看到它

      同样,如果你不删除叠加层,你将会超时。

      那就是它。现在应该看到hci设备。 你可以使用:

      看到它
      1. rfkill list(从busybox-menuconfig安装)
      2. hciconfig -a
      3. 上述步骤并未使控制台在Pi 3上正常工作,但这是另一回事。