解决固件加载失败问题

过程描述


系统超动时屏幕上显示:

[ 3.107381] bluetooth hci0: firmware: failed to load brcm/BCM20702A1-0a5c-21f4.hcd (-2)

查看日志相关内容:

sudo cat /var/log/messages | grep hci0

显示:

Dec  8 22:24:51 debian kernel: [ 3451.543383] Bluetooth: hci0: BCM: Patch brcm/BCM20702A1-0a5c-21f4.hcd not found
Dec  8 23:26:19 debian kernel: [ 6564.565587] Bluetooth: hci0: BCM: chip id 63
Dec  8 23:26:19 debian kernel: [ 6564.581819] Bluetooth: hci0: BCM20702A
Dec  8 23:26:19 debian kernel: [ 6564.582583] Bluetooth: hci0: BCM20702A1 (001.002.014) build 0000
Dec  8 23:26:19 debian kernel: [ 6564.589301] bluetooth hci0: Direct firmware load for brcm/BCM20702A1-0a5c-21f4.hcd failed with error -2

上网查找相关驱动,找到https://github.com/winterheart/broadcom-bt-firmware项目,下载得到BCM20702A1-0a5c-21f4.hcd,按提示创建目录并拷贝到/lib/firmware/brcm之中,重启后不再显示固件加载失败。

总结


日志

学会看日志文件,查找问题的具体信息。一般屏幕显示的内容在/var/log/messages之中。

固件

了解解决固件驱动缺失的基本思路。

固件所在的目录一般为:

  • /lib/firmware/$(uname -r)
  • /lib/firmware
  • /usr/local/lib/firmware
  • /usr/lib/hotplug/firmware

确定所需的固件名称

如前面警告提示,在failed to load后面显示的部分即为固件名称BCM20702A1-0a5c-21f4.hcd

找到缺失的固件

将找到的固件文件拷贝到默认的固件目录之中后重启系统即可。

来源:
https://www.cyberciti.biz/faq/linux-log-files-location-and-how-do-i-view-logs-files/
https://raphaelhertzog.com/2011/03/14/missing-firmware-in-debian-learn-how-to-deal-with-the-problem/


本文旨在学习交流,唯恐以偏盖全、混淆视听,请高手指正。

1 个赞

前面有高精度时间戳的应该是内核日志 可以用dmesg看本次启动的内核日志日志
日志的流向应该是这样
内核日志 - krnl ring buf - systemd-journald - rsyslog - /var/log/messages
日志是否出现在 /var/log/messages 中取决于/etc/rsyslog.conf的配置 看了一下 没看懂
以前用ubuntu的时候/var/log/messages好像是空的