将您的 Linux PC 变成手机的蓝牙扬声器

您知道可以将 Linux PC 用作手机的蓝牙扬声器吗? 不? 没问题! 我将解释如何将您的 Linux PC 变成手机的蓝牙扬声器。

如果您还不知道,可以播放我们手机中的音频或视频文件,并通过蓝牙在我们的笔记本电脑或台式机上收听它们 脉冲音频.

更简单地说,我们可以借助 Pulseaudio 和蓝牙将声音从手机重定向到计算机。

先决条件

显然,您应该拥有支持蓝牙的手机和 Linux PC(台式机或笔记本电脑)。 运行 GNU/Linux 的 PC 必须具有蓝牙硬件功能,即蓝牙接收器和发射器。

我在运行 Ubuntu 18.04 LTS 的戴尔笔记本电脑和一台旧的惠普平板电脑上对此进行了测试。

首先,确保你已经安装 蓝兹, 脉冲音频pulseaudio蓝牙模块 在您的 Linux 系统上。 大多数 Linux 发行版都预装了这些工具。 以防万一它们丢失,如下所示安装它们。

在 Linux 上安装 Bluez

要在 Arch Linux 及其变体上安装 Bluez,请运行:

$ sudo pacman -S bluez

在 Debian、Ubuntu 上:

$ sudo apt install bluez

在 Fedora,CentOS,RHEL:

$ sudo dnf install bluez

或者,

$ sudo yum install bluez

在 openSUSE 上:

$ sudo zypper install bluez

安装 Bluez 后,确保蓝牙服务已启动并在启动时启用。

$ sudo systemctl start bluetooth
$ sudo systemctl enable bluetooth

要验证蓝牙状态,请运行:

$ systemctl status bluetooth

在 Linux 上安装 Pulseaudio

脉冲音频 是一个开源、跨平台、支持网络的声音服务器程序,通过 freedesktop.org 项目分发。

它支持 Linux,以及各种 BSD 发行版,如 FreeBSD 和 OpenBSD、macOS。 Pulseaudio 在大多数 Linux 发行版的默认存储库中都可用。

要通过蓝牙启用播放,我们应该安装 pulseaudio 蓝牙模块。

运行以下命令在 Arch Linux 及其变体(如 EndeavourOS 和 Manjaro Linux)上安装 Pulseaudio 和其他所需程序:

$ sudo pacman -S pulseaudio pavucontrol pulseaudio-bluetooth

在 Debian、Ubuntu 和 Linux Mint 上,只需运行:

$ sudo apt install pulseaudio pulseaudio-utils pavucontrol pulseaudio-module-bluetooth

FedoraRHEL 8, AlmaLinux 8, Rocky Linux 8:

$ sudo dnf install pulseaudio pulseaudio-utils pavucontrol pulseaudio-module-bluetooth

CentOS 7.x., RHEL 7.x:

$ sudo yum install pulseaudio pulseaudio-utils pavucontrol pulseaudio-module-bluetooth

openSUSE:

$ sudo zypper install pulseaudio pulseaudio-utils pavucontrol pulseaudio-module-bluetooth

将 Linux PC 与您的手机配对

确保手机已与您的 PC 配对。 蓝牙配对非常简单! 你可能已经做过很多次了。

打开手机和 Linux 系统上的蓝牙。

在 Android 设备中,从“设置”窗口打开蓝牙。

在 Android 手机中打开蓝牙

在 Ubuntu GNOME 中,可以从系统设置中打开蓝牙。

在 Ubuntu 中打开蓝牙

两台设备都打开蓝牙后,它们将开始扫描最近的蓝牙设备并列出它们。 在 Linux PC 上,只需单击设备即可进行配对。

在 Ubuntu 中配对蓝牙设备

在 Ubuntu 中配对蓝牙设备

您应该会在手机上看到相同的蓝牙 PIN。 只需点击 一对 将其与 Linux PC 配对。

Android中的蓝牙配对

Android中的蓝牙配对

手机与您的 Ubuntu PC 配对后,您将在蓝牙部分的设备选项卡下看到它们。

通过蓝牙将 Android 手机与 Ubuntu 配对

通过蓝牙将 Android 手机与 Ubuntu 配对

同样,您将看到您的 Linux PC 列在手机的配对设备选项卡下。

通过蓝牙将 Ubuntu PC 与 Android 手机配对

通过蓝牙将 Ubuntu PC 与 Android 手机配对

现在两个设备都已配对并可以使用了!

将您的 Linux PC 变成手机的蓝牙扬声器

在我的 Ubuntu 18.04 桌面上,它开箱即用。 实际上不需要任何配置!

我安装了 “脉冲音频模块蓝牙” 包,将我的手机与我的电脑配对,我可以立即从我的笔记本电脑收听手机中播放的音乐。

我可以通过移动设备或计算机调整音量。 我猜Pusleaudio在幕后处理了一切。 Pulseaudio 太棒了!

如果由于任何原因无法开箱即用,请创建一个名为 ~/.config/pulse/system.pa

$ mkdir ~/.config/pulse/
$ nano ~/.config/pulse/system.pa

在其中添加以下行:

.include /etc/pulse/system.pa
load-module module-bluetooth-policy
load-module module-bluetooth-discover

Save 和 close 文件。 使用命令重新启动蓝牙服务以使更改生效:

$ sudo systemctl restart bluetooth

您可以直接编辑“/etc/pulse/system.pa”文件并进行更改。 不过,强烈推荐 不要编辑系统范围的配置文件,而是编辑用户的。

这就是为什么你应该创建 “~/.config/pulse” 目录,然后将系统配置文件复制到其中并根据需要进行编辑。

~/.config/pulse/default.pa 文件可以从该行开始,而不是完整的副本 “.include /etc/pulse/default.pa” 然后只是覆盖默认值。 这样我们可以避免将来pulseaudio更新时出现问题。

Pulseaudio 故障排除

尽管我可以在没有任何额外配置的情况下立即将我的笔记本电脑变成蓝牙扬声器,但音频播放很糟糕,而且卡顿很多。 是的,音频可以听,但很烦人。

首先,确保蓝牙播放配置文件设置为 A2DP(高保真播放).

为此,请打开 Pulseaudio 音量控制 (Pavucontrol) 从 Dash 或菜单。 并从配置部分下的配置文件下拉框中选择“高保真捕获(A2DP 源)”。

选择高保真捕捉(A2DP 源)

选择高保真捕捉(A2DP 源)

接下来,您需要设置正确的缓冲区大小(延迟)。 如果蓝牙声音断断续续、卡顿和失真,这可能是由 A2DP 实现以及它在编码之前如何缓冲声音造成的。

我只是更改了缓冲区的大小来解决音频卡顿问题。

首先,使用命令查找蓝牙设备名称及其端口:

$ pactl list | grep -Pzo '.*bluez_card(.*n)*'

样本输出:

   Name: bluez_card.7C_D3_0A_0B_D6_30
    Driver: module-bluez5-device.c
    Owner Module: 36
    Properties:
        device.description = "HP 7 VoiceTab"
        device.string = "7C:D3:0A:0B:D6:30"
        device.api = "bluez"
        device.class = "sound"
        device.bus = "bluetooth"
        device.form_factor = "phone"
        bluez.path = "/org/bluez/hci0/dev_7C_D3_0A_0B_D6_30"
        bluez.class = "0x5a020c"
        bluez.alias = "HP 7 VoiceTab"
        device.icon_name = "audio-card-bluetooth"
    Profiles:
        a2dp_source: High Fidelity Capture (A2DP Source) (sinks: 0, sources: 1, priority: 20, available: yes)
        headset_audio_gateway: Headset Audio Gateway (HSP/HFP) (sinks: 1, sources: 1, priority: 10, available: no)
        off: Off (sinks: 0, sources: 0, priority: 0, available: yes)
    Active Profile: a2dp_source
    Ports:
        phone-output: Phone (priority: 0, latency offset: 0 usec, not available)
            Part of profile(s): headset_audio_gateway
        phone-input: Phone (priority: 0, latency offset: 0 usec, available)
            Part of profile(s): a2dp_source, headset_audio_gateway

如您在上面的输出中看到的,蓝牙设备的名称是 “bluez_card.7C_D3_0A_0B_D6_30” 和端口是 “电话输出”. 缓冲区大小(延迟)为 0.

使用命令设置缓冲区大小(延迟):

$ pactl set-port-latency-offset bluez_card.7C_D3_0A_0B_D6_30 phone-output 125000

在这里,我使用 125 毫秒的缓冲区。 您可以设置自己的适合您的。 还要更改上述命令中的名称和端口值。

现在,使用命令重新启动您的蓝牙服务:

$ sudo systemctl restart bluetooth

或者重新启动系统。 音频卡顿问题现在应该已经消失了。

我遵循了 AskUbuntu、LinuxMint 和 ArchWiki 论坛中提到的其他一些解决方法(链接附在末尾)。 但上述解决方案只解决了我的问题。

以下是用户建议的其他一些解决蓝牙音频问题的解决方案。

解决方案1:

编辑 ALSA 配置文件:

$ sudo nano /etc/modprobe.d/alsa-base.conf

在末尾添加以下行:

options snd-hda-intel model=generic

仅当运行 GNU/Linux 的 PC 上的主声卡是 HDA Intel 设备(通常在主板上)时,此设置才相关。

如果主声卡是其他设备,它什么也不做,因为 example GeneratePress、Terratech、VIA 等。感谢您的意见 布莱恩先生.

Save 和 close 文件。 重新启动系统。

解决方案2:

这是由 Linux Mint 论坛中的用户建议的。

编辑文件 ~/.config/pulse/system.pa

$ sudo ~/.config/pulse/system.pa

添加以下行:

load-module module-udev-detect tsched=0

Save 和 close 文件。 重新启动系统。

建议阅读:

  • KDE Con​​nect – 从 Android 设备访问文件和通知

希望这可以帮助。

资源: