如何配置 Arch Linux Raspberry Pi 4B 以使用蓝牙耳机?

如何配置 Arch Linux Raspberry Pi 4B 以使用蓝牙耳机?

早期 Raspberry Pi 型号(例如 RPi3)的过时说明

以下信息是我最初发布的尝试解决方案,但未能令人满意地播放音频。换句话说,它们在 RPi4 上不起作用。

我按照下面链接页面上的 pulseaudio 安装说明进行操作,但找不到蓝牙控制器,并且命令power on 导致bluetoothctl错误No default controller available

https://wiki.archlinux.org/index.php/Bluetooth_headset#Configuration_via_CLI

当我按照下面链接页面上的说明进行操作时,由于冲突而无法安装linux-raspberrypi4

https://github.com/RoEdAl/alarm-bluetooth-raspberrypi

答案1

这是我找到的一种解决方案,可将蓝牙耳机自动连接到运行 Arch Linux ARM 4.19.71 的 Raspberry Pi 4B。这些说明使用 Raspbian Buster 中的一些源代码来设置 RPi4B 硬件以与 pulseaudio 和 bluetoothctl 配合使用。SuperUser 和 Raspberry Pi Foundation 论坛上都没有对我的问题的回复。需要安装(复制)这些文件才能通过 RPi4B UART 串​​行通道将音频路由到耳机。

我发布此文的一个原因是想获得有关如何实施此软件解决方案的建议。我认为如果 Buster 可以工作并且它基于新的 RPi4B 硬件,那么它应该可以在 Arch Linux 上运行,并且 Arch 上已经存在一些 uart/serial 文件。

最后一点是,如果这些说明在特定的 RPi4B 单元上存在问题,则有关 RPi4B 蓝牙和 Wi-Fi 硬件故障的报告。我多次使用了以下这些说明,希望能够纠正任何错误。如果您尝试了这些说明但出现问题,请发表评论,我会尝试回复。

下载btuarthciuart.service文件: https://gist.github.com/frankgould/db38ca5e40b3d2368f8d7765e346f8c5

所有这些安装/配置命令都在终端窗口中输入。

注意:可以使用本文底部“参考”部分中的链接从一个原始文件复制以下说明。这样,您可以复制更多行命令,而无需本页中包含的描述。在这些描述中,我试图描述接下来的命令要完成什么。

任何带有尖括号(或“<”和“>”)的地方都表示您的信息应在不带括号的情况下输入或粘贴。例如,当使用默认用户名时,/home/<your-folder>应输入为。/home/archpiarchpi

安装pulseaudiobluetooth

sudo pacman -S pulseaudio-alsa pulseaudio-bluetooth bluez-utils libmm-glib modemmanager
sudo systemctl start ModemManager
sudo systemctl enable ModemManager
sudo systemctl start bluetooth
sudo systemctl enable bluetooth

下面的测试用例命令 - 应该是干净启动,如果不是,请查看下面的命令或您的启动的启动结果中是否有建议journalctl -b

systemctl status ModemManager

btuart将脚本复制到/usr/bin folderchmod 777执行:

sudo cp <folder-containing-btuart-file>/btuart /usr/bin/.
sudo chmod 777 /usr/bin/btuart

复制hciuart.service/etc/systemd/system文件夹以在启动时自动启动 uart 服务:

sudo cp <folder-containing-hciuart.service-file>/hciuart.service /etc/systemd/system/.

添加永久链接serial1作为串行音频通道的规则ttyAMA0udev

sudo nano /etc/udev/rules.d/99_ttyAMA0.rules 
KERNEL=="ttyAMA0", SYMLINK+="serial1"

保存上述文件并重新启动以设置永久链接。

reboot

以你的用户身份登录,然后

cd /home/<your-folder>
git clone https://aur.archlinux.org/hciattach-rpi3.git
cd hciattach-rpi3/
makepkg -Asri

笔记:自发布此帖子以来,您可能需要安装任何新的依赖项。例如,patch可能未安装。要解决此问题,请运行sudo pacman -S patch并再次尝试makepkg上述命令。

使用下面的命令进行测试,结果应该显示指示操作安装的帮助文本。

hciattach-rpi3

hciattach创建一个没有的副本-rpi3以使用btuart脚本和启动bluetoothhciuart服务:

sudo cp /usr/bin/hciattach-rpi3 /usr/bin/hciattach
sudo systemctl start hciuart
sudo systemctl enable hciuart

扫描蓝牙耳机并连接

以下部分在许多网站上都有详细记录,并且一致。在下面的这些说明中,启动bluetoothctl应用程序后,需要输入每个命令,然后按回车/回车键。

输入scan on指令后,您附近区域内的任何蓝牙设备都应显示为 MAC 地址(例如##:##:##:##:##:##01:23:45:67:89:AB),以及您的耳机名称。您需要在每个 、 和 指令后输入或复制/粘贴pairMACconnect地址trust

如果您在执行命令时遇到问题power on,很可能是上面漏掉了某个步骤、我的说明不正确,或者硬件可能出现故障。请确保您的耳机已打开。

在以下说明中,bluetoothctl应用程序将根据您的耳机和应用程序插入方括号中的内容而有所不同,your-headset-brand提示出现的位置。最好在运行bluetoothctl应用程序时尝试这些说明。

$ bluetoothctl
[bluetooth]power on
[bluetooth]scan on
(Multiple bluetooth devices in your area should appear per line with its MAC address)
[bluetooth]pair <your-headset-address-as: ##:##:##:##:##:##>
[your-headset-brand]connect <##:##:##:##:##:##>
[your-headset-brand]trust <##:##:##:##:##:##>

启用蓝牙自动连接功能

这是安装的最后阶段,将自动连接到您的蓝牙耳机。这些说明应使您的 RPi4B 能够识别您的蓝牙耳机何时打开并将其设置为音频输出设备。

sudo nano /etc/pulse/default.pa

在列表顶部附近的某处添加以下两行:

# Automatically switch to newly-connected devices
load-module module-switch-on-connect

保存上述文件。取消注释并AutoEnable=true在文件的[Policy]部分中设置:

sudo nano /etc/bluetooth/main.conf

保存上述文件并重新启动以启用自动连接功能。

reboot

关闭耳机,等待 RPi4B 启动 Windows 桌面,然后重新打开耳机。耳机会发出哔哔声,表示耳机会自动连接。这些说明基于以下耳机型号,此参考不会产生任何收入。它仅作为用于测试上述说明的参考设备。 iJoy 可充电无线蓝牙耳罩式折叠耳机

耳机连接后,您应该能够通过您最喜欢的音频播放应用程序(如)播放音频文件vlc。如果您遇到音频问题,请尝试pulseaudio在主菜单的“声音和视频”下以 PulseAudio 音量控制为名运行该应用程序。

参考文献和来源

答案2

在运行带有内核的 Arch Linux 上的 Kodi 的 4B 上5.15.24-1-rpi-ARCH,我必须使用以下步骤来运行蓝牙并连接到 Bose NC 700 耳机:

  1. 安装bluezpulseaudio-bluetooth相关软件包:

    sudo pacman -S bluez bluez-utils pulseaudio-bluetooth
    
  2. /boot/config.txt通过取消注释或添加以下行来启用内核蓝牙支持(如蓝牙-rpb 的自述文件):

    dtparam=krnbt=on
    

    如果没有这个,rfkill就不会列出任何蓝牙设备,而且如果 bluetooth.service启动了,它也不会做任何事情。

  3. /etc/bluetooth/main.conf按照建议取消注释以下行这个 Arch Linux ARM 论坛帖子

    AutoEnable=true
    

    这应该在[Policy]章节中。完整示例:

    [Policy]
    # AutoEnable defines option to enable all controllers when they are found.
    # This includes adapters present on start as well as adapters that are plugged
    # in later on. Defaults to 'false'.
    AutoEnable=true
    
  4. 重启。这些步骤足以使蓝牙设备显示在 中rfkill,并bluetoothctl开始工作。

  5. 此外,为了连接到 Bose NC 700,我必须按照建议将控制器模式切换bredr/etc/bluetooth/main.conf这个Unix和Linux答案否则,耳机只会显示低能耗模式并且无法连接:

    [General]
    # Restricts all controllers to the specified transport. Default value
    # is "dual", i.e. both BR/EDR and LE enabled (when supported by the HW).
    # Possible values: "dual", "bredr", "le"
    ControllerMode = bredr
    

    只需重新启动bluetooth.service就足以进行此更改,但我还是重新启动了。

现在我可以使用 配对耳机bluetoothctl,并且 Kodi 通过 Pulseaudio 自动接收音频设备的变化。

相关内容