Skip to content
This repository has been archived by the owner on Nov 25, 2022. It is now read-only.

Count Skip

Justin edited this page Jul 22, 2019 · 1 revision

OpenCore ACPI Patch Count and Skip 举例

这个功能可以达到 CloverTgtbridge 的效果, 甚至更好, 为什么呢? 这个例子里面Device PXSX有多个, Tgtbridge就无能为力.

比如我想要把(针对我的电脑)Wi-Fi所在的 RP12PXSX 改名为 ARPT 以解决潜在的Wi-Fi问题

  1. 用MaciASL打开系统的DSDT

  2. 搜索PXSX, 总计 549个结果, Holy Shit! 但是别慌

  3. 我们找第一个PXSX,发现在RP01下面, 第二个也在RP01下面

  4. 继续往下搜, 我们发现每个RPxx包含2个PXSX, 那么到RP12里面就是第23和第24个PXSX

  5. 我的目的是把第23和第24个PXSX改名为ARPT, 这时候OpenCore的Skip和Count就能派上用场了

  6. 所以我需要Skip = 22, Count = 2, 什么意思呢? Skip (跳过) 前面22个搜索结果, 只对接下来的2个搜索结果做改名, 对于剩下来的几百个, 不予理睬

  7. 在写之前我们先把关键字的HEX准备好, 我们用TEXT to HEX 转换得到:

  8. PXSX = 50 58 53 58 , ARPT = 41 52 50 54 , DSDT = 44 53 44 54

  9. 用PlistEdit Pro 或者 Xcode 打开 OpenCore 的 config.plist, 作如下填写

    skipcount

    • 列表上其他的条目的意思(通常不需要使用):
      1. Limit, 这里填整数, 0 表示搜索整个表, 如果我为了提高效率, 可以做一些限制, 比如PXSX是4个bytes,为什么是4个, 因为每个英文字母是 1 byte, 这里有4个字母. 我上面的例子其实只需要搜索24个PXSX就够了, 那么就等于搜索96个bytes, 这里可以把limit设置为96
      2. Mask 以及 ReplaceMask 是针对模糊搜索的, 举个简单的例子, 我要搜索的可能是PXSX, 也可能是PYSX, 并且把他们都替换成ARPT, 那么Find填 50 00 53 58, Mask填 FF00FFFF, 00表示匹配任意, FF表示精确匹配.
      3. OemTableId 通常是针对SSDT的, MaciASL打开SSDT在最上面的注释里面可以看到这个SSDT的id, 比如 OEM Table ID "SaSsdt "
      4. TableLength也可以用上面的app看得到 比如 Length 0x000031C6 (12742)
Clone this wiki locally