Fedora

升級到 fedora 32 後藍牙停止工作

  • January 30, 2021

我有最近更新的 Fedora 32。我停電了,所以我需要關閉筆記型電腦的電源,在我再次啟動它後,藍牙停止工作(我不確定我是否在關機前更新了一些東西)。

這就是linux所說的:

$ uname -a
Linux jcubic 5.6.16-300.fc32.x86_64 #1 SMP Thu Jun 4 18:08:38 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux

$ dmesg | grep -i bluetooth
[    2.683570] Bluetooth: Core ver 2.22
[    2.683589] Bluetooth: HCI device and connection manager initialized
[    2.683592] Bluetooth: HCI socket layer initialized
[    2.683593] Bluetooth: L2CAP socket layer initialized
[    2.683595] Bluetooth: SCO socket layer initialized
[    2.693267] bluetooth hci0: Direct firmware load for qca/rampatch_usb_00000302.bin failed with error -2
[    2.693269] Bluetooth: hci0: failed to request rampatch file: qca/rampatch_usb_00000302.bin (-2)
[    8.209092] Bluetooth: BNEP (Ethernet Emulation) ver 1.3
[    8.209093] Bluetooth: BNEP filters: protocol multicast
[    8.209095] Bluetooth: BNEP socket layer initialized

$ locate rampatch_usb_00000302.bin
/usr/lib/firmware/qca/rampatch_usb_00000302.bin

$ lsmod | grep -i bluetooth
bluetooth             643072  12 btrtl,btintel,btbcm,bnep,btusb
ecdh_generic           16384  1 bluetooth
rfkill                 28672  8 bluetooth,dell_laptop,cfg80211

$ LC_ALL=C rfkill
ID TYPE      DEVICE      SOFT      HARD
0 bluetooth hci0   unblocked unblocked
1 wlan      phy0   unblocked unblocked

$ hciconfig up 
hci0:   Type: Primary  Bus: USB
   BD Address: 00:00:00:00:00:00  ACL MTU: 0:0  SCO MTU: 0:0
   DOWN 
   RX bytes:0 acl:0 sco:0 events:0 errors:0
   TX bytes:0 acl:0 sco:0 commands:0 errors:0

$ sudo systemctl status bluetooth
● bluetooth.service - Bluetooth service
    Loaded: loaded (/usr/lib/systemd/system/bluetooth.service; enabled; vendor preset: enable>
    Active: active (running) since Fri 2020-06-12 19:21:41 CEST; 55min ago
      Docs: man:bluetoothd(8)
  Main PID: 879 (bluetoothd)
    Status: "Running"
     Tasks: 1 (limit: 18735)
    Memory: 2.9M
    CGroup: /system.slice/bluetooth.service
            └─879 /usr/libexec/bluetooth/bluetoothd

cze 12 19:21:41 jcubic systemd[1]: Starting Bluetooth service...
cze 12 19:21:41 jcubic bluetoothd[879]: Bluetooth daemon 5.54
cze 12 19:21:41 jcubic systemd[1]: Started Bluetooth service.
cze 12 19:21:41 jcubic bluetoothd[879]: Starting SDP server
cze 12 19:21:41 jcubic bluetoothd[879]: Bluetooth management interface 1.15 initialized

我不知道發生了什麼,會不會是硬體故障?我在 grub 中只有一個用於 Fedora 32 的核心。最近我的筆記型電腦有時會發出奇怪的噪音,這可能是 CPU 的風扇。

編輯:

我找不到任何解決方案,所以我從 GitHub 複製了 Linux repo 的鏡像,似乎錯誤 -2 因為找不到文件或目錄:

#define    ENOENT       2  /* No such file or directory */

編輯:

我剛剛啟動了 Xubuntu 20.04 的 live DVD 並且藍牙正在工作,我正在向 Fedora 報告這個錯誤。

所以這是我的發現和我所做的步驟,我已經向Fedora 錯誤跟踪器報告了這個問題,他們建議刪除和添加核心模組:

# modprobe -r btusb
# modprobe btusb

它有點工作 dmesg 中的錯誤消失了,藍牙指示器消失了(不知道如何重新啟動它)但我能夠使用bluetoothctl,我能夠掃描設備,但配對不起作用。我的 GNU/Linux 系統嘗試連接,但隨後斷開連接並出現錯誤:

連接失敗:org.bluez.Error.Failed

經過一番努力,我解決了這個問題。在 bluez 中啟用調試日誌後,它顯示此錯誤:

連接錯誤:權限被拒絕 (13)

所以解決方案是刪除並再次配對設備:

$ bluetoothctl
[bluetooth]# devices
...
Device 04:FE:A1:57:6D:F3 JBL Flip 4
[bluetooth]# remove 04:FE:A1:57:6D:F3
[bluetooth]# scan on
[bluetooth]# pair 04:FE:A1:57:6D:F3
[bluetooth]# connect 04:FE:A1:57:6D:F3

注意: 這只是在 Fedora 中修復錯誤之前的解決方法。這也不是永久的解決方案,修復後可能會再次發生。

**注意2:**我多次遇到此問題,可能是核心中的錯誤,第二次後我不需要在bluetoothctl中刪除設備。刪除和添加核心模組就足夠了。

引用自:https://unix.stackexchange.com/questions/592567