在 Raspbian Buster,Raspberry Pi 4 中重新启动时有时未加载蓝牙模块

Bluetooth module not loaded sometimes on reboot in Raspbian Buster, Raspberry Pi 4

我在Raspbian Buster上写了一个bluez应用程序,Raspberry Pi 4.在某些重启中,没有加载蓝牙模块和服务。

在使用命令检查 bluetooth.service 时:$ sudo systemctl status bluetooth.service, 我明白了,Condition check resulted in Bluetooth service being skipped

我检查了 $ lsmod$ dmesg 日志以了解问题和 non-issue 条件。

我在lsmod中发现的差异如下所示:

我在dmesg日志中发现的差异如下图所示:

左边是问题案例,右边是非问题案例。

我怎样才能解决这个问题,使蓝牙始终如一地工作? 我正在使用 Raspbian Lite OS 2020-02-14.

更新 1 [2021 年 2 月 3 日]:我检查了问题案例的 journalctl 日志,发现了这个:

Feb 03 11:52:18 pi btuart[373]: Failed to reset chip, invalid HCI event
Feb 03 11:52:18 pi btuart[373]: Can't initialize device: Success
Feb 03 11:52:18 pi btuart[373]: bcm43xx_init
Feb 03 11:52:18 pi systemd[1]: hciuart.service: Control process exited, code=exited, status=1/FAILURE
Feb 03 11:52:18 pi systemd[1]: hciuart.service: Failed with result 'exit-code'.
Feb 03 11:52:18 pi systemd[1]: Failed to start Configure Bluetooth Modems connected by UART.

更新 2 [2021 年 2 月 3 日]:我的 /boot/config.txt 内容:

dtparam=i2c_arm=on

dtparam=spi=on
dtoverlay=mcp2515-can0,oscillator=8000000,interrupt=25
dtoverlay=spi1-1cs

# Enable audio (loads snd_bcm2835)
dtparam=audio=on

[pi4]
# Enable DRM VC4 V3D driver on top of the dispmanx display stack
dtoverlay=vc4-fkms-v3d
max_framebuffers=2

[all]
dtoverlay=vc4-fkms-v3d

disable_splash=1
enable_uart=1
max_usb_current=1

dtoverlay=uart2
dtoverlay=i2c-rtc,ds3231
gpu_mem=256

我的cmdline.txt内容:

console=tty1 root=PARTUUID=738a4d67-02 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait logo.nologo vt.global_cursor_default=0 consoleblank=1 loglevel=1 quiet

我的方向传感器连接到 Raspberry Pi 4 的 UART2。根据 @svin83 的建议,我禁用了 UART2。之后我重新启动了 Pi 4 10 次,蓝牙一直正常工作。

我在 Raspberry Pi 4 中将传感器移至 I2C-3 总线。

根据文档,UART Configuration,UART2 不应该干扰蓝牙功能,但事实证明确实如此。