我正在尝试使手机中的声音显示为脉冲音频输入,以便我可以使用蓝牙 A2DP 通过计算机扬声器播放音乐。我正在使用 arch linux 和 bluez 5.45。
网络上有大量关于此的指南,但它们似乎都已经过时了。特别是,对于 bluez 5.45(以及 bluez-utils 5.45 和 bluez-tools 0.2),不再有文件了/etc/bluetooth/audio.conf
。 hcitool
并且sdptool
不再存在。我不再org.bluez.AudioSource
可以通过 dbus 在 hci 设备上调用接口。一些网页建议现在一切应该“正常工作”,但在将手机(Pixel)与计算机配对后,我当然没有看到任何来源或接收器。
有效方法:我可以从 配对我的手机bluetoothctl
并对其执行 ping 操作l2ping
。我将我的用户放入lp
组中并进行编辑,/etc/dbus-1/system.d/bluetooth.conf
以便我拥有所有可能的蓝牙权限。 pacmd list-modules
显示我已加载module-bluetooth-policy
、module-bluetooth-discover
、 和module-bluez5-discover
。在我手机的蓝牙菜单上,我的电脑显示为“媒体音频”(不知道这是否正确)。
但是,pacmd list-sources
没有列出任何有关蓝牙的内容,并且下面没有任何有关蓝牙的提示pavucontrol
。
答案1
好吧,我花了几个小时来解决这个问题,但由于某种原因无法连接到我的手机。然而,我随后在另一台计算机上进行了尝试,只需connect xx:xx:xx:xx:xx:xx
在bluetoothctl
shell 中输入内容就足以连接并让音频正常工作。然后我回到第一台计算机,运行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