Contribute
Register

Looking for some help with NVMe please.

Status
Not open for further replies.
Joined
Dec 4, 2015
Messages
165
Motherboard
Gigabyte GA Z170X Gaming 5
CPU
i7 6700K
Graphics
GTX 980 Ti
Mac
  1. MacBook Pro
Mobile Phone
  1. iOS
So I have installed a Samsung 960 EVO NVMe drive and am about to attempt to install Sierra on it but I am struggling to understand the process. I have read the instructions on RehabMan's GitHub but they seem to be for existing installs whereas I am attempting to prepare my install USB stick to put a fresh install of Sierra onto the NVMe drive.

Does anyone know how I do this?

First problem I am facing is how do I know which version of Sierra I have on my install disk (I just downloaded it form the App Store - should I assume it is 10.12.0?).

Second, can I run the patch and copy the resulting kext file to the s/l/e folder on my install USB?

Is there anything else I will need to do after that or can I just boot to the USB stick and begin the installation as per the standard instructions?

Thanks for any help :)
 
So I have installed a Samsung 960 EVO NVMe drive and am about to attempt to install Sierra on it but I am struggling to understand the process. I have read the instructions on RehabMan's GitHub but they seem to be for existing installs whereas I am attempting to prepare my install USB stick to put a fresh install of Sierra onto the NVMe drive.

Does anyone know how I do this?

First problem I am facing is how do I know which version of Sierra I have on my install disk (I just downloaded it form the App Store - should I assume it is 10.12.0?).

Second, can I run the patch and copy the resulting kext file to the s/l/e folder on my install USB?

Is there anything else I will need to do after that or can I just boot to the USB stick and begin the installation as per the standard instructions?

Thanks for any help :)

https://www.tonymacx86.com/threads/...h-ionvmefamily-using-class-code-spoof.210316/

App Store downloads are always the latest. Current version of Sierra is 10.12.2.
Generating HackrNVMeFamily is done on the same computer you're using to download Sierra.
Must use the patch_nvme.sh command line that matches the version you're running.
Suggest you run the same version of macOS that you're planning on installing into the hack.
It is all quite clear in the guide/readme.
 
https://www.tonymacx86.com/threads/...h-ionvmefamily-using-class-code-spoof.210316/

App Store downloads are always the latest. Current version of Sierra is 10.12.2.
Generating HackrNVMeFamily is done on the same computer you're using to download Sierra.
Must use the patch_nvme.sh command line that matches the version you're running.
Suggest you run the same version of macOS that you're planning on installing into the hack.
It is all quite clear in the guide/readme.
I downloaded Sierra some time ago (at least a month ago) so I am not sure which version it is. I am currently running El Capitan on a SATA 3 SSD but want to install Sierra on the NVMe - do I have to update to Sierra on the SATA drive before I can create the installation media for the NVMe drive to make sure I have the correct patch?

EDIT
OK the version I have is 12.0.49 downloaded in October...
 
Last edited:
I downloaded Sierra some time ago (at least a month ago) so I am not sure which version it is. I am currently running El Capitan on a SATA 3 SSD but want to install Sierra on the NVMe - do I have to update to Sierra on the SATA drive before I can create the installation media for the NVMe drive to make sure I have the correct patch?

EDIT
OK the version I have is 12.0.49 downloaded in October...

By using the class-code spoof, you can likely use HackrNVMeFamily for 10.11 (assuming you generate it correctly) with 10.12.
No guarantees though.
After installing, you can generate the new kext for 10.12 and delete the HackrNVMeFamily you generated from 10.11.
 
By using the class-code spoof, you can likely use HackrNVMeFamily for 10.11 (assuming you generate it correctly) with 10.12.
No guarantees though.
After installing, you can generate the new kext for 10.12 and delete the HackrNVMeFamily you generated from 10.11.
OK so I have the BIOS Device name: \_SB.PCI0.RP09.PXSX

Which I got from the Windows Device Manager, but I am not sure how I create the SSDT.

I think my SSDT should look like this:

Code:
// Inject bogus class-code for NVMe SSD to prevent IONVMeFamily.kext from loading
// also inject "compatible", "IOName", and "name" such that 10.11.x IONVMeFamily
// does not match on pci144d,a804 (Samsung 960 EVO)
DefinitionBlock("", "SSDT", 2, "hack", "NVMe-Pcc", 0)
{
    External(_SB.PCI0.RP09.PXSX, DeviceObj)
    Method(_SB.PCI0.RP09.PXSX._DSM, 4)
    {
        If (!Arg2) { Return (Buffer() { 0x03 } ) }
        Return(Package()
        {
            "class-code", Buffer() { 0xff, 0x08, 0x01, 0x00 },
            "built-in", Buffer() { 0 },
            "compatible", Buffer() { "pci144d,a801" },
            "IOName", "pci144d,a801",
            "name", Buffer() { "pci144d,a801" },
        })
    }
}
//EOF

Which matches the instructions in your guide for the 960 EVO but what do I do next? Do I just create that in a text editor?

The guides states to use MaciASL to compile that to an .aml but from the link provided it seems the only maciASL on your github is maciASL-patchmatic - is that what I am supposed to be using?

If so, once I have done that I need to put the resulting .aml file on the USB stick in EFI/Clover/ACPI/patched/ correct?

In your guide you talk about existing _DSM methods and I get completely lost - what file am I supposed to open to check for this?

As I understand it once I have renamed all existing _DSM methods I then need to run the patching tool using the --spoof argument that matches my current OS X (not my target OS X) so in this case I would use:

./patch_nvme.sh --spoof 10_11_6_sec2016-002
(I haven't installed the 2016-003 security update on my system yet)

Then I put the resulting Kext file in EFI/Clover/kexts/Other (on the USB install stick).

Then once I have installed Sierra, I need to once again download the NVMe patch and this time run:

./patch_nvme.sh --spoof 10_12_2

And then install the Kext using:

sudo cp -R HackrNVMeFamily-10_12_2.kext /Library/Extensions
sudo kextcache -i /

Do I need to create a new .aml first or will the old one still be there?

I think I have everything there but I am still confused with regards to how to create the .aml and how to check for existing _DSM methods. Sorry for all the questions but if you have the time to help it would be much appreciated.

Another (albeit slightly offtopic) question - is it possible to copy all my system ID settings that I made in Clover Configurator>SMBIOS to the new installation media or will I need to generate these again and go through the imessage fix again? If so please can you explain which files I need to edit to do this?
 
Last edited:
OK so I have the BIOS Device name: \_SB.PCI0.RP09.PXSX

Which I got from the Windows Device Manager, but I am not sure how I create the SSDT.

I think my SSDT should look like this:

Code:
// Inject bogus class-code for NVMe SSD to prevent IONVMeFamily.kext from loading
// also inject "compatible", "IOName", and "name" such that 10.11.x IONVMeFamily
// does not match on pci144d,a804 (Samsung 960 EVO)
DefinitionBlock("", "SSDT", 2, "hack", "NVMe-Pcc", 0)
{
    External(_SB.PCI0.RP09.PXSX, DeviceObj)
    Method(_SB.PCI0.RP09.PXSX._DSM, 4)
    {
        If (!Arg2) { Return (Buffer() { 0x03 } ) }
        Return(Package()
        {
            "class-code", Buffer() { 0xff, 0x08, 0x01, 0x00 },
            "built-in", Buffer() { 0 },
            "compatible", Buffer() { "pci144d,a801" },
            "IOName", "pci144d,a801",
            "name", Buffer() { "pci144d,a801" },
        })
    }
}
//EOF

Which matches the instructions in your guide for the 960 EVO but what do I do next? Do I just create that in a text editor?

That code looks correct, but you don't need the "compatible", "IOName", and "name" unless you're using 10.11.x.
Paste the code into MaciASL and save as AML as described in the guide.

The guides states to use MaciASL to compile that to an .aml but from the link provided it seems the only maciASL on your github is maciASL-patchmatic - is that what I am supposed to be using?

Look at the download list carefully.

If so, once I have done that I need to put the resulting .aml file on the USB stick in EFI/Clover/ACPI/patched/ correct?

Yes. That is where Clover loads ACPI content.

In your guide you talk about existing _DSM methods and I get completely lost - what file am I supposed to open to check for this?

_DSM->XDSM patch goes in config.plist/ACPI/DSDT/Patches.
This is very basic stuff...
Use copy/paste from config_patches.plist to your own config.plist.
Use a plist editor.

As I understand it once I have renamed all existing _DSM methods I then need to run the patching tool using the --spoof argument that matches my current OS X (not my target OS X) so in this case I would use:

./patch_nvme.sh --spoof 10_11_6_sec2016-002
(I haven't installed the 2016-003 security update on my system yet)

If you're planning to use 10.12.x on the hack, it is best to build a HackrNVMeFamily that has the same version. But to do that, you need a system running 10.12.x. That said, the 10.11.x HackrNVMeFamily will probably work on 10.12.x. I just think mixing like that should be avoided if possible.

Then I put the resulting Kext file in EFI/Clover/kexts/Other (on the USB install stick).

Yes.

Then once I have installed Sierra, I need to once again download the NVMe patch and this time run:

./patch_nvme.sh --spoof 10_12_2

And then install the Kext using:

sudo cp -R HackrNVMeFamily-10_12_2.kext /Library/Extensions
sudo kextcache -i /

Yes... and probably a good idea to replace the 10.11.x HackrNVMeFamily you have in EFI/Clover/kexts/Other.

Do I need to create a new .aml first or will the old one still be there?

Your SSD has its own EFI partition. You will need to install Clover and configure it just as you did for USB... That is, you'll need to setup EFI/Clover/ACPI/patched, EFI/Clover/kexts/Other, etc.

I think I have everything there but I am still confused with regards to how to create the .aml and how to check for existing _DSM methods. Sorry for all the questions but if you have the time to help it would be much appreciated.

No need to "check for _DSM methods".... just use the _DSM->XDSM patch.

Another (albeit slightly offtopic) question - is it possible to copy all my system ID settings that I made in Clover Configurator>SMBIOS to the new installation media or will I need to generate these again and go through the imessage fix again? If so please can you explain which files I need to edit to do this?

You can use a plist editor to copy config.plist/SMBIOS to your new config.plist (basic copy/paste).
 
If you're planning to use 10.12.x on the hack, it is best to build a HackrNVMeFamily that has the same version. But to do that, you need a system running 10.12.x. That said, the 10.11.x HackrNVMeFamily will probably work on 10.12.x. I just think mixing like that should be avoided if possible.

Could I perhaps do this on my 2016 MacBook Pro (it is running the latest version of Sierra) or do I have to do it on a Hackintosh?
 
Could I perhaps do this on my 2016 MacBook Pro (it is running the latest version of Sierra) or do I have to do it on a Hackintosh?

I don't know why you wouldn't do it on my computer running Sierra...
 
OK it seemed to work I can now see the drive in my El Capitan install in Disk Utility as Samsung 960 EVO (uninitialized). So I am going to go ahead and attempt to install Sierra on it.

Any news @PaladineUK ?
 
Status
Not open for further replies.
Back
Top