- 积分
- 215
- 最后登录
- 2021-1-23
- 精华
- 0
- 阅读权限
- 30
- 主题
- 49
- UID
- 633916
- 帖子
- 538
- PB币
- 622
- 威望
- 0
- 贡献
- 0
- 技术
- 0
- 活跃
- 593
  
- UID
- 633916
- 帖子
- 538
- PB币
- 622
- 贡献
- 0
- 技术
- 0
- 活跃
- 593
|
发表于 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 执行下就好了。
- Node 0x19 [Pin Complex] wcaps 0x40048b: Stereo Amp-In
- Amp-In caps: ofs=0x00, nsteps=0x03, stepsize=0x2f, mute=0
- Amp-In vals: [0x00 0x00]
- Pincap 0x00003724: IN Detect
- Vref caps: HIZ 50 GRD 80 100
- Pin Default 0x411111f0: [N/A] Speaker at Ext Rear
- Conn = 1/8, Color = Black
- DefAssociation = 0xf, Sequence = 0x0
- Misc = NO_PRESENCE
- Pin-ctls: 0x20: IN VREF_HIZ
- Unsolicited: tag=00, enabled=0
- Power states: D0 D1 D2 D3 EPSS
- Power: setting=D3, actual=D3
复制代码
经过查日志分析,发现CodecCommander是运作的,但是不知道为何,开机的时候CodecCommander传输命令无效,需要手动再运行 hda【防止吃掉】-verb 0x19 SET_PIN_WIDGET_CONTROL 0x24 这个命令耳机才正常。
睡眠后无声临时解决办法
将CC的 Perform Reset 选项改成YES
后附我关于CC的SSDT
- // This SSDT demonstrates a custom configuration for ALC283.
- // It is the same data that is currently in the Info.plist
- // If you had a codec that needed the same configuration, you could
- // load this SSDT in order to implement it without modifying the kext.
- // It will override the defaults specfied by the CodecCommander Info.plist
- // Customize to suit your needs.
- DefinitionBlock ("SSDT-16.aml", "SSDT", 1, "hack", "ALC283", 0)
- {
- External(_SB.PCI0.HDEF, DeviceObj)
-
- Name(_SB.PCI0.HDEF.RMCF, Package()
- {
- "CodecCommander", Package()
- {
- "Custom Commands", Package()
- {
- Package(){}, // signifies Array instead of Dictionary
- Package()
- {
- // 0x19 SET_PIN_WIDGET_CONTROL 0x25
- "Command", Buffer() { 0x01, 0x97, 0x07, 0x25 },
- "On Init", ">y",
- "On Sleep", ">n",
- "On Wake", ">y",
- },
- Package()
- {
- // 0x21 SET_UNSOLICITED_ENABLE 0x83
- "Command", Buffer() { 0x02, 0x17, 0x08, 0x83 },
- "On Init", ">y",
- "On Sleep", ">n",
- "On Wake", ">y",
- },
- },
- "Perform Reset", ">y",
- "Send Delay", 10,
- "Sleep Nodes", ">n",
- },
- })
- }
- //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
查看全部评分
-
|