修复NVME盘被识别为外置硬盘补丁

使用工具

  • IORegistryExplorer  用于查看NVME盘在系统中的相关信息
  • MaciASL 用于编写SSDT 并编译

制作补丁

  • 使用IORegistryExplorer 查看NVME 控制器相关信息

注: v1 ,v2 ,v3 三个节点需要记下v1 = PCI0 ,V2 = RP05 , V3 = IOPP 不同设备情况不同 3个节点相同 
2. MaciASL 新建一个空的SSDT补丁文件

3. 将以下代码中的参数和以上在IORegistryExplorer中记录下的v1 v2 v3 自行修改成自己设备的具体参数

DefinitionBlock ("", "SSDT", 2, "hack", "nvme", 0x00000000)
{
    External (_SB_.PCI0.RP05, DeviceObj)                         //arg1:  _SB_.V1.V2
    External (_SB_.PCI0.RP05.IOPP._ADR, UnknownObj) //arg1:  _SB_.V1.V2.V3.

    Scope (\_SB.PCI0.RP05)    //Node1 
    {
        Device (NVME){           //Device name show NVME
            Name (_ADR, Zero) // _ADR: Address
            Name (_SUN, One)  // _SUN: Slot User Number
            Method (_INI, 0, NotSerialized) // _INI: Initialize
            {
                 Store (0x0F, \_SB.PCI0.RP05.IOPP._ADR)   //arg2: \_SB.V1.V2.V3._ADR
            }
            
            Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
            {
                If (LEqual (Arg2, Zero))
                {
                    Return (Buffer (One)
                    {
                         0x03                                           
                    })
                }
                Return (Package (0x02)
                {
                    "built-in", 
                    Buffer (0x0A)
                    {
                        "NVMe SSD"
                    }
                })
            }
            
        }
    }
}

3.将SSDT保存为aml 
4.将.aml 文件copy to /EFI/CLOVER/ACPI/patched 中 
5.打开Clover Configurator 配置config.plist
6.ACPI->SSDT-> Drop OEM 打勾
7.查看DisabledAML中没有SSDT_NVME.aml (有着删该项),并在SortedOrder添加SSDT_NVME.aml
8.Ctrl +S 
9.reboot

关于Zeno Chen

本人涉及的领域较多,杂而不精 程序设计语言: Perl, Java, PHP, Python; 数据库系统: MySQL,Oracle; 偶尔做做电路板的开发,主攻STM32单片机
此条目发表在Mac分类目录。将固定链接加入收藏夹。