我刚买了一款新的蓝牙耳机 Marley Exodus ANC,但它无法与 Ubuntu 21.04 中的 PC(Intel NUC)配对。当尝试从 GNOME 设置连接时,它会尝试配对,但它只是放弃而没有出现错误消息。
我还尝试使用以下方法手动连接bluetoothctl
:
$ bluetoothctl
[bluetooth]# show
Controller 04:EA:56:86:78:50 (public)
Name: saibot
Alias: saibot
Class: 0x003c0104
Powered: yes
Discoverable: no
DiscoverableTimeout: 0x00000000
Pairable: yes
UUID: Message Notification Se.. (00001133-0000-1000-8000-00805f9b34fb)
UUID: A/V Remote Control (0000110e-0000-1000-8000-00805f9b34fb)
UUID: OBEX Object Push (00001105-0000-1000-8000-00805f9b34fb)
UUID: Message Access Server (00001132-0000-1000-8000-00805f9b34fb)
UUID: PnP Information (00001200-0000-1000-8000-00805f9b34fb)
UUID: IrMC Sync (00001104-0000-1000-8000-00805f9b34fb)
UUID: Vendor specific (00005005-0000-1000-8000-0002ee000001)
UUID: Headset (00001108-0000-1000-8000-00805f9b34fb)
UUID: Headset AG (00001112-0000-1000-8000-00805f9b34fb)
UUID: A/V Remote Control Target (0000110c-0000-1000-8000-00805f9b34fb)
UUID: Generic Attribute Profile (00001801-0000-1000-8000-00805f9b34fb)
UUID: Phonebook Access Server (0000112f-0000-1000-8000-00805f9b34fb)
UUID: Audio Sink (0000110b-0000-1000-8000-00805f9b34fb)
UUID: Device Information (0000180a-0000-1000-8000-00805f9b34fb)
UUID: Generic Access Profile (00001800-0000-1000-8000-00805f9b34fb)
UUID: Audio Source (0000110a-0000-1000-8000-00805f9b34fb)
UUID: OBEX File Transfer (00001106-0000-1000-8000-00805f9b34fb)
Modalias: usb:v1D6Bp0246d0538
Discovering: no
Roles: central
Roles: peripheral
Roles: central-peripheral
Advertising Features:
ActiveInstances: 0x00 (0)
SupportedInstances: 0x06 (6)
SupportedIncludes: tx-power
SupportedIncludes: appearance
SupportedIncludes: local-name
SupportedSecondaryChannels: 1M
SupportedSecondaryChannels: 2M
SupportedSecondaryChannels: Coded
[bluetooth]# scan on
Discovery started
[NEW] Device 00:1E:7C:89:26:C8 Exodus ANC
[bluetooth]# connect 00:1E:7C:89:26:C8
Attempting to connect to 00:1E:7C:89:26:C8
Failed to connect: org.bluez.Error.Failed
[bluetooth]# pair 00:1E:7C:89:26:C8
Attempting to pair with 00:1E:7C:89:26:C8
Failed to pair: org.bluez.Error.AuthenticationTimeout
我还查找了系统错误:
$ sudo journalctl -xb
bluetoothd[1208]: 00:1E:7C:89:26:C8: error updating services: Function not implemented (38)
$ dmesh
Bluetooth: hci0: advertising data len corrected
我有另一款蓝牙耳机,我可以完美配对。我可以将 Exodus ANC 与我的 Android 手机完美配对。但我注意到,当将 Exodus ANC 与 Android 配对时,Android 会显示来自 Exodus ANC 的 PIN 码,然后我可以确认配对。这个 PIN 码可能会导致在 Ubuntu 中配对失败。我该怎么做才能在 Ubuntu 中配对这款耳机?
$ dpkg -l | grep blue
ii bluez 5.56-0ubuntu4.2 amd64 Bluetooth tools and daemons
ii bluez-cups 5.56-0ubuntu4.2 amd64 Bluetooth printer driver for CUPS
ii bluez-obexd 5.56-0ubuntu4.2 amd64 bluez obex daemon
ii gir1.2-gnomebluetooth-1.0:amd64 3.34.5-1 amd64 Introspection data for GnomeBluetooth
ii gnome-bluetooth 3.34.5-1 amd64 GNOME Bluetooth tools
ii libbluetooth3:amd64 5.56-0ubuntu4.2 amd64 Library to use the BlueZ Linux Bluetooth stack
ii libgnome-bluetooth13:amd64 3.34.5-1 amd64 GNOME Bluetooth tools - support library
rc libkf5bluezqt-data 5.80.0-0ubuntu1 all data files for bluez-qt
ii pulseaudio-module-bluetooth 1:14.2-1ubuntu1.1 amd64 Bluetooth module for PulseAudio sound server
ii python-bluez 0.22+really0.22-1build2 amd64 Python 2 wrappers around BlueZ for rapid bluetooth development
更新:
根据 fabatera 的指示添加额外的调试信息。
$ sudo systemctl stop bluetooth
$ sudo bluetoothd -d -C -E -n
bluetoothd[122796]: Bluetooth daemon 5.56
bluetoothd[122796]: src/agent.c:agent_ref() 0x5592e4338bd0: ref=2
bluetoothd[122796]: src/device.c:bonding_request_new() Requesting bonding for 00:1E:7C:89:26:C8
bluetoothd[122796]: src/agent.c:agent_ref() 0x5592e4338bd0: ref=3
bluetoothd[122796]: src/agent.c:agent_unref() 0x5592e4338bd0: ref=2
bluetoothd[122796]: src/adapter.c:suspend_discovery()
bluetoothd[122796]: src/adapter.c:adapter_bonding_attempt() hci0 bdaddr 00:1E:7C:89:26:C8 type 0 io_cap 0x04
bluetoothd[122796]: src/adapter.c:connect_failed_callback() hci0 00:1E:7C:89:26:C8 status 8
bluetoothd[122796]: plugins/policy.c:conn_fail_cb() status 8
bluetoothd[122796]: src/adapter.c:bonding_attempt_complete() hci0 bdaddr 00:1E:7C:89:26:C8 type 0 status 0x8
bluetoothd[122796]: src/device.c:device_bonding_complete() bonding 0x5592e433eb20 status 0x08
bluetoothd[122796]: src/device.c:device_bonding_failed() status 8
bluetoothd[122796]: src/agent.c:agent_unref() 0x5592e4338bd0: ref=1
bluetoothd[122796]: src/adapter.c:resume_discovery()
bluetoothd[122796]: src/adapter.c:pair_device_complete() Timeout (0x08)
bluetoothd[122796]: src/adapter.c:bonding_attempt_complete() hci0 bdaddr 00:1E:7C:89:26:C8 type 0 status 0x8
bluetoothd[122796]: src/device.c:device_bonding_complete() bonding (nil) status 0x08
bluetoothd[122796]: src/device.c:device_bonding_failed() status 8
bluetoothd[122796]: src/adapter.c:resume_discovery()
bluetoothd[122796]: src/device.c:connect_profiles() /org/bluez/hci0/dev_00_1E_7C_89_26_C8 (all), client :1.829
bluetoothd[122796]: src/device.c:connect_profiles() Resolving services for /org/bluez/hci0/dev_00_1E_7C_89_26_C8
bluetoothd[122796]: src/adapter.c:connect_failed_callback() hci0 00:1E:7C:89:26:C8 status 8
bluetoothd[122796]: plugins/policy.c:conn_fail_cb() status 8
bluetoothd[122796]: src/adapter.c:bonding_attempt_complete() hci0 bdaddr 00:1E:7C:89:26:C8 type 0 status 0x8
bluetoothd[122796]: src/device.c:device_bonding_complete() bonding (nil) status 0x08
bluetoothd[122796]: src/device.c:device_bonding_failed() status 8
bluetoothd[122796]: src/adapter.c:resume_discovery()
bluetoothd[122796]: src/device.c:search_cb() 00:1E:7C:89:26:C8: error updating services: Function not implemented (38)
bluetoothd[122796]: src/device.c:device_svc_resolved() /org/bluez/hci0/dev_00_1E_7C_89_26_C8 err -38
$ sudo btmon
Bluetooth monitor ver 5.56
= Note: Linux version 5.11.0-25-generic (x86_64)
= Note: Bluetooth subsystem version 2.22
= New Index: 04:EA:56:86:78:50 (Primary,USB,hci0)
= bluetoothd: Bluetooth daemon 5.56
@ MGMT Open: bluetoothd (privileged) version 1.19
# pair attempt:
@ MGMT Command: Pair Device (0x0019) plen 8 {0x0001} [hci0] 154.081112
BR/EDR Address: 00:1E:7C:89:26:C8 (Taiwick Limited)
Capability: KeyboardDisplay (0x04)
< HCI Command: Create Connection (0x01|0x0005) plen 13 #141 [hci0] 154.081177
Address: 00:1E:7C:89:26:C8 (Taiwick Limited)
Packet type: 0xcc18
DM1 may be used
DH1 may be used
DM3 may be used
DH3 may be used
DM5 may be used
DH5 may be used
Page scan repetition mode: R2 (0x02)
Page scan mode: Mandatory (0x00)
Clock offset: 0x0000
Role switch: Allow slave (0x01)
> HCI Event: Command Status (0x0f) plen 4 #142 [hci0] 154.197141
Create Connection (0x01|0x0005) ncmd 1
Status: Success (0x00)
> HCI Event: Connect Complete (0x03) plen 11 #143 [hci0] 186.684630
Status: LMP Response Timeout / LL Response Timeout (0x22)
Handle: 65535
Address: 00:1E:7C:89:26:C8 (Taiwick Limited)
Link type: ACL (0x01)
Encryption: Disabled (0x00)
@ MGMT Event: Connect Failed (0x000d) plen 8 {0x0001} [hci0] 186.684678
BR/EDR Address: 00:1E:7C:89:26:C8 (Taiwick Limited)
Status: Timeout (0x08)
@ MGMT Event: Command Complete (0x0001) plen 10 {0x0001} [hci0] 186.684696
Pair Device (0x0019) plen 7
Status: Timeout (0x08)
BR/EDR Address: 00:1E:7C:89:26:C8 (Taiwick Limited)
# connect attempt:
< HCI Command: Create Connection (0x01|0x0005) plen 13 #144 [hci0] 818.218687
Address: 00:1E:7C:89:26:C8 (Taiwick Limited)
Packet type: 0xcc18
DM1 may be used
DH1 may be used
DM3 may be used
DH3 may be used
DM5 may be used
DH5 may be used
Page scan repetition mode: R2 (0x02)
Page scan mode: Mandatory (0x00)
Clock offset: 0x0000
Role switch: Allow slave (0x01)
> HCI Event: Command Status (0x0f) plen 4 #145 [hci0] 818.333626
Create Connection (0x01|0x0005) ncmd 1
Status: Success (0x00)
> HCI Event: Connect Complete (0x03) plen 11 #146 [hci0] 850.041050
Status: LMP Response Timeout / LL Response Timeout (0x22)
Handle: 65535
Address: 00:1E:7C:89:26:C8 (Taiwick Limited)
Link type: ACL (0x01)
Encryption: Disabled (0x00)
@ MGMT Event: Connect Failed (0x000d) plen 8 {0x0001} [hci0] 850.041111
BR/EDR Address: 00:1E:7C:89:26:C8 (Taiwick Limited)
Status: Timeout (0x08)
= bluetoothd: src/device.c:search_cb() 00:1E:7C:89:26:C8: error updating services: Function not implemented (38) 850.045357
$ bluetoothctl
[bluetooth]# power on
Changing power on succeeded
[bluetooth]# agent on
Agent is already registered
[bluetooth]# default-agent
Default agent request successful
[bluetooth]# info 00:1E:7C:89:26:C8
Device 00:1E:7C:89:26:C8 (public)
Name: Exodus ANC
Alias: Exodus ANC
Class: 0x00240404
Icon: audio-card
Paired: no
Trusted: yes
Blocked: no
Connected: no
LegacyPairing: no
[bluetooth]# pair 00:1E:7C:89:26:C8
Attempting to pair with 00:1E:7C:89:26:C8
Failed to pair: org.bluez.Error.AuthenticationTimeout
[bluetooth]# connect 00:1E:7C:89:26:C8
Attempting to connect to 00:1E:7C:89:26:C8
Failed to connect: org.bluez.Error.Failed
更新2:
我刚刚在运行 Ubuntu 20.04 的 Dell Latitude 5280 笔记本电脑上测试了这些耳机,配对得很好!戴尔笔记本电脑使用的是Intel Wireless Bluetooth
(设备信息没有提供更多信息)。我的英特尔 NUC 有一个Bluetooth 9460/9560 Jefferson Peak
,也是英特尔的,配对失败。我还有一台联想 Thinkpad T14,但配对也失败了。所以我买了一个 USB 蓝牙适配器,ASUS Bluetooth Adapter USB-BT500
但配对仍然失败。我需要什么样的蓝牙适配器?
更新 3:
显然,更多人遇到了这些蓝牙适配器的问题:
更新 4:
我买了一堆 USB 蓝牙适配器,看看它们是否能用。以下是迄今为止的结果:
- 华硕 USB-BT500 蓝牙 5.0:无法配对
- Edimax BT-8500 蓝牙 5.0:无法配对
- TP-LINK UB400 蓝牙 4.0:可以配对,可以连接,连接到标准 USB 3.1 端口(蓝色端口)时声音不断抖动,但连接到 USB 3.1 常开端口(黄色端口)时声音正常。
答案1
尝试在此处添加更多信息:
在调试、兼容、实验中启动守护进程
systemctl stop bluetooth
bluetoohd -d -C -E -n
在另一个终端中:
btmon
在另一个终端中:
bluetoothctl
power on
pairable on
agent KeyboardOnly
default-agent
info <head phone mac address>
pair <head phone mac address>
答案2
这实际上不是一个解决方案,而是一种变通方法。我在几台不同的计算机上尝试了这些耳机,所有计算机都运行 Ubuntu 20.04,并使用不同的蓝牙 USB 适配器。在某些计算机上,我可以毫无问题地配对这些耳机,而在其他计算机上配对失败。因此,配对是否有效显然取决于蓝牙适配器。请注意,我测试的所有计算机都可以与不同的耳机配对,因此并不是蓝牙适配器有缺陷。
无论如何,这些是我迄今为止的结果。也许这可以帮助您找到真正适用于这些耳机的硬件:
作品:
- 英特尔 NUC NUC6i3SYH(英特尔无线蓝牙)
- 联想 Thinkpad T420s(英特尔无线蓝牙)
- 戴尔 Latitude 5280(英特尔无线蓝牙)
- TP-LINK UB400 蓝牙 4.0 适配器
不起作用:
- 英特尔 NUC NUC8i3BEH(蓝牙 9460/9560 Jefferson Peak)
- 联想 Thinkpad T14 Gen 2(英特尔无线蓝牙)
- 华硕 USB-BT500 蓝牙 5.0 适配器
- Edimax BT-8500 蓝牙 5.0 适配器
答案3
我在联想上解决了这个问题。我在 Airpods Max 上也遇到了同样的问题,这是我在 House of Marley ANC 之后买的新耳机。
sudo nano /etc/bluetooth/main.conf
查找行:#ControllerMode = dual
用。。。来代替:ControllerMode = bredr
保存并退出
sudo /etc/init.d/bluetooth restart