XPS15-9550-Sierra icon indicating copy to clipboard operation
XPS15-9550-Sierra copied to clipboard

AppleHDA相关

Open shixuev5 opened this issue 8 years ago • 135 comments

开机很大几率没有声音 睡眠唤醒没有声音 需要插入耳机 再拔出来 。 如果直接用最新版的ApplALC.kext 不加启动参数-v 卡开机界面 无法启动

shixuev5 avatar Dec 11 '16 02:12 shixuev5

我开机都是有声音的,只是唤醒偶尔没有声音,如你所说,要拔插耳机。这个在 goodwin_c 似乎写了个驱动来处理,你可以试试。 AppleALC会导致Kernel Panic,未解决之前我都不会用了……

darkhandz avatar Dec 11 '16 03:12 darkhandz

看看 @gujiangjiang 在https://www.tonymacx86.com/threads/guide-dell-xps-15-9550-skylake-gtx960m-ssd-via-clover-uefi.192598/page-192 的回帖。 睡眠无声问题可以被解决 我测试了下 发现耳机噪声存在 如果不用CodecCommander.kext 加 SSDT-ALC298.aml的话。当然AppleALC.kext卡开机的问题,仍然存在 boot 加 -V解决。用了CodecCommander.kext 加 SSDT-ALC298.aml,睡眠唤醒就会无声。

shixuev5 avatar Dec 12 '16 03:12 shixuev5

尝试通过aDummyHDA.kext(修改了codecConfig以及替换了layout3.xml.zlib、Platforms.xml.zlib)加Clover注入,不用AppleALC.kext,但是没有成功。

shixuev5 avatar Dec 12 '16 03:12 shixuev5

那SSDT-ALC298.aml可能不正确,得研究下修改……

darkhandz avatar Dec 12 '16 05:12 darkhandz

设置 ResetAddress = 0xB2, ResetValue = 0x73 貌似存在唤醒 重启问题。 删掉后就跟之前一样 没问题了。 最新的applesmarttouchpad.kext 如何?我在9350上用 貌似3指手势都还不支持

shixuev5 avatar Dec 13 '16 13:12 shixuev5

可能和个别机型有关?我这里没有重启问题,不过也看不出有什么效果,等下去掉。 4.7 beta5感觉也是不怎么样,我现在基本上都不指望用触摸板了,鼠标干活……

darkhandz avatar Dec 13 '16 15:12 darkhandz

我再多用段时间 再确认下这个问题 。只有深度睡眠才会有 我看看是不是这个参数问题。先不用去掉~

shixuev5 avatar Dec 13 '16 15:12 shixuev5

@shixuev5 是你呀,你用的是什么驱动?是我发的AppleALC么?为何我无法使用内置麦克风?你内外置麦克风能自由切换么?

gujiangjiang avatar Dec 13 '16 16:12 gujiangjiang

我又换darkhandz的驱动了 之前试过你发的 耳机有噪声 开机不加-v会卡开机 用你驱动的时候 内置麦克风没有问题 外置的没东西测 不过应该也没问题

shixuev5 avatar Dec 13 '16 16:12 shixuev5

有没有更多反馈? 是否有耳机噪声 是否有麦克风问题 唤醒无声需要拔插 应该是cc的问题 因为我的9350 用了cc之后 也有这个问题

shixuev5 avatar Dec 13 '16 16:12 shixuev5

不要用CC,把所有的CC删掉看。。。我没用CC,我目前只能用外置麦克风,没有杂音

发自我的 iPhone

在 2016年12月14日,00:32,Hao Yan [email protected] 写道:

有没有更多反馈? 是否有耳机噪声 是否有麦克风问题 唤醒无声需要拔插 应该是cc的问题 因为我的9350 用了cc之后 也有这个问题

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub, or mute the thread.

gujiangjiang avatar Dec 13 '16 16:12 gujiangjiang

用你的驱动的时候 把所有相关的都删了 只有一个applealc.kext放在clover里面

shixuev5 avatar Dec 13 '16 16:12 shixuev5

你有没有修改DSDT,或者改LayoutID=3

发自我的 iPhone

在 2016年12月14日,00:47,Hao Yan [email protected] 写道:

用你的驱动的时候 把所有相关的都删了 只有一个applealc.kext放在clover里面

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub, or mute the thread.

gujiangjiang avatar Dec 13 '16 16:12 gujiangjiang

我这里问题很大,内置麦克风无法使用

发自我的 iPhone

在 2016年12月14日,00:47,Hao Yan [email protected] 写道:

用你的驱动的时候 把所有相关的都删了 只有一个applealc.kext放在clover里面

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub, or mute the thread.

gujiangjiang avatar Dec 13 '16 16:12 gujiangjiang

改了id 3 不改肯定没发驱动 你把你注入id的代码贴出来看看

shixuev5 avatar Dec 13 '16 16:12 shixuev5

我没有修改dsdt,我是直接Clover输入3

发自我的 iPhone

在 2016年12月14日,00:53,Hao Yan [email protected] 写道:

改了id 3 不改肯定没发驱动 你把你注入id的代码贴出来看看

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub, or mute the thread.

gujiangjiang avatar Dec 13 '16 16:12 gujiangjiang

讲道理 应该是一样的 我用什么驱动 内置麦克风都是内建的 都没有问题

shixuev5 avatar Dec 13 '16 16:12 shixuev5

同一型号的声卡 难道还有个体差异嘛🤔

shixuev5 avatar Dec 13 '16 17:12 shixuev5

应该不可能,我用原版AppleALC麦克风不工作的,难道你的工作?原版AppleALC的麦克风节点是错的

发自我的 iPhone

在 2016年12月14日,01:00,Hao Yan [email protected] 写道:

同一型号的声卡 难道还有个体差异嘛🤔

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub, or mute the thread.

gujiangjiang avatar Dec 13 '16 17:12 gujiangjiang

工作。原版就是卡开机 以及用了cc唤醒无声

shixuev5 avatar Dec 13 '16 20:12 shixuev5

原版AppleALC暂不论卡开机,在我的机子也可以工作,不过必须是layout-id 13。 如果是3,我这里会只显示音量进度调节,但是内置喇叭没有实际的声音输出,反而内置mic会有收到输入信号。 声卡有没有个体差异,我看各自提取一次codec.txt再比较一下才知道…… 话说 @shixuev5 你不是和 @syscl 大神机子型号一样么?

darkhandz avatar Dec 14 '16 00:12 darkhandz

是的,原版layout13,3是sufacebook用的,但是只能用内置麦克风。。。

发自我的 iPad

在 2016年12月14日,08:27,darkhandz [email protected] 写道:

原版AppleALC暂不论卡开机,在我的机子也可以工作,不过必须是layout-id 13。 如果是3,我这里会只显示音量进度调节,但是内置喇叭没有实际的声音输出,反而内置mic会有收到输入信号。

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub, or mute the thread.

gujiangjiang avatar Dec 14 '16 00:12 gujiangjiang

话说你们的DP/HDMI驱动成功么? 我花了一下午修复了这个bug, 附上截图 snip20161213_1

光修改Framebuffer 是不够的,还需要修改AppleHDA

希望对你们有帮助! syscl

syscl avatar Dec 14 '16 00:12 syscl

@syscl 这个,没有任何HDMI设备……也就不关心这个了,坐等大神的成果。

darkhandz avatar Dec 14 '16 00:12 darkhandz

@darkhandz 看样子我可以成为首发啊哈哈~ 我之前也没显示这里,直到我对比了new MacBook发现有这个信息才知道这里还是有问题。

终于修复了,好开心;) 等我发帖子吧,附上一张证明 img_8404

syscl

syscl avatar Dec 14 '16 00:12 syscl

我的暂时不行,我的不显示HDMI

发自我的 iPad

在 2016年12月14日,08:34,Zhou Yating [email protected] 写道:

话说你们的DP/HDMI驱动成功么? 我花了一下午修复了这个bug, 附上截图

光修改Framebuffer 是不够的,还需要修改AppleHDA

希望对你们有帮助! syscl

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub, or mute the thread.

gujiangjiang avatar Dec 14 '16 00:12 gujiangjiang

现在的问题在于内置麦克风和外置麦克风无法同时使用啊。。。

发自我的 iPad

在 2016年12月14日,08:42,Zhou Yating [email protected] 写道:

@darkhandz 看样子我可以成为首发啊哈哈~ 我之前也没显示这里,直到我对比了new MacBook发现有这个信息才知道这里还是有问题。

终于修复了,好开心;) 等我发帖子吧 syscl

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub, or mute the thread.

gujiangjiang avatar Dec 14 '16 00:12 gujiangjiang

@syscl 嘿嘿,辛苦你了,等你发布了我拿过来用,注明抄袭自syscl 话说大神你是通过对比白果的ACPI表来发现黑果缺失哪些设备的吗?

darkhandz avatar Dec 14 '16 00:12 darkhandz

你说对比nmb是不是改的某个kext里的2为none?

发自我的 iPad

在 2016年12月14日,08:42,Zhou Yating [email protected] 写道:

@darkhandz 看样子我可以成为首发啊哈哈~ 我之前也没显示这里,直到我对比了new MacBook发现有这个信息才知道这里还是有问题。

终于修复了,好开心;) 等我发帖子吧 syscl

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub, or mute the thread.

gujiangjiang avatar Dec 14 '16 00:12 gujiangjiang

@gujiangjiang 当然不是 改那个没用

@darkhandz 这个确实花了我一点时间 不是ACPI 问题 不在ACPI表上也不再Framebuffer上 只要framebuffer破解对了 理论上我的破解就通用

syscl

syscl avatar Dec 14 '16 00:12 syscl

@syscl 唔……不懂,破解framebuffer是个什么流程?要反汇编它的可执行文件研究某些关键call/跳转?有没有相关资料参考呢?完全没接触过这么底层的……

darkhandz avatar Dec 14 '16 00:12 darkhandz

破解framebuffer没那么复杂 只要接口类型破解对了 我们就可以暂时不关注他了 剩下的就是...等我教程吧 不会很难的

syscl avatar Dec 14 '16 01:12 syscl

@gujiangjiang 你是指AppleGraphicsDevicePolicy.kext/Contents/Info.plist 这个的config2改none吗?这方法我是从 corenel 的repo看来的,实际效果如何我也没有设备测试…… 话说tonymacx86的9550那个帖子抄了我的这个clover补丁也不注明补丁仅适用于iMac17,1这个SMBIOS,误导其他人多不好……

darkhandz avatar Dec 14 '16 01:12 darkhandz

但是我对比过,Mbp133不受限制,里面没有相关boardid

发自我的 iPad

在 2016年12月14日,09:03,darkhandz [email protected] 写道:

@gujiangjiang 你是指AppleGraphicsDevicePolicy.kext/Contents/Info.plist 这个的config2改none吗?这方法我是从 corenel 的repo看来的,实际效果如何我也没有设备测试…… 话说tonymacx86的9550那个帖子抄了我的这个clover补丁也不注明补丁仅适用于iMac17,1这个SMBIOS,误导其他人多不好……

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub, or mute the thread.

gujiangjiang avatar Dec 14 '16 01:12 gujiangjiang

@gujiangjiang @darkhandz http://www.insanelymac.com/forum/topic/319211-guide-fix-skylake-hdmidp-output/

syscl avatar Dec 14 '16 01:12 syscl

我一台9550 i7 fhd 一台9350 i7 6560u fhd 一个和你的一样 一个和syscl的一样 😄

shixuev5 avatar Dec 14 '16 01:12 shixuev5

@syscl 4K 屏幕 总是闪,这个有办法吗

fangf2018 avatar Dec 14 '16 03:12 fangf2018

@niceokf 什么配置?

syscl avatar Dec 14 '16 03:12 syscl

@syscl i7 6700 hd530 nvme951ssd 4k

fangf2018 avatar Dec 14 '16 03:12 fangf2018

@niceokf 什么电脑??大哥,配置写详细点有那么难吗

syscl avatar Dec 14 '16 03:12 syscl

9550 睡眠唤醒 4k闪屏 没有办法解决吧 我就是因为这个 换成了fhd

shixuev5 avatar Dec 14 '16 03:12 shixuev5

别纠结了,4K闪屏是bios的问题

发自我的 iPad

在 2016年12月14日,11:19,Zhou Yating [email protected] 写道:

@niceokf 什么电脑??大哥,配置写详细点有那么难吗

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub, or mute the thread.

gujiangjiang avatar Dec 14 '16 03:12 gujiangjiang

@syscl dell xps15 9550 i76700hq 显卡960 4K触摸 硬盘pm951ssd 512G 内存16G未知型号

fangf2018 avatar Dec 14 '16 03:12 fangf2018

@shixuev5 @gujiangjiang @niceokf 如果Windows下也有这个问题 就等Dell更新bios。。

如果是macOS下的话,需要这样做

BooterConfig = 0x2A
用我github里的HiDPI项目注入一个稍微低一点的分辨率 据我所知4K的M3800同样有闪屏 因为mac本身的笔记本就没有这么高的分辨率

syscl

syscl avatar Dec 14 '16 03:12 syscl

@syscl ok 感谢,

fangf2018 avatar Dec 14 '16 03:12 fangf2018

擦,今天竟然没法更新,10.12.2更新失败。。。。好几次都是,进度条刚出现就自动重启了,开机后还是10.12.1,估计跟机型有关吧。。。

在 2016年12月14日,上午11:26,Zhou Yating [email protected] 写道:

@shixuev5 https://github.com/shixuev5 @gujiangjiang https://github.com/gujiangjiang @niceokf https://github.com/niceokf 如果Windows下也有这个问题 就等Dell更新bios。。

如果是macOS下的话,需要这样做

BooterConfig = 0x2A 用我github里的HiDPI项目注入一个稍微低一点的分辨率 据我所知4K的M3800同样有闪屏 因为mac本身的笔记本就没有这么高的分辨率 syscl

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/darkhandz/XPS15-9550-Sierra/issues/18#issuecomment-266932666, or mute the thread https://github.com/notifications/unsubscribe-auth/AMqLY8Bflh7CcE0pCxm3UkTEE4hMXV7xks5rH2HJgaJpZM4LJ0Uu.

gujiangjiang avatar Dec 14 '16 05:12 gujiangjiang

@gujiangjiang 不应该啊 我现在已经是10.12.2正式版了。。。

syscl

syscl avatar Dec 14 '16 05:12 syscl

见鬼系统无法更新啊,点击重新启动进度条刚出来就重启了,无法更新啊,我老惠普都更新好了,XPS不行,我估计还是型号的问题,可能更新会验证型号,型号通不过就无法更新

发自我的 iPhone

在 2016年12月14日,13:23,Zhou Yating [email protected] 写道:

@gujiangjiang 不应该啊 我现在已经是10.12.2正式版了。。。

syscl

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub, or mute the thread.

gujiangjiang avatar Dec 14 '16 05:12 gujiangjiang

用new MacBook 8,2啊

syscl avatar Dec 14 '16 05:12 syscl

newMBP不能用s s d t,会卡kp的

发自我的 iPhone

在 2016年12月14日,13:26,Zhou Yating [email protected] 写道:

用new MacBook 8,2啊

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub, or mute the thread.

gujiangjiang avatar Dec 14 '16 05:12 gujiangjiang

还是等解决型号问题吧。。。

我电脑还有一点问题,比如10.12之后开机后插入移动硬盘无反应,U盘没问题。 还有就是开机的时候耳机里会有很大的噪音,开机之后就好了。

发自我的 iPhone

在 2016年12月14日,13:26,Zhou Yating [email protected] 写道:

用new MacBook 8,2啊

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub, or mute the thread.

gujiangjiang avatar Dec 14 '16 05:12 gujiangjiang

@gujiangjiang 我在XPS13的项目上有写我准备解决开机插U盘没反应的问题 这个我感觉是USB patch那块的问题 不知道是SKL的问题还是Sierra的问题。。

但是,你可以用diskutil list观察 实际上是挂载了的 只是系统出毛病了。。

我打算更新fixUSB那个项目来修复这个问题。。

syscl

syscl avatar Dec 14 '16 05:12 syscl

靠。。。原来你也有这个问题。。。一直以为是我自己的问题,还差点重新买移动硬盘。。。

发自我的 iPhone

在 2016年12月14日,13:34,Zhou Yating [email protected] 写道:

@gujiangjiang 我在XPS13的项目上有写我准备解决开机插U盘没反应的问题 这个我感觉是USB patch那块的问题 不知道是SKL的问题还是Sierra的问题。。

但是,你可以用diskutil list观察 实际上是挂载了的 只是系统出毛病了。。

我打算更新fixUSB那个项目来修复这个问题。。

syscl

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub, or mute the thread.

gujiangjiang avatar Dec 14 '16 05:12 gujiangjiang

@gujiangjiang 我又试了一遍你的AppleALC.kext 之前好像是ID=3 没有注入成功 现在情况跟你的一样 。没有内置麦克风 。其他都是oK的

shixuev5 avatar Dec 14 '16 06:12 shixuev5

所以啊,之前我就说没有内置麦克风啊。。。

发自我的 iPhone

在 2016年12月14日,14:01,Hao Yan [email protected] 写道:

@gujiangjiang 我又试了一遍你的AppleALC.kext 之前好像是ID=3 没有注入成功 现在情况跟你的一样 。没有内置麦克风 。其他都是oK的

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub, or mute the thread.

gujiangjiang avatar Dec 14 '16 06:12 gujiangjiang

@gujiangjiang 你有linux 提取的codec_dump.txt嘛 。上传一份

shixuev5 avatar Dec 14 '16 06:12 shixuev5

我发在ins论坛了

发自我的 iPhone

在 2016年12月14日,14:15,Hao Yan [email protected] 写道:

你有linux 提取的codec_dump.txt嘛 。上传一份

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub, or mute the thread.

gujiangjiang avatar Dec 14 '16 06:12 gujiangjiang

@gujiangjiang ins论坛突然打不开了 FQ也开不了 bad gateway.

shixuev5 avatar Dec 14 '16 06:12 shixuev5

等等吧。。。

发自我的 iPhone

在 2016年12月14日,14:19,Hao Yan [email protected] 写道:

@gujiangjiang ins论坛突然打不开了 FQ也开不了 bad gateway.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub, or mute the thread.

gujiangjiang avatar Dec 14 '16 06:12 gujiangjiang

@gujiangjiang 我这刚更新完10.12.2了,不计下载1.71G的时间,从自动安装,重启,自动重建缓存,叫我启用siri……大概花了5分钟,一切正常。

darkhandz avatar Dec 14 '16 07:12 darkhandz

我说了啊型号不完整才会无法更新。。。

发自我的 iPhone

在 2016年12月14日,15:41,darkhandz [email protected] 写道:

@gujiangjiang 我这刚更新完了,不计下载1.71G的时间,从自动安装,重启,自动重建缓存,叫我启用siri……大概花了5分钟,一切正常。

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub, or mute the thread.

gujiangjiang avatar Dec 14 '16 08:12 gujiangjiang

我也更新失败timemachine回滚了。。。。

zhuzhe1983 avatar Dec 14 '16 12:12 zhuzhe1983

唉,真心醉了,你也是型号不对么?

在 2016年12月14日,下午8:48,zhuzhe1983 [email protected] 写道:

我也更新失败timemachine回滚了。。。。

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/darkhandz/XPS15-9550-Sierra/issues/18#issuecomment-267025430, or mute the thread https://github.com/notifications/unsubscribe-auth/AMqLY4iL5dUCwBSqHdfJvqApHAK1xdMhks5rH-WFgaJpZM4LJ0Uu.

gujiangjiang avatar Dec 14 '16 12:12 gujiangjiang

移动硬盘的问题,很可能是电量不足吧。 我逆向了一下 AppleUSBXHCIPCI 二进制档案中,还是存在了那些很早就存在的一些属性。大概可以追溯到10.10旧版USB机制的年代。

0000000000003828 48 8d 35 f5 fe 00 00 leaq 0xfef5(%rip), %rsi ## literal pool for: "AAPL,current-available" 000000000000382f 48 89 df movq %rbx, %rdi 0000000000003832 ff 90 b8 02 00 00 callq *0x2b8(%rax) 0000000000003838 48 89 c7 movq %rax, %rdi 000000000000383b 4c 89 e6 movq %r12, %rsi 000000000000383e e8 00 00 00 00 callq 0x3843 0000000000003843 49 89 c6 movq %rax, %r14 0000000000003846 4c 89 b5 18 ff ff ff movq %r14, -0xe8(%rbp) 000000000000384d 48 8b 03 movq (%rbx), %rax 0000000000003850 48 8d 35 e4 fe 00 00 leaq 0xfee4(%rip), %rsi ## literal pool for: "AAPL,current-extra" 0000000000003857 48 89 df movq %rbx, %rdi 000000000000385a ff 90 b8 02 00 00 callq *0x2b8(%rax) 0000000000003860 48 89 c7 movq %rax, %rdi 0000000000003863 4c 89 e6 movq %r12, %rsi 0000000000003866 e8 00 00 00 00 callq 0x386b 000000000000386b 48 89 85 20 ff ff ff movq %rax, -0xe0(%rbp) 0000000000003872 48 8b 03 movq (%rbx), %rax 0000000000003875 48 8d 35 d2 fe 00 00 leaq 0xfed2(%rip), %rsi ## literal pool for: "AAPL,max-port-current-in-sleep" 000000000000387c 48 89 df movq %rbx, %rdi 000000000000387f ff 90 b8 02 00 00 callq *0x2b8(%rax) 0000000000003885 48 89 c7 movq %rax, %rdi 0000000000003888 4c 89 e6 movq %r12, %rsi 000000000000388b e8 00 00 00 00 callq 0x3890 0000000000003890 48 89 85 28 ff ff ff movq %rax, -0xd8(%rbp) 0000000000003897 48 8b 03 movq (%rbx), %rax 000000000000389a 48 8d 35 cc fe 00 00 leaq 0xfecc(%rip), %rsi ## literal pool for: "AAPL,current-extra-in-sleep" 00000000000038a1 48 89 df movq %rbx, %rdi 00000000000038a4 ff 90 b8 02 00 00 callq *0x2b8(%rax) 00000000000038aa 48 89 c7 movq %rax, %rdi 00000000000038ad 4c 89 e6 movq %r12, %rsi 00000000000038b0 e8 00 00 00 00 callq 0x38b5 00000000000038b5 49 89 c5 movq %rax, %r13 00000000000038b8 48 8b 03 movq (%rbx), %rax 00000000000038bb 48 8d 35 c7 fe 00 00 leaq 0xfec7(%rip), %rsi ## literal pool for: "AAPL,ExternalConnectorBitmap" 00000000000038c2 48 89 df movq %rbx, %rdi 00000000000038c5 ff 90 b8 02 00 00 callq *0x2b8(%rax)

这些东西,如果不为黑果补充上的话,很可能就会导致供电出问题。 这些属性的值,没记错的话是固定的。并且应该日后也不会变。(至少从10.10看来到现在没变) 并且这些属性表也同时被 USB 2.0 的 kexts 所需要。【如果有的话】 这是我为我的USB控制器补上的这些属性表,可能的话可以参考一下。 ` Method (_DSM, 4, NotSerialized) // _DSM: Device-Specific Method { Store (Package (0x0F) { "AAPL,clock-id", Buffer (One) { 0x02
},

                        "AAPL,current-available", 
                        0x0834, 
                        "AAPL,current-extra", 
                        0x0A8C, 
                        "AAPL,current-in-sleep", 
                        0x03E8, 
                        "AAPL,current-extra-in-sleep", 
                        0x0834, 
                        "AAPL,max-port-current-in-sleep", 
                        0x0A8C, 
                        "AAPL,device-internal", 
                        0x02, 
                        Buffer (One)
                        {
                             0x00                                           
                        }
                    }, Local0)
                DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                Return (Local0)
            }
        }`

其中,DTGP方法函数可能不是必要的,但为保证稳定性我还是建议使用 DTGP 。ACPI 5.0 中带来的 Return 方案,个人不建议使用。

PMheart

PMheart avatar Dec 14 '16 13:12 PMheart

@PMHeart 和这个差别大吗?那些数值不知道代表什么……

DefinitionBlock("", "SSDT", 2, "hack", "XHC", 0)
{
    External(_SB.PCI0.XHC, DeviceObj)

    // inject properties for XHCI
    If (CondRefOf(_SB.PCI0.XHC))
    {
        Method(_SB.PCI0.XHC._DSM, 4)
        {
            If (!Arg2) { Return (Buffer() { 0x03 } ) }
            Local0 = Package()
            {
                "RM,pr2-force", Buffer() { 0, 0, 0, 0 },
                "subsystem-id", Buffer() { 0x70, 0x72, 0x00, 0x00 },
                "subsystem-vendor-id", Buffer() { 0x86, 0x80, 0x00, 0x00 },
                "AAPL,current-available", Buffer() { 0x34, 0x08, 0, 0 },
                "AAPL,current-extra", Buffer() { 0x98, 0x08, 0, 0, },
                "AAPL,current-extra-in-sleep", Buffer() { 0x40, 0x06, 0, 0, },
                "AAPL,max-port-current-in-sleep", Buffer() { 0x34, 0x08, 0, 0 },
            }
            // force USB2 on XHC if EHCI is disabled
            If (CondRefOf(\_SB.PCI0.RMD2))
            {
                CreateDWordField(DerefOf(Local0[1]), 0, PR2F)
                PR2F = 0x3fff
            }
            Return(Local0)
        }
    }
}

darkhandz avatar Dec 14 '16 13:12 darkhandz

@shixuev5 你要的codec0.txt

darkhandz avatar Dec 14 '16 14:12 darkhandz

@darkhandz 你似乎缺失了一些喔.

PMheart avatar Dec 14 '16 21:12 PMheart

@shixuev5 @gujiangjiang 特地去学习了如何仿冒声卡,结果发现提取的codec里没有外置mic相关的节点……不死心,又回去Ubuntu试了一下,明明是插上耳机就可以用外置mic的,搞不明白提取的codec为什么没有……又跑去Windows测试一下,看看win下的codec是怎样的,结果发现和verbit从codec.txt提取的内容一毛一样的,郁闷,不知道问题出在哪里。 @syscl 周总有空帮忙看看codec文件吗?在楼上……

darkhandz avatar Dec 15 '16 07:12 darkhandz

@darkhandz aDummyHDA.kext 的 clover补丁如何弄? 我现在有内置麦克风 睡眠唤醒声音也正常 耳机有噪音 外置麦克风 没设备测试。

shixuev5 avatar Dec 15 '16 07:12 shixuev5

@shixuev5 就是我config.plist里那几个AppleHDA的项呗,都是从AppleALC源码的298资源里偷来的……把两个zlib放到Contents/Resources下,把configData替换Info.plist里面的。清缓存重启…… 话说我在仿冒,不用CC的话,耳机没声音……内置喇叭和内置mic都正常……耳机的Mic死活不出现

darkhandz avatar Dec 15 '16 08:12 darkhandz

弄了一天 == 只有耳机低频声音不对 这问题了 用了CC+aml就正常 但是一用cc就会唤醒没有声音

shixuev5 avatar Dec 15 '16 09:12 shixuev5

@shixuev5 你耳机的mic也能正常切换了咩?

darkhandz avatar Dec 15 '16 09:12 darkhandz

@gujiangjiang 你的那个AppleALC.kext 是用源码改了configData 和 zlib 编译的嘛? 只有用你的那个耳机才没噪音 applehda patch补丁是啥?

shixuev5 avatar Dec 15 '16 13:12 shixuev5

@shixuev5 是的,我自己编译的,所以我才去反馈说内置麦克风无效,无杂音,你在帖子里强调说内外置正常切换,有杂音,搞得Mirone都不知所措。。。

gujiangjiang avatar Dec 16 '16 05:12 gujiangjiang

@gujiangjiang 能把原始zlib资源文件传来研究一下咩?

darkhandz avatar Dec 16 '16 05:12 darkhandz

@darkhandz http://www.insanelymac.com/forum/topic/293863-applehda-patch-requests/?p=2332550

gujiangjiang avatar Dec 16 '16 05:12 gujiangjiang

@gujiangjiang 试了一下你发的两组PINConfiguration,在我这里耳机还是单声道音效……放弃治疗

darkhandz avatar Dec 16 '16 07:12 darkhandz

@darkhandz 我已经放弃治疗==

shixuev5 avatar Dec 16 '16 07:12 shixuev5

@darkhandz 我没问题

gujiangjiang avatar Dec 16 '16 16:12 gujiangjiang

@gujiangjiang @shixuev5 昨晚到今早重启了几十次测试出一个比较可行的方案,但是没测试睡眠唤醒后的情况(在上班呢)。

  • aDummy.kext的方式并不能让线路输入显示出来,也就和外置Mic无缘了
  • 整个AppleHDA修改的方式有线路输入显示,没插耳机默认是内置Mic,插耳机不会切换到外置Mic,并且丢失部分低频或高频(我喜欢说单声道问题)。但是如果你在开机前就插好耳机,开机后显示是外置Mic了,拔掉也还是外置Mic,不会切换回内置Mic。
  • 整个AppleHDA修改,配合CodecCommander,ALC298.aml(主要有三条命令,第一条修复单声道问题,第三条修复耳机拔插切换问题,第二条未测试出来),就可以解决单声道和内置Mic/外置Mic切换的问题。但是睡眠唤醒还没测试(因为之前大家都测试有睡醒后有时会无声的情况,必须拔插耳机一次)。

附上测试的整个AppleHDA.kext,ConfigData我略微修改过:

01271c10 01271d01 01271ea6 01271f90 
01771c20 01771d01 01771e17 01771f90
01871c30 01871d10 01871e81 01871f00
02171c40 02171d10 02171e21 02171f00 02170c02

AppleHDA.kext.zip

附安装方法:

首先删除aDummy:

  • sudo rm -rf /Library/Extensions/aDummyHDA.kext

备份原版AppleHDA:

  • sudo mv /System/Library/Extensions/AppleHDA.kext /System/Library/Extensions/AppleHDA.bak

放置修改后的AppleHDA:

  • sudo cp -R ~/Downloads/AppleHDA.kext /System/Library/Extensions/

重建缓存:

sudo rm -rf /System/Library/Caches/com.apple.kext.caches/Startup/kernelcache
sudo rm -rf /System/Library/PrelinkedKernels/prelinkedkernel
sudo touch /System/Library/Extensions/ && sudo kextcache -u /

设置layout-id为13,检查是否有 CodecCommander.kext 和 ALC298.aml。 重启。

darkhandz avatar Jan 03 '17 02:01 darkhandz

@darkhandz 现在开机状态下内外置麦克风还是不能切换么?

可以试了一下我的这个,我后来修改了,可以试一试,用了将近半个月,没有任何问题。

除了内置mic不能用之外,其余的完美了,HDMI也有了,外置MIC也能完美使用,没有任何杂音,睡眠唤醒什么的都没问题,就是内置mic不识别,不打算解决了,内置mic有声音就会有杂音,现在这样除了内置mic外其余完美我已经很满意了。你可以试一下,删掉那些CC驱动和SSDT_ALC298.aml。

AppleALC.kext.zip 把这个kext放到Clover下面就行了,设置为LayoutID为13

gujiangjiang avatar Jan 03 '17 03:01 gujiangjiang

@gujiangjiang 额,上面说的就是可以切换 内置/外置 Mic的,不过还没时间测睡眠后的情况。HDMI是按syscl说的那样修改是吗?

darkhandz avatar Jan 03 '17 03:01 darkhandz

@darkhandz 你说貌似要开机插着外置麦克风才能切换吧,不支持开机后切换啊,感觉不方便,我感觉如果这么麻烦不如直接不用内置麦克风

gujiangjiang avatar Jan 03 '17 04:01 gujiangjiang

@gujiangjiang 整个AppleHDA修改,配合CodecCommander,ALC298.aml 就可以解决单声道和内置Mic/外置Mic切换的问题,不需要开机就插外置。 不过刚刚测试了睡眠唤醒后还是会无声,我得试试AppleALC了,如果不卡住启动画面的话。

darkhandz avatar Jan 03 '17 05:01 darkhandz

@darkhandz 我试试看用你的做成AppleALC看看

gujiangjiang avatar Jan 03 '17 05:01 gujiangjiang

刚刚编译AppleALC测试了,不行,还是单声道而且不能切换外置mic。

darkhandz avatar Jan 03 '17 05:01 darkhandz

@darkhandz 看来还是用我的AppleALC吧,舍弃内置mic吧,这样可以同时解决杂音,单声道,唤醒的问题,我感觉值了,除了内置MIC不能用外,其余的都完美。

gujiangjiang avatar Jan 03 '17 11:01 gujiangjiang

@gujiangjiang 和你有点不同,我现在也是AppleALC,再加上CC和ALC298.aml(改过),现在是:

  • 开机可以随时插耳机,内置Mic/外置Mic 自动切换,无单声道问题
  • 睡眠唤醒后耳机及外置Mic不能用了,只能用内置Mic和内置扬声器。这时候手动执行一条命令再拔插耳机,可以恢复耳机声音,但外置Mic切换不了,只能用内置Mic。

感觉内置Mic对我的作用比较大,目前就这方案了。

darkhandz avatar Jan 03 '17 13:01 darkhandz

@darkhandz 能够内置外置mic切换??你改了些什么东西?Mirone改了半天没找到方法(但是还是很感谢他),能分享一下思路吗?

syscl

syscl avatar Jan 03 '17 17:01 syscl

@syscl 本条回复我在测试后又修改过了的。

目前仅限于开机后可自动切换内置Mic/外置Mic(第一次拔插),睡眠后就失效了,主要就是靠CodecCommander。 单独的CodecCommander其实并不会造成9550唤醒后无声(它的plist里没有包含ALC298的指令),配合ALC298.aml才会造成唤醒无声,于是我就研究下ALC298.aml做了什么,发现主要是三条指令(应该是作用于系统某些声音方面的指令):

                Package()
                {
                    // 0x18 SET_PIN_WIDGET_CONTROL 0x22
                    "Command", Buffer() { 0x01, 0x87, 0x07, 0x22 },
                    "On Init", ">y",
                    "On Sleep", ">n",
                    "On Wake", ">y",
                },
                Package()
                {
                    // 0x1a SET_PIN_WIDGET_CONTROL 0x23
                    "Command", Buffer() { 0x01, 0xa7, 0x07, 0x23 },
                    "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",
                },

其中每条指令都可以通过CodecCommander配套的hda-verb来单独发送给CodecCommander,CodecCommander再转发给系统(没仔细看源代码)。

比如第一条,测试下来是解决"单声道"和"内置Mic/外置Mic切换"问题的,听着歌,执行一下hda-verb 0x18 SET_PIN_WIDGET_CONTROL 0x22,单声道的问题立即解决,声音的所有频段都恢复正常。

上面说的仅限于第一次拔插才可以切换Mic,在执行这条指令后再插入耳机,即可实现第二次检测。如果你拔掉耳机再插回,这时候系统还是不会自动切换内置外置Mic的,先执行一次上述指令,再插入耳机即可让系统检测到外置Mic。

总结为,每次拔出耳机后,还想插回来用外置Mic的话,要先执行一次上述指令,由于CC已经在开机时自动执行了一次,所以开机后第一次插耳机会正常检测到外置Mic,会顺便修正单声道问题。

比如第三条,0x21 SET_UNSOLICITED_ENABLE 0x83,测试下来是解决耳机输出检测的。

就是这条指令导致ALC298唤醒无声,估计唤醒后( "On Wake", ">y")系统接收到这条指令,然后不知道引起了什么BUG,系统以为还插着耳机,就把输出转到耳机了,然后内置Speaker就无声了,必须手动拔插一次耳机,才可以让系统刷新状态,以切换回正确的输出装置。

所以我把aml里第三条改为 "On Wake", ">n",让CodecCommander在系统唤醒后不要自动发送这条指令,那么唤醒后就依然有内置Speaker和内置Mic工作,但是系统再也不能检测到耳机插入了(即使插入耳机,系统还是通过内置Speaker和内置Mic输出)。

于是我又想在唤醒后手动通过hda-verb发送指令(还想搞sleepwatcher的,失败了,死活不执行脚本),手动发送指令后再插入耳机,能让系统恢复检测耳机输出和外置Mic的功能。

所以目前的测试就做到这里,开机后第一次插耳机是正常切换的,唤醒后只能内置Speaker+内置Mic,再加上手动发送两条指令,再拔插耳机,就能让耳机输出和外置Mic正常。

第二条指令不知道是什么作用,我没测出来。Google相关的东西,只找到只字片语(英文不好),搜到RehabMan说是读了声卡厂商的DataSheet才能知道这些指令。

感觉测试还不够多,再使用两天看看是否有潜在的其他BUG……

darkhandz avatar Jan 04 '17 00:01 darkhandz

刚回想起goodwin_c之前提到的写了个程序,大概是走过了我上面说的所有测试,解决方案变为“如何检测耳机拔插,并自动发送这些HDA指令”

如果有手段可以让一个daemon知道耳机拔出,这个daemon立即发送三条指令:

#!/bin/sh
hda-verb 0x18 SET_PIN_WIDGET_CONTROL 0x22
hda-verb 0x1a SET_PIN_WIDGET_CONTROL 0x23
hda-verb 0x21 SET_UNSOLICITED_ENABLE 0x83

那就好了,下次再插耳机,系统就能检测到 耳机输出和外置Mic 了。

darkhandz avatar Jan 04 '17 01:01 darkhandz

原来 @goodwin 已经写出来了…… ALCPlugFix 我刚才看了一下,把指令改成我自己的三条再编译出来,执行配套的Install.sh,生成daemon,测试拔插可以自动切换Mic了,我去掉ALC298.aml再试试,稍后回复结果。

darkhandz avatar Jan 04 '17 02:01 darkhandz

@darkhandz 这个ALCPlugFix以前试过一下,里面没有包含hda-verb,记得把这个文件包含进去,其余的还没发现什么。。

gujiangjiang avatar Jan 04 '17 02:01 gujiangjiang

@syscl @gujiangjiang 测试完,目前情况:

  • AppleALC+CodecCommander+ALCPlugFix(修改过源码为ALC298.aml里的三条指令),无需ALC298.aml
  1. 开机后插入耳机,自动切换到耳机输出+外置Mic,耳机声音正常(无杂音、声音完整),外置Mic正常
  2. 拔耳机,自动切换回内置输出+内置Mic,声音正常,内置Mic正常
  3. 再插耳机,自动切换耳机输出+外置Mic,一切正常
  4. 拔出耳机,让9550睡眠,过2分钟后唤醒,内置输出+内置Mic正常。插耳机,自动切换耳机输出+外置Mic,一切正常

大概可以确定上述的组合对我有用,还需要测试下9小时睡眠和30分钟睡眠(在上班呢)。 AppleALC偶尔还是会卡我开机Verbose……

darkhandz avatar Jan 04 '17 02:01 darkhandz

@gujiangjiang 有空有兴趣的话可以测试下,嘿嘿

ALCPlugFix脚本编译好ALC298用的: alc_fix.zip

AppleALC编译好ALC298用的,id 13: AppleALC.kext.zip

CC大家都有了,记得删除ALC298.aml。


顺便借地方放一个改好的10.12.1的AppleHDA,还需要配合Clover打动态kext补丁,见教程部分。 AppleHDA.kext.zip

darkhandz avatar Jan 04 '17 03:01 darkhandz

@darkhandz 我试试,谢谢拉

gujiangjiang avatar Jan 04 '17 04:01 gujiangjiang

@darkhandz 我试了一下,开机之后内外置mic确实可以自动切换了,简直神奇,但是睡眠被打断后声卡无法工作。。。永远显示为内置扬声器和内置mic,并且都没有任何声音,只能重启解决,睡眠成功后唤醒没问题,就是按下睡眠按钮然后过几秒直接唤醒不行。。。

gujiangjiang avatar Jan 04 '17 04:01 gujiangjiang

还有,你可以参考一下我的configdata,把外置接口改成“混合输入”“混合输出”,毕竟二合一的端口

gujiangjiang avatar Jan 04 '17 04:01 gujiangjiang

@gujiangjiang 半睡眠状态好像就是这样的, RehabMan在CodecCommander下面提起过...

syscl

syscl avatar Jan 04 '17 04:01 syscl

@gujiangjiang 刚才测试了30分钟睡眠,睡醒依然可以拔插自动切换。

半睡眠就没试过呢……

话说HWP的唤醒真的慢了很多,未开前3秒,开后10+秒,我还以为是哪里出问题了……

darkhandz avatar Jan 04 '17 04:01 darkhandz