Win10论坛

Win10正式版系统下载主题平板

重定义Modern UI,打造完美Windows全新体验

Windows10下载|安装|新手宝典|必备软件

搜索
查看: 2409|回复: 63

[交流] 关于耳机只有背景声及唤醒无声的探讨【更新ALC233解决方案】 [复制链接]

Rank: 5Rank: 5Rank: 5

UID
633916
帖子
533
PB币
575
贡献
0
技术
0
活跃
372
发表于 2017-2-15 22:04:19 |显示全部楼层
本帖最后由 neroxps 于 2017-3-2 09:08 编辑

耳机问题临时解决办法【目前识用ALC233与ALC256,其余需要自己找是哪个Node节点】

目前只能每次开机运行 hda-【防止吃掉】verb 0x19 SET_PIN_WIDGET_CONTROL 0x24 这个命令使得耳机正常。(为什么是0X19,我也不知道,我的0X19 并不是什么节点,也不是PathMap经过的路径,我是在CC的配置文件里面看到这个命令,用hda【防止吃掉】-verb 执行下就好了。

  1. Node 0x19 [Pin Complex] wcaps 0x40048b: Stereo Amp-In
  2.   Amp-In caps: ofs=0x00, nsteps=0x03, stepsize=0x2f, mute=0
  3.   Amp-In vals:  [0x00 0x00]
  4.   Pincap 0x00003724: IN Detect
  5.     Vref caps: HIZ 50 GRD 80 100
  6.   Pin Default 0x411111f0: [N/A] Speaker at Ext Rear
  7.     Conn = 1/8, Color = Black
  8.     DefAssociation = 0xf, Sequence = 0x0
  9.     Misc = NO_PRESENCE
  10.   Pin-ctls: 0x20: IN VREF_HIZ
  11.   Unsolicited: tag=00, enabled=0
  12.   Power states:  D0 D1 D2 D3 EPSS
  13.   Power: setting=D3, actual=D3
复制代码



经过查日志分析,发现CodecCommander是运作的,但是不知道为何,开机的时候CodecCommander传输命令无效,需要手动再运行 hda【防止吃掉】-verb 0x19 SET_PIN_WIDGET_CONTROL 0x24 这个命令耳机才正常。

睡眠后无声临时解决办法


将CC的 Perform Reset 选项改成YES

后附我关于CC的SSDT

  1. // This SSDT demonstrates a custom configuration for ALC283.
  2. // It is the same data that is currently in the Info.plist

  3. // If you had a codec that needed the same configuration, you could
  4. // load this SSDT in order to implement it without modifying the kext.
  5. // It will override the defaults specfied by the CodecCommander Info.plist

  6. // Customize to suit your needs.

  7. DefinitionBlock ("SSDT-16.aml", "SSDT", 1, "hack", "ALC283", 0)
  8. {
  9.     External(_SB.PCI0.HDEF, DeviceObj)
  10.    
  11.     Name(_SB.PCI0.HDEF.RMCF, Package()
  12.     {
  13.         "CodecCommander", Package()
  14.         {
  15.             "Custom Commands", Package()
  16.             {
  17.                 Package(){}, // signifies Array instead of Dictionary
  18.                 Package()
  19.                 {
  20.                     // 0x19 SET_PIN_WIDGET_CONTROL 0x25
  21.                     "Command", Buffer() { 0x01, 0x97, 0x07, 0x25 },
  22.                     "On Init", ">y",
  23.                     "On Sleep", ">n",
  24.                     "On Wake", ">y",
  25.                 },
  26.                 Package()
  27.                 {
  28.                     // 0x21 SET_UNSOLICITED_ENABLE 0x83
  29.                     "Command", Buffer() { 0x02, 0x17, 0x08, 0x83 },
  30.                     "On Init", ">y",
  31.                     "On Sleep", ">n",
  32.                     "On Wake", ">y",
  33.                 },
  34.             },
  35.             "Perform Reset", ">y",
  36.             "Send Delay", 10,
  37.             "Sleep Nodes", ">n",
  38.         },
  39.     })
  40. }
  41. //EOF
复制代码


使用原版CodecCommander.kext 放到Clover,用上面的 SSDT放入ACPI,可以无需修改CodecCommander.kext,方便日后CodecCommander更新。








我的声卡是 ACL233 设备ID:Vendor Id: 0x10ec0233

我使用 AppleALC 驱动 lyoutID:3、4 这两个最合适的是4,4不怕爆音,所有驱动正常。

参考了帖子:EAPD-Codec-Commander项目 的 README.md 发现其中CC有个选项 Perform Reset

Perform Reset on External Wake - same as a【防止吃掉】bove, but for fugue-sleep, when you break the machine entering sleep prematurely.

我用google 翻译出来意思大概就是在唤醒的时候重置声卡的参数?(让声卡还原到重启那样?)ps:抱歉,我英文水平真的非常有限。估计理解会有很大的偏差

后来我开启了此选项,发现唤醒后,声音恢复了,但是耳机依旧是只有背景声。

后来我与坛友 https://github.com/RehabMan/EAPD-Codec-Commander 上的所有的脚本,有的获取widget_dump.sh 甚至可以获取系统目前所有的 Node 信息。node_dump.sh,但也未从中找到 UNSOLICITED_ENABLE 设定值的信息。


You first need to determine which widget nodes need modification. You use CodecCommanderClient (installed as hda【防止吃掉】-verb with 'make install') to determine what needs to change. After you determine the widget node that needs to be set after sleep, you can make the necessary Info.plist changes.

I added some scripts to the repo today based on stuff that the-dark【防止吃掉】void provided. They are simple scripts that run hda【防止吃掉】-verb for all nodes...

Check out the repo: https://github.com/RehabMan/EAPD-Codec-Commander

Here's an overview of what I did:

- installed and got VoodooHDA to work (built from latest sources, fixed bugs, etc.)
- noticed that no headphone problem with VoodooHDA
- used widget_dump.sh to look at the widget values
- set everything back for patched AppleHDA【防止吃掉】
- verified headphones still a problem
- used widget_dump.sh to look at widget values
- compared the two dumps (VoodooHDA【防止吃掉】 vs. AppleHDA dump)
- started poking around with hda【防止吃掉】-verb to set the pini widgets control
- for example, I noticed that pin widget for node 0x19 was 0 with AppleHDA, but 0x25 with VoodooHDA, so with AppleHDA (headphone problematic):
Code (Text):

  hda【防止吃掉】-verb 0x19 SET_PIN_WIDGET_CONTROL 0x25
- tested headphones... and at that point they were working

And all that led to what is now in the checked in Info.plist for CodecCommander, Realtek ALC283 profile.

I'm not sure how you'd stumble into the right setup without ha[防吃掉]ving a working configuration (in my case, VoodooHDA) that you can read the HDA configuration from. It would take a lot of trial/error (or reading the HDA spec) to figure out that node 0x19 needs to be 0x25.

Maybe there is a way to read HDA pin widget control (or other settings) in Linux?

Note: I did a fair bit of reading of the Intel HDA spec.... That way I knew what an HDA【防止吃掉】 verb was, what a node was, etc.

目前我的解决办法

1.解决睡眠唤醒后无声问题:

CodecCommander.kext/Contents/Info.plist 查看 Codec Profile 中 硬件id 对应的解决方案是哪个

我的是 10ec_0233 对应的是 Realtek ALC283,etc

在下方找到 Realtek ALC283,etc 方案,将 Perform Reset 设为 YES

2.解决耳机只有背景声问题:

我暂时还没找到解决方案。
还请各大遇到这些问题的坛友共同讨论研究。

我查到最近在 tonymacx86 和我们有一样问题人,RM和他一起讨论的细节,RM表示这种情况的确是使用 CC来解决,但是那个人就说,CC无法解决这个问题。最终他的结论是,也许是10.12的系统改进了,导致CC失效?

Yet this codec_dump report label 233 but ID is 235 so I suppose it is 235. With my work around, I stop researching further because:
- layout 3 patch is Mirones' which ha【防止吃掉】ve been working fine since 10.11.4.
- even CodecCommander can not reset the headphone.
So I conclude this is the Sierra internal structure change.
Solved.

帖子:[Solved] Balance control mute headphone AppleALC


我看外文帖子全部都靠 Google翻译,加上猜测而来,也许不准确,还请各位老大多多指教。

再次感谢远景各位坛友一直以来的照顾与帮助。




2

查看全部评分

Rank: 5Rank: 5Rank: 5

UID
633916
帖子
533
PB币
575
贡献
0
技术
0
活跃
372
发表于 2017-2-16 10:57:31 来自手机 |显示全部楼层
本帖最后由 neroxps 于 2017-2-16 11:09 编辑

郁闷啊,版主,我上传的帖子不是这样的,为啥会把我的字吃掉了呢?

Rank: 2Rank: 2

UID
2853610
帖子
116
PB币
2
贡献
0
技术
0
活跃
220
发表于 2017-2-16 14:05:28 |显示全部楼层
本帖最后由 cangyan1104 于 2017-2-16 14:52 编辑

感谢楼主,我的alc235开启Perform Reset后唤醒无声终于解决了!
跟楼主一样的问题,插耳机只有背景音,要调节平衡才正常。之后我按照这个帖子修改cc后http://bbs.pcbeta.com/viewthread-1677191-1-1.html,依然没解决

这个帖子410楼中有cc的一些命令http://bbs.pcbeta.com/viewthread-1676681-21-1.html
1

查看全部评分

Rank: 5Rank: 5Rank: 5

UID
633916
帖子
533
PB币
575
贡献
0
技术
0
活跃
372
发表于 2017-2-16 17:37:36 |显示全部楼层
cangyan1104 发表于 2017-2-16 14:05
感谢楼主,我的alc235开启Perform Reset后唤醒无声终于解决了!
跟楼主一样的问题,插耳机只有背景音,要调 ...

非常感谢你的回复,您的资料非常有。

再次感谢!

Rank: 2Rank: 2

UID
158206
帖子
328
PB币
14
贡献
0
技术
7
活跃
214
发表于 2017-2-16 17:54:55 |显示全部楼层
耳机只有背景声应该不是驱动的问题,耳机目前分国标和欧标,iphone黑头(国标)的耳机插上只有背景声,白头(欧标)就可以

Rank: 5Rank: 5Rank: 5

UID
633916
帖子
533
PB币
575
贡献
0
技术
0
活跃
372
发表于 2017-2-17 20:53:07 |显示全部楼层
ecdht 发表于 2017-2-16 17:54
耳机只有背景声应该不是驱动的问题,耳机目前分国标和欧标,iphone黑头(国标)的耳机插上只有背景声,白头 ...

并不是,把 CodecCommander.kext 放到 Clover的驱动目录,用hda-verb运行下面的命令,耳机就好了。

并且,用CC后,唤醒后耳机也会好,就是扬声器没声音,而拔出耳机后,扬声器也有声音了。(CC生效了)


  1. cd 到这个命令的目录。
  2. sudo chmod +x ./hda-verb./hda-verb 0x19 SET_PIN_WIDGET_CONTROL 0x24
复制代码


其实上面的设置 CC里面就有,但是CC貌似在10.12.3 下开机时候不生效。


我抓了CC的Debug版本的日志。发现开机也会设置,但是设置不生效。


(上面的20是我自己设置的,其实24和20都一样)
20数据意义就是 H-Phn Enable 在二楼提供的帖子 140楼中楼主有提到过。

我发现开不开 VRefEN  都一样。

英语不行,High Definition Audio Specification 本来难懂,还需要google一字一句翻译~肯德非常吃力!
附件: 你需要登录才可以下载或查看附件。没有帐号?注册

Rank: 1

UID
1118180
帖子
34
PB币
0
贡献
0
技术
0
活跃
40
发表于 2017-2-18 17:38:29 |显示全部楼层
neroxps 发表于 2017-2-17 20:53
并不是,把 CodecCommander.kext 放到 Clover的驱动目录,用hda-verb运行下面的命令,耳机就好了。

并 ...

小白一名,账号还是淘宝租的,但是感谢楼主,解决了睡眠唤醒问题,目前一切正常了,CodecCommander.kext放在Clover驱动中没有生效,改成放到SLE文件夹,修复权限,一切正常了
声卡ALC235附件是CC驱动(没有按楼主的教程修复唤醒之前的),希望有帮助
附件: 你需要登录才可以下载或查看附件。没有帐号?注册

Rank: 1

UID
1118180
帖子
34
PB币
0
贡献
0
技术
0
活跃
40
发表于 2017-2-18 18:08:57 |显示全部楼层
neroxps 发表于 2017-2-17 20:53
并不是,把 CodecCommander.kext 放到 Clover的驱动目录,用hda-verb运行下面的命令,耳机就好了。

并 ...

审核好慢,小白一枚,感谢楼主的方法解决了我的问题,我把CC驱动从Clover挪动到SLE目录修复权限后,一切正常,开机耳机就是好用的,不知道对楼主没有帮助

Rank: 5Rank: 5Rank: 5

UID
633916
帖子
533
PB币
575
贡献
0
技术
0
活跃
372
发表于 2017-2-18 19:46:18 |显示全部楼层
US88 发表于 2017-2-18 18:08
审核好慢,小白一枚,感谢楼主的方法解决了我的问题,我把CC驱动从Clover挪动到SLE目录修复权限后,一切正 ...

是吗?诶 我真没试过~哈哈

感谢你的回复,我试试,如果有用再反馈!

Rank: 2Rank: 2

UID
2853610
帖子
116
PB币
2
贡献
0
技术
0
活跃
220
发表于 2017-2-18 20:32:50 |显示全部楼层
我换了个smbios后神奇的解决了,插耳机睡眠唤醒都正常了

Rank: 5Rank: 5Rank: 5

UID
633916
帖子
533
PB币
575
贡献
0
技术
0
活跃
372
发表于 2017-2-18 20:36:06 |显示全部楼层
本帖最后由 neroxps 于 2017-2-18 20:42 编辑
cangyan1104 发表于 2017-2-18 20:32
我换了个smbios后神奇的解决了,插耳机睡眠唤醒都正常了

这么神奇?你是什么CPU?换了什么SMBIOS?
不用CC也可以么?

Rank: 2Rank: 2

UID
2853610
帖子
116
PB币
2
贡献
0
技术
0
活跃
220
发表于 2017-2-18 20:41:20 |显示全部楼层
6300hq,换了air6,2

Rank: 5Rank: 5Rank: 5

UID
713205
帖子
580
PB币
362
贡献
0
技术
1
活跃
1090
发表于 2017-2-18 20:46:46 |显示全部楼层
Perform Reset 设为 YES这个对我的alc236有效多谢lz

Rank: 5Rank: 5Rank: 5

UID
633916
帖子
533
PB币
575
贡献
0
技术
0
活跃
372
发表于 2017-2-18 20:47:19 |显示全部楼层
yjplayer 发表于 2017-2-18 20:46
Perform Reset 设为 YES这个对我的alc236有效多谢lz

不妨试试7楼的办法!

Rank: 5Rank: 5Rank: 5

UID
713205
帖子
580
PB币
362
贡献
0
技术
1
活跃
1090
发表于 2017-2-19 12:17:49 |显示全部楼层
neroxps 发表于 2017-2-18 20:47
不妨试试7楼的办法!

经过反复测试,发现改CodecCommander的话有时也会失灵,原因不明,但是用ssdt+CodecCommander的话貌似没什么问题

Rank: 5Rank: 5Rank: 5

UID
633916
帖子
533
PB币
575
贡献
0
技术
0
活跃
372
发表于 2017-2-19 13:15:15 |显示全部楼层
yjplayer 发表于 2017-2-19 12:17
经过反复测试,发现改CodecCommander的话有时也会失灵,原因不明,但是用ssdt+CodecCommander的话貌似没什 ...

你的 CodecCommander 是放在 SLE 还是 Clover ?

Rank: 5Rank: 5Rank: 5

UID
713205
帖子
580
PB币
362
贡献
0
技术
1
活跃
1090
发表于 2017-2-19 13:24:43 |显示全部楼层
neroxps 发表于 2017-2-19 13:15
你的 CodecCommander 是放在 SLE 还是 Clover ?

放哪都测试过,还是用ssdt比较稳定,目前没发现问题

Rank: 5Rank: 5Rank: 5

UID
633916
帖子
533
PB币
575
贡献
0
技术
0
活跃
372
发表于 2017-2-19 13:31:15 |显示全部楼层
yjplayer 发表于 2017-2-19 13:24
放哪都测试过,还是用ssdt比较稳定,目前没发现问题

你是什么型号的声卡?

Rank: 5Rank: 5Rank: 5

UID
713205
帖子
580
PB币
362
贡献
0
技术
1
活跃
1090
发表于 2017-2-19 13:39:22 |显示全部楼层
neroxps 发表于 2017-2-19 13:31
你是什么型号的声卡?

alc236.。。。。

Rank: 5Rank: 5Rank: 5

UID
633916
帖子
533
PB币
575
贡献
0
技术
0
活跃
372
发表于 2017-2-19 14:59:52 |显示全部楼层
yjplayer 发表于 2017-2-19 13:39
alc236.。。。。

硬件ID是 10ec_0236 ?

你是自己根据教程修改,找到的CC的 SET_PIN_WIDGET_CONTROL 和 SET_UNSOLICITED_ENABLE 的值?
关闭

站长推荐

回顶部
Copyright (C) 2005-2017 pcbeta.com, All rights reserved
Powered by Discuz!  苏ICP备17027154号
请勿发布违反中华人民共和国法律法规的言论,会员观点不代表远景论坛官方立场。
远景在线 | 远景论坛 | 苹果论坛 | Win10论坛 | Win8论坛 | Win7论坛 | WP论坛 | Office论坛 | 电脑硬件 | 安卓软件