我尝试使用 Ubuntu 16.04 使蓝牙 A2DP 音频在汽车多媒体系统(W53850,丰田品牌,2011 年)上运行。
音频在 Windows 或 Ubuntu 14.04 上都可以正常工作,因此问题一定是 Ubuntu 16.04 特有的。这不是硬件问题,因为当我双启动到 Windows 10 时,蓝牙音频在同一台 Ubuntu 16.04 笔记本电脑上正常工作。
整个安装过程在 Ubuntu 14.04 和 Ubuntu 16.04 中看起来和感觉完全相同,唯一明显的区别是,当我最终在 16.04 上播放声音时,我听不到汽车扬声器的任何声音。
这是我详细使用的程序:
- 从车辆的多媒体系统中删除旧配对
从 Ubuntu 中删除旧配对
开始汽车多媒体系统的配对程序。
- 在 Ubuntu 上的“蓝牙设置”下单击“+”以获取“设备搜索”
- 几秒钟后,出现设备“CAR M_MMEDIA”,单击它。
- 在 Ping 选项下选择正确的 PIN(无论如何它都是“0000”,但是为了安全起见)。好的。
- 接下来。一秒钟后,我收到确认信息“已成功设置新设备‘CAR M_MEDIA’。退出。
- 在汽车系统中退出“设置”菜单(否则声音将被阻止)。
- 在声音设置中,我在“播放声音”列表中选择“Handsfree CAR M_MEDIA”。
- 播放一些音乐。
- 音乐播放器显示播放时间的进展 - 这表明播放器正在有效地将数据推送到脉冲音频接收器中。
- 没有听到声音。
我目前能够做的诊断
在 Ubuntu 14.04 上,我能够从命令行发现服务:
$ bt-device -s "CAR M_MEDIA"
Discovering services...
[RECORD:65537]
SrvClassIDList: "AudioSink"
ProtocolDescList:
"L2CAP", 0x19
"AVDTP", 0x100
BTProfileDescList:
"AdvAudio", 0x100
SrvName: "Audio Sink"
ProviderName: ""
[RECORD:65538]
SrvClassIDList: "AVRemote"
ProtocolDescList:
"L2CAP", 0x17
"AVCTP", 0x102
BTProfileDescList:
"AVRemote", 0x103
SrvName: "A/V RemoteControl"
ProviderName: ""
Done
我无法在 16.04 上执行相同的操作,因为我的所有两台 16.04 计算机都显示错误
$ bt-device -s "CAR M_MEDIA"
Discovering services...
Failed to start SDP discovery. Please make sure you have bluez-utils installed on your system.
即使我bluetoothd
在该--compat
模式下运行。
也许 Ubuntu 14.04 以不同的采样频率发送声音(48 kHz 而不是 44.1 kHz)?但我不知道如何测试它。
这是序列中的 hcidump:a) 连接到音频接收器(汽车音响)b) 播放音乐,c) 停止音乐和 d) 断开连接。
答案1
bluez-utils
目前被列为 trusty (14.04) 的过渡包,目前不适用于 Xenial (16.04)。研究表明,您需要的 Xenial 包是bluez-工具。
一个问题是,bluez-tools v0.2 后版本使用 bluez-5.20 API。由于 BlueZ 5 设备 API 中已删除 DiscoverServices,因此bt-device
需要“sdptool”(包含在 14.04 版 bluez-utils 中)进行服务发现。
快速搜索表明sdptool
现在可以在bluez 包。sdptool
根据错误消息,此包似乎是必需的:
无法启动 SDP 发现。请确保您的系统上已安装 bluez-utils。
我的方法如下:
2)安装必要的软件包
sudo apt install bluez bluez-tools
注意:如果我没记错的话,bluez是默认安装的,所以你可能需要
sudo apt-get install--重新安装 bluez
3)你也可能需要用于 OBEX 客户端和服务器端功能的 D-Bus 服务
sudo apt 安装 obex 数据服务器
资料来源:
您的问题中的错误信息