- 积分
- 206
- 最后登录
- 2022-8-10
- 精华
- 0
- 阅读权限
- 30
- 主题
- 47
- UID
- 1313139
- 帖子
- 515
- PB币
- 440
- 威望
- 0
- 贡献
- 0
- 技术
- 87
- 活跃
- 382
- UID
- 1313139
- 帖子
- 515
- PB币
- 440
- 贡献
- 0
- 技术
- 87
- 活跃
- 382
|
发表于 2017-3-26 20:21:17
IP属地福建
|显示全部楼层
本帖最后由 hjx1996 于 2017-4-1 21:57 编辑
众所周知的原因,ALC283在插入和拔出耳机的时候会导致耳机左右声道不平衡以及线路输入和耳机线路输入与内建输入之间的切换问题,有耳机输入和外部输出两需要的原因故而想办法解决这个问题。现在已经完美解决。
这是我之前询问的帖子:https://github.com/RehabMan/EAPD-Codec-Commander/blob/master/SSDT-ALC283.dsl,RehabMan的ALC283源码,记住两组数字
// 0x19 SET_PIN_WIDGET_CONTROL 0x25
// 0x21 SET_UNSOLICITED_ENABLE 0x83
从上面的教程可以看出这两组数字分别对应线路输入和内建输入的数值。
- // 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", 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", ">n",
- "Send Delay", 10,
- "Sleep Nodes", ">n",
- },
- })
- }
- //EOF
复制代码
2.打开ALCPlugFix的源码,修改该处。
两处的数值改成上面提取出的数值,注意关键字的对应。图上是已经修改完的
3.在XCODE中执行Product --> Archive --> Export 导出的ALCPlugFix覆盖到alc_fix文件夹下,执行install.sh
具体安装方法参照:https://blog.neroxps.cn/blog/macOS/Combo-Audio-Ext-Mic.html 比较懒就不贴图了
目前效果:耳机插拔正常,线路输入与内建输入切换正常,耳机双声道正常,后面附上修改好的适用于ALC283的ALCPlugFix。
加个问题 偶尔补丁会失效需要重新执行 有什么好的办法吗
|
附件: 你需要登录才可以下载或查看附件。没有帐号?注册
|