蓝牙 A2DP 脉冲音频源使用 bluez 5.45 从手机向 Linux 播放声音

蓝牙 A2DP 脉冲音频源使用 bluez 5.45 从手机向 Linux 播放声音

我正在尝试使手机中的声音显示为脉冲音频输入,以便我可以使用蓝牙 A2DP 通过计算机扬声器播放音乐。我正在使用 arch linux 和 bluez 5.45。

网络上有大量关于此的指南,但它们似乎都已经过时了。特别是,对于 bluez 5.45(以及 bluez-utils 5.45 和 bluez-tools 0.2),不再有文件了/etc/bluetooth/audio.confhcitool并且sdptool不再存在。我不再org.bluez.AudioSource可以通过 dbus 在 hci 设备上调用接口。一些网页建议现在一切应该“正常工作”,但在将手机(Pixel)与计算机配对后,我当然没有看到任何来源或接收器。

有效方法:我可以从 配对我的手机bluetoothctl并对其执行 ping 操作l2ping。我将我的用户放入lp组中并进行编辑,/etc/dbus-1/system.d/bluetooth.conf以便我拥有所有可能的蓝牙权限。 pacmd list-modules显示我已加载module-bluetooth-policymodule-bluetooth-discover、 和module-bluez5-discover。在我手机的蓝牙菜单上,我的电脑显示为“媒体音频”(不知道这是否正确)。

但是,pacmd list-sources没有列出任何有关蓝牙的内容,并且下面没有任何有关蓝牙的提示pavucontrol

答案1

好吧,我花了几个小时来解决这个问题,但由于某种原因无法连接到我的手机。然而,我随后在另一台计算机上进行了尝试,只需connect xx:xx:xx:xx:xx:xxbluetoothctlshell 中输入内容就足以连接并让音频正常工作。然后我回到第一台计算机,运行remove xx:xx:xx:xx:xx:xx并重新配对,然后它就工作了。

我做的不同的一件事是在有效的情况下在配对和连接时播放音乐,而在第一种情况下,我在发送音频之前尝试连接。

基本上,对于其他试图在 arch 上使用蓝牙的人来说,总结一下,步骤如下:

pacman --needed -S pulseaudio-bluetooth bluez-utils bluez-tools rfkill
systemctl enable bluetooth
systemctl start bluetooth
rfkill unblock bluetooth
gpasswd -a `logname` lp

然后,当您自己运行时pulseaudio -k,注销并再次登录以进入 lp 组(提供蓝牙访问)。

现在,通过手机的内置扬声器播放音乐,并将手机置于配对模式。

最后,再次以 root 身份运行bluetoothctl,并从实用程序中运行以下命令:

power on
scan on
pair xx:xx:xx:xx:xx:xx
[confirm pin]
scan off
connect xx:xx:xx:xx:xx:xx
trust xx:xx:xx:xx:xx:xx

此时,如果一切正常,手机将停止通过扬声器播放,您将在pavucontrol应用程序下看到新的输入。

请注意,如果您希望手机在范围内时自动连接,则需要该trust命令,而无需运行 的副本来bt-agent授权手机访问您的声音。否则,您将需要connect使用 中的命令bluetoothctl或如下命令从计算机启动所有连接:

dbus-send --system --type=method_call --dest=org.bluez \
    /org/bluez/hci0/dev_xx_xx_xx_xx_xx_xx org.bluez.Device1.Connect

相关内容