安装部份:

安装部份比较简单,如果您和我一样需要驱动独显,为了出现不必要的情况,请选择High Sierra 10.13.6(17G2208)进行初始安装,相关Clover USB Install文件、系统安装后的EFI 替换文件文末会提供(这也正是我目前使用的EFI),您需要做的步骤如下:

下载以下Clove EFI文件;

**Clover USB Install下载:
**安装完成后 EFI 下载:
  • 下载映像并制macOS的U盘安装映像;
  • 解压Clover USB Install文件,得到Clover文件并替换U盘EFI引导分区下的Clover
  • 启选择U盘启动,进行常规macos安装,这之前都需要从U盘引导,直到完全进入macOS系统;
  • 您已经在SSD上建好了EFI分区,请挂载该分区,复制您下地并解压EFI文件下的Clover,并替换原Clover文件;
  • 启,拔下U盘,从固态硬盘启动macOS,如果您的机型与我的一样,您现在应该已经可以正常使用集显、有线网、亮度控制,音频和所有USB端口、甚至触控板,电池状态也都正常了。

DSDT补丁

但由于硬件不同、出厂、操作等方面的问题,或许我的DSDT文件无法在您的笔记本上生效,那么就需您自己对您的DSDT文件重打补丁,只有正确的DSDT,才能使触控板和电池状态正常工作,方法如下:

  • 首先请下载下面的文件并解压:
**iasl下载:
**MaciASL下载:
  • 挂载EFI分区,打开EFI-Clover-ACPI,删除Origin文件下的所有文件,删除patched文件下的DSDT文件;
  • 接下来我们需要提取您自己的DSDT,请重新启动电脑,在四叶草界面,依次按F2键、F4键,然后再次按FN+F2键、FN+F4键,然后进入您的macOS
  • 继续重复挂载步骤EFI-Clover-ACPI,此时Origin文件下应该有很多文件,为了方便操作,请把整个Origin文件拷贝到您的桌面;
  • 然后打开终端,进入我们刚刚下载的iasl文件目录,然后按Enter,比如iasl文件我们已解压在下载目录,那么我们可以输入命令:cd ~/Downloads
  • 然后将iasl文件拷贝至/usr/bin,输入命令:sudo cp iasl /usr/bin
  • 再输入您的密码,然后按Enter,接下来,键入cd(在cd后面放置一个空格),然后将Origin文件夹从桌面拖放到当前的命里窗口中,然后按Enter
  • 继续输入命令:iasl -da -dl DSDT.aml SSDT*.aml
  • 现在我们打开前面下载的MaciASL程序,依次Flie-open,选择桌面上的Origin文件夹并找到文件:DSDT.dsl(有2个DSDT文件,您需要的文件末尾必须带有.dsl);
  • MaciASL中打开后,单击应用程序顶部中间的补丁Patch按钮。
  • 将以下触摸版补丁复制并粘贴到补丁文本Patch Text窗口中,然后单击Apply

    into method label _STA parent_label GPI0 replace_content begin
    
    Return (0x0F)
    
    
    end;
    
    
    into_all method label _CRS parent_label TPD0 replace_content begin
    
    
    ConcatenateResTemplate (SBFB, SBFI)
    
    
    end;
  • 然后将电池状态补丁同样复制并粘贴到补丁文本Patch Text窗口中,然后单击Apply

    into method label B1B2 remove_entry;
    
    into definitionblock code_regex . insert
    
    begin
    
    Method (B1B2, 2, NotSerialized) { Return(Or(Arg0, ShiftLeft(Arg1, 8))) }\n
    
    end;
    
    
    into device label EC0 code_regex BIF1,\s+16, replace_matched begin IF10,8,IF11,8, end;
    
    into device label EC0 code_regex BIF2,\s+16, replace_matched begin IF20,8,IF21,8, end;
    
    into device label EC0 code_regex BIF3,\s+16, replace_matched begin IF30,8,IF31,8, end;
    
    into device label EC0 code_regex BIF4,\s+16, replace_matched begin IF40,8,IF41,8, end;
    
    
    into device label EC0 code_regex BST0,\s+16, replace_matched begin ST00,8,ST01,8, end;
    
    into device label EC0 code_regex BST1,\s+16, replace_matched begin ST10,8,ST11,8, end;
    
    into device label EC0 code_regex BST2,\s+16, replace_matched begin ST20,8,ST21,8, end;
    
    into device label EC0 code_regex BST3,\s+16, replace_matched begin ST30,8,ST31,8, end;
    
    
    into method label _BIF code_regex \^\^EC0\.BIF1, replaceall_matched begin B1B2(^^EC0.IF10,^^EC0.IF11), end;
    
    into method label _BIF code_regex \^\^EC0\.BIF2, replaceall_matched begin B1B2(^^EC0.IF20,^^EC0.IF21), end;
    
    into method label _BIF code_regex \^\^EC0\.BIF3, replaceall_matched begin B1B2(^^EC0.IF30,^^EC0.IF31), end;
    
    into method label _BIF code_regex \^\^EC0\.BIF4, replaceall_matched begin B1B2(^^EC0.IF40,^^EC0.IF41), end;
    
    
    into method label _BST code_regex \^\^EC0\.BST0, replaceall_matched begin B1B2(^^EC0.ST00,^^EC0.ST01), end;
    
    into method label _BST code_regex \^\^EC0\.BST1, replaceall_matched begin B1B2(^^EC0.ST10,^^EC0.ST11), end;
    
    into method label _BST code_regex \^\^EC0\.BST2, replaceall_matched begin B1B2(^^EC0.ST20,^^EC0.ST21), end;
    
    into method label _BST code_regex \^\^EC0\.BST3, replaceall_matched begin B1B2(^^EC0.ST30,^^EC0.ST31), end;
    
    
    # added for Razer Blade 15 (2018), per JomanJi
    
    into device label EC0 code_regex BIF0,\s+16, replace_matched begin IF00,8,IF01,8, end;
    
    into method label _BIF code_regex \(\^\^EC0.BIF0, replaceall_matched begin (B1B2(\^\^EC0.IF00,\^\^EC0.IF01), end;
    
    
    # utility methods to read/write buffers from/to EC
    
    into method label RE1B parent_label EC0 remove_entry;
    
    into method label RECB parent_label EC0 remove_entry;
    
    into device label EC0 insert
    
    begin
    
    Method (RE1B, 1, NotSerialized)\n
    
    {\n
    
    OperationRegion(ERAM, EmbeddedControl, Arg0, 1)\n
    
    Field(ERAM, ByteAcc, NoLock, Preserve) { BYTE, 8 }\n
    
    Return(BYTE)\n
    
    }\n
    
    Method (RECB, 2, Serialized)\n
    
    // Arg0 - offset in bytes from zero-based EC\n
    
    // Arg1 - size of buffer in bits\n
    
    {\n
    
    ShiftRight(Add(Arg1,7), 3, Arg1)\n
    
    Name(TEMP, Buffer(Arg1) { })\n
    
    Add(Arg0, Arg1, Arg1)\n
    
    Store(0, Local0)\n
    
    While (LLess(Arg0, Arg1))\n
    
    {\n
    
    Store(RE1B(Arg0), Index(TEMP, Local0))\n
    
    Increment(Arg0)\n
    
    Increment(Local0)\n
    
    }\n
    
    Return(TEMP)\n
    
    }\n
    
    end;
    
    
    # buffer fields
    
    into device label EC0 code_regex (ECCM,)\s+(256) replace_matched begin ECCX,%2,//%1%2 end;
    
    into method label _BIF code_regex \(\^\^EC0.ECCM, replaceall_matched begin (^^EC0.RECB(0x60,256), end;
  • 打完两个补丁后,单击关闭Close按钮
  • 接下来操作非常重要,这关系到Razer Blade 15(2018)基本版本是否能正常使用触摸板,返回MaciASL窗口,点击Edit-Find,查找SSCN,您会看到上方50638(这里是我DSDT文件SSCN的位置,并不一定和您的一样,仅做为参考,更多的需要您通过下面的图片去对比,找到正确的行数位置)Scope (_SB.PCI0.I2C0)I2C0即为我的设备,接下来复制下方的SSCN及FMCN部份(确认无误后删除该位置代码,也可以直接剪切,我们需要把它粘贴在其它合适的位置,注意语法符号):

          }
    
          Method (SSCN, 0, NotSerialized)
          {
              Return (PKG3 (SSH0, SSL0, SSD0))
          }
    
          Method (FMCN, 0, NotSerialized)
          {
              Return (PKG3 (FMH0, FML0, FMD0))
          }
  • 为了安全其见,您可以把这代剪切的代码粘贴至其它处,如记事本等,以下两张图分别DSDT的文件SSCN、FMCN的原始位置及剪切后的页面内容,可做以参考:
    原始文件
    剪切SSCN、FFCN后
  • 接下来我们需要把SSCN、FMCN放到正确的位置,查找TPDO这有很多处,您可以参考下面的截图找到具体要修改的位置,它位于Device块之外,但位于Scope内(确保ScopeDevice相同,例如I2C0TPD0)我的位置在47569行在其上方粘贴以上代码,请参考以下修改前后的图片:
    未修改前
    粘贴SSCN、FFCN后
  • 确认无误后后单击编译Compile按钮,并确保没有出现错误error
  • 然后返回MaciASL,选择File-Save AS,然后将DSDT文件保存目标更改为您的桌面,将“文件格式”更改为ACPI Machine Language Binary。确保名称仅为DSDT,然后单击保存。
  • 最后再次打开EFI-Clover-ACPI-Patched,然后将刚刚保存的新修补的DSDT粘贴到Patched文件夹中。重新启动笔记本电脑,现在,您应该具有可用的电池状态和触控板了!
Last modification:June 28, 2023
如果觉得我的文章对你有用,请随意赞赏