我能通过蓝牙连接并使用我的 HiFi 系统一切顺利,但是...它在我的音频设备列表中被列为“耳机”。这是一个完全小问题,但有点令人困惑。
我发现这种“误解”背后的(可能......)原因是设备将其类别报告为 0x240404(可穿戴耳机装置)而不是更合适的 0x240428(HiFi 音频设备)。
不幸的是,简单地编辑/var/lib/bluetooth/[MAC address]/[another MAC address]/info
文件是行不通的,因为每次服务重启时文件都会被重写,并且每次都会返回报告的类。
我如何覆盖设备的报告类别?(它无法从 HiFi 设备本身进行更改,至少根据手册,没有我可以操作的 BT“高级选项”...)
答案1
我假设您使用 Gnome 作为桌面环境。其他环境中可能存在或不存在类似的选项。
几周前,我在 Ubuntu 20.04.5 LTS 上解决了您描述的问题,但尚未升级到 22.04.1 LTs - 但检查了更新日志。
您的HiFi 音频设备支持多个蓝牙配置文件 - 大多数最新的蓝牙耳机也如此。
关于双向蓝牙连接的一般说明:没有“非专有通用”方法(至少我不知道有任何方法)可以通过蓝牙实现双向高质量音频连接。设备制造商可能会提供专有的设备专用软件来实现这一点。在大多数情况下,这些软件不会针对 Linux 进行编译。
一种可能的解决方法是将蓝牙 USB 适配器识别为计算机的 (双向) 声卡。但这超出了您最初的问题。
使用 HiFi 音频设备播放来自计算机的声音
通过蓝牙连接 HiFi 音频设备后,转到gnome-control-center sound
(通过点击“设置”或按 F2 或 Ctrl+Alt+T(同时按 3 个)后运行该命令)。
首先向下滚动到“输入”,并将其设置为其他内容,但不是通过蓝牙连接的 HiFi 音频设备 - 或者将其静音。两者都可以。
其次,进入“输出”,选择你的输出设备(很明显)和你选择的蓝牙配置文件配置(A2DP 接收器与其中一个提供的编解码器)
在 Ubuntu 20.04.5 LTS 上,我必须执行额外的步骤前这成为可能:
- 安装包
pulseaudio-modules-bt
来自https://launchpad.net/~berglh/+archive/ubuntu/pulseaudio-a2dp - 它会要求您卸载该软件包,pulseaudio-module-bluetooth
因为它将替换后者(以符合包管理器的方式)。
不幸的是,上述包装的“活动”看起来像一次性包装https://github.com/EHfive/pulseaudio-modules-bt适用于 Ubuntu 20.04 LTS。
根据我读过的变更日志(没有使用实时 ubuntu 22.04.1 进行测试),在 Ubuntu 22.04 上找到的版本pulseaudio
应该能够“开箱即用”地支持此功能。如果不行,请为 22.04 找到合适的 ppa,成功率pulseaudio-modules-bt
很高。
答案2
由于找不到更好的解决方案,我只能破解蓝牙守护进程代码。为了防止其他人需要它或类似的东西,我在 bluez src/device.c 中添加了一行设备集_类功能。这是一个糟糕的解决方案(任何耳机设备都会被错误地归类为 HiFi),但它满足了我的目的。
void device_set_class(struct btd_device *device, uint32_t class)
{
if (device->class == class)
return;
DBG("%s 0x%06X", device->path, class);
if ((class & 0xffffff)==0x240404) class=0x240428; // BT speaker fix!
device->class = class;
store_device_info(device);
g_dbus_emit_property_changed(dbus_conn, device->path,
DEVICE_INTERFACE, "Class");
g_dbus_emit_property_changed(dbus_conn, device->path,
DEVICE_INTERFACE, "Icon");
}
但我认为应该有更好的方法。有人知道吗?