主要问题描述:我在飞牛的Docker里安装了 Airplay, 这样把NAS接一个外接音箱,就可以当成无线音箱来用,直接把手机的音乐播放投到上面来播放。 (文章底部有写我是怎么安装Airplay的)
我的报错如下:
speaker-test 1.2.8
Playback device is default
Stream parameters are 48000Hz, S16_LE, 2 channels
Using 16 octaves of pink noise
ALSA lib confmisc.c:855:(parse_card) cannot find card '0'
ALSA lib conf.c:5180:(_snd_config_evaluate) function snd_func_card_inum returned error: No such file or directory
ALSA lib confmisc.c:422:(snd_func_concat) error evaluating strings
ALSA lib conf.c:5180:(_snd_config_evaluate) function snd_func_concat returned error: No such file or directory
ALSA lib confmisc.c:1334:(snd_func_refer) error evaluating name
ALSA lib conf.c:5180:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory
ALSA lib conf.c:5703:(snd_config_expand) Evaluate error: No such file or directory
ALSA lib pcm.c:2666:(snd_pcm_open_noupdate) Unknown PCM default
Playback open error: -2,No such file or directory
然后试了 aplay -l 一直报 :
aplay: device_list:274: no soundcards found...
说明找不到声卡啊。
fnOS 可能缺少 ALSA 组件
你的 shairport-sync
报错:
ALSA lib confmisc.c:855:(parse_card) cannot find card '0'
说明 找不到声卡,可能的原因:
- 声卡驱动没有安装(ALSA 组件可能缺失)。
- 当前用户没有访问音频设备的权限。
/dev/snd
目录不存在(系统可能没有加载音频模块)。
尝试修复
1. 检查是否有声卡
aplay -l
如果输出:
aplay: device_list:274: no soundcards found...
说明系统没有检测到声卡。
2. 确保 ALSA 组件完整
sudo apt update && sudo apt install --reinstall alsa-utils pulseaudio -y
然后 重启系统 再试 aplay -l
。
3. 加载声卡驱动
sudo modprobe snd-hda-intel
如果 modprobe
命令仍然报 not found
,说明 modprobe
没有正确安装,可以尝试:
sudo apt install --reinstall kmod -y
然后 再次执行:
sudo modprobe snd-hda-intel
4. 确保 /dev/snd
存在
ls -l /dev/snd
如果 /dev/snd
目录不存在,可能是因为 声卡驱动没有加载 或 fnOS 自带的内核不支持 ALSA。
如果 /dev/snd
存在,但你的用户没有权限访问,可以试试:
sudo usermod -aG audio $USER
newgrp audio
我的问题是最终靠这两行解决了,
第一行:sudo usermod -aG audio $USER
usermod
:修改用户属性的命令。-aG audio
:-a
:**追加(append)**用户到一个组,而不会移除原来的组。G audio
:把用户添加到audio
组,audio
组有访问声卡的权限。
$USER
:代表当前用户。
💡 作用:把你的用户添加到 audio
组,赋予访问声卡的权限。
第二行:newgrp audio
newgrp
:让当前 shell 立即应用新的用户组权限,而不用重启或重新登录。audio
:切换到audio
组,使新权限立即生效。
💡 作用:让 usermod
变更的权限立即生效,不需要注销或重启。
然后再尝试 shairport-sync
。
5. 试试 pulseaudio
如果 ALSA 还是无法正常工作,尝试使用 pulseaudio
:
pulseaudio --start
然后再运行 shairport-sync
。
总结
飞牛的 fnOS
可能 精简了 ALSA 或者 没有完整的音频驱动,你可以:
- 检查 ALSA 是否安装完整:
sudo apt install --reinstall alsa-utils pulseaudio -y
- 检查声卡驱动:
sudo modprobe snd-hda-intel
- 检查
/dev/snd
目录:ls -l /dev/snd
- 确保用户有
audio
组权限:sudo usermod -aG audio $USER
- 尝试
pulseaudio
:pulseaudio --start
你先试试这些方法,看哪一步能解决问题。
在飞牛OS上的Docker里安装Airplay
先说说坑吧, 我一开始是在Docker的图形界面里安装的,一直都不成功,要么安装报错, 要么安装成功了,无法使用,要么就是Airplay也能正常启动,但是一播放音乐就自己停服了。
所以,我去命令行里来安装了,下面这要安装;
sudo docker run -d --name airplay --network=host --device /dev/snd:/dev/snd mikebrady/shairport-sync
最后上一张截图, WangNas就是我的NAS无线音箱了: