【问题标题】:bcm43xx_init Initialization timed out with buildroot raspberry pi 3 hciattachbcm43xx_init 使用 buildroot raspberry pi 3 hciattach 初始化超时
【发布时间】:2017-11-17 03:58:28
【问题描述】:

我正在尝试让蓝牙在 Raspberry Pi 3 中工作。

我正在使用 buildroot:

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

运行:

hciattach /dev/ttyAMA0 bcm43xx 921600 noflow -

输出显示:

bcm43xx_init
Initialization timed out

试过115200,还是一样。

注意事项:

  1. 使用 BlueZ 3 时,我收到了 invalid id
  2. 我读到它与 BlueZ 版本有某种关系,所以我确实采用了最新的

以上都是经过深度搜索。

那么我在这里缺少什么?

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

谢谢大家!

【问题讨论】:

    标签: bluetooth raspberry-pi3 bluez buildroot


    【解决方案1】:

    主要问题是buildroot添加了pi3-miniuart-bt覆盖 在 config.txt 中。

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

    在树莓派 3 中,ttyAMA0 被分配给蓝牙,并且 pi3-miniuart-bt 将其恢复为串行 com 端口,从而再次断开蓝牙。

    总结一下buildroot中的步骤。

    1. 添加蓝牙固件。
    2. 添加 bluez 5 实用程序。
    3. 将软件包从 bluez 5.44 更改为 5.45
    4. 添加上述睡眠。 (删除 bluez 中的 .stamp_build 以重新构建)
    5. 从 cmdline.txt 中删除 /dev/ttyAMA0

    构建后,检查目标(pi3)

    1. BCM4343 hcd 固件
    2. hci_uart.ko 应该在那里

    在busybox初始化的情况下hci_uart没有运行(仅在systemd中) 所以只是modprobe hci_uart。运行 lsmod 以查看它是否正在运行。

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

    hciattach /dev/ttyAMA0 bcm43xx 921600 noflow -
    

    启动蓝牙守护进程:

    /usr/libexec/bluetooth/bluetoothd &
    

    使用bluetoothctl 启动蓝牙硬件(打开电源并打开代理)。 现在您应该使用 hcitool dev 看到它。

    同样,如果您不删除覆盖,您将超时。

    那个。现在应该可以看到 hci 设备。 您可以使用以下方式查看它:

    1. rfkill list(从busybox-menuconfig安装)
    2. hciconfig -a

    上述步骤无法让控制台在 Pi 3 上正常工作,但这是另一回事。

    【讨论】:

      【解决方案2】:

      正如添加固件的提交中所述,很遗憾,您需要修补 bluez5_utils 才能使固件正常工作:

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

      【讨论】:

      • 我正在使用 buildroot 05.2017 所以这个补丁已经存在(我按照代码并确保)但是没有创建到 /etc/firmware 的链接,所以我在 raspi 中手动创建了它。但我仍然有时间
      • 我使用的是busybox init而不是systemd(可能是这个问题吗?)因为bluez脚本使用systemd。
      • 即使您使用的是 Buildroot 2017.05,bluez5_utils 仍然没有使用上面提交中提到的补丁进行修补。有关(丑陋的)补丁,请参阅spinics.net/lists/linux-bluetooth/msg69470.html
      • 我添加了它没有帮助的补丁。所以我添加了一些 printf 来看看在哪里:它发生在第一次调用 bcm43xx_reset 和 read_hci_event 内部是返回超时的那个。 (我没有 /dev/hci0)
      猜你喜欢
      • 2018-03-24
      • 1970-01-01
      • 2018-01-10
      • 2021-10-26
      • 2019-06-03
      • 2021-07-11
      • 1970-01-01
      • 1970-01-01
      • 2016-07-03
      相关资源
      最近更新 更多