我这个电脑装上 openSUSE 就没有过声音 把调试的方法记录下方便后来人。
查看有几块声卡
$ cat /proc/asound/cards
0 [PCH ]: HDA-Intel - HDA Intel PCH
HDA Intel PCH at 0xf7220000 irq 124
1 [NVidia ]: HDA-Intel - HDA NVidia
HDA NVidia at 0xf7080000 irq 17
我的是两块。
查看声卡具体型号
$ cat '/proc/asound/card0/codec#0'
Codec: Realtek ALC887-VD
要看哪张卡就把 0 换成几。
查找驱动
$ /sbin/lspci | grep Audio
00:1f.3 Audio device: Intel Corporation 100 Series/C230 Series Chipset Family HD Audio Controller (rev 31)
01:00.1 Audio device: NVIDIA Corporation GM206 High Definition Audio Controller (rev a1)
这里你有几张声卡肯定就会出几条。然后查找硬件的 ID,这个查找驱动特别准确:
$ /sbin/lspci -n | grep "00:1f.3"
00:1f.3 0403: 8086:a170 (rev 31)
然后复制这个 “8086:a170" 去贴到 google 搜索。8086 意思是厂商,a170 是型号。
一般就会在 Linux Kernel Drver Database (LKDDB) 里找到对应的内核驱动模块的名字。
我的是 snd-hda-codec
, snd-hda-intel
, snd-hda-intel
。
确认驱动已加载
$ lsmod
snd_hda_codec_hdmi 65536 1
snd_hda_codec_realtek 126976 1
snd_hda_codec_generic 90112 1 snd_hda_codec_realtek
ledtrig_audio 16384 2 snd_hda_codec_generic,snd_hda_codec_realtek
snd_hda_intel 45056 4
snd_hda_codec 151552 4
snd_hda_codec_generic,snd_hda_codec_hdmi,snd_hda_intel,snd_hda_codec_realtek
snd_hda_core 94208 5 snd_hda_codec_generic,snd_hda_codec_hdmi,snd_hda_intel,snd_hda_codec,snd_hda_codec_realtek
alsamixer 调试
$ alsamixer
进去之后先按 F6 选择声卡,然后按 F3 切到 Playback。
这时候就可以通过左右箭头来切换,上下箭头来调节音量了。如果看到有显示为 MM 的,是禁用,可以按键盘上的 M 键启用。
注意 Front Mic 和 Front Mix Boost 轻易不要开,不然音量太大了耳机有电流声。
保存 alsa 结果
$ sudo alsactl store
会在 /etc 目录下生成一个 asound.state,下次开机就不用再调了。