Fedora

在 Fedora 上通過藍牙配對 Bose QC 35

  • October 30, 2019

我正在使用 Gnome Shell 執行 Fedora 24。我嘗試通過藍牙配對我的新 Bose QuietComfort 35。

我開始使用 Gnome 界面。不幸的是,這種聯繫似乎不成立。它顯示為不斷連接/斷開:

https://youtu.be/eUZ9D9rGUZY

我的下一步是使用命令行執行一些檢查。首先,我檢查了藍牙服務是否正在執行:

$ sudo systemctl status bluetooth
● bluetooth.service - Bluetooth service
  Loaded: loaded (/usr/lib/systemd/system/bluetooth.service; enabled; vendor preset: enabled)
  Active: active (running) since dim. 2016-06-26 11:19:24 CEST; 14min ago
    Docs: man:bluetoothd(8)
Main PID: 932 (bluetoothd)
  Status: "Running"
   Tasks: 1 (limit: 512)
  Memory: 2.1M
     CPU: 222ms
  CGroup: /system.slice/bluetooth.service
          └─932 /usr/libexec/bluetooth/bluetoothd

juin 26 11:19:24 leonard systemd[1]: Starting Bluetooth service...
juin 26 11:19:24 leonard bluetoothd[932]: Bluetooth daemon 5.40
juin 26 11:19:24 leonard bluetoothd[932]: Starting SDP server
juin 26 11:19:24 leonard bluetoothd[932]: Bluetooth management interface 1.11 initialized
juin 26 11:19:24 leonard bluetoothd[932]: Failed to obtain handles for "Service Changed" characteristic
juin 26 11:19:24 leonard systemd[1]: Started Bluetooth service.
juin 26 11:19:37 leonard bluetoothd[932]: Endpoint registered: sender=:1.68 path=/MediaEndpoint/A2DPSource
juin 26 11:19:37 leonard bluetoothd[932]: Endpoint registered: sender=:1.68 path=/MediaEndpoint/A2DPSink
juin 26 11:20:26 leonard bluetoothd[932]: No cache for 08:DF:1F:DB:A7:8A

然後,我嘗試遵循Archlinux wiki的一些解釋,但沒有成功。配對失敗 配對失敗: org.bluez.Error.AuthenticationFailed

$ sudo bluetoothctl 
[NEW] Controller 00:1A:7D:DA:71:05 leonard [default]
[NEW] Device 08:DF:1F:DB:A7:8A Bose QuietComfort 35
[NEW] Device 40:EF:4C:8A:AF:C6 EDIFIER Luna Eclipse
[bluetooth]# agent on
Agent registered
[bluetooth]# scan on
Discovery started
[CHG] Controller 00:1A:7D:DA:71:05 Discovering: yes
[CHG] Device 08:DF:1F:DB:A7:8A RSSI: -77
[CHG] Device 08:DF:1F:DB:A7:8A UUIDs: 0000febe-0000-1000-8000-00805f9b34fb
[CHG] Device 08:DF:1F:DB:A7:8A RSSI: -69
[CHG] Device 08:DF:1F:DB:A7:8A UUIDs: 0000febe-0000-1000-8000-00805f9b34fb
[CHG] Device 08:DF:1F:DB:A7:8A UUIDs: 0000110d-0000-1000-8000-00805f9b34fb
[CHG] Device 08:DF:1F:DB:A7:8A UUIDs: 0000110b-0000-1000-8000-00805f9b34fb
[CHG] Device 08:DF:1F:DB:A7:8A UUIDs: 0000110e-0000-1000-8000-00805f9b34fb
[CHG] Device 08:DF:1F:DB:A7:8A UUIDs: 0000110f-0000-1000-8000-00805f9b34fb
[CHG] Device 08:DF:1F:DB:A7:8A UUIDs: 00001130-0000-1000-8000-00805f9b34fb
[CHG] Device 08:DF:1F:DB:A7:8A UUIDs: 0000112e-0000-1000-8000-00805f9b34fb
[CHG] Device 08:DF:1F:DB:A7:8A UUIDs: 0000111e-0000-1000-8000-00805f9b34fb
[CHG] Device 08:DF:1F:DB:A7:8A UUIDs: 00001108-0000-1000-8000-00805f9b34fb
[CHG] Device 08:DF:1F:DB:A7:8A UUIDs: 00001131-0000-1000-8000-00805f9b34fb
[CHG] Device 08:DF:1F:DB:A7:8A UUIDs: 00000000-deca-fade-deca-deafdecacaff
[bluetooth]# devices
Device 08:DF:1F:DB:A7:8A Bose QuietComfort 35
Device 40:EF:4C:8A:AF:C6 EDIFIER Luna Eclipse
[CHG] Device 08:DF:1F:DB:A7:8A RSSI: -82
[CHG] Device 08:DF:1F:DB:A7:8A RSSI: -68
[CHG] Device 08:DF:1F:DB:A7:8A RSSI: -79
[bluetooth]# trust 08:DF:1F:DB:A7:8A
Changing 08:DF:1F:DB:A7:8A trust succeeded
[bluetooth]# pair 08:DF:1F:DB:A7:8A
Attempting to pair with 08:DF:1F:DB:A7:8A
[CHG] Device 08:DF:1F:DB:A7:8A Connected: yes
Failed to pair: org.bluez.Error.AuthenticationFailed
[CHG] Device 08:DF:1F:DB:A7:8A Connected: no

我試圖禁用 SSPMode 但它似乎沒有效果:

$ sudo hciconfig hci0 sspmode 0

當我使用 bluetoothctl 時,journalctl 會記錄以下內容:

juin 26 11:37:21 leonard sudo[4348]: lpellegr : TTY=pts/2 ; PWD=/home/lpellegr ; USER=root ; COMMAND=/bin/bluetoothctl
juin 26 11:37:21 leonard audit[4348]: USER_CMD pid=4348 uid=1000 auid=4294967295 ses=4294967295 subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 msg='cwd="/home/lpellegr" cmd="bluetoothctl" terminal=pt
juin 26 11:37:21 leonard audit[4348]: CRED_REFR pid=4348 uid=0 auid=4294967295 ses=4294967295 subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 msg='op=PAM:setcred grantors=pam_env,pam_fprintd acct="roo
juin 26 11:37:21 leonard sudo[4348]: pam_systemd(sudo:session): Cannot create session: Already occupied by a session
juin 26 11:37:21 leonard audit[4348]: USER_START pid=4348 uid=0 auid=4294967295 ses=4294967295 subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 msg='op=PAM:session_open grantors=pam_keyinit,pam_limits,
juin 26 11:37:21 leonard sudo[4348]: pam_unix(sudo:session): session opened for user root by (uid=0)
juin 26 11:38:06 leonard bluetoothd[932]: No cache for 08:DF:1F:DB:A7:8A

不幸的是,我不明白輸出。歡迎任何想法或幫助。我很迷茫。

我使用的藍牙接收器是 CSL-Computer 的 USB 加密狗。Bluetoothctl 版本是 5.40。我正在執行核心 4.5.7-300.fc24.x86_64。

以下是我的藍牙適配器支持的功能:

hciconfig -a hci0 features
hci0:   Type: BR/EDR  Bus: USB
   BD Address: 00:1A:7D:DA:71:05  ACL MTU: 310:10  SCO MTU: 64:8
   Features page 0: 0xff 0xff 0x8f 0xfe 0xdb 0xff 0x5b 0x87
       <3-slot packets> <5-slot packets> <encryption> <slot offset> 
       <timing accuracy> <role switch> <hold mode> <sniff mode> 
       <park state> <RSSI> <channel quality> <SCO link> <HV2 packets> 
       <HV3 packets> <u-law log> <A-law log> <CVSD> <paging scheme> 
       <power control> <transparent SCO> <broadcast encrypt> 
       <EDR ACL 2 Mbps> <EDR ACL 3 Mbps> <enhanced iscan> 
       <interlaced iscan> <interlaced pscan> <inquiry with RSSI> 
       <extended SCO> <EV4 packets> <EV5 packets> <AFH cap. slave> 
       <AFH class. slave> <LE support> <3-slot EDR ACL> 
       <5-slot EDR ACL> <sniff subrating> <pause encryption> 
       <AFH cap. master> <AFH class. master> <EDR eSCO 2 Mbps> 
       <EDR eSCO 3 Mbps> <3-slot EDR eSCO> <extended inquiry> 
       <LE and BR/EDR> <simple pairing> <encapsulated PDU> 
       <non-flush flag> <LSTO> <inquiry TX power> <EPC> 
       <extended features> 
   Features page 1: 0x03 0x00 0x00 0x00 0x00 0x00 0x00 0x00

該配對與 EDIFIER Luna Eclipse 揚聲器配合良好。我懷疑這個問題確實與我嘗試配置的耳機有關。

我也有這些耳機,還有一台執行 Fedora 24 的攜帶式筆記型電腦。在與 IRC 上的一位 Bluez 開發人員聊天后,我的工作正常了。下面是我找到的。(請注意,我對藍牙知之甚少,因此我可能使用了不正確的術語。)

耳機支持(或至少說他們支持)藍牙 LE,但不支持 LE 進行配對。Bluez 尚不支持此功能,除了在配置文件中靜態設置外,無法設置支持的 BT 模式。不過,您可以通過普通藍牙使用耳機。這恰好是 Bluez 4 工作的原因。它並不真正支持 LE。

因此,創建 /etc/bluetooth/main.conf。Fedora 24 沒有這個文件,所以要麼從Upstream獲取一個副本,找到包含的行

#ControllerMode = dual

並將其更改為:

ControllerMode = bredr

或創建一個僅包含以下內容的新文件:

[General]
ControllerMode = bredr

然後重新啟動藍牙並配對。(我是通過 bluetoothctl 手動完成的,但只使用藍牙管理器就可以了。)

現在,這對我有用,但如果你不強制 pulseaudio 使用 A2DP-Sink 協議,耳機會因為某種原因宣布你有來電。但是,我的滑鼠需要藍牙 LE,所以我進去並刪除了 ControllerMode 線。而且……耳機仍然可以工作,滑鼠也一樣。我想一旦他們配對,一切都會好起來的。

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