要想充分发掘"云芯一号"的多媒体服务器潜能, 音频 与 蓝牙 功能是必不可少的组件. 我们注意到初始的 Ubuntu 系统并未默认开启音频与蓝牙的支持, 故本文提供一种解决问题的思路.
("宽心"通过刷入 Debian 9 覆盖原厂系统的方式也实现了 HDMI 音频输出的支持, 可参见他的文章)
前置要求
- 安装桌面环境 (本文使用的是
apt install xubuntu-desktop
所安装的 xfce4 桌面环境) - PulseAudio 音频驱动 (桌面环境一般自带)
- 蓝牙管理器 (桌面环境一般自带, 可通过"设置 -> 蓝牙管理器"查看)
- 安装显示驱动 (可选, 参见"徐珂靖"的文章)
方法局限
- 音频输出目前仅支持 HDMI 输出, 板载耳机接口尚未支持 (TODO), 故只能通过 显示器背后的耳机接口 或 连接电视 输出音频.
- 使用蓝牙连接音箱或耳机可完美无线输出音频.
配置音频驱动
1. 安装 alsamixer 并启动
sudo apt install alsamixer
sudo alsamixer
效果如下图所示, 可以看到软件识别出了云芯一号的音频解码方案为 rt5651 芯片:
2. 使用 左右键 切换音频源, 上下键 调整音量 将 Mono DAC
与 ADC Boos
的音量拉满.
3. 使用 M 键控制音频源开关(即静音开关)\, 按照下表操作相应音频源的开关, 0代表关, 1代表开. [1]
[ ! ] 注意以下列表中第一项置为关闭(MM), 以下列表中其他项置为开启(OO).
"RT5651 ASRC Switch" 0
"DAC MIXL INF1 Switch" 1
"DAC MIXR INF1 Switch" 1
"Stereo DAC MIXL DAC L1 Switch" 1
"Stereo DAC MIXR DAC R1 Switch" 1
"OUT MIXL DAC L1 Switch" 1
"OUT MIXR DAC R1 Switch" 1
"HPOVOL L Switch" 1
"HPOVOL R Switch" 1
"HPO MIX HPVOL Switch" 1
"HPO MIX HPVOL Switch" 1
"HPO L Playback Switch" 1
"HPO R Playback Switch" 1
4. 编辑文件 /etc/pulse/default.pa
在文件末尾添加配置项如下 [2]
set-default-sink 0
5. 重启系统后即可输出 HDMI 音频.
配置蓝牙
云芯一号使用的是 AP6212 方案提供WIFI和蓝牙支持. 因为蓝牙涉及系统硬件层面操作, 有时 sudo
也不能提供足够的权限, 因此需要首先切换到 root
会话.
sudo su
然后依次执行以下操作 [3]:
[ ! ] 注意应当把下文中的 $MAC\_OPTIONS 替换为你的包装盒内贴的原厂蓝牙 MAC 地址 (或者任意一个喜欢的地址)
[ ! ] ttyS0 是蓝牙设备的接口
systemctl stop bluetooth
rfkill unblock all
echo "0" > /sys/class/rfkill/rfkill0/state
echo "1" > /sys/class/rfkill/rfkill0/state
echo " " > /dev/ttyS0
hciattach /dev/ttyS0 bcm43xx 1500000 flow bdaddr $MAC_OPTIONS
hciconfig hci0 up
如此蓝牙就已经启动, 可以使用如下命令进行查看:
sudo hciconfig -a
预期效果如下:
最后我们可以通过桌面环境提供的 "设置 -> 蓝牙管理器" 来 搜索, 添加和配对 蓝牙设备, 效果如下图:
需要注意的是以上所进行的蓝牙配置在重启后会失效, 因此可以将以上代码存为一个 sh 脚本在某次重启后需要的时候手动运行一次, 或者设置成一个开机的服务以使其永久有效.
以上.
参考文献
[1] RK3399 ANDROID7.1 ALC5651 声卡驱动调试 - 灰信网
[2] FriendlyDesktop 18.04 for RK3399 - 友善之臂 Wiki
[3] AP6212a - Bluetooth Audio Streaming Timeouts in audio bus - armbian