Contribute
Register

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

Status
Not open for further replies.
Ok, I'm having trouble getting the NVME kext to load and now starting to wonder if I'm off down the wrong rabbit hole. I want to keep my system booting as is, and just add a new 960 Evo 1TB NVMe drive in a PCIe adapter card.

I tried to test I can access the drive by using the non-spoof HackrNVMeFamily*.kext and remove IONVMeFamily.kext from S/L/E as that seemed quickest. After it works I planned to go through the spoof method and restore the vanilla kext to S/L/E. But I am stuck at the first hurdle as I can't get it to load the kext. All my other Clover injected kexts work (List below).

Should kextstat show the kext as loaded? If so, what can stop it loading? If not, what would you check next?

Any help appreciated!


FWIW...

I've tried it using Clover kext injection, manual install to S/L/L or L/E, on 10.12.1 and 10.12.3 (generated each Hackr kext on the right version and checksums match), with csr active config 0x03 and 0x67, but after boot kextstat never shows the kext as loaded but I can sudo kextload it fine.

I am unsure how to debug failure to load a kext. I tried the clover debug kext log but it only seems to go to screen and a video of that didn't show anything obvious.

Now I've tried to undo back to vanilla IONVMeFamily from the 10.12.3 installer and try the kextstopatch method but kextutil is now saying IONVMeFamily.kext has an invalid signature and it does not show up in kextstat either, so I don't think the kextstopatch will work:

Diagnostics for /System/Library/Extensions/IONVMeFamily.kext:
Code Signing Failure: code signature is invalid
kext-dev-mode allowing invalid signature -67014 0xFFFFFFFFFFFEFA3A for kext "/System/Library/Extensions/IONVMeFamily.kext"
kext signature failure override allowing invalid signature -67014 0xFFFFFFFFFFFEFA3A for kext "/System/Library/Extensions/IONVMeFamily.kext"

and my other kexts that Clover seems to inject fine:

6:452 0:000 Preparing kexts injection for arch=x86_64 from EFI\CLOVER\kexts\10.12
6:452 0:000 Extra kext: EFI\CLOVER\kexts\10.12\FakePCIID_XHCIMux.kext
6:453 0:001 Extra kext: EFI\CLOVER\kexts\10.12\FakePCIID.kext
6:454 0:000 Extra kext: EFI\CLOVER\kexts\10.12\FakeSMC.kext
6:455 0:001 Extra kext: EFI\CLOVER\kexts\10.12\NullCPUPowerManagement.kext
6:457 0:001 Extra kext: EFI\CLOVER\kexts\10.12\VoodooTSCSync.kext
6:458 0:000 Extra kext: EFI\CLOVER\kexts\10.12\XHCI-x99-injector.kext
6:458 0:000 Extra kext: EFI\CLOVER\kexts\10.12\BrcmFirmwareData.kext
6:470 0:011 Extra kext: EFI\CLOVER\kexts\10.12\BrcmPatchRAM2.kext
 
Ok, I'm having trouble getting the NVME kext to load and now starting to wonder if I'm off down the wrong rabbit hole.

It was indeed a rabbit hole. I went back to the drawing board. Went through all the bios windows and found one that shows what is connected to each PCI slot... Nothing! Power down, reseat the card, power up, all working with the plist method :) Now I just need to do the spoof kext!

I feel so stupid. In my defence the LEDs on the card were on, something just wasn't quite connecting well.
 
Hello. I am preparing to update to Sierra 12.3 with my Samsung 950 Pro.

The Readme in RehabMans patch states my IONVMeFamily.kext must be vanilla. It is, but it's an 10.11.6 version since I am on Capitan. Can I still create the correct hackr.kext using
./patch_nvme.sh --spoof 10_12_3

while being on Capitan?
 
Hello. I am preparing to update to Sierra 12.3 with my Samsung 950 Pro.

The Readme in RehabMans patch states my IONVMeFamily.kext must be vanilla. It is, but it's an 10.11.6 version since I am on Capitan. Can I still create the correct hackr.kext using
./patch_nvme.sh --spoof 10_12_3

while being on Capitan?
No. You'll need a 10.12.3 Sierra build. I've solved my problem by creating the HackrNVMeFamily-10_12_3.kext on a separate SSD (inexpensive one, just large enough to have a virgin 10.12.3 installation) for the expressed purposed of created the HackrNVMeFamily kexts.
 
The Readme in RehabMans patch states my IONVMeFamily.kext must be vanilla. It is, but it's an 10.11.6 version since I am on Capitan. Can I still create the correct hackr.kext using
./patch_nvme.sh --spoof 10_12_3
while being on Capitan?

No. On 10.11.6, you must create one of the 10.11.6 Hackr kexts.
It is quite clear in the README:
you must run the script with the parameter that corresponds to the version of OS X you are running

No. You'll need a 10.12.3 Sierra build. I've solved my problem by creating the HackrNVMeFamily-10_12_3.kext on a separate SSD (inexpensive one, just large enough to have a virgin 10.12.3 installation) for the expressed purposed of created the HackrNVMeFamily kexts.

Note that you can use HackrNVMeFamily-10_11_6*.kext on 10.12.3.
 
No. On 10.11.6, you must create one of the 10.11.6 Hackr kexts.
It is quite clear in the README:
(READ ME)
Note that you can use HackrNVMeFamily-10_11_6*.kext on 10.12.3.
I am sorry. I read it as, I must run the script with the parameter that correspons to the version of OS X I'm are running (and when I'm installing from the USB, I will be running Sierra = I should use Sierra parameters). I was mistaken.

I had no idea I'm able to use a 11.6 HackrNVMeFamily kext. That's great news.
This means, I should create a Hackr.kext, while on Capitan, using ./patch_nvme.sh --spoof 10_11_6

Put this kext in EFI/Clover/Kexts/Other on my Sierra USB. I put my regular El Capitan config.plist in EFI/Clover on the USB as well. Since the HackerNMVe.kext in /Other contains the necessary class code redirect patch, I do not need additional KextToPatch in my config.plist.

I then run & install Sierra. After this is done i boot from the USB and run MultiBeast. I also create a new HackrNVMeFamily using ./patch_nvme.sh --spoof 10_12_3 and put this kext in my bootdrives EFI/Clover/Kexts/10.12. I delete the old Hackr 11_6.kext from the 10.11 folder.

That should work unless I manage to screw something up, right?
 
I am sorry. I read it as, I must run the script with the parameter that correspons to the version of OS X I'm are running (and when I'm installing from the USB, I will be running Sierra = I should use Sierra parameters). I was mistaken.

I had no idea I'm able to use a 11.6 HackrNVMeFamily kext. That's great news.
This means, I should create a Hackr.kext, while on Capitan, using ./patch_nvme.sh --spoof 10_11_6

Put this kext in EFI/Clover/Kexts/Other on my Sierra USB. I put my regular El Capitan config.plist in EFI/Clover on the USB as well. Since the HackerNMVe.kext in /Other contains the necessary class code redirect patch, I do not need additional KextToPatch in my config.plist.

I then run & install Sierra. After this is done i boot from the USB and run MultiBeast. I also create a new HackrNVMeFamily using ./patch_nvme.sh --spoof 10_12_3 and put this kext in my bootdrives EFI/Clover/Kexts/10.12. I delete the old Hackr 11_6.kext from the 10.11 folder.

That should work unless I manage to screw something up, right?

Since Multibeast will install FakeSMC.kext to the system volume and set config.plist/SystemParameters/InjectKexts=Detect, you must also install the HackrNVMeFamily_10_12_3.kext to the system volume (because Clover/kexts are ignored in that scenario).

Don't forget that to use the --spoof version of HackrNVMeFamily you must have a correctly coded SSDT to inject class-code.
 
Since Multibeast will install FakeSMC.kext to the system volume and set config.plist/SystemParameters/InjectKexts=Detect, you must also install the HackrNVMeFamily_10_12_3.kext to the system volume (because Clover/kexts are ignored in that scenario).

Don't forget that to use the --spoof version of HackrNVMeFamily you must have a correctly coded SSDT to inject class-code.
Is there any tool for creating such an SSDT? I know a little bit about working my way through maciASL, I did that another time for some reason.
 
Status
Not open for further replies.
Back
Top