Contribute
Register

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

Status
Not open for further replies.
hmmm... why's that? I thought it makes sense to have a HDD with an SSD...

I don't want to have the system/apps/etc "semi-installed" to the SSD (eg. fusion is HDD install with SSD cache). I want to for sure put that stuff on the SSD for max speed. And I don't use HDD anymore (except on my server). I use only SSD for speed. If I need more capacity, I get a larger SSD or move large data to my server (currently 14TB).
 
@RehabMan would you possibly consider updating your guide with the screenshots here of different examples of the paths as seen on IOReg

Especially those that may no have Windows and only have a Mac available or installed... so people don't get lost in finding the ACPI path of their NVMe device.

(It was actually a guess for me my path was PXSX. I also assumed it was like yours... I think there could be some other people may be guessing the same way... ehhhhh)

I have tried to keep this guide focused on creating everything pre-install.
As stated in post #1, I think that is the best way (same setup used pre-install and post-install) and keeps the guide simpler.
 
@RehabMan

Another problem solving case I need some help in...

1.
I created a Clone USB installer, so it can be done "pre-install"... and as a backup..
When I boot from that, into the USB's Sierra Installer.. in Disk Utility it does not recognise the NVMe drive at all. I have one SDD via SATA which is recognised.

However, my when I boot into my Hackintosh System, I have no problems. AFAIK, I have made the USB Installer the exact replica of the my Hackintosh System. Except on my Hackintosh HackrNVMeFamily-10_12_3.kext and IONVMeFamily.kext are in S/L/E... and here I have put them in USB Installer/EFI/Clover/Other/kexts

I've attached my Clover USB...

=========
Separate Issue #2
2.

I have also tried boot into Recovery Mode without my Clone USB Installer, and I put HackrNVMeFamily-10_12_3.kext and IONVMeFamily.kext in Hackintosh HD/EFI/Clover/Other/kexts?

But I get this error on startup:

Code:
HID: Legacy Shim 2

Which I presume means that no disks at a all can be found? Looks like this:

IMG_5199.JPG


IMG_5200.JPG
 

Attachments

  • USB CLOVER.zip
    1.9 MB · Views: 79
Last edited:
You don't need IONVMeFamily.kext in EFI Clover USB but you need to have this NVMe-Pcc.aml in your Clover APCI patched folder and HackrNVMeFamily-10_12_3.kext on the clover usb with kext injection option turned on.

I have removed IONVMeFamily.kext from the EFI Clover USB, but yes, both SSDT-NVMe-Pcc.aml and HackrNVMeFamily-10_12_3.kext are in the right places respectively. [My folder attached]

I did change my config.plist... it did say Under SystemParameters > InjectKexts as a String > Yes
So I changed it to a boolean and YES.

No change tho. Booting with a USB Installer in Disk Utility still shows no NVMe drive.
The config.plist is identical [attatched] (I have added the boolean change above) to the one on my Hackintosh and my Hackintosh boots up without issue.


As for part #2. Booting in Recovery Mode, I still get the same crash (even if I did move my files to the Hackintosh EFI/CLOVER).
 

Attachments

  • USB config.plist
    8.7 KB · Views: 195
  • Hackintsoh config.plist
    8.7 KB · Views: 181
  • USB CLOVER.zip
    1.8 MB · Views: 79
Last edited:
@RehabMan

Another problem solving case I need some help in...

1.
I created a Clone USB installer, so it can be done "pre-install"... and as a backup..
When I boot from that, into the USB's Sierra Installer.. in Disk Utility it does not recognise the NVMe drive at all. I have one SDD via SATA which is recognised.

However, my when I boot into my Hackintosh System, I have no problems. AFAIK, I have made the USB Installer the exact replica of the my Hackintosh System. Except on my Hackintosh HackrNVMeFamily-10_12_3.kext and IONVMeFamily.kext are in S/L/E... and here I have put them in USB Installer/EFI/Clover/Other/kexts

I've attached my Clover USB...

Your HackrNVMeFamily in EFI/Clover/kexts/Other was not generated with the --spoof option.
Your _DSM->XDSM patch is wrong.

=========
Separate Issue #2
2.

I have also tried boot into Recovery Mode without my Clone USB Installer, and I put HackrNVMeFamily-10_12_3.kext and IONVMeFamily.kext in Hackintosh HD/EFI/Clover/Other/kexts?

No need to place IONVMeFamily.kext in EFI/Clover/kexts/Other.
You should place only HackrNVMeFamily there.
 
Your HackrNVMeFamily in EFI/Clover/kexts/Other was not generated with the --spoof option.

Remake HackrNVMeFamily-10_12_3.kext - I have again. followed your instructions exactly, cd to the patch-nvme-master folder, and entered in ./patch_nvme.sh --spoof 10_12_2.

I still have (AFAIK) the same file, as IOPCIClassMatch still reads string 0x0108ff00&0xFFFFFF00

Your _DSM->XDSM patch is wrong.
Yes, sorry I seem to have copied the wrong config. [Attached new one in USB Clover]

No need to place IONVMeFamily.kext in EFI/Clover/kexts/Other.
You should place only HackrNVMeFamily there.
okay got it.
 

Attachments

  • USB CLOVER.zip
    1.8 MB · Views: 132
Remake HackrNVMeFamily-10_12_3.kext - I have again. followed your instructions exactly, cd to the patch-nvme-master folder, and entered in ./patch_nvme.sh --spoof 10_12_2.

I still have (AFAIK) the same file, as IOPCIClassMatch still reads string 0x0108ff00&0xFFFFFF00


Yes, sorry I seem to have copied the wrong config. [Attached new one in USB Clover]


okay got it.

This EFI/Clover looks ok, assuming your device is at _SB.PCI0.RP09.PXSX, and you DO NOT have 144d:a804 NVMe on 10.11.
 
This EFI/Clover looks ok, assuming your device is at _SB.PCI0.RP09.PXSX, and you DO NOT have 144d:a804 NVMe on 10.11.

Awesome. After a few careless mistakes, this is working aces. Thank you.

It's working both in my Clone USB Installer, and also in Recovery Mode when I copy HackrNVMeFamily-10_12_3.kext into the System EFI kexts.

Quick Question
So I have moved all my other Kexts for my particular build and needs to /L/E... except HackrNVMeFamily-10_12_3.kext because my machine crashes if I put it in /L/E instead of /S/L/E. Is there any reason why that is?

Is it something to do with /S/L/E files being accessible in launch? and /L/E not?

I assume the preferred method is to put it in one of the Extensions folders, instead of the Hackintosh's EFI/Clover/kexts?
 
So I have moved all my other Kexts for my particular build and needs to /L/E... except HackrNVMeFamily-10_12_3.kext because my machine crashes if I put it in /L/E instead of /S/L/E. Is there any reason why that is?

If class-code spoof is implemented correctly and SIP is disabled properly, HackrNVMeFamily will work from /L/E or /S/L/E equally.
 
Hi,
First RehabMan, thanks for all the work. Let me know where I can donate.

Trying to get the code right for my location path.
My Location paths under Windows 10 for the Samsung 950 (PCI-Adapter):

PCIROOT(0)#PCI(0101)#OCI(0000)
ACPI(_SB_)#ACPI(PC0)#ACPI(PEG1)#ACPI(PEGP)

I guess I need to change 0x0008000 and PBR8, but to what?

Code:
// Inject bogus class-code for NVMe SSD to prevent IONVMeFamily.kext from loading
DefinitionBlock("", "SSDT", 2, "hack", "NVMe-Pcc", 0)
{
    External(_SB.PCI0.PEG1.PEGP, DeviceObj)
    // create identities for the bridge @8 and SSD0 @0
    Device(_SB.PCI0.PEG1.PEGP.PBR8)
    {
        Name(_ADR, 0x00080000)  // corresponds to #PCI(0800), MSW byte reversed
        Device(SSD0) { Name(_ADR, 0) } // corresponds to #PCI(0000)
    }
    // now we can inject the _DSM at the newly created ACPI path
    Method(_SB.PCI0.PEG1.PEGP.PBR8.SSD0._DSM, 4)
    {
        If (!Arg2) { Return (Buffer() { 0x03 } ) }
        Return(Package()
        {
            "class-code", Buffer() { 0xff, 0x08, 0x01, 0x00 },
            "built-in", Buffer() { 0 },
        })
    }
}
//EOF
 
Status
Not open for further replies.
Back
Top