Contribute
Register

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

Status
Not open for further replies.
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.
 
Here is my process...

1. Identifying my Samsung 950 Pro ACPI path (using ioreg):
I found it to be
IOACPIPlane:/_SB/PCI0@0/RP09@1d0000/PXSX@0 . Under the PXSX value I have HackrNVMeController, holding IONVMeBlockStorageDevice@1.
which translates to
_SB.PCI0.RP9.PXSX
if I'm not mistaken.

2. Creating the SSDT
I'm using the latest (2017-01) release from your Github. Using ACPI 6.1.
Copying your code from your guide.
Replacing RP13 with RP9.
Saving as SSDT-NVMe-Pcc.aml with ACPI Machine Language Binary format.

3. Placing it on USB with Sierra 12.3 Installer
At EFI/CLOVER/ACPI/Patched.
Another .aml is in this folder. As far as I know, they won't interfere. It's SSDT-USB-H170N-WIFI.aml.

"It is possible your OEM already defined a _DSM method at the ACPI path"
Since I do not believe this is the case, I think I'm good to go.

-----
Creating the HackrNVMeController.kext for the installer
I am on 11.6, booted with HackrNVMeController.kext. I tried using
./patch_nvme.sh --spoof 10_11_6
which gives me MD5 error. I tried using it without the --spoof value, also MD5 error. Is this because Im booted off the HackrNVMeController.kext? I have a IONVMeFamily.kext in System/Library/Extensions and I think it's not been altered with, but I don't know. Can it be the Hackr.kext alters it every boot and therefore it's not "vanilla", giving me md5 mismatch?

IOReg screenshot provided.
Screen Shot 2017-01-29 at 08.40.27.png

Thanks for all help!
 
Here is my process...

1. Identifying my Samsung 950 Pro ACPI path (using ioreg):
I found it to be
IOACPIPlane:/_SB/PCI0@0/RP09@1d0000/PXSX@0 . Under the PXSX value I have HackrNVMeController, holding IONVMeBlockStorageDevice@1.
which translates to
_SB.PCI0.RP9.PXSX
if I'm not mistaken.

Wrong.
ACPI path is _SB.PCI0.RP09.PXSX

2. Creating the SSDT
I'm using the latest (2017-01) release from your Github. Using ACPI 6.1.
Copying your code from your guide.
Replacing RP13 with RP9.

Wrong. RP09.

"It is possible your OEM already defined a _DSM method at the ACPI path"
Since I do not believe this is the case, I think I'm good to go.

Don't guess. Use the _DSM->XDSM patch if you don't know how to check. If you know how to check and there is a _DSM at _SB.PCI0.RP09.PXSX, use the patch. Only omit the patch if you're certain there is no _DSM there.

Creating the HackrNVMeController.kext for the installer
I am on 11.6, booted with HackrNVMeController.kext. I tried using
./patch_nvme.sh --spoof 10_11_6
which gives me MD5 error.

Must use the correct parameter depending on which 10_11_6.
Note there are several 10_11_6 patch files:
Code:
SPEEDY-NUC:patch-nvme.git rehabman$ ls -l *.plist|grep 10_11_6
-rw-r--r--@ 1 rehabman  staff  5993 Aug 18 14:10 NVMe_patches_10_11_6.plist
-rw-r--r--@ 1 rehabman  staff  5836 Jul  3  2016 NVMe_patches_10_11_6_beta4.plist
-rw-r--r--@ 1 rehabman  staff  5993 Sep  3 10:56 NVMe_patches_10_11_6_sec2016-001.plist
-rw-r--r--@ 1 rehabman  staff  5993 Nov 14 12:01 NVMe_patches_10_11_6_sec2016-002.plist
-rw-r--r--@ 1 rehabman  staff  5993 Dec 14 07:58 NVMe_patches_10_11_6_sec2016-003.plist
-rw-r--r--@ 1 rehabman  staff  5993 Jan 20 17:06 NVMe_patches_10_11_6_supp2016-003.plist

The correct one depends on which updates you have applied, or not applied to your running 10.11.6.
 
Status
Not open for further replies.
Back
Top