解决 ubuntu 下耳机无声而扬声器有声的方案

问题

ubuntu 14.04下,插上耳机没有声音,而扬声器有声音。

分析

以前曾有 google 过, 发现是声卡设备选择了 HDMI 。所以我在 alsa里面修改了默认声卡。貌似手动更改过 /etc/asound.conf 这个文件,但是自从那时开始,有时候耳机是正常的,任意插拔均可正常播放;有时候是坏的,非常鬼畜:如果开机的时候插着耳机,那么耳机就是好的。一旦拔下来,耳机就是坏的;如果开机没有插耳机,那么耳机再插上去,也是坏的。

我在 lightless 菊苣的博客里找到了相似的问题,并借鉴了他的解决方案。
原文地址
首先是用 aplay -l命令列出声卡列表,找到声卡列表:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
username@hostname:~$ aplay -l
**** PLAYBACK 硬體裝置清單 ****
card 0: HDMI [HDA Intel HDMI], device 3: HDMI 0 [HDMI 0]
子设备: 1/1
子设备 #0: subdevice #0
card 0: HDMI [HDA Intel HDMI], device 7: HDMI 1 [HDMI 1]
子设备: 1/1
子设备 #0: subdevice #0
card 0: HDMI [HDA Intel HDMI], device 8: HDMI 2 [HDMI 2]
子设备: 1/1
子设备 #0: subdevice #0
card 1: PCH [HDA Intel PCH], device 0: ALC892 Analog [ALC892 Analog]
子设备: 0/1
子设备 #0: subdevice #0
card 1: PCH [HDA Intel PCH], device 1: ALC892 Digital [ALC892 Digital]
子设备: 1/1
子设备 #0: subdevice #0

显然默认声卡是 card 1,因为肯定不能是 HDMI。你问我为什么?因为你的音频播放设备如果选了HDMI,那么音频信号就会通过HDMI接口出去,或许当你接了带有音响的HDMI显示器或是电视,这选项才有用。当你选择用耳机听音乐的时候,显然你的音频信号应该从耳机接口出来。

那么问题来了,看card 1的两个输出设备,一个是 Analog (模拟),一个是 Digital(数字),那么选哪个呢?根据经验,应该选模拟。判断是 Analog 而不是 Digital 。如果错了,改成另外一个就是。
那么剩下的就是手动更改 /etc/asound.conf 了。

解决

编辑 /etc/asound.conf,如果没有,则新建。

1
$sudo vim /etc/asound.conf

我的这个文件显示了以下内容:

1
2
3
defaults.ctl.card *
defaults.pcm.card *
defaults.timer.card *

(*为不确定值,我忘记了在我更改这个文件之前各项的原值了)
根据 lightless 博客的内容,结合实际情况,改成:

1
2
3
4
defaults.ctl.card 1
defaults.pcm.card 1
defaults.timer.card 1
defaults.pcm.device 0

重启试验效果。
效果很好。
非常到位。

总结

  1. 一个新命令 aplay -l命令已经 get
  2. 对于还在学习阶段的人来说,能用命令行解决的问题不要用现成程序解决。虽然alsamixer这个程序也是在命令行下运行的,而且这软件来回划小块块也挺好玩的。
  3. 如果一个驱动很难重装,那么只能假设驱动本身一般没有问题,有问题的是驱动配置文件。否则,卸载一个alsa,他让你连 ubuntu-desktop一块卸了,你还能怎么办呢?你总不能把ubuntu-desktop也卸载了吧!这跟网卡不一样,网卡倒是很好装驱动的。

解决 ubuntu 下耳机无声而扬声器有声的方案
http://blog.yotubird.club/posts/2016/11c7d216.html
作者
nqr
发布于
2016年6月1日
许可协议