答案1
好的,我终于找到了如何自动切换到 HFP 音频配置文件,然后它还会自动将耳机麦克风设置为输入设备。
有多种方法,但在连接蓝牙耳机时自动执行此操作的唯一方法似乎是创建一条udev
规则,在耳机连接时运行脚本。有一个非常好的博客文章对此进行了深入描述我用它来实现我想要的东西,下面的大部分代码最初也出自这里。
以下是基本步骤:
使用 查找卡名和配置文件
pactl list
。输出包含您需要的两行:... Card #20 Name: bluez_card.70_BF_92_C9_F5_D0 ... Profiles: a2dp_sink: High Fidelity Playback (A2DP Sink) (sinks: 1, sources: 0, priority: 40, available: yes) handsfree_head_unit: Handsfree Head Unit (HFP) (sinks: 1, sources: 1, priority: 30, available: yes) off: Off (sinks: 0, sources: 0, priority: 0, available: yes) ...
在此示例中,卡名称为
bluez_card.70_BF_92_C9_F5_D0
,配置文件名称为handsfree_head_unit
。这样,创建一个脚本
~/.config/auto-pactl.sh
来将耳机切换到 HFP 配置文件:#!/bin/bash sleep 2 # wait for the headset to fully connect sudo -u '#1000' XDG_RUNTIME_DIR=/run/user/1000 \ pactl set-card-profile bluez_card.70_BF_92_C9_F5_D0 handsfree_head_unit logger "Switched Jabra headset to HFP profile"
使脚本可执行:(
chmod a+x ~/.config/auto-pactl.sh
否则您将收到退出代码 1 错误)找出耳机的输入名称
udevadm monitor
,然后连接蓝牙耳机。输出应类似于:... UDEV [54588.946048] add /devices/virtual/input/input112 (input) ...
找出子系统、供应商和产品
udevadm info -ap /devices/virtual/input/input112
(使用上一个命令的输出替换设备)利用这些信息,创建一个 udev 规则来执行上述脚本并将其存储在中
/etc/udev/rules.d/52-jabra-headset.rules
,在适当的位置插入您的卡和用户名的值:ACTION=="add", SUBSYSTEM=="input", ATTR{id/vendor}=="0067", ATTR{id/product}=="24a7", RUN+="/home/<myUsername>/.config/auto-pactl.sh"
这对我来说非常有效!
答案2
我认为这与“配置”类型有关。您选择了 A2DP,它仅支持耳机音频。尝试切换到 HSP/HFP,然后它是双向的。使用 HSP/HFP 时,您的音质可能会略有下降。我还没有找到任何使用蓝牙上的 HSP/HFP 实现高质量音频的解决方案。
您还可以尝试 pulseaudio 音量控制。它可以让您更灵活地控制声音设置。
干杯