Contribute
Register

[Guide] HackrNVMeFamily co-existence with IONVMeFamily using class-code spoof

Status
Not open for further replies.
Hello RehabMan,

I just discovered this after realizing I need to increase the space. The reason I am not going the High Sierra route is because I have a late 2013 rMBP and from what I have read online as well as some people I know, the new OS significantly impacts battery life and overall performance. I am currently on El Capitan and would like to continue that, here are a few questions for you:

- I have a vmware fusion windows 7 on the machine...do I need windows 10 and if so, does it have to be dual boot/camp or does fusion work? I would think the ACPI paths can be retrieved from Win 7?
- At first, the way I understood is that we are just running a simple script...but these other steps have me confused. Are the steps in your first post an alternative/better method or are they all part of the same solution? It seems like there are some additional preliminary steps you have introduced before we run the script...
- Do I have to use one of the samsung EVO/PRO 950/960/970 for this to work or will it work with any M.2 2280 NVMe drive of preferred storage? I have so far secured an adapter and an HP EX920 512GB M.2 NVMe for budgetary reasons...Also don't wanna spend too much on such an old laptop
- All these steps seem (and you mention it specifically) to be for prior to installation of the new drive, how are these changes going to remain when we install the new drive? That'll be a blank drive and I'll be trying to install El Capitan on it (10.11.6 or whatever is the latest).
- If for some reason an update is released for El Capitan, should I be worried if I accidentally or intentionally update then not be able to boot into the computer?

I am somewhat technically knowledgeable so picking up/learning isn't really an issue however I just wanna be sure this is feasible before I jump into things.

This is some great and fantastic work, I was able to follow most of the guide and understand what is going on. I'd appreciate your feedback.

Thanks,
 
- I have a vmware fusion windows 7 on the machine...do I need windows 10 and if so, does it have to be dual boot/camp or does fusion work? I would think the ACPI paths can be retrieved from Win 7?

VMware useless. Must check paths on bare metal. Win7 does not show the BIOS path. Use Win10.

- At first, the way I understood is that we are just running a simple script...but these other steps have me confused. Are the steps in your first post an alternative/better method or are they all part of the same solution? It seems like there are some additional preliminary steps you have introduced before we run the script...

Not sure what methods you're comparing/contrasting.
There is only one method... documented in post #1.

Note that this method (class-code spoofing) does not really apply to actual Apple computers since you can't modify ACPI without hacking them (which you probably don't want to do).

- Do I have to use one of the samsung EVO/PRO 950/960/970 for this to work or will it work with any M.2 2280 NVMe drive of preferred storage? I have so far secured an adapter and an HP EX920 512GB M.2 NVMe for budgetary reasons...Also don't wanna spend too much on such an old laptop

Each NVMe can be different, needing different patches, or may be incompatible completely.
I have no experience with the HP NVMe you mention.

- All these steps seem (and you mention it specifically) to be for prior to installation of the new drive, how are these changes going to remain when we install the new drive? That'll be a blank drive and I'll be trying to install El Capitan on it (10.11.6 or whatever is the latest).

I really don't understand your question.

- If for some reason an update is released for El Capitan, should I be worried if I accidentally or intentionally update then not be able to boot into the computer?

Updates will be challenging without the class-code spoof.
You should not use an NVMe that requires patches in an Apple computer.
On real Apple hardware, use an NVMe that works natively... you just don't have the flexibility we have with hackintosh.
 
VMware useless. Must check paths on bare metal. Win7 does not show the BIOS path. Use Win10.

Oh really? Hmmm so I'll have to install BootCamp.

Not sure what methods you're comparing/contrasting.
There is only one method... documented in post #1.

Note that this method (class-code spoofing) does not really apply to actual Apple computers since you can't modify ACPI without hacking them (which you probably don't want to do).

I mean initially when I was researching, I only got to your github and the script so I thought that's how you started out. Nvm this lol.

Each NVMe can be different, needing different patches, or may be incompatible completely.
I have no experience with the HP NVMe you mention.

Oh man, the samsung ones are quite expensive and I am not sure if I wanna spend that much you know? That's why I asked, it's basically the same type of SSD as the Samsung ones.

I really don't understand your question.

What i mean is, all these configurations seem to be on the disk that is currently in the laptop and on the OS level...if I change my drive, will the patches work? Perhaps I am not understanding how this patch works (sorry about that).

Updates will be challenging without the class-code spoof.
You should not use an NVMe that requires patches in an Apple computer.
On real Apple hardware, use an NVMe that works natively... you just don't have the flexibility we have with hackintosh.

I meant updates to the OS, not the drive. :)

Will it still be a problem?
 
Oh man, the samsung ones are quite expensive and I am not sure if I wanna spend that much you know? That's why I asked, it's basically the same type of SSD as the Samsung ones.

I have good result with WD Black NVMe. And they can be changed to 4k LBA with Linux, so no need for 512 LBA patches.

What i mean is, all these configurations seem to be on the disk that is currently in the laptop and on the OS level...if I change my drive, will the patches work? Perhaps I am not understanding how this patch works (sorry about that).

With the class-code spoof, we can install a patched NVMe kext that can co-exist with native NVMe kext. That is not an option with Apple hardware as you can't patch/inject ACPI as required to spoof the class-code. Which means you have to use non-spoof HackrNVMeFamily, which cannot co-exist with native NVMe kexts. Which means after an update, you'll have conflicting kexts that will cause KP, and you'll need at that point to boot into a USB installer and delete native NVMe kext before being able to boot your main drive again.

I meant updates to the OS, not the drive. :)

I know.
Read above.
 
I have good result with WD Black NVMe. And they can be changed to 4k LBA with Linux, so no need for 512 LBA patches.



With the class-code spoof, we can install a patched NVMe kext that can co-exist with native NVMe kext. That is not an option with Apple hardware as you can't patch/inject ACPI as required to spoof the class-code. Which means you have to use non-spoof HackrNVMeFamily, which cannot co-exist with native NVMe kexts. Which means after an update, you'll have conflicting kexts that will cause KP, and you'll need at that point to boot into a USB installer and delete native NVMe kext before being able to boot your main drive again.



I know.
Read above.

Okay so then there is somewhat hope with the HP one....My only biggest concern is that the place I bought it from has specifically advised that I cannot return it if I open it...which is a $150 risk I don't want to take. So I am not sure how to proceed or if its even worth it.
 
Okay so then there is somewhat hope with the HP one....My only biggest concern is that the place I bought it from has specifically advised that I cannot return it if I open it...which is a $150 risk I don't want to take. So I am not sure how to proceed or if its even worth it.

Your call. As already stated, I have no experience with that particular device.
 
Hi everyone,

This is my first post. Until now I've been able to follow the various guides to get things up and running. But after a week of trying to install a Plextor M8PeG, I give in and call out for help.

I followed the steps in post#1 without success. The nvme drive doesn't show up. I screwed up somewhere, but I'm out of ideas.

I noticed that the IONVMeFamily.kext is missing altogether in IOReg, which puzzles me since it is installed by the macOS/OS X installer? I don't remember deleting anything (on purpose). On a side note I noticed that since starting to tinker, the USB3 ports are no longer working.

I attached the debug zip file. If anyone could have a look at it and point out to me what I did wrong it would be highly appreciated.
 

Attachments

  • debug_18930.zip
    1.5 MB · Views: 84
  • nvmeSSDT.jpg
    nvmeSSDT.jpg
    207 KB · Views: 84
Hi everyone,

This is my first post. Until now I've been able to follow the various guides to get things up and running. But after a week of trying to install a Plextor M8PeG, I give in and call out for help.

I followed the steps in post#1 without success. The nvme drive doesn't show up. I screwed up somewhere, but I'm out of ideas.

I noticed that the IONVMeFamily.kext is missing altogether in IOReg, which puzzles me since it is installed by the macOS/OS X installer? I don't remember deleting anything (on purpose). On a side note I noticed that since starting to tinker, the USB3 ports are no longer working.

I attached the debug zip file. If anyone could have a look at it and point out to me what I did wrong it would be highly appreciated.

Perhaps you need the additional patch from config_patches.plist (in fact, it may be the only patch you need).
eg, the KextsToPatch entry commented "IONVMeFamily: Ignore FLBAS bit:4 being set - for Plextor/LiteOn/Hynix (credit Pene)"

Don't forget to change the bundle-id (Name) to com.apple.hack.HackrNVMeFamily when trying to use it with HackrNVMeFamily.

Note: You should not expect IONVMeFamily in ioreg, as it is named HackrNVMeFamily when using this patch.
 
Thanks RehabMan!

I was sure that I did use Pene's Plextor patch, but as it turned out I copy-pasted all the block size patches to KextsToPatch indiscriminately thinking that comment 1 in the code <string>Change &quot;com.apple.iokit.IONVMeFamily&quot; to &quot;com.apple.hack.HackrNVMeFamily&quot; if using HackrNVMeFamily*.kext</string> would automatically change the name.

It goes to show how little I understand of what goes on underneath. In any case, it's working now so a big thank you for your help.

What still puzzles me however, is Pene's subsequent comment at insanelymac: "Just for the list, the Plextor M9Pe is also 4K capable for this conversion (the older Plextor M8Pe is not!)". Whereas a few posts further down the thread iapple0520 confirms the patch working for both: "I use IONVMeFamily: Ignore FLBAS bit:4 being set Patch and it works great on 10.13.5,10.13.6 for my Plextor M8P and M9P NVMe SSD (512G, 1T) on MBPR 2016 15".

Note: You should not expect IONVMeFamily in ioreg, as it is named HackrNVMeFamily when using this patch.

The reason I expected it to show up in ioreg is that you describe in the patch-nvme README that using this option HackrNVMeFamily and IONVMeFamily can co-exist. But it rather eliminates the need to delete IONVMeFamily (pre--spoof option) to save trouble when updating to a new version of MacOS, is that correct?
 

Attachments

  • Success!.png
    Success!.png
    89.8 KB · Views: 78
I was sure that I did use Pene's Plextor patch, but as it turned out I copy-pasted all the block size patches to KextsToPatch indiscriminately thinking that comment 1 in the code <string>Change &quot;com.apple.iokit.IONVMeFamily&quot; to &quot;com.apple.hack.HackrNVMeFamily&quot; if using HackrNVMeFamily*.kext</string> would automatically change the name.

It is a comment for you to read/take action depending when you're using HackrNVMeFamily.

What still puzzles me however, is Pene's subsequent comment at insanelymac: "Just for the list, the Plextor M9Pe is also 4K capable for this conversion (the older Plextor M8Pe is not!)". Whereas a few posts further down the thread iapple0520 confirms the patch working for both: "I use IONVMeFamily: Ignore FLBAS bit:4 being set Patch and it works great on 10.13.5,10.13.6 for my Plextor M8P and M9P NVMe SSD (512G, 1T) on MBPR 2016 15".

It is in regards to changing the device to use 4k LBA (low level format with Linux NVMe tools).

The reason I expected it to show up in ioreg is that you describe in the patch-nvme README that using this option HackrNVMeFamily and IONVMeFamily can co-exist. But it rather eliminates the need to delete IONVMeFamily (pre--spoof option) to save trouble when updating to a new version of MacOS, is that correct?

By co-exist I mean both IONVMeFamily and HackrNVMeFamily*spoof can exist in /S/L/E and /L/E.
 
Status
Not open for further replies.
Back
Top