Skip to content

懒猫微服炫技篇(四):蓝牙音浪,懒猫开唱

懒猫微服硬件层面自带了蓝牙模块。理论上,它应该可以像一台笔记本电脑或手机那样,直接连接蓝牙音箱,成为一个音频输出端。那么问题来了:在没有桌面 GUI 的前提下,能否纯命令行完成 蓝牙配对 + 音乐播放

折腾了一上午,我从安装依赖、加载服务、设备配对到最终的音频播放,完整走通了流程。过程中踩了几个典型的坑,把命令总结下来,甚至进一步改造成一个家庭“蓝牙音频中心”。

准备工作

懒猫微服本质上就是一台 Linux 设备,可以在 neofetch 中查看系统信息。所以蓝牙相关的配置流程和常见的 Ubuntu/Debian 系统基本一致。只要我们搞定了蓝牙协议栈、音频服务和配对,就能让它像 PC 一样推送音频到蓝牙音箱。

image-20251002142630651

懒猫微服没有提供 GUI 桌面环境,所以所有的这些步骤都得通过命令行完成。

安装依赖

首先安装系统缺少的几个依赖包:

bash
sudo apt install bluez bluez-tools pulseaudio-module-bluetooth libspa-0.2-bluetooth

这里有几个关键点:

  • bluez:Linux 的蓝牙协议栈,底层必须有这个,否则系统完全不认识蓝牙设备。
  • bluez-tools:命令行工具集合,比如 bluetoothctl 就靠它。
  • pulseaudio-module-bluetooth:PulseAudio 的蓝牙扩展模块,用于把音频流通过 A2DP 推给蓝牙音箱。
  • libspa-0.2-bluetooth:PipeWire 的蓝牙插件,懒猫微服上装着可能是新版本的音频栈,有时候需要它做兼容。

重启蓝牙服务

bash
sudo systemctl restart bluetooth

蓝牙服务在驱动加载、硬件唤醒等场景下,偶尔会出现异常,导致设备不可见。重启服务能有效避免 无法扫描设备连接超时 等问题。

如果遇到 No default controller available 的错误,可以通过 systemctl status bluetooth 检查蓝牙守护进程是否正常运行。

蓝牙配对流程

进入蓝牙控制台:

bash
bluetoothctl

核心工具是 bluetoothctl。进入交互模式后,依次执行:

text
power on
agent on
default-agent
scan on
pair <MAC>
trust <MAC>
connect <MAC>

逐条解释一下:

  • power on:打开蓝牙硬件。
  • agent on + default-agent:启用配对代理,否则你输入 pair 时可能会报 “No agent available”。
  • scan on:扫描附近设备,你会看到形如 XX:XX:XX:XX:XX:XX 的 MAC 地址和设备名。
  • pair :和音箱配对。第一次一般要确认一下。
  • trust :把设备设为可信,下次开机会自动连接。
  • connect :连接上去,成功的话会提示 Connection successful

我使用的是纽曼的蓝牙音箱,蓝牙控制台的输出大概是这样的:

配对截图

当出现“成功配对并已连接”时,说明音频链路已建立。

播放音乐

安装轻量级播放器:

sudo apt install mpg123

执行播放:

mpg123 hello_tuya.mp3

运行时终端显示:

(base) lzcbox-029c588e ~ # mpg123 hello_tuya.mp3
High Performance MPEG 1.0/2.0/2.5 Audio Player for Layers 1, 2 and 3
        version 1.31.2; written and copyright by Michael Hipp and others
        free software (LGPL) without any warranty but with best wishes


Terminal control enabled, press 'h' for listing of keys and functions.

Playing MPEG stream 1 of 1: hello_tuya.mp3 ...
> 01+97  00:00.00+00:03.45 --- 100=100   8 kb/s   36 B acc    0 clip p+0.000
MPEG 2.0 L III vbr 16000 mono



[0:03] Decoding of hello_tuya.mp3 finished.

这时候音箱就能播放我们加载的 MP3 文件了。

播放截图

总结流程(最小命令集)

最终可以整理成如下最小命令集:

bash
# 1. 安装依赖
sudo apt install -y bluez bluez-tools pulseaudio-module-bluetooth libspa-0.2-bluetooth

# 2. 重启蓝牙服务
sudo systemctl restart bluetooth

# 3. 进入蓝牙控制台做配对
bluetoothctl
# power on
# agent on
# default-agent
# scan on
# pair <MAC>
# trust <MAC>
# connect <MAC>

# 4. 测试播放
sudo apt install -y mpg123
mpg123 hello_tuya.mp3

踩坑与经验分享

  1. 连接失败(br-connection-page-timeout) 有时候会报类似:

    Failed to connect: org.bluez.Error.Failed br-connection-page-timeout

    这个大概率是音箱没进入配对模式,或者离设备太远。解决方法就是:重置音箱 → 靠近设备 → 再连。

  2. 开机自启 懒猫微服重启后可能蓝牙 sink 不会自动挂载,你需要写个 systemd 服务,启动时执行 bluetoothctl connect <MAC>

  3. 容器化方案 如果想更整洁,可以拉个容器专门跑音乐服务,把 mp3 拉进去播放,或者跑个 MPD(Music Player Daemon)+ ncmpcpp。这样甚至可以做一个“云端点歌机”。

其实做到这一步后,懒猫微服就具备了一个“音频推送中转站”的能力。未来可以玩出很多花样:

  • 自动播放提醒:结合 crontab,在每天早上 8 点自动播一首歌当闹钟。
  • 语音播报:结合 TTS(文字转语音),让懒猫微服播报天气、消息、提醒。
  • 网络收音机:用 mpg123 http://... 直接播放网络电台。
  • 家庭中控:接入 Home Assistant,把蓝牙音箱当智能家居设备控制。

写在最后

懒猫微服虽然定位是轻量 NAS/微服务平台,但它的硬件能力其实远比我们想象的要强。今天这一折腾,我把它变成了一个“小型蓝牙音频播放器”。这种玩法对技术宅来说挺有意思:你既能学到 Linux 蓝牙栈和音频服务的原理,又能把手头的小盒子改造成一个实用的设备。

❤️喜欢