Contribute
Register

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

Status
Not open for further replies.
Hello Everyone Happy to make my first very confused post. Tried to follow the guide to a T, but obviously made a mistake somewhere. I have attached the requested files, and would love to get a hand if possible. I have tried both the with then _DSM Rename in Xcode and without (this version shows without) and it doesn't make any difference. I figure I made an error in entering the .aml data, but my eyes haven't found it yet. Thanks for this amazing forum and environment!

None of your images show anything regarding RP17, yet I see references in SSDT-NVMe-Pcc.aml.
You should probably go back and read post #1 more carefully and check your work...
 
Done. It boots now, but it broke my Nvidia Web Driver (even manually selected Nvidia Web Driver in Clover at boot up). Tried switching it from OS X driver to Nvidia via the Nvidia preference panel, but it defaulted back to OS X display driver after restart.

Note that I am currently using config0 (took out Pike's patches) and changed class-code to #class-code as requested.

Only natural that you go away as soon as everything broke :rolleyes:. I was unable to restore my Nvidia Web Drivers unless I booted using the UniBeast USB.. & then I noticed that I had forgotten to log out of my initial 960.. :banghead:

Well I'm back at it again after taking a week to organize a non-related project. I believe I realized that the problem was user error for not executing all of RehabMan's very detailed instructions properly. When all else fails, go back and read post #1 again (or so "they" say). Thanks again for the help RehabMan! :thumbup:
 
Ah yes good catch I couldn't get my SATA M.2 to read in a PCI-E Adapter so I moved it back onto the board's M.2 Slot...forgot the update the location. New Configuration here...but it still doesn't see drives.
 

Attachments

  • Clover2.zip
    1.8 MB · Views: 93
Ah yes good catch I couldn't get my SATA M.2 to read in a PCI-E Adapter so I moved it back onto the board's M.2 Slot...forgot the update the location. New Configuration here...but it still doesn't see drives.

This code is wrong/not needed:
Code:
    Device (_SB.PCI0.RP09.PXSX)
    {
        Name (_ADR, Zero)  // _ADR: Address
    }

The PXSX identity already exists. It is an error to try to create a duplicate.
Your config.plist is missing the _DSM->XDSM patch.
 
This code is wrong/not needed:
Code:
    Device (_SB.PCI0.RP09.PXSX)
    {
        Name (_ADR, Zero)  // _ADR: Address
    }

The PXSX identity already exists. It is an error to try to create a duplicate.
Your config.plist is missing the _DSM->XDSM patch.

SUCCESS! Thank you so much for the assistance. I redid the .aml in MaciASL from scratch, because trying to edit the original patch file was too confusing for my newbie eyes. :) Without making that silly copy and paste mistake shown above it works like a charm. On to the USB SSDT next!
 
Hey @RehabMan - thanks so much for your excellent work on this. I'm about to tackle this project on a new build. I've just gotten a successful install of Sierra 10.12.3 on a standard SSD (Samsung 840 EVO) with my Samsung 960 Pro M.2 also installed. Obviously it's not visible until I follow your instructions.

In my current install of Sierra on the 840 EVO SSD, there is no S/L/E... only L/E. When I look in that folder, there is no IONVMeFamily.kext installed by default. What am I missing? Will I have any issues with using this method, since it appears I don't have the IONVMeFamily.kext that will live concurrently with HackrNVMeFamily.kext? (sorry if this is a stupid question)

Build in progress: GA-Z170X-DESIGNARE, 6700K, 16GB Crucial, NVIDIA GTX 970

THANKS!!
--B
 
Yay! Success!

Thanks RehabMan. (like the man says 'go back and read post #1')

i was following instructions for 'dual NVMe drive' not 'dual NVMe drive without leaf node' instructions

here's the code that fixed my system:

Code:
// Inject bogus class-code for NVMe SSD to prevent IONVMeFamily.kext from loading
DefinitionBlock("", "SSDT", 2, "hack", "NVMe-Pcc", 0)
{
    External(_SB.PCI0.RP09, DeviceObj)
    Device(_SB.PCI0.RP09.SSD0) { Name(_ADR, 0) } // adding SSD0 identity under _SB.PCI0.RP09
    Method(_SB.PCI0.RP09.SSD0._DSM, 4)
    {
        If (!Arg2) { Return (Buffer() { 0x03 } ) }
        Return(Package()
        {
            "class-code", Buffer() { 0xff, 0x08, 0x01, 0x00 },
            "built-in", Buffer() { 0 },
        })
    External(_SB.PCI0.RP13, DeviceObj)
    Device(_SB.PCI0.RP13.SSD0) { Name(_ADR, 0) } // adding SSD0 identity under _SB.PCI0.RP13
    Method(_SB.PCI0.RP13.SSD0._DSM, 4)
    {
        If (!Arg2) { Return (Buffer() { 0x03 } ) }
        Return(Package()
        {
            "class-code", Buffer() { 0xff, 0x08, 0x01, 0x00 },
            "built-in", Buffer() { 0 },
        })
    }
}
//EOF

1. Compile this using MacISL and save to USB/EFI/Clover/ACPI/Patched or HDD/EFI/Clover/ACPI/Patched
2. create patched HackrNVMeFamily.kext using --Stealth variable and copy to USB/EFI/Clover/kexts/other or HDD/EFI/Clover/kexts/other

I'm now seeing 2 x NVMe drives (1=Windows 10 and 2=OSX 10.12.3 Sierra) and can freely boot into either.

now just audio, wifi, power management, bluetooth, flickery menu bar, ....................!
 
Last edited by a moderator:
Hey @RehabMan - thanks so much for your excellent work on this. I'm about to tackle this project on a new build. I've just gotten a successful install of Sierra 10.12.3 on a standard SSD (Samsung 840 EVO) with my Samsung 960 Pro M.2 also installed. Obviously it's not visible until I follow your instructions.

In my current install of Sierra on the 840 EVO SSD, there is no S/L/E... only L/E. When I look in that folder, there is no IONVMeFamily.kext installed by default. What am I missing? Will I have any issues with using this method, since it appears I don't have the IONVMeFamily.kext that will live concurrently with HackrNVMeFamily.kext? (sorry if this is a stupid question)

Build in progress: GA-Z170X-DESIGNARE, 6700K, 16GB Crucial, NVIDIA GTX 970

THANKS!!
--B

/S/L/E must exist. You would not be able to boot without it.
 
/S/L/E must exist. You would not be able to boot without it.
Could it be hidden, then? Here's what the fresh install on my 960 Pro M.2 looks like:
Screen Shot 2017-02-20 at 8.54.38 AM.png

Just to confirm, once Sierra is installed on my new M.2, the HackrNVMeFamily can live in *either* S/L/E, *or* EFI/Clover/Kexts/Other (but not both)....yes?

TIA!
 
Could it be hidden, then? Here's what the fresh install on my 960 Pro M.2 looks like:
View attachment 237280

Just to confirm, once Sierra is installed on my new M.2, the HackrNVMeFamily can live in *either* S/L/E, *or* EFI/Clover/Kexts/Other (but not both)....yes?

TIA!
One or the other. However, I used KextBeast to install the patched kext in /S/L/E. KextBeast makes it soooo easy.
 
Status
Not open for further replies.
Back
Top