archlinuxでbluetooth使えない(解決)

$ bluetoothctl
Agent registered
[bluetooth]# devices
No default controller available
$ rfkill block bluetooth
$ rfkill unblock bluetooth
$ sudo systemctl restart bluetooth

ファームウェアがないっぽい

[[email protected] ~]$ lspci -nnk | grep -iA3 net; lsusb; dmesg | egrep -i 'blue|firm'
03:00.0 Ethernet controller [0200]: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller [10ec:8168] (rev 10)
        Subsystem: Lenovo RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller [17aa:5068]
        Kernel driver in use: r8169
        Kernel modules: r8169
04:00.0 Non-Volatile memory controller [0108]: Toshiba Corporation BG3 NVMe SSD Controller [1179:0113] (rev 01)
--
05:00.0 Network controller [0280]: Realtek Semiconductor Co., Ltd. RTL8821CE 802.11ac PCIe Wireless Network Adapter [10ec:c821]
        Subsystem: Lenovo RTL8821CE 802.11ac PCIe Wireless Network Adapter [17aa:c024]
        Kernel driver in use: rtl8821ce
        Kernel modules: 8821ce
06:00.0 SD Host controller [0805]: O2 Micro, Inc. SD/MMC Card Reader Controller [1217:8621] (rev 01)
bash: lsusb: command not found
[    0.267795] Spectre V2 : Enabling Restricted Speculation for firmware calls
[    0.763682] ACPI: [Firmware Bug]: BIOS _OSI(Linux) query ignored
[    2.558469] usb 1-5: Product: Bluetooth Radio 
[    3.438041] thinkpad_acpi: rfkill switch tpacpi_bluetooth_sw: radio is blocked
[    3.521690] Bluetooth: Core ver 2.22
[    3.521705] Bluetooth: HCI device and connection manager initialized
[    3.521711] Bluetooth: HCI socket layer initialized
[    3.521713] Bluetooth: L2CAP socket layer initialized
[    3.521716] Bluetooth: SCO socket layer initialized
[    3.616197] platform regulatory.0: Direct firmware load for regulatory.db failed with error -2
[    3.901198] i915 0000:00:02.0: Direct firmware load for i915/kbl_dmc_ver1_04.bin failed with error -2
[    3.901201] i915 0000:00:02.0: Failed to load DMC firmware i915/kbl_dmc_ver1_04.bin. Disabling runtime power management.
[    3.901202] i915 0000:00:02.0: DMC firmware homepage: https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/tree/i915
[    4.341177] usb 1-5: Product: Bluetooth Radio 
[    4.345303] Bluetooth: hci0: RTL: examining hci_ver=08 hci_rev=000c lmp_ver=08 lmp_subver=8821
[    4.346364] Bluetooth: hci0: RTL: rom_version status=0 version=1
[    4.346365] Bluetooth: hci0: RTL: loading rtl_bt/rtl8821c_fw.bin
[    4.346377] bluetooth hci0: Direct firmware load for rtl_bt/rtl8821c_fw.bin failed with error -2
[    4.346378] Bluetooth: hci0: RTL: firmware file rtl_bt/rtl8821c_fw.bin not found
[    4.391054] Bluetooth: BNEP (Ethernet Emulation) ver 1.3
[    4.391055] Bluetooth: BNEP filters: protocol multicast
[    4.391065] Bluetooth: BNEP socket layer initialized
[    4.715909] r8169 0000:03:00.0: Direct firmware load for rtl_nic/rtl8168g-3.fw failed with error -2
[    4.715912] r8169 0000:03:00.0: Unable to load firmware rtl_nic/rtl8168g-3.fw (-2)
[    4.986955] psmouse serio2: trackpoint: Elan TrackPoint firmware: 0x11, buttons: 3/3
[  323.676457] usb 1-5: Product: Bluetooth Radio 
[  323.683450] Bluetooth: hci0: RTL: examining hci_ver=08 hci_rev=000c lmp_ver=08 lmp_subver=8821
[  323.684907] Bluetooth: hci0: RTL: rom_version status=0 version=1
[  323.684914] Bluetooth: hci0: RTL: loading rtl_bt/rtl8821c_fw.bin
[  323.684979] bluetooth hci0: Direct firmware load for rtl_bt/rtl8821c_fw.bin failed with error -2
[  323.684984] Bluetooth: hci0: RTL: firmware file rtl_bt/rtl8821c_fw.bin not found

$ yay -S rtl8821ce-dkms-git

RTL8821CEのドライバーを入れてみたが解決しない。

[RTL8821CE bluetooth linux driver] などで検索してみる

bluetoothctl No default controller available - Stack Overflow

ここから↑で足りないファイルを取って来る
https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/tree/

取ってきたファイルを以下に記載する
$ sudo vim /etc/mkinitcpio.conf

# FILES
# This setting is similar to BINARIES above, however, files are added
# as-is and are not parsed in any way.  This is useful for config files.
FILES=(/usr/lib/firmware/i915/kbl_dmc_ver1_04.bin /usr/lib/firmware/rtl_nic/rtl8168g-3.fw /usr/lib/firmware/rtl_bt/rtl8821c_fw.bin /usr/lib/firmware/rtl_bt/rtl8821c_config.bin)
$ sudo mkinitcpio
==> Starting dry run: 5.6.14-arch1-1
  -> Running build hook: [base]
  -> Running build hook: [udev]
  -> Running build hook: [autodetect]
  -> Running build hook: [modconf]
  -> Running build hook: [block]
  -> Running build hook: [filesystems]
  -> Running build hook: [keyboard]
  -> Running build hook: [fsck]
==> Generating module dependencies
==> Dry run complete, use -g IMAGE to generate a real image

lsusbコマンドがないので以下でインストールできるらしい

sudo pacman -S usbutils

おお!これで接続できたぞ!

決めては以下コマンドのエラーメッセージを確認して、解消だった

$ lspci -nnk | grep -iA3 net; lsusb; dmesg | egrep -i 'blue|firm'

Comments

タイトルとURLをコピーしました