litaocomet 发表于 2017-7-9 20:27

关于二合一三节点combo jack插孔的交流探讨

现在好多笔记本电脑的耳麦插孔,为了节省空间都改为了二合一的插孔,即耳机和麦克风合二为一个插头,这样带来的好处就是节省了笔记本的外设空间,不再需要2个那么多的地方,但是也随之带来了一些问题,当然,在windows下面没有任何困难。在hackintosh下面,问题就来了。




二合一的combo插头,总共分为四段,分别定义是地,左声道,右声道,麦克风。
这里面又分为美标和国标,具体定义有所不同。当年iPhone4s的随机耳机就分为美标版和国标版,有印象的可以回顾下。




对于这种二合一的耳麦插头,论坛有过相关讨论,具体思路就是通过alcplugfix来实现耳麦插入和拔出的时候,自动切换内置和外置,实现输入输出的切换。对于四节点的声卡,当然很容易实现,因为内置mic,speaker和外置的mic、HP out都有定义,无非就是添加节点路径,并做好alcplugfix里面的 SET_PIN_WIDGET_CONTROL 的设定值,这样就达到了预期目的。

当然,还有个例外,就是三节点的二合一插孔,一般是没有 mic at ext这个节点的,论坛以前也有人讨论过这个情况,具体思路就是添加一个N/A节点当做LineIn,线路输入的方式将外置mic添加进去,并用alcplugfix进行切换。

相关讨论帖:
关云长羽的 【声卡驱动完善进阶】——关于耳机杂音解决办法及三节点信息驱动双麦克风的猜想
https://blog.neroxps.cn/blog/macOS/Combo-Audio-Ext-Mic.html

以上诸位都对combo jack的问题进行了前瞻性的探索,付出了很多努力。
然而,经过我对自己的笔记本上alc255这声卡进行研究时发现,情况远非如此简单。特别是和@gujiangjiang进行探讨,在对比了他的xps 15上面的alc 298之后,我终于有了一些心得,具体如下:
我的alc 255 节点信息:


从中可以看出0x12为内置麦克风,0x14位内置扬声器,0x21位耳机,唯独没有外置麦克风的节点,那么当我把0x18,0x19,0x1a,0x1b,0x1d等节点,逐一当做mic at ext加入时候,重新制作applealc,还是不能实现耳麦的线路音频输入,最多只能显示出来线路输入,但是没有任何电平信号。
这里就产生问题了,这是为什么呢?后来经过研究发现,其实有一种方法可以判断出来,就是在利用linux提取声卡的codec的时候,最好用ubuntu,版本号高于ubuntu 14.04,一定要高于这个版本(14.04,14.10,15.04,15.10,16.04,16.10,17.04……)都可以,然后在试用界面,插入耳麦,如果弹出如下窗口:




即让你选择插入设备类型,那么恭喜你,你的三节点combo jack有解。
如果没有提示,并且ubuntu的声音设置里面没有任何外置麦克风的信息,那么很抱歉。
那么,再深入思考一下原因,三节点的耳麦输入为什么在windows下是可以的,因为在windows下安装Realtek的声卡驱动以后,每当插入耳麦的时候,也弹出一个如上图类似的选择设备类型的窗口,这里我可以初步得出结论:在windows下面,耳麦输入是靠软件来实现的,这种方式到了linux 和 mac下面,当然无法实现(或者说暂时无法)。

至此,关于三节点的的combo jack,我就研究了这么多,欢迎大家来讨论。

gujiangjiang 发表于 2017-7-9 21:29

先抢个沙发。

请叫我官人 发表于 2017-7-9 21:36

前排围观一下 声卡一直搞的不怎么样

cwz326237076 发表于 2017-7-9 21:40

alc256驱动失败,特来学习

没事说说梦话 发表于 2017-7-9 22:23

前排学习一下

zangyichen1998 发表于 2017-7-9 22:38

前排学习一下。

hellozx 发表于 2017-7-9 22:42

gujiangjiang的可以切换吧
你的不能吗?

litaocomet 发表于 2017-7-9 22:45

hellozx 发表于 2017-7-9 22:42 https://www.pcbeta.com/static/image/common/back.gif
gujiangjiang的可以切换吧
你的不能吗?

是的,他的在linux下面有设备类型选择窗口,所以到了mac下面用alcplugfix可以切换,并且效果还不错。

hellozx 发表于 2017-7-9 23:22

litaocomet 发表于 2017-7-9 22:45 https://www.pcbeta.com/static/image/common/back.gif
是的,他的在linux下面有设备类型选择窗口,所以到了mac下面用alcplugfix可以切换,并且效果还不错。

我觉得既然alcplugfix可以侦测设备类型
那么可以尝试使用代码来达到模拟手动切换的目的
比如侦测到输出设备由IntSpeaker切换为HP out
模拟手动切换节点信息即从Mic切换到Line in

641302649 发表于 2017-7-9 23:24

litaocomet 发表于 2017-7-9 23:26

hellozx 发表于 2017-7-9 23:22 https://www.pcbeta.com/static/image/common/back.gif
我觉得既然alcplugfix可以侦测设备类型
那么可以尝试使用代码来达到模拟手动切换的目的
比如侦测到输出 ...

这个不需要的,在做applealc的时候已经有这个了,关键是combo接口不一样,外置的输入输出全在一个口,不像以前的那样,笔记本2个插孔,一个麦,一个耳机,如果是这样applealc会自动切的。

litaocomet 发表于 2017-7-9 23:28

hellozx 发表于 2017-7-9 23:22 https://www.pcbeta.com/static/image/common/back.gif
我觉得既然alcplugfix可以侦测设备类型
那么可以尝试使用代码来达到模拟手动切换的目的
比如侦测到输出 ...

到了combo接口,插入耳麦的时候,自然会把输出切换到耳机,但是麦克风默认不会切的,因为原本需要侦测2个的事,现在只能侦测到一个了。

messii 发表于 2017-7-10 00:58

赞一个,笔记本是vn7二代,声卡也是alc255,不过问题更加奇葩,linux下提取的codec压根没有mic字眼,win官方声卡驱动可以驱动内外麦克风,然而Linux下貌似无解,寻遍各类论坛都没有找到解决的先例。附上节点信息vendor Id:0x10ec0255

0x12       0x411111c0: Speaker at Ext Rear
0x14       0x90172120: Speaker at Int N/A
0x17       0x40000000: Line Out at Ext N/A
0x18       0x411111f0: Speaker at Ext Rear
0x19       0x411111f0: Speaker at Ext Rear
0x1a       0x411111f0: Speaker at Ext Rear
0x1b       0x411111f0: Speaker at Ext Rear
0x1d       0x40700001: Modem Hand at Ext N/A
0x1e       0x411111f0: Speaker at Ext Rear
0x21       0x02211030: HP Out at Ext Front

daliansky 发表于 2017-7-10 07:55

如果能将三节点的二合一耳机的线路输入和内置麦克风做成手动切换也行,顶多在插入耳机的时候再手动选择下mic的输入也能解决这个问题。可惜我的ALC256无法做到这些,目前能做到的是插入耳机mic通过内置麦克风输入。

litaocomet 发表于 2017-7-10 08:26

daliansky 发表于 2017-7-10 07:55 https://www.pcbeta.com/static/image/common/back.gif
如果能将三节点的二合一耳机的线路输入和内置麦克风做成手动切换也行,顶多在插入耳机的时候再手动选择下mi ...

你先在ubuntu下插入耳麦试试,看有没有那个设备类型选择窗口,然后顺便再提取下codec,反正两件事同时在linux下面完成。看看结果就知道继续该怎么搞了。

litaocomet 发表于 2017-7-10 08:36

messii 发表于 2017-7-10 00:58 https://www.pcbeta.com/static/image/common/back.gif
赞一个,笔记本是vn7二代,声卡也是alc255,不过问题更加奇葩,linux下提取的codec压根没有mic字眼,win官方 ...

你这个节点信息好奇葩,不过node 0x12貌似应该是mic at int,你这里不是,好另类,另外,在提取codec的时候,最好选用新一点的发型版本,建议用ubuntu17.04试试,有时候和linux发型版本也有关系。

maojinbing 发表于 2017-7-10 09:02

没有此设备,赶来围观

tony_weibs 发表于 2017-7-10 09:35

先围观一下

realbamboo 发表于 2017-7-10 09:49

前排学习了。我的ALC887的版本有好多。

litaocomet 发表于 2017-7-10 10:33

realbamboo 发表于 2017-7-10 09:49
前排学习了。我的ALC887的版本有好多。

887的layout太多,要么一个一个试,要么直接提取codec,写出pinconfig以后,对比applealc里面的预设值,看属于哪个layout,这样比较方便。
个人建议,其实完全提取自己的codec,然后制作高度符合自己的精简的applealc。原版applealc因为考虑通用性,加入了好多型号,好多pinconfig,好多layout,太臃肿庞大,而且也用不上。
页: [1] 2
查看完整版本: 关于二合一三节点combo jack插孔的交流探讨