问题: 当我的蓝牙耳机(auvisio ZX-3182)自动连接到我的 Ubuntu 20.04 时,蓝牙守护进程会确认连接,
~$ hcitool con
Connections:
> ACL 76:XX:XX:XX:XX:75 handle 256 state 1 lm MASTER
但是 PulseAudio (15.0) 不会自动将连接的蓝牙设备识别为声卡
~$ pactl list sinks short
0 alsa_output.pci-0000_00_1f.3.analog-stereo module-alsa-card.c s16le 2ch 48000Hz RUNNING
~$ pacmd list-cards
1 card(s) available.
index: 0
name: <alsa_card.pci-0000_00_1f.3>
driver: <module-alsa-card.c>
尽管耳机具有声卡的功能:
~$ hcitool info 76:XX:XX:XX:XX:75
Requesting information ...
BD Address: 76:XX:XX:XX:XX:75
Device Name: ZX-3182
LMP Version: 5.1 (0xa) LMP Subversion: 0x22bb
Manufacturer: not assigned (1494)
Features page 0: 0xbf 0xfe 0x8d 0xfa 0xd8 0x3d 0x79 0x83
<3-slot packets> <5-slot packets> <encryption> <slot offset>
<timing accuracy> <role switch> <sniff mode> <RSSI>
<channel quality> <SCO link> <HV2 packets> <HV3 packets>
<u-law log> <A-law log> <CVSD> <power control>
<transparent SCO> <broadcast encrypt> <EDR ACL 2 Mbps>
<enhanced iscan> <interlaced iscan> <interlaced pscan>
<inquiry with RSSI> <extended SCO> <AFH cap. slave>
<AFH class. slave> <LE support> <3-slot EDR ACL>
<5-slot EDR ACL> <pause encryption> <AFH cap. master>
<AFH class. master> <EDR eSCO 2 Mbps> <extended inquiry>
<simple pairing> <encapsulated PDU> <err. data report>
<non-flush flag> <LSTO> <inquiry TX power> <extended features>
Features page 1: 0x01 0x00 0x00 0x00 0x00 0x00 0x00 0x00
Features page 2: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
有效的方法: 当我手动连接蓝牙耳机时,PulseAudio 可以正确识别耳机,我可以将其用作 A2DP 耳机以及 HFS/HPS 双模耳机+耳机。只有当耳机自动连接时,PulseAudio 才无法识别它。
日志内容如下: 什么都没有,没有错误消息。我查看了
~$ tail /var/log/syslog
:无相关输出~$ systemctl --user status pulseaudio
:无相关输出~$ dmesg | tail
[ 6751.711444] perf: interrupt took too long (3202 > 3167), lowering kernel.perf_event_max_sample_rate to 62250
[ 6853.470790] input: ZX-3182 (AVRCP) as /devices/virtual/input/inputXX
问题:
- 有人知道这种现象吗,即 PulseAudio 无法识别自动连接的蓝牙设备?
- 有人能提示在哪里可以找到更接近实际错误的日志消息吗?
- 我能找出哪些进程正在使用蓝牙连接吗?也许另一个进程在 pulseaudio 获取蓝牙连接之前就“捕获”了它?
我已经尝试过的:
- 确保
module-switch-on-connect
和module-bluetooth-discover
按照建议module-bluetooth-policy
加载pulseaudio
Pulseaudio 无法自动检测蓝牙耳机 - 尝试按照建议
Enable=Source,Sink,Media,Socket
添加[General]
/etc/bluetooth/main.conf
PulseAudio 无法将卡配置文件设置为“a2dp_sink”。我如何查看日志并找出问题所在?。 - 尝试按照建议
FastConnectable=true
添加/etc/bluetooth/main.conf
为什么我的蓝牙耳机现在无法工作? - 尝试按照建议
pulseaudio
删除gdm
https://wiki.debian.org/BluetoothUser/a2dp - 尝试
pipewire
过pulseaudio
还有其他想法吗?谢谢你的帮助。
答案1
我很长时间以来都遇到同样的问题,今天才能够(某种程度上)解决这个问题:
信任 blueman 中的蓝牙耳机(或者无论您如何管理蓝牙设备)都会有所帮助。
但是,自动连接时音量现在非常低 - 尽管 pulseaudio 显示的音量与手动连接时相同。
答案2
事实证明,这种行为因耳机而异。后来我尝试了几款不同的耳机,有些能成功自动连接并发出声音,有些则不能。所以,它是否有效似乎取决于各个型号。
我使用的一个解决方法是编写一个小脚本sudo nano /opt/bin/headset-reconnect.sh
:
#!/bin/bash
bluetoothctl disconnect $1
bluetoothctl connect $1
使其可通过以下方式执行sudo chmod +x /opt/bin/headset-reconnect.sh
,并最终在设置->键盘->键盘快捷键->自定义键盘快捷键下添加自定义键盘快捷键,该快捷键将/usr/bin/headset-reconnect xx:xx:xx:xx:xx:xx
使用我的耳机的蓝牙 mac 地址进行调用。
使用此解决方法,我只需要将耳机戴到耳朵里后按下定义的键盘快捷键即可连接耳机。
虽然不完美,但至少是一种解决方案。