我通过蓝牙将 Sony MDR-ZN770BN 连接到我的 PC。但我只能使用 A2DP。当我将其切换到 HSP 时,我收到消息“无法将配置文件更改为耳机头单元”,因此无法进行 Skype 通话。
我该如何解决这个问题?
答案1
我在 Ubuntu 18.04 上使用 Galaxy Earbuds + 时遇到了类似的问题,下面是我解决问题的方法:
我的耳机配置文件是 A2DP、AVRCP 和 HFP,不支持 HSP。Pulseaudio 仅支持开箱即用的 HSP。这就是我无法切换到 HSP/HFP 的原因。为了使 HSP/HFP 正常工作,您必须在需要 ofono 的 pulseaudio 上启用 HFP。
安装
ofono
:sudo apt install ofono
配置 pulseaudio 以使用 ofono:
找到
/etc/pulse/default.pa
该行load-module module-bluetooth-discover
并将其更改为load-module module-bluetooth-discover headset=ofono
。将用户添加
pulse
到组bluetooth
以授予权限:(sudo usermod -aG bluetooth pulse
可能已经正确了)非常重要:要授予权限,请将其添加到
/etc/dbus-1/system.d/ofono.conf
(之前</busconfig>
):<policy user="pulse"> <allow send_destination="org.ofono"/> </policy>
- 提供
phonesim
给ofono
。为了让 ofono 工作,你必须给它提供一个调制解调器!你可以安装一个叫 phonesim 的调制解调器模拟器(由 ofono 实现)来让它工作:
安装
ofono-phonesim
(在某些发行版中它被称为phonesim
)。在 Ubuntu 18.04 中(对于 Ubuntu 20.04,请按照此链接):sudo apt install ofono-phonesim
通过添加以下行来配置phonesim
/etc/ofono/phonesim.conf
:[phonesim] Driver=phonesim Address=127.0.0.1 Port=12345
重新开始
ofono
:sudo systemctl restart ofono.service
开始
phonesim
:ofono-phonesim -p 12345 /usr/share/phonesim/default.xml
注意命令可以是phonesim
。为了确保phonesim正确启动,你可以克隆ofono repo并使用他们的测试脚本:
cd /tmp
git clone git://git.kernel.org/pub/scm/network/ofono/ofono.git
cd ofono/test
./list-modems
您应该会在结果中看到调制解调器。您可能必须先通过执行同一目录中的脚本enable-modem
来启用调制解调器。online-modem
- 一旦启用调制解调器,您就应该能够启用 HFP 配置文件。
- 自动启动手机模拟器。由于您已手动执行手机模拟器,因此每次重启后您都应再次执行它。相反,您可以安装,
ofono-phonesim-autostart
它将以服务形式启动手机模拟器。
参考:
答案2
我在使用 Oneplus Wireless Z Bass 版本时遇到了同样的问题。PulseAudio 无法检测到我的耳机麦克风,问题是我的耳机没有 HSP 配置文件,只有 HFP 配置文件。经过 2 天的尝试,我找到了解决方案,用 Pipewire 声音服务器替换 PulseAudio,它本身支持 HSP、HFP 和 A2DP。因此无需安装任何其他实用程序,例如ofono
。phonesim
另外,需要注意的是,即使按照所有步骤在 PulseAudio 中配置后,我的问题仍未解决ofono
。所以我想出了用 PipeWire 替换 PulseAudio 的步骤。
这是我写的解决此问题的详细文章,其中的步骤我也在这里添加。您可以按照它进行操作,很可能能够解决您的问题。
打开终端并执行以下步骤:
我们将使用 PPA 将 Pipewire 添加到 Ubuntu 20.04,该 PPA 会定期维护:
sudo add-apt-repository ppa:pipewire-debian/pipewire-upstream
要更新系统中的 PPA 包,请执行以下操作:
sudo apt update
安装软件包:
sudo apt install pipewire
Pipewire 还需要安装依赖项,否则你将面临以下问题“安装 pipewire 后蓝牙耳机无法连接”. 通过以下方式安装依赖项:
sudo apt install libspa-0.2-bluetooth
现在,安装客户端库:
sudo apt install pipewire-audio-client-libraries
重新加载守护进程:
systemctl --user daemon-reload
禁用 PulseAudio:
systemctl --user --now disable pulseaudio.service pulseaudio.socket
如果你使用的是 Ubuntu 20.04,你还需要通过以下方式“屏蔽”PulseAudio:
systemctl --user mask pulseaudio
我不确定,但如果可能的话,您也可以尝试在其他版本上运行它。
在 Pipewire 进行新更新后,您还需要启用
pipewire-media-session-service
:systemctl --user --now enable pipewire-media-session.service
您可以确保 Pipewire 目前正在运行:
pactl info
此命令将给出以下输出,您可以在服务器名称中看到:
PulseAudio (on PipeWire 0.3.28)
现在一切应该已经正常,您可以看到您的麦克风了。
如果没有出现,请尝试通过以下命令重新启动 Pipewire:
systemctl --user restart pipewire
ofono
此外,如果您已经安装了它们,则需要卸载它们ofono-phonesim
。
sudo apt remove ofono
sudo apt remove ofono-phonesim
如果仍然没有显示您的麦克风,您可以尝试重新启动一次,然后移除并再次配对您的蓝牙设备,以检查它是否正常工作。
我希望我已经帮助您解决了您的问题。
如果您想回滚我们所做的所有更改,您可以使用以下命令:
systemctl --user --now disable pipewire-media-session.service
systemctl --user unmask pulseaudio
systemctl --user --now enable pulseaudio.service pulseaudio.socket
从评论中复制,以防出现错误“连接失败:连接被拒绝”:
执行此步骤:
systemctl --user restart pipewire-pulse
答案3
我最初将此作为对@alisabzevari 帖子的编辑发布,但编辑被拒绝了 :( 我仍然认为这些信息非常有价值,我不想丢失它,所以我将其作为答案发布:
截至 2020-10-17,在 Ubuntu 20.04 中ofono-phonesim-autostart
不可用。您可以做的是创建以下systemd
单元以在启动时将其作为守护进程启动:
要作为 systemd 单元在启动时运行,请创建包含以下内容的ofono-phonesim -p 12345 /usr/share/phonesim/default.xml
文件(以 root 身份):/etc/systemd/system/ofono-phonesim.service
[Unit]
Description=Run ofono-phonesim in the background
[Service]
ExecStart=ofono-phonesim -p 12345 /usr/share/phonesim/default.xml
Type=simple
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
运行后ofono-phonesim
,您还需要启用调制解调器并将其phonesim
联机。我 (@Zoltán) 通过创建另一个systemd
依赖于上述ofono-phonesim
systemd
单元的单元文件来完成此操作。将以下内容放入/etc/systemd/system/phonesim-enable-modem.service
:
[Unit]
Description=Enable and online phonesim modem
Requires=ofono-phonesim.service
[Service]
ExecStart=/<path-to-cloned-ofono-git-repo>/test/enable-modem /phonesim
ExecStart=/<path-to-cloned-ofono-git-repo>/test/online-modem /phonesim
Type=oneshot
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
然后运行以下命令来运行两个守护进程:
sudo systemctl daemon-reload
sudo systemctl enable ofono-phonesim.service
sudo systemctl enable phonesim-enable-modem.service
sudo service phonesim-enable-modem start
检查服务是否正在运行
sudo service phonesim-enable-modem status
最后,pulseaudio
使用重新启动pulseaudio -k
。现在您应该能够将配置文件切换为headset_head_unit
。
答案4
在正常运行一段时间(大约 260 天)后遇到了这个问题,pulseaudio -k
没有帮助,将音频配置文件切换为“关闭”也没有用。
重新启动蓝牙(systemctl restart bluetooth
)即可。