OrangePiPC2 升级 Armbian 后无法发声的解决方案
症状
某一次在对 OrangePiPC2 进行系统升级后,提示内核已更新,需要进行重启。然而在重启后发现播放音乐不再有声音了。
排查过程
1、怀疑是不是音量被调成0了,因此运行 alsamixer
,发现提示 This sound device does not have any controls.
2、注意到现在这张声卡是 hdmi 的,按下 F6
选择其他声卡,可以发现还有一张 H3 Audio Codec
声卡
3、而选择 H3 Audio Codec
声卡可以看到熟悉的音量控制界面
3、大致可以推测出,由于我的音响是接到 H3 Audio Codec
上的,而 alsa 默认声卡变成了 hdmi
从而导致了播放音乐没有声音
4、将 ALSA 默认声卡修改为 H3 Audio Codec
,步骤为:
查看声卡极其对应的编号
cat /proc/asound/cards echo 或者 aplay -l | awk -F \: '/,/{print $2}' | awk '{print $1}' | uniq
0 [allwinnerhdmi ]: allwinner_hdmi - allwinner,hdmi allwinner,hdmi 1 [Codec ]: H3_Audio_Codec - H3 Audio Codec H3 Audio Codec 或者 allwinnerhdmi Codec
可以看到我想要的默认声卡名为 Codec
,其编号为1,那么创建文件 /etc/asound.conf
填入下面内容
pcm.!default { type hw card 1 } ctl.!default { type hw card 1 }
其中的 1
就是声卡对应的编号,再次播放音乐,就可以正常发声了。
另一种解决方法
其实还有另一种解决方法就是控制声卡module的载入顺序,让 H3 Audio Codec
声卡成为第一顺位的声卡就行了. 方法如下:
1、查看加载的声卡驱动
lsmod |grep snd
snd_soc_hdmi_codec 16384 1 snd_soc_simple_card 16384 0 snd_soc_simple_card_utils 16384 1 snd_soc_simple_card snd_soc_core 155648 6 sun4i_i2s,sun8i_codec_analog,snd_soc_hdmi_codec,sun4i_codec,snd_soc_simple_card_utils,snd_soc_simple_card snd_pcm_dmaengine 16384 1 snd_soc_core snd_pcm 106496 4 sun4i_i2s,snd_soc_hdmi_codec,snd_soc_core,snd_pcm_dmaengine snd_timer 32768 1 snd_pcm
你会发现查出来了好多 module,但只有两个 module 是不被别人引用的:snd_soc_hdmi_codec
和 snd_soc_simple_card
.
可以推测出 snd_soc_hdmi_codec
对应的是 hdmi
声卡, snd_soc_simple_card
对应的是 H3 Audio Codec
声卡
2、创建 /etc/modprobe.d/alsa-base.conf
文件,填入下面内容
options snd_soc_hdmi_codec index=-1 options snd_soc_simple_card index=-2
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论