蓝牙固件 rtl8821a_fw.bin 在 Debian 中加载失败

蓝牙固件 rtl8821a_fw.bin 在 Debian 中加载失败

我在 Lenovo IdeaPad 110 上使用 Debian 9.4。在打开的屏幕中,我收到以下消息;

[12...] rt18821ae 0000:02:00.0: firmware: failed to load rtlwifi/rt18821aefw.bin (-2)
[12...] rt18821ae 0000:02:00.0: firmware: failed to load rtlwifi/rt18821aefw.wowlan.bin
[12...] bluetooth hci0: firmware: failed to load rtl_bt/rtl18821a_config.bin (-2)
[12...] Bluetooth: hci0: Failed to load rtl_bt/rt18821a_config.bin
[12...] bluetooth hci0: firmware: failed to load rtl_bt/rtl18821a_fw.bin (-2)
[12...] Bluetooth: hci0: Failed to load rtl_bt/rt18821a_fw.bin
[23...] r8169 0000:03:00.0: firmware: failed to load rtl_nic/rtl8106e-1.fw (-2)

当我写信时,dmesg | grep firmware我收到以下消息;

[   11.605280] rtl8821ae: Using firmware rtlwifi/rtl8821aefw.bin
[   11.605290] rtl8821ae: Using firmware rtlwifi/rtl8821aefw_wowlan.bin
[   11.630704] rtl8821ae 0000:02:00.0: firmware: failed to load
rtlwifi/rtl8821aefw_wowlan.bin (-2)
[   11.630712] rtl8821ae 0000:02:00.0: Direct firmware load for
rtlwifi/rtl8821aefw_wowlan.bin failed with error -2
[   11.642658] rtl8821ae 0000:02:00.0: firmware: direct-loading firmware
rtlwifi/rtl8821aefw.bin
[   12.685508] bluetooth hci0: firmware: failed to load
rtl_bt/rtl8821a_config.bin (-2)
[   12.685511] bluetooth hci0: Direct firmware load for
rtl_bt/rtl8821a_config.bin failed with error -2
[   12.685526] bluetooth hci0: firmware: failed to load
rtl_bt/rtl8821a_fw.bin (-2)
[   12.685527] bluetooth hci0: Direct firmware load for
rtl_bt/rtl8821a_fw.bin failed with error -2
[   23.375275] r8169 0000:03:00.0: firmware: direct-loading firmware
rtl_nic/rtl8106e-1.fw

所以基本上,我的电脑无法加载三个文件;

  • rtlwifi/rtl8821aefw_wowlan.bin

  • rtl_bt/rtl8821a_config.bin

  • rtl_bt/rtl8821a_fw.bin

我添加了非免费源/etc/apt/sources.list并安装了firmware-realtek

sudo apt update
sudo apt-get install firmware-realtek

rtl_bt/rtl8821a_fw.bin可以位于/lib/firmware/rtl_bt/并且rtlwifi/rtl8821aefw_wowlan.bin可以位于/lib/firmware/rtlwifi/.但我仍然收到这些错误,并且我的蓝牙无法工作,但 Wi-Fi 可以工作。有人有想法吗,如何解决这个问题?

编辑:内核版本:4.9.0-6-amd64并且输出apt-cache policy firmware-realtek是;

firmware-realtek:
  Installed: 20161130-3
  Candidate: 20161130-3
  Version table:
 *** 20161130-3 500
        500 http://httpredir.debian.org/debian stretch/non-free amd64 Packages
        500 http://httpredir.debian.org/debian stretch/non-free i386 Packages
        100 /var/lib/dpkg/status
     0.43 500
        500 http://httpredir.debian.org/debian jessie/non-free amd64 Packages
        500 http://httpredir.debian.org/debian jessie/non-free i386 Packages

但经过多次重新启动后,现在蓝牙可以正常工作了。即使config文件仍然丢失,我一开始就遇到错误。我对蓝牙的主要用途是声音,当我连接蓝牙扬声器时,声音非常失真并且来自深处。我还不知道这是否与丢失的config文件有关,我希望不会。无论如何,我会检查这个是否已解决,即使我不太清楚所有过程。

答案1

您的 wifi 工作的原因是它rtlwifi/rtl8821aefw.bin已正确加载。 IIRC 还有选修的固件文件,如果缺少这些文件,错误消息为Direct firmware load for {name} failed with error %d.由于这是误导性的,内核开发人员在 2018 年 5 月同意他们应该添加一个firmware_request_nowarn()不会抛出这些消息的新调用。

该软件包firmware-realtek包含您缺少的文件。请将 的输出添加apt-cache policy firmware-realtek到您的问题中。

答案2

如果您看到以下错误,rtl8821a 固件未随 Linux 发行版一起提供:

Direct firmware load for rtl_bt/rtl8821a_fw.bin failed with error -2
firmware file rtl_bt/rtl8821a_fw.bin not found

执行以下命令来安装固件。

cd /tmp
# Download rtl8821a_config and rtl8821a_fw from https://github.com/Realtek-OpenSource/android_hardware_realtek
wget https://raw.githubusercontent.com/Realtek-OpenSource/android_hardware_realtek/rtk1395/bt/rtkbt/Firmware/BT/rtl8821a_config
wget https://raw.githubusercontent.com/Realtek-OpenSource/android_hardware_realtek/rtk1395/bt/rtkbt/Firmware/BT/rtl8821a_fw
mv rtl8821a_config /lib/firmware/rtl_bt/rtl8821a_config.bin
mv rtl8821a_fw /lib/firmware/rtl_bt/rtl8821a_fw
sudo modprobe btusb
sudo systemctl start bluetooth.service
hciconfig -a # will show that Bluetooth is up now

答案3

错误:

> bluetooth hci0: Direct firmware load for rtl_bt/rtl8821a_config.bin failed with error -2

Realtek不提供“rtl8821a_config”的配置,您可以与rtl8723d_config进行符号链接。

检查此处是否列出了失败的文件:

> ls /lib/firmware/rtl_bt/

如果没有,请使用缺少的文件的相同名称创建指向其他固件配置的符号链接:

> sudo ln -s /lib/firmware/rtl_bt/rtl8723d_config.bin.xz /lib/firmware/rtl_bt/rtl8821a_config.bin.xz

重新启动并检查是否解决。

> dmesg | grep Bluetooth
[    3.604451] usb 1-1.2: Product: Bluetooth Radio 
[    9.455922] Bluetooth: Core ver 2.22
[    9.455991] Bluetooth: HCI device and connection manager initialized
[    9.455998] Bluetooth: HCI socket layer initialized
[    9.456001] Bluetooth: L2CAP socket layer initialized
[    9.456016] Bluetooth: SCO socket layer initialized
[    9.673364] Bluetooth: BNEP (Ethernet Emulation) ver 1.3
[    9.673366] Bluetooth: BNEP filters: protocol multicast
[    9.673370] Bluetooth: BNEP socket layer initialized
[    9.820652] Bluetooth: hci0: RTL: examining hci_ver=06 hci_rev=000a lmp_ver=06 lmp_subver=8821
[    9.821622] Bluetooth: hci0: RTL: rom_version status=0 version=1
[    9.821623] Bluetooth: hci0: RTL: loading rtl_bt/rtl8821a_fw.bin
[    9.828456] Bluetooth: hci0: RTL: loading rtl_bt/rtl8821a_config.bin
[    9.830156] Bluetooth: hci0: RTL: cfg_sz 10, total sz 17438
[   10.263579] Bluetooth: hci0: RTL: fw version 0x0e2fa041
[   39.206147] Bluetooth: RFCOMM TTY layer initialized
[   39.206155] Bluetooth: RFCOMM socket layer initialized
[   39.206162] Bluetooth: RFCOMM ver 1.11

一切正常! (openSUSE 风滚草)

相关内容