Jump to content
Mork vom Ork

Patch for using NVMe under macOS Sierra is ready.

1,362 posts in this topic

Recommended Posts

As expected without class-code spoof.

 

 

Here was my mistake too. After removing original IONVMeFamily - system detects my Samsung 960 EVO! Thank you very much! 

Share this post


Link to post
Share on other sites
Advertisement

As expected without class-code spoof.

 

 

Yes. Others have the same issue with certain SSDs (Samsung drives seem to be the best bet)... not related to the patch_nvme.sh scripts.

update: im ordering a pcie adapter since the m.2 port is not X4 Gen 3, but in the meanwhile, I have a new issue. When I boot into the nvme drive, it only does about 170 write and 750 read, while it does 750/750 read/write if i test it while being booted in another drive (ie, in windows, the drive is 750/750, and in sierra, its 750/750 if I boot in another drive, but its only 170/750 write read if I boot into it and test.) Current config, Hackr kext, no patches in config, and deleted ionvme kext.

Share this post


Link to post
Share on other sites

Here was my mistake too. After removing original IONVMeFamily - system detects my Samsung 960 EVO! Thank you very much!

If you do the class-code spoof, you will not need to remove IONVMeFamily.kext.

Updates without the class-code spoof are challenging due to the need to remove IONVMeFamily.kext.

Lazy people (those that don't implement the class-code spoof) will be greeted by a system that doesn't boot after updates...

Share this post


Link to post
Share on other sites

If you do the class-code spoof, you will not need to remove IONVMeFamily.kext.

Updates without the class-code spoof are challenging due to the need to remove IONVMeFamily.kext.

Lazy people (those that don't implement the class-code spoof) will be greeted by a system that doesn't boot after updates...

Yes, i see. Will try spoof method when find any free sata drive for win install on this system. Do not want to mix OSX/win boot partitions at one drive.

Share this post


Link to post
Share on other sites

Keep in mind ForceKextsToLoad uses UEFI path separators... that means backslash, not forward slash.

But there are plenty of other opportunities for mistakes, and so far, you provide no files that show what you're doing...

 

You should double check your patches to be sure they are correct. And don't use Clover Configurator... as you have discovered, it will scramble your config.plist content for no apparent reason.

 

Best to use HackrNVMeFamily with class-code spoof.

Is there a link to setting up the HackrNVMeFamily with class-code spoof?

I am assuming it is here...

 

https://www.tonymacx86.com/threads/guide-hackrnvmefamily-co-existence-with-ionvmefamily-using-class-code-spoof.210316/

 

I am a novice trying to learn...I was able to follow Mork's instructions easily IF someone has something similar to the above...

thanks

Share this post


Link to post
Share on other sites

Is there a link to setting up the HackrNVMeFamily with class-code spoof?

I am assuming it is here...

 

[removed tonymac link]

 

I am a novice trying to learn...I was able to follow Mork's instructions easily IF someone has something similar to the above...

thanks

Check out my post... you should be able to follow it pretty easily: http://www.insanelymac.com/forum/topic/312803-patch-for-using-nvme-under-macos-sierra-is-ready/page-37?do=findComment&comment=2343228

 

Two options for finding your NVME:

You can use Pike's Clover patches (in your config.plist=>KernelToPatch) to see your NVMe drive (just copy/paste the 17+ patches):

https://pikeralpha.wordpress.com/2016/06/27/nvmefamily-kext-bin-patch-data/

 

OR, generate a Rehabman's HackrNvmeFamily.kext (non-spoofed), place it in /System/Library/Extensions or /Library/Extensions (only one location, not both), remove IONVMEFamily.kext from S/L/E (copy/paste IONVMEFamily.kext to your desktop, delete it from S/L/E, then rebuild S/L/E caches via this terminal command, then after rebuilding the caches, reboot your computer):

sudo touch /System/Library/Extensions && sudo kextcache -u /

Once you've found the NVME ACPI location, you can remove Hackr.kext from S/L/E or L/E, replace IONVMEFamily.kext back to S/L/E, rebuild the caches again, then create a SSDT-Nvme-Pcc.aml and generate a spoofed Hackr.kext. You can then place that kext in S/L/E, L/E or mount your drive via Clover Configurator and paste the SSDT to EFI->Clover->ACPI->patched and the Hackr.kext to EFI->Clover->kexts->other.

Share this post


Link to post
Share on other sites

Is there a link to setting up the HackrNVMeFamily with class-code spoof?

I am assuming it is here...

 

https://www.tonymacx86.com/threads/guide-hackrnvmefamily-co-existence-with-ionvmefamily-using-class-code-spoof.210316/

 

I am a novice trying to learn...I was able to follow Mork's instructions easily IF someone has something similar to the above...

thanks

Yes... the class-code spoof guide is on tmx, linked from patch-nvme github README.

Share this post


Link to post
Share on other sites

ok, I installed the Patriot Hellfire on a pcie card, and the read speed jumped up to 2000 with a write speed of about 700. The problem is that its supposed to be about 2,700 read and about 1600 write. System profiler now shows link width as x4 (correctly) and GT/s as 8gb. What else can I try to increase speed?

Share this post


Link to post
Share on other sites

Hello,

 

Please bear with me, as I am definitely new here. I am trying to install an ADATA SX8000 NVMe SSD on a 2015 MacBook Pro, using a Sintech adapter. I have run RehabMan's script, using the --spoof option, to create the kext files for 10.12.1—10.12.3. When I run a trial with the stock Apple SSD installed, the kext loads up perfectly fine, however with the non-Apple, ADATA SSD is installed, the kext fails to load on account of a permissions issue. I have been posting to PikerAlpha's blog as well. Any assistance you may be able to offer would be greatly appreciated.

 

Thank you,

Matthew

Share this post


Link to post
Share on other sites

Hello,

 

Please bear with me, as I am definitely new here. I am trying to install an ADATA SX8000 NVMe SSD on a 2015 MacBook Pro, using a Sintech adapter. I have run RehabMan's script, using the --spoof option, to create the kext files for 10.12.1—10.12.3. When I run a trial with the stock Apple SSD installed, the kext loads up perfectly fine, however with the non-Apple, ADATA SSD is installed, the kext fails to load on account of a permissions issue. I have been posting to PikerAlpha's blog as well. Any assistance you may be able to offer would be greatly appreciated.

 

Thank you,

Matthew

Novices can use a kext installer to install kexts, such as Kext Wizard.

I tend to use Terminal:

sudo cp -R KextToInstall.kext /Library/Extensions
Note that once you install a kext with incorrect permissions, you must remove it before attempting to install properly:

sudo rm -Rf /System/Library/Extensions/KextToRemove.kext
# or
sudo rm -Rf /Library/Extensions/KextToRemove.kext
But you will not be able to implement the class-code spoof with a real Apple computer unless you use a hackintosh bootloader such as Clover. As far as I know, there is no way to inject/patch ACPI files in a real Mac using the Mac EFI firmware.

 

Also, to install unsigned/mis-signed kexts, you will need to disable SIP with csrutil from recovery mode.

Share this post


Link to post
Share on other sites

I think we can increase the version of HackrNVMeFamily by editing Info.plist but do nothing with spoof, or in other word, we don't touch IOKitPersonalities. Just like the AppleHDA Injector by Pike R. Alpha. After that, kernel will load HackrNVMeFamily instead of IONVMeFamily. This makes HackrNVMeFamily and IONVMeFamily co-exist but only HackrNVMeFamily will work. Actually only HackrNVMeFamily loads. A simple and great trick. Also. No need to take a mess on SIP. The dummy kext which is modified based on Apple's vanilla kext will load anyway. Like I did for AppleEFINVRAM to open-gate SIP. But it seems that we can't change a lot like the default settings of @RehabMan's script. We have to keep the original signature, etc. For otherwise will not work...

So. @matthewshuster. Here is what you should do:

1. Remove anything you created in the past. Keep /S*/L*/E*/IONVMeFamily.kext untouched.

2. Refer to @RehabMan's "patch-nvme" repository to get a copy of his great "patch-nvme" archive.

3. Replace the original "patch_nvme.sh" with mine.

4. Run `./patch_nvme.sh your_expected_sys_ver` to create a patched kext. Note: You must replace my "patch_nvme.sh" firstly!

    e.g. ./patch_nvme.sh 10_12_3

5. Install the patched Kext by following @RehabMan's good method.

 

Here is the modified "patch_nvme.sh":

patch_nvme.sh.zip

 

Edit: Seems to not work. Deprecated.

Share this post


Link to post
Share on other sites

ok, I installed the Patriot Hellfire on a pcie card, and the read speed jumped up to 2000 with a write speed of about 700. The problem is that its supposed to be about 2,700 read and about 1600 write. System profiler now shows link width as x4 (correctly) and GT/s as 8gb. What else can I try to increase speed?

I think 2000 means you're getting more than PCIe 2.0 x4 performance or PCIe 3.0 x2 performance since it would be nearly impossible to get 2GB/s with less than PCIe 3.0 x4. So you should be happy with that. The reason you don't see 2700 is probably because the benchmark software you use is different than whatever gave those expected numbers. You could try benchmarking in Windows.

Share this post


Link to post
Share on other sites

I think we can increase the version of HackrNVMeFamily by editing Info.plist but do nothing with spoof, or in other word, we don't touch IOKitPersonalities. Just like the AppleHDA Injector by Pike R. Alpha. After that, kernel will load HackrNVMeFamily instead of IONVMeFamily. This makes HackrNVMeFamily and IONVMeFamily co-exist but only HackrNVMeFamily will work. Actually only HackrNVMeFamily loads. A simple and great trick. Also. No need to take a mess on SIP. The dummy kext which is modified based on Apple's vanilla kext will load anyway. Like I did for AppleEFINVRAM to open-gate SIP. But it seems that we can't change a lot like the default settings of @RehabMan's script. We have to keep the original signature, etc. For otherwise will not work...

Did you actually test your theory?

When I was coming up with a method for HackrNVMeFamily and IONVMeFamily co-existence, I found it didn't work...

Both kexts were still probed, which lead to the panic problem...

Share this post


Link to post
Share on other sites

Did you actually test your theory?

When I was coming up with a method for HackrNVMeFamily and IONVMeFamily co-existence, I found it didn't work...

Both kexts were still probed, which lead to the panic problem...

I'm very curious of his answer  :whistle:

Share this post


Link to post
Share on other sites

Did you actually test your theory?

When I was coming up with a method for HackrNVMeFamily and IONVMeFamily co-existence, I found it didn't work...

Both kexts were still probed, which lead to the panic problem...

Why... IMHO the patched IONVMeFamily will be the same as AppleHDA Injector, that is the patched kext (999.99.9) will load before the vanilla one (lower version).

Not tested IONVMeFamily but AppleEFINVRAM and AppleHDA work in this way.

And also. It seems that the patched kext will load via /L*/E* or /S*/L*/E*, but InjectKext not. Your spoof idea will also work for InjectKext cuz you changed the IOPCIMatch.

Alright. Deprecated...

Share this post


Link to post
Share on other sites

Why... IMHO the patched IONVMeFamily will be the same as AppleHDA Injector, that is the patched kext (999.99.9) will load before the vanilla one (lower version).

Not tested IONVMeFamily but AppleEFINVRAM and AppleHDA work in this way.

And also. It seems that the patched kext will load via /L*/E* or /S*/L*/E*, but InjectKext not. Your spoof idea will also work for InjectKext cuz you changed the IOPCIMatch.

Alright. Deprecated...

In my testing, I was looking for a method that works in all scenarios (installed or injected).

Eventually settled on the class-code spoof.

It is bullet proof.

Share this post


Link to post
Share on other sites

In my testing, I was looking for a method that works in all scenarios (installed or injected).

Eventually settled on the class-code spoof.

It is bullet proof.

Yep, but IMHO for real Macs we don't need InjectKext (hard to do so) and a legacy patched kext is enough...

Share this post


Link to post
Share on other sites

I'm really sorry as I know this question has probably been answered somewhere in this thread. I've read through as much of it as i can but haven't found it...

 

I'm currently on 10.11.6 using a patched HackrNVMeFamily-10_11_6.kext, which i generated using rehabman's script (thank you so much to you, Pike R and anyone else involved).

 

I think it's high time i upgrade to macOS Sierra, and i'm wondering what the safest way to do this upgrade is? I normally just do it with the app store these days, but would i need to upgrade the system, and then swap over the .kext without booting into the system, for the new one for Sierra? Or would i need to temporarily use the genericnvme kext again while i upgrade? Or can i use a sierra one now?

 

Thanks a lot in advance for any guidance you can offer.

 

D

Share this post


Link to post
Share on other sites

Yep, but IMHO for real Macs we don't need InjectKext (hard to do so) and a legacy patched kext is enough...

Yes. My method is focused on hackintosh, as is this site...

I'm really sorry as I know this question has probably been answered somewhere in this thread. I've read through as much of it as i can but haven't found it...

 

I'm currently on 10.11.6 using a patched HackrNVMeFamily-10_11_6.kext, which i generated using rehabman's script (thank you so much to you, Pike R and anyone else involved).

 

I think it's high time i upgrade to macOS Sierra, and i'm wondering what the safest way to do this upgrade is? I normally just do it with the app store these days, but would i need to upgrade the system, and then swap over the .kext without booting into the system, for the new one for Sierra? Or would i need to temporarily use the genericnvme kext again while i upgrade? Or can i use a sierra one now?

 

Thanks a lot in advance for any guidance you can offer.

 

D

Implement the class-code spoof prior to updating to Sierra. See patch-nvme README for links.

Share this post


Link to post
Share on other sites

Implement the class-code spoof prior to updating to Sierra. See patch-nvme README for links.

Thanks for the quick reply.

 

I saw the class-code spoof thing, so if i do that i don't need to update my hackr nvme kext? As in, the one i made for 10.11.6 will work just fine in 10.12.4?

 

EDIT: I notice that you tell everyone that they have to delete the IONVMeFamily.kext from S/L/E for this to work unless they use the class-code spoof... I've never deleted mine and the system seems to work fine?

Share this post


Link to post
Share on other sites

Thanks for the quick reply.

 

I saw the class-code spoof thing, so if i do that i don't need to update my hackr nvme kext? As in, the one i made for 10.11.6 will work just fine in 10.12.4?

You should always keep HackrNVMeFamily in sync with the version of OSX/macOS you're running.

10.12.4 is not released.

I have used 10.11.6 version with 10.12.3 and it worked.

That configuration should be considered only for short-term use...

Share this post


Link to post
Share on other sites

You should always keep HackrNVMeFamily in sync with the version of OSX/macOS you're running.

10.12.4 is not released.

I have used 10.11.6 version with 10.12.3 and it worked.

That configuration should be considered only for short-term use...

 Okay, gotcha. Thanks a lot for all your work and help.

 

FINAL QUESTION I SWEAR....

Did you see my edit? Quoted below

 

EDIT: I notice that you tell everyone that they have to delete the IONVMeFamily.kext from S/L/E for this to work unless they use the class-code spoof... I've never deleted mine and the system seems to work fine?+

Share this post


Link to post
Share on other sites

EDIT: I notice that you tell everyone that they have to delete the IONVMeFamily.kext from S/L/E for this to work unless they use the class-code spoof... I've never deleted mine and the system seems to work fine?

Must delete IONVMeFamily.kext when using HackrNVMeFamily.kext without class-code spoof in two scenarios:

- 10.12.x

OR

- 10.11.x with Samsung 960 EVO (perhaps others with device-id 144d:a804)

Share this post


Link to post
Share on other sites

The final piece of the puzzle! Thanks a lot RehabMan. I'm using a 950pro, sadly ordered just before the 960 upgrade came out.

Note: 960 EVO is not a 950 Pro "upgrade".

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.

×