通过蓝牙通过 GNU/Linux 服务器播放手机音频

通过蓝牙通过 GNU/Linux 服务器播放手机音频

我想让我的手机通过家庭服务器的扬声器播放音乐。这个家庭服务器是一个运行 Debian 的无头 OrangePi 盒子(其中一个 USB 端口上有一个蓝牙适配器)。

我跟着https://wiki.debian.org/BluetoothUser对于第一步和配对部分来说,一切似乎都运行正常:我的 USB 加密狗被识别了,我可以启动它,让它可被发现,它会出现在我的手机上,而且我能够与它配对。

但是现在我的手机似乎不认为我的服务器能够播放音频。 bt-device -i <phone>告诉我:... UUIDs: [..., AudioSource, ..., HeadsetAudioGateway, ...]我的理解是,我的手机可以使用这两个配置文件发送音频。但bt-adapter -i没有列出这些(或任何类似的东西),我的理解是,我需要以某种方式教我的服务器如何从蓝牙接收音频。我安装了,pulseaudio-module-bluetooth但只是安装它似乎没有任何区别,我不确定我还能做什么。

[ 顺便说一句,我提到 pulseaudio 是因为我的搜索让我发现它是潜在解决方案的一部分,但不使用 pulseaudio 的解决方案也可以。 ]

答案1

我尝试使用 debian-jessie 笔记本电脑执行相同操作。以下方法帮我解决了这个问题:

sudo apt-get install -y bluetooth bluez bluez-tools rfkill blueman

# https://tttwrites.wordpress.com/2014/11/09/resolved-bluetooth-loading-patch-failed-in-debian-wheezy/
if [ $(lsusb|grep Blue|grep Atheros|wc -l) -eq 1 ]; then sudo apt-get install -y firmware-atheros; fi

# To fix the errors:
#  Sap driver initialization failed.
#  sap-server: Operation not permitted (1)
# https://askubuntu.com/a/802345/155829
sudo apt-get install pulseaudio-module-bluetooth
pactl load-module module-bluetooth-discover # not sure we need this line
modprobe ath3k
modprobe btusb
modprobe bluetooth

# https://wiki.archlinux.org/index.php/bluetooth#Using_your_computer.27s_speakers_as_a_bluetooth_headset
echo '[General]
Enable=Source,Sink,Media,Socket' > /etc/bluetooth/audio.conf

sudo service bluetooth restart || sudo systemctl restart bluetooth
if [ $(ps awuxf|grep blueman-app|wc -l) -lt 2 ]; then blueman-applet; fi

值得学习使用 bluetoothctl,因为我需要它来输入 PIN

工作时:

lsmod |grep -i blue|awk '{print $1}'

向我展示

bluetooth    
ecdh_generic 
rfkill       
crc16        

与手机配对后

ls -la /sys/bus/usb/drivers/btusb|grep dev

有一些符号链接到 -> ../../../../devices/pci0000:00/{YOUR DEVICE} 并且

cat /sys/bus/usb/drivers/btusb/{remove_id,new_id}|wc -c

应该返回 0(零),而之前当它不起作用时它是一个正值。

相关内容