Contribute
Register

[SOLVED] NVMe ssd not visible in Sierra installer

Status
Not open for further replies.
Joined
Jul 3, 2015
Messages
86
Motherboard
HP Elite Desk 800 G4 SFF - Q370
CPU
i7-8700
Graphics
WX 4100
Mac
  1. MacBook Pro
Mobile Phone
  1. iOS
I have working High Sierra running on my current Samsung 960 EVO NVMe ssd but want to go back to Sierra because of numerous issues in High Sierra.

I followed the guide to create the SSDT_NVMe-Pcc.aml file and copied it to <USBDRIVE>/EFI/Clover/ACPI/patched/SSDT_NVMe-Pcc.aml. But I don't see my NVMe ssd in Sierra installer Disk utility.

Content of SSDT_NVMe-Pcc.aml file:
SSD address as checked on Windows: _SB.PCI0.PEG0.PEGP

Code:
// Inject bogus class-code for NVMe SSD to prevent IONVMeFamily.kext from loading
DefinitionBlock("", "SSDT", 2, "hack", "NVMe-Pcc", 0)
{
    External(_SB.PCI0.PEG0.PEGP, DeviceObj)
    Method(_SB.PCI0.PEG0.PEGP._DSM, 4)
    {
        If (!Arg2) { Return (Buffer() { 0x03 } ) }
        Return(Package()
        {
            "class-code", Buffer() { 0xff, 0x08, 0x01, 0x00 },
            "built-in", Buffer() { 0 },
        })
    }
}
//EOF

Content of USB drive:

Ktexts on drive

➜ kexts ls -l Other​
total 5
drwxrwxrwx 1 bufferOverflow 1896053708 512 Mar 28 2017 AtherosE2200Ethernet.kext
drwxrwxrwx 1 bufferOverflow 1896053708 512 Mar 28 2017 FakeSMC.kext
drwxrwxrwx 1 bufferOverflow 1896053708 512 Mar 28 2017 IntelMausiEthernet.kext
drwxrwxrwx 1 bufferOverflow 1896053708 512 Mar 28 2017 RealtekRTL8111.kext
drwxrwxrwx 1 bufferOverflow 1896053708 512 Mar 28 2017 USBInjectAll.kext

Can anyone help me understand what am I missing?
 
Last edited:
I have working High Sierra running on my current Samsung 960 EVO NVMe ssd but want to go back to Sierra because of numerous issues in High Sierra.

I followed the guide to create the SSDT_NVMe-Pcc.aml file and copied it to <USBDRIVE>/EFI/Clover/ACPI/patched/SSDT_NVMe-Pcc.aml. But I don't see my NVMe ssd in Sierra installer Disk utility.

Content of SSDT_NVMe-Pcc.aml file:
SSD address as checked on Windows: _SB.PCI0.PEG0.PEGP

Code:
// Inject bogus class-code for NVMe SSD to prevent IONVMeFamily.kext from loading
DefinitionBlock("", "SSDT", 2, "hack", "NVMe-Pcc", 0)
{
    External(_SB.PCI0.PEG0.PEGP, DeviceObj)
    Method(_SB.PCI0.PEG0.PEGP._DSM, 4)
    {
        If (!Arg2) { Return (Buffer() { 0x03 } ) }
        Return(Package()
        {
            "class-code", Buffer() { 0xff, 0x08, 0x01, 0x00 },
            "built-in", Buffer() { 0 },
        })
    }
}
//EOF

Content of USB drive:

Ktexts on drive

➜ kexts ls -l Other​
total 5
drwxrwxrwx 1 abhijeen 1896053708 512 Mar 28 2017 AtherosE2200Ethernet.kext
drwxrwxrwx 1 abhijeen 1896053708 512 Mar 28 2017 FakeSMC.kext
drwxrwxrwx 1 abhijeen 1896053708 512 Mar 28 2017 IntelMausiEthernet.kext
drwxrwxrwx 1 abhijeen 1896053708 512 Mar 28 2017 RealtekRTL8111.kext
drwxrwxrwx 1 abhijeen 1896053708 512 Mar 28 2017 USBInjectAll.kext

Can anyone help me understand what am I missing?

Read here:
https://www.tonymacx86.com/threads/...h-ionvmefamily-using-class-code-spoof.210316/
 
Thanks @RehabMan I reread the the guide and found few missing settings.

I would be glad if you can clarify few things. Since now I've the system up and running which of the following steps are necessary to do after future upgrades

- make sure the SSDT_NVMe-Pcc.aml is in EFI/Clover/ACPI/patched
>> This is not necessary, as this lives in the EFI partition

- make sure existing _DSM methods at the NVMe SSD ACPI path are renamed or deleted
>> In my current environment I didn't add this to my permanent EFI partition. I'm guessing this is one time setup for USB drive.

- make sure you use the --spoof option to generate HackrNVMeFamily*.kext
- install the HackrNVMeFamily*.kext or inject it via EFI/Clover/kexts
>> We have to do this after upgrades to get latest functionality from apple drivers
 
- make sure the SSDT_NVMe-Pcc.aml is in EFI/Clover/ACPI/patched
>> This is not necessary, as this lives in the EFI partition

To implement the class-code spoof, it is absolutely necessary to have an appropriately coded SSDT_NVMe-Pcc.aml in the ACPI/patched folder of your Clover folder.

- make sure existing _DSM methods at the NVMe SSD ACPI path are renamed or deleted
>> In my current environment I didn't add this to my permanent EFI partition. I'm guessing this is one time setup for USB drive.

If you have an existing _DSM at the NVMe ACPI path, you must remove it.
Nothing changes for HDD vs. USB EFI/Clover.

- make sure you use the --spoof option to generate HackrNVMeFamily*.kext
- install the HackrNVMeFamily*.kext or inject it via EFI/Clover/kexts
>> We have to do this after upgrades to get latest functionality from apple drivers

It is best to keep HackrNVMeFamily*.kext up-to-date (eg. patched from the version you're running).
 
To implement the class-code spoof, it is absolutely necessary to have an appropriately coded SSDT_NVMe-Pcc.aml in the ACPI/patched folder of your Clover folder.



If you have an existing _DSM at the NVMe ACPI path, you must remove it.
Nothing changes for HDD vs. USB EFI/Clover.



It is best to keep HackrNVMeFamily*.kext up-to-date (eg. patched from the version you're running).
Thank you @RehabMan :)
 
Status
Not open for further replies.
Back
Top