Contribute
Register

OS X Driver for NVMe M.2 Solid State Drives Released

Status
Not open for further replies.
You will need to describe exactly what you're doing.
Boot verbose, show photo. Attach EFI/Clover folder as ZIP (omit 'themes' folder).

@RehabMan,

Apologies for jumping in but I think I'm seeing something similar.

I've just added Samsung's NVMe 960 EVO - (the 960 is right, they've just released a new one).

I was able to patch the original unmodified driver using your script from GitHub.

The output:
Code:
Creating patched HackrNVMeFamily-10_12_1.kext
Vanilla MD5 matches expected MD5 entry (78d587a16e5736b563a175fbf8707372)
Patched MD5 matches expected MD5 entry (291b7e63764598ac8052c8a363964cb8)

When I copy that to my clover kexts folder for 10.12, I end up with the following seemingly unrelated kernel panic, which goes away as soon as the kext is removed.

View media item 187931
I was able to install directly to the NVMe drive by patching the IONVMeFamily.kext using clover. I did have to comment out the first patch which changes the info.plist - from <string>pci144d,a804</string> to <string>pci144d,a802</string>.

I'm also able to boot and use macOS on the NVMe using the same tweaked patch (I'm using it now - it's working great).

I noticed that the patching script has an option for device id matching or class matching? - I've left this set to the default: use_class_match=1

I've also left rename_class=1.....In short I'm using your script stock.

Any ideas?

Thanks,

Phil
 
@RehabMan,

Apologies for jumping in but I think I'm seeing something similar.

I've just added Samsung's NVMe 960 EVO - (the 960 is right, they've just released a new one).

I was able to patch the original unmodified driver using your script from GitHub.

The output:
Code:
Creating patched HackrNVMeFamily-10_12_1.kext
Vanilla MD5 matches expected MD5 entry (78d587a16e5736b563a175fbf8707372)
Patched MD5 matches expected MD5 entry (291b7e63764598ac8052c8a363964cb8)

When I copy that to my clover kexts folder for 10.12, I end up with the following seemingly unrelated kernel panic, which goes away as soon as the kext is removed.

View media item 187931
I was able to install directly to the NVMe drive by patching the IONVMeFamily.kext using clover. I did have to comment out the first patch which changes the info.plist - from <string>pci144d,a804</string> to <string>pci144d,a802</string>.

I'm also able to boot and use macOS on the NVMe using the same tweaked patch (I'm using it now - it's working great).

I noticed that the patching script has an option for device id matching or class matching? - I've left this set to the default: use_class_match=1

I've also left rename_class=1.....In short I'm using your script stock.

Any ideas?

Thanks,

Phil

As per README, you must use KextsToPatch when trying to patch for the installer.
Using HackrNVMeFamily is a post-install task (so you can delete conflicting IONVMeFamily.kext).

You can use HackrNVMeFamily for the installer, but you must use the "class-code" spoof as linked by the README.
 
As per README, you must use KextsToPatch when trying to patch for the installer.
Using HackrNVMeFamily is a post-install task (so you can delete conflicting IONVMeFamily.kext).

You can use HackrNVMeFamily for the installer, but you must use the "class-code" spoof as linked by the README.

Gotcha, so...

Installer = Patching via clover (which I did) - or patched driver + ssdt patch...to change the class-code?

Post installation = Use patched driver but delete the stock IONVMeFamily.kext from SLE?

Sorry if these questions seem stupid (I'm smart really) and I really appreciate your help!

Phil
 
Gotcha, so...

Installer = Patching via clover (which I did) - or patched driver + ssdt patch...to change the class-code?

Two possibilities for installer:
- patching via Clover KextsToPatch (note that InfoPlistPatch is not needed as the original kext in 10.12.x matches on class-code).
OR
- injecting a patched kext (HackrNVMeFamily) that matches on a bogus "class-code". But to use this option, you must spoof the class-code (use ACPI _DSM method or config.plist/Devices/Arbitrary)

Post installation = Use patched driver but delete the stock IONVMeFamily.kext from SLE?

Three possibilities:
- patching via Clover KextsToPatch. Carefully manage the patches in config.plist during updates (eg. make sure you have both sets of patches... 1 set for the old kext, 1 set for the new, selected via MatchOS)
OR
- HackrNVMeFamily without bogus IOPCIClassMatch, delete IONVMeFamily.kext
OR
- HackrNVMeFamily with bogus IOPCIClassMatch, bogus class-code inject, no need to delete IONVMeFamily.kext
 
Two possibilities for installer:
- patching via Clover KextsToPatch (note that InfoPlistPatch is not needed as the original kext in 10.12.x matches on class-code).
OR
- injecting a patched kext (HackrNVMeFamily) that matches on a bogus "class-code". But to use this option, you must spoof the class-code (use ACPI _DSM method or config.plist/Devices/Arbitrary)

Three possibilities:
- patching via Clover KextsToPatch. Carefully manage the patches in config.plist during updates (eg. make sure you have both sets of patches... 1 set for the old kext, 1 set for the new, selected via MatchOS)
OR
- HackrNVMeFamily without bogus IOPCIClassMatch, delete IONVMeFamily.kext
OR
- HackrNVMeFamily with bogus IOPCIClassMatch, bogus class-code inject, no need to delete IONVMeFamily.kext

Wow, there's fair few options there, may be an idea to add them to your README on GitHub :)

Got both HackrNVMEFamily and IONVMeFamily playing nicely now, using the class-code matching ACPI patching method to keep the rootfs as stock as possible!

As always, thanks for the help and all the hard work you put in!

Phil
 
Wow, there's fair few options there, may be an idea to add them to your README on GitHub :)

All is explained at the README... (or at the links provided in the README).
Just not in the same words.

Got both HackrNVMEFamily and IONVMeFamily playing nicely now, using the class-code matching ACPI patching method to keep the rootfs as stock as possible!

Yes... I think the class-code spoof, although a bit more difficult, is the best way.
 
Anyone got success with Plextor m8pegn m2 pcie SSD?

Writing this post from the HDD boot version of my Sierra , but the same copy cannot boot from the above m2 SSD.

Latest updates at https://www.tonymacx86.com/threads/...erra-rehabman-pike-nvme-latest-status.209167/


Been trying to figure how to get it working, so we can make a write up for the community to follow on this device.
Current idea is still to install to HDD, then clone the disk onto the m2 SSD and boot from it - this method would speed up the process and save you time.
 
Mr. Rehabman,

I am trying to use the installer method, since the only drive on the device that I am trying to hackintosh is a nvme drive. I can't find any info about the device_id of this Plextor M8PeGN nvme m.2 drive online. The thing here is that, there is no way for me to get the installer to recognize this drive at all by changing the config.plist or use different versions of the IONvmeFamily.kext in EFI/Clover/Kexts (i.e. patching via Clover kexttopatch). On #728, you mentioned that there is another possible way of using (use ACPI _DSM method or config.plist/Devices/Arbitrary). I have looked around for a step by step instruction. Can you give me some instructions on how to implement this ACPI_DSM or add config.plist/Devices/Arbitrary to get my drive to be recognized in the EFI?

I am also attach my EFI files for reference.

Thanks so much
 

Attachments

  • EFI_Shalam.zip
    2.5 MB · Views: 83
Mr. Rehabman,

I am trying to use the installer method, since the only drive on the device that I am trying to hackintosh is a nvme drive. I can't find any info about the device_id of this Plextor M8PeGN nvme m.2 drive online. The thing here is that, there is no way for me to get the installer to recognize this drive at all by changing the config.plist or use different versions of the IONvmeFamily.kext in EFI/Clover/Kexts (i.e. patching via Clover kexttopatch). On #728, you mentioned that there is another possible way of using (use ACPI _DSM method or config.plist/Devices/Arbitrary). I have looked around for a step by step instruction. Can you give me some instructions on how to implement this ACPI_DSM or add config.plist/Devices/Arbitrary to get my drive to be recognized in the EFI?

I am also attach my EFI files for reference.

Thanks so much

You didn't mention which version of OS X/macOS.
Patch #1 for IONVMeFamily does not match any known patches...
If you want to use the class-code spoof, read at my patch-nvme github (link provided to insanelymac).
https://github.com/RehabMan/patch-nvme
 
You didn't mention which version of OS X/macOS.
Patch #1 for IONVMeFamily does not match any known patches...
If you want to use the class-code spoof, read at my patch-nvme github (link provided to insanelymac).
https://github.com/RehabMan/patch-nvme

Sorry for not mentioning that. I am installing the Sierra 10.12.1 16B2555.

Which one is patch#1. Is that /KextsandPatched/kextstopatch/item0?

Yes, I have read the github readme.md multiple times. But I couldn't fine instructions for how to implement ACPI_DSM.
 
Status
Not open for further replies.
Back
Top