如何让升级时AppleHDA不再折腾

---前提---

  1. 你得用 Clover 引导 (......)
  2. 开启 kernelcache (开了也能 inject kext,还能patch kext,速度又快,为啥不开)
  3. 你的 AppleHDA 现在工作正常

  ---方法---

  先说 AppleHDA 的,估计就这个关注的人多,其他都是小意思。

  1. 把你修改过的xml 文件改名后添加到 AppleHDA 里。把文件名.xml.zlib 改成 .zml.zlib 例如 layout3.xml.zlib -> layout3.zml.zlib。 如果是下载的现成驱动不确定用到了哪个,索性把全部 .xml.zlib都改掉,不影响使用。

  2. 建立 patch 项目,如果你之前就用了kext patch那就不用我说了,如果没用过,需要建立如图1项目。后面的0-5就不用管了,是Array下面的小项,你建几个就有几个=。=

  3. 在 Clover 的配置文件添加下列kext patch项目
  <dict>
  <key>Comment</key>
  <string>Patch_to_ALC887 (xml.zl to zml.zl)</string>
  <key>Find</key>
  <data>
  eG1sLnps
  </data>
  <key>Name</key>
  <string>AppleHDA</string>
  <key>Replace</key>
  <data>
  em1sLnps
  </data>
  </dict>
  <dict>
  <key>Comment</key>
  <string>Patch_to_ALC887 (patch vid pid)</string>
  <key>Find</key>
  <data>
  ixnUEQ==
  </data>
  <key>Name</key>
  <string>AppleHDA</string>
  <key>Replace</key>
  <data>
  hwjsEA==
  </data>
  </dict>
  添加的项目上已经有了基本的说明,我再简单解释一下吧。 第一项是重点,让AppleHDA读取资源时不再读取xml.zlib, 而是读取 zml.zlib (机智的小伙伴你好。。。),这样系统升级 AppleHDA升级时就不会把我们改好的定义覆盖掉。 后一项就是binary patch,让 AppleHDA 能接受我们硬件的vid 和 pid了。

  我这里用来示范的数据时 ALC887 声卡的数据 (技嘉 B75M-D3V Rev 1.1),声卡不同的用PlistEdit Pro修改 Patch_to_ALC887 (patch vid pid) 下面那个 Replace 对应的 data 就好。

  4. 应该已经能正常工作了。:)

  顺便附上一些常用 patch,系统升级时能省去很多麻烦。包括了 开启Trim , 屏蔽AppleTyMCEDriver对 ECC 内存的检测,禁止某kext加载等。 看注释应该能懂吧
  <key>KextsToPatch</key>
  <array>
  <dict>
  <key>Comment</key>
  <string>ECC Memory Check Hack</string>
  <key>Find</key>
  <data>
  cgoATWFjUHJvNCwxAE1hY1BybzUsMQBY
  </data>
  <key>Name</key>
  <string>AppleTyMCEDriver</string>
  <key>Replace</key>
  <data>
  cgoAAAAAAAAAAAAAAAAAAAAAAAAAAABY
  </data>
  </dict>
  <dict>
  <key>Comment</key>
  <string>Trim Enabler</string>
  <key>Find</key>
  <data>
  QVBQTEUgU1NEAA==
  </data>
  <key>Name</key>
  <string>IOAHCIBlockStorage</string>
  <key>Replace</key>
  <data>
  AAAAAAAAAAAAAA==
  </data>
  </dict>
  <dict>
  <key>Comment</key>
  <string>Patch_to_not_load_this_driver</string>
  <key>Find</key>
  <string>0x04020000</string>
  <key>InfoPlistPatch</key>
  <true/>
  <key>Name</key>
  <string>AppleUpstreamUserClientDisabler</string>
  <key>Replace</key>
  <string>0x44220000</string>
  </dict>
  <dict>
  <key>Comment</key>
  <string>Patch_to_not_load_this_driver</string>
  <key>Find</key>
  <string>0x04020000</string>
  <key>InfoPlistPatch</key>
  <true/>
  <key>Name</key>
  <string>ApplePolicyControlDisabler</string>
  <key>Replace</key>
  <string>0x44220000</string>
  </dict>
  5.把HDA Hardware Config Resource的信息保存到 FakeSMC 里面,不再修改 AppleHDAHardwareConfigDriver.kext ,从而避免升级时被覆盖。

  这个很简单, 就是把改好的AppleHDAHardwareConfigDriver.kext的info.plist 里面 IOKitPersonalities/HDA Hardware Config Resource 的内容复制出来,贴到FakeSMC.kext的 info.plist里面,依然是贴到 IOKitPersonalities 下。

  这样FakeSMC里面的配置会替代 AppleHDAHardwareConfigDriver.kext , 也不用担心系统升级时 AppleHDAHardwareConfigDriver.kext 被覆盖导致声卡不能工作了。
posted on 2016-01-18 21:53  motoyang  阅读(1735)  评论(0编辑  收藏  举报