用户工具

站点工具


faq:snd_output

差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

两侧同时换到之前的修订记录 前一修订版
faq:snd_output [2013/05/30 17:58]
syh
faq:snd_output [2013/05/30 18:08] (当前版本)
syh
行 1: 行 1:
 +如果你的机器扬声器可以发声,但是插上耳机后,耳机却没声音,那么这就属于本篇接下来要讨论的问题。\\
 +注意:\\
 +1.如果尚未解决声卡驱动问题,则不在本篇讨论范围之内。\\
 +2.''​sysctl hw.snd.default_unit=1''​ 或0的也能切换输出,但十分麻烦,**只对新启动的程序有效**。\\
  
 +由于硬件不同解决办法也不同,所以**无法给出一个通用的配置**,只能提供一个解决问题的思路。\\
 +所以抄了网上来路不明的配置的同学还是先删掉再说吧。\\
 +
 +以我的笔记本 ThinkPad R400 为例,声卡为 Conexant,驱动使用的是 snd_hda。\\
 +
 +==== 第一步 ====
 +重启,看到启动菜单时按空格暂停,选择 verbose 模式回车,\\
 +登陆后执行 ''​dmesg | grep hda > hda.log''​ 得到默认的硬件配置状况。\\
 +我的机器上有这样一段输出:
 +<​code>​
 +hdaa0: Original pins configuration:​
 +hdaa0: nid   ​0x ​   as seq device ​      ​conn ​ jack    loc        color   misc
 +hdaa0: 22 022140f0 15 0  Headphones ​   Jack  1/8     ​Front ​     Green   ​0 ​  
 +hdaa0: 23 61a190f0 15 0  Mic           ​None ​ 1/8     ​Ext-Rear ​  ​Pink ​   0   
 +hdaa0: 24 02a190f0 15 0  Mic           ​Jack ​ 1/8     ​Front ​     Pink    0   
 +hdaa0: 25 40f000f0 15 0  Other         ​None ​ Unknown 0x00       ​Unknown 0
 +hdaa0: 26 901701f0 15 0  Speaker ​      Fixed Analog ​ Internal ​  ​Unknown 1
 +hdaa0: 27 40f001f0 15 0  Other         ​None ​ Unknown 0x00       ​Unknown 1
 +hdaa0: 28 40f001f0 15 0  Other         ​None ​ Unknown 0x00       ​Unknown 1
 +hdaa0: 29 90a601f0 15 0  Mic           Fixed Digital Internal ​  ​Unknown 1
 +</​code>​
 +
 +解释一下几个缩写:\\
 +nid:nodes with ID(设备节点 ID)\\
 +as:association(第 N 组)\\
 +seq:sequence(顺序)\\
 +
 +那么对照前面的输出,我们就得知 Headphones(耳机) 的 nid 为22,Speaker(扬声器) 的 nid 为26。
 +
 +==== 第二步 ====
 +接下来要做的工作就是修改 ''/​boot/​device.hints''​,\\
 +把扬声器和耳机放到同一组里,比如 as=2。\\
 +还需要当检测到耳机插入时,将扬声器静音,输出到耳机,\\
 +根据 ''​man snd_hda''​ 中的描述,为了实现上述功能必须把 Headphones 的 seq 设置为15。\\
 +因此得到如下配置:
 +<​code>​
 +hint.hdac.0.cad0.nid22.config="​as=2 seq=15 device=Headphones"​
 +hint.hdac.0.cad0.nid26.config="​as=2 seq=0 device=Speaker"​
 +</​code>​
 +重启后问题解决。
/data/vhosts/wiki-data/pages/faq/snd_output.txt · 最后更改: 2013/05/30 18:08 由 syh