Jump to content

Patch for using NVMe under macOS Sierra is ready.


1,382 posts in this topic

Recommended Posts

I wonder if changing the patches to this would also fix my issue. I'm kind of doubtful that the release package has the update. I don't know. I'll keep plugging away on mine, but sounds like maybe you have an answer for yours Boomish!

  • Like 1
Link to comment
Share on other sites

I wonder if changing the patches to this would also fix my issue. I'm kind of doubtful that the release package has the update. I don't know. I'll keep plugging away on mine, but sounds like maybe you have an answer for yours Boomish!

The patch_nvme.sh script will automatically choose the correct plist based on the md5 sum of the IONVMeFamily.kext in /S/L/E.

Link to comment
Share on other sites

I read that RehabMan and I am going to try it. Thanks for responding. I think I am making an even more basic mistake. Can you tell me if I am doing this right?

 

I put the patches for the 10_12_6 into my Clover Kernel and Kext Patches. That allowed me to finally see my SSD and install Sierra to it. When I rebooted, I changed out the config file with the patches to the same file without the patches and inserted the HackrNVMeFamily-10_12_6.kext

 

I thought I understood you to say that the correct Sierra IONVMeFamily.kext file would be installed with the Sierra install so I would not need the patches any more. I got the HackrNVMeFamily-10_12_6 from the internet since I was not able to execute the script. 

 

I can only boot into my El Capitan backup from my USB. If I run the patch_nvme.sh script, won't it run it against the IONVMeFamily.kext that is in El Capitan?

 

Should I be trying to boot my Sierra install with the same patches I used to boot the Sierra install and then assuming I get it booted, run the script on the IONVMeFamily.kext that is on my Sierra SSD which I would finally be able to get to? Or will a patched version of the El Capitan version workto boot my SIerra SSD? I'm also confused as to exactly how to implement the spook patch and when to do that.

 

I'm really sorry. I know these are pretty basic for you but I think what I have happening is a few stupid basic procedural issues. I hope I have stated it clearly enough for you to be able to follow it up.

 

And many thanks for putting in the time to make all these patches for everyone. I wish I was able to do that!

Link to comment
Share on other sites

I put the patches for the 10_12_6 into my Clover Kernel and Kext Patches.

May not be safe, as the patches needed may change after a system update (although it is less likely now), and if you have the patches in config.plist, such patches may be partially applied, resulting in a crash, or worse (data corruption).

You should really read the spoof guide that is linked from my patch-nvme README.

 

I thought I understood you to say that the correct Sierra IONVMeFamily.kext file would be installed with the Sierra install

The macOS Sierra installer will install an IONVMeFamily.kext that works only with certain non-Apple devices (usually those with 4k LBA).

 

I got the HackrNVMeFamily-10_12_6 from the internet

I wouldn't trust it.

Generate your own from native IONVMeFamily with the patch_nvme.sh script.

 

I can only boot into my El Capitan backup from my USB. If I run the patch_nvme.sh script, won't it run it against the IONVMeFamily.kext that is in El Capitan?

There are plists for 10.11.6 in the patch-nvme repo.

 

Should I be trying to boot my Sierra install

My guide recommends using spoofed HackrNVMeFamily from the very beginning... even for the installer.

Link to comment
Share on other sites

Rehabman

 

Boy, I really appreciate your response. I just tried to run the spoof version of the script with no name specified 

 

./patch_nvme.sh --spoof

 

It seems it is not able to match it up 

 

ERROR: no patch name specified, and unable to determine a suitable patch automatically

 

I am running this off of EL Capitan booted from a USB drive. It is my backup OS since I can't boot from the SSD

 

Seems like it should have found the correct file in S/L/E


This is what the terminal session looks like

 

 

Last login: Thu Feb  1 19:06:45 on console

Vitos-Mac-Pro:~ vitop$ cd ~/Downloads/patch-nvme-master

Vitos-Mac-Pro:patch-nvme-master vitop$ ./patch_nvme.sh --spoof

ERROR: no patch name specified, and unable to determine a suitable patch automatically

Vitos-Mac-Pro:patch-nvme-master vitop$ ./patch_nvme.sh --spoof 10_11_6

Creating patched HackrNVMeFamily-10_11_6.kext from /System/Library/Extensions/IONVMeFamily.kext

WARNING: Vanilla MD5 (797c351dfd535b6bc19d32d7cef2f1ed) does not match expected MD5 (c236c91f4f20c1f2fb9f828f3ffc0a6c)

ERROR: Vanilla MD5 does not match and --override not specified.  No kext generated!

Vitos-Mac-Pro:patch-nvme-master vitop$ 

Vitos-Mac-Pro:patch-nvme-master vitop$ 

Link to comment
Share on other sites

It was only just today that I added the plist for security update 2018-001.

You need to update your patch-nvme github copy.

Ahhh no wonder I couldn't get it working, thank Rehabman,

 

I've just tried the new script and it still fails :(

 

Creating patched HackrNVMeFamily-10_12_6.kext from /System/Library/Extensions/IONVMeFamily.kext

WARNING: Vanilla MD5 (1b712ac1b6e56f846a7e5d0056cdea20) does not match expected MD5 (c506f1fc40026c0262a736f0be318223)

 

ERROR: Vanilla MD5 does not match and --override not specified.  No kext generated!

 

I'm using following command:

cd ~/Downloads/patch-nvme-master

./patch_nvme.sh 10_12_6
 
I tried - but same error
cd ~/Downloads/patch-nvme-master
./patch_nvme.sh --spoof
 
I also tried leaving no version number but it said unable to find a suitable patch,  I managed to get it working last night after doing a fresh Sierra install to 10.12.4 on a spare disk, this gave me a HackrNVMeFamily-10_12_4.kext file that worked! Can I use the 10.12.4 kext in 10.12.6 it works in the Fresh install. I'm kinda stuck not sure what else to do. I reinstalled OSX on my system so the kext should be fine. I've read every forum and note I can find on getting the script to work. I'm sorry to ask but am stuck
Link to comment
Share on other sites

Hey Boomish

 

I've got a question. Did you use the spoof command to create the 10.12.4 kext?

 

And just so I understand. Once you create the kext (10.12.4) it does or does not work in the newly installed 10.12.6?

 

If it does have the spoof, can I have a copy? I can't seem to create anything at all. It does not match up my version either. I am trying to get straight in my mind if once a Sierra version (10.12) gets created, if it will continue to work for SIerra or if after an update, the system has the potential to stop booting.

Link to comment
Share on other sites

Ahhh no wonder I couldn't get it working, thank Rehabman,

 

I've just tried the new script and it still fails :(

 

Creating patched HackrNVMeFamily-10_12_6.kext from /System/Library/Extensions/IONVMeFamily.kext

WARNING: Vanilla MD5 (1b712ac1b6e56f846a7e5d0056cdea20) does not match expected MD5 (c506f1fc40026c0262a736f0be318223)

 

ERROR: Vanilla MD5 does not match and --override not specified.  No kext generated!

 

I'm using following command:

cd ~/Downloads/patch-nvme-master

./patch_nvme.sh 10_12_6

 

I tried - but same error

cd ~/Downloads/patch-nvme-master

./patch_nvme.sh --spoof

 

I also tried leaving no version number but it said unable to find a suitable patch,  I managed to get it working last night after doing a fresh Sierra install to 10.12.4 on a spare disk, this gave me a HackrNVMeFamily-10_12_4.kext file that worked! Can I use the 10.12.4 kext in 10.12.6 it works in the Fresh install. I'm kinda stuck not sure what else to do. I reinstalled OSX on my system so the kext should be fine. I've read every forum and note I can find on getting the script to work. I'm sorry to ask but am stuck

You are not using the script correctly.

Make sure you are NOT specifying a patch file (I think you are specifying 10_12_6).

The script will automatically find the appropriate plist file...

 

edit: Note github update... I may have forgotten to 'git add' the right file.

  • Like 1
Link to comment
Share on other sites

Rehabman

 

It looks my file has a different MD5 also. Does that need to be added in order to allow me to process the file I have?

 

WARNING: Vanilla MD5 (797c351dfd535b6bc19d32d7cef2f1ed) does not match expected MD5 (c236c91f4f20c1f2fb9f828f3ffc0a6c)

Link to comment
Share on other sites

Rehabman

 

It looks my file has a different MD5 also. Does that need to be added in order to allow me to process the file I have?

 

WARNING: Vanilla MD5 (797c351dfd535b6bc19d32d7cef2f1ed) does not match expected MD5 (c236c91f4f20c1f2fb9f828f3ffc0a6c)

md5 797c351dfd535b6bc19d32d7cef2f1ed matches no known (vanilla) build of IONVMeFamily.kext.

Link to comment
Share on other sites

md5 797c351dfd535b6bc19d32d7cef2f1ed matches no known (vanilla) build of IONVMeFamily.kext.

Wonderful. What in the world do I have then? Let me see what I have in my real Mac.

 

Thanks for letting me know.

Link to comment
Share on other sites

I decided to completely switch gears since I could not get this to boot into Sierra. I just decided to go all the way to High Sierra since it has the NVMe driver as part of the OS.

 

I just can't seem to make this work either.

 

I created an install USB of High Sierra. I booted this USB and installed to the SSD. After the install I rebooted once more from the USB said to boot the SSD and finished the install. I was never able to get to this point on Sierra and I thought I was home free.

 

Then on the third boot attempt from the USB, I again told it to boot from the SSD. This is the boot where I was going to copy the working EFI from the USB to the SSD and try and tweak it. It just ends up going to a black screen and it loses signal to the monitor. I am running a Rampage V (X99) motherboard with an AMD RX480 video board. I believe I have the option to turn off NVidia enabled and I tried all of the video options that the Clover booter would let me. None worked.

 

Once again I am stymied because on my second boot, I booted from the USB and told it to boot the SSD and it did not have an issue. Now doing the very same thing, I have an issue. I have no idea how to get past this. 

 

Is there anyone that can help with this?

 

Thanks

Link to comment
Share on other sites

You are not using the script correctly.

Make sure you are NOT specifying a patch file (I think you are specifying 10_12_6).

The script will automatically find the appropriate plist file...

 

edit: Note github update... I may have forgotten to 'git add' the right file.

Nice one Rehabman...it works now!

Determined patch automatically from vanilla IONVMeFamily: 10_12_6_sec2018-001

Creating patched HackrNVMeFamily-10_12_6_sec2018-001.kext from /System/Library/Extensions/IONVMeFamily.kext

Vanilla MD5 matches expected MD5 entry (1b712ac1b6e56f846a7e5d0056cdea20)

Patched MD5 matches expected MD5 entry (cde08888426959748a7c1e01f990643e)

 

For those following this I used the following command, I put no patch file no, it didn't work previously because patch needed updating.

 

cd ~/Downloads/patch-nvme-master

./patch_nvme.sh

 

Vpac I'm afraid I don't know enough about Clover & Hackintoshes to help but grab the GitHub file now & use the above command that works, as for High Sierra & getting t to boot I've not gone there.

Link to comment
Share on other sites

I decided to completely switch gears since I could not get this to boot into Sierra. I just decided to go all the way to High Sierra since it has the NVMe driver as part of the OS.

 

I just can't seem to make this work either.

 

I created an install USB of High Sierra. I booted this USB and installed to the SSD. After the install I rebooted once more from the USB said to boot the SSD and finished the install. I was never able to get to this point on Sierra and I thought I was home free.

 

Then on the third boot attempt from the USB, I again told it to boot from the SSD. This is the boot where I was going to copy the working EFI from the USB to the SSD and try and tweak it. It just ends up going to a black screen and it loses signal to the monitor. I am running a Rampage V (X99) motherboard with an AMD RX480 video board. I believe I have the option to turn off NVidia enabled and I tried all of the video options that the Clover booter would let me. None worked.

 

Once again I am stymied because on my second boot, I booted from the USB and told it to boot the SSD and it did not have an issue. Now doing the very same thing, I have an issue. I have no idea how to get past this. 

 

Is there anyone that can help with this?

 

Thanks

Graphics related problems are off-topic here. This topic is for NVMe.

  • Like 1
Link to comment
Share on other sites

Graphics related problems are off-topic here. This topic is for NVMe.

ok, thanks ReHabMan.

 

I actually think that now that I have gone to High Sierra, my NVMe problems are behind me.

 

I was able to boot it last night by adding two Kexts. The screen blanks after sleep and won't come back, but as you say, that is not an issue for this forum.

 

I appreciate your help in trying to get me going, but IMO with Apple changing their NVMe driver to be able to see smaller block sizes, the way to go to just avoif all this NVMe stuff is High Sierra. I never could get my system to boot properly in Sierra other than to do the install itself.

 

Thanks again for your help!

Link to comment
Share on other sites

  • 4 weeks later...

Hello All,

 

I've got a Lenovo m910q with nvme SSD which is seen as external on osx 10.13.

I know that this is just a cosmetic issue, so  i'm trying to make a ssdt to correct it, but i can't find a correct acpi path.

I've attached what I saw on ioregistry explorer and under Windows.

Many thanks for your help.

 

post-2411468-0-18911000-1519908504_thumb.jpg

post-2411468-0-47706900-1519908516_thumb.jpg

Link to comment
Share on other sites

Hello All,

 

I've got a Lenovo m910q with nvme SSD which is seen as external on osx 10.13.

I know that this is just a cosmetic issue, so  i'm trying to make a ssdt to correct it, but i can't find a correct acpi path.

I've attached what I saw on ioregistry explorer and under Windows.

Many thanks for your help.

Note that I commented out the class-code spoof part, and just left the built-in inject.

 

DefinitionBlock("", "SSDT", 2, "hack", "NVMe-Pcc", 0)
{
    External(_SB.PCI0, DeviceObj)
    // create identities for the bridge @1b and SSD0 @0
    Device(_SB.PCI0.BR1B)
    {
        Name(_ADR, 0x001b0000)  // corresponds to #PCI(1B00), MSW byte reversed
        Device(SSD0) { Name(_ADR, 0) } // corresponds to #PCI(0000)
    }
    // now we can inject the _DSM at the newly created ACPI path
    Method(_SB.PCI0.BR1B.SSD0._DSM, 4)
    {
        If (!Arg2) { Return (Buffer() { 0x03 } ) }
        Return(Package()
        {
            //"class-code", Buffer() { 0xff, 0x08, 0x01, 0x00 },
            "built-in", Buffer() { 0 },
        })
    }
}
//EOF
Link to comment
Share on other sites

  • 3 weeks later...

I currently have an Intel 750 SSD PCIe installed in my Mac Pro (early 2009) 4.1 flashed 5.1.
The system recognize it in the NVMExpress tab on macOS system report, disk utility and I can use it as an "external" drive for data only, time machine etc...

Is there a way to install and boot OS X High Sierra on the Intel SSD 750 PCIe NVMe on a Mac Pro 5.1 or everything is stuck before 2013 models?

If anyone experienced anything similar.
Thanks for your time.

Specs
Mac Pro (early 2009)
macOS High Sierra Version 10.13.3 (17D102)
Processor, 2 x 2.26 GHz Quad-Core Intel Xeon
Memory, 16 GB 1066 MHz DDR3
Graphics, NVIDIA GeFore GTX TITAN X 12 Go

Monitor
Apple Cinema HD Display 30"

Link to comment
Share on other sites

On 03/03/2018 at 10:28 PM, RehabMan said:

Note that I commented out the class-code spoof part, and just left the built-in inject.

 

 


DefinitionBlock("", "SSDT", 2, "hack", "NVMe-Pcc", 0)
{
    External(_SB.PCI0, DeviceObj)
    // create identities for the bridge @1b and SSD0 @0
    Device(_SB.PCI0.BR1B)
    {
        Name(_ADR, 0x001b0000)  // corresponds to #PCI(1B00), MSW byte reversed
        Device(SSD0) { Name(_ADR, 0) } // corresponds to #PCI(0000)
    }
    // now we can inject the _DSM at the newly created ACPI path
    Method(_SB.PCI0.BR1B.SSD0._DSM, 4)
    {
        If (!Arg2) { Return (Buffer() { 0x03 } ) }
        Return(Package()
        {
            //"class-code", Buffer() { 0xff, 0x08, 0x01, 0x00 },
            "built-in", Buffer() { 0 },
        })
    }
}
//EOF

Hello, sorry for the late answer. So far I was using a modified kext to have nvme showing as internal.

Now, I use the ssdt you provide and it's working fine :)

One of my mistake was from the reversed byte,  I wasn't using a proper one. How do you do reverse it?

Another questions, what is the purpose of class-code? I'm using another ssdt about CPU power management  and it's also using DSM, can it causes a problem?

Many thanks for your help to resolve this issue !

Link to comment
Share on other sites

On 12/26/2017 at 2:43 PM, dsarch said:

Hey! Now it is working =)

 

Jake Lo from osxlatitude.com helped me...

 

The problem is that I didn't created the patched DSDTs to go with SSDT_NVMe-Pcc.aml

 

Here is the complete clover folder for a Dell e7270 in case someone needs it.

 

E7270_NVME_10.12.6_dsarch.zip

 

Thanks =)

would you help me too  pls.. what do we do with ssdt nvme-pcc.aml

Link to comment
Share on other sites

  • 2 weeks later...
On 7/14/2017 at 10:39 AM, jsl said:

Thanks which worked for Plextor M8PeG M.2 device.

Do you know how to fix Adata XPG SX8000 PCIe Gen3x4 M.2 2280 SSD ?

http://www.xpg.com/en/feature/423

Previous firmware version 2.1.3 was not compatible with Mac OS X at all.

Only newest version firmware 2.3.19 is compatible to 10.12.6 and 10.13.x.

 

Screen Shot 2018-04-17 at 12.32.38 PM.png

Edited by jsl2000
change attached photo
Link to comment
Share on other sites

 Share

×
×
  • Create New...