Contribute
Register

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

Status
Not open for further replies.
Read post #1, "Problem Reporting".

Keep in mind you must configure Clover the same as you did for USB (HackrNVMeFamily + SSDT-NVMe-Pcc.aml).
And you must install HackrNVMeFamily to the system volume (because you likely have FakeSMC.kext there and InjectKexts=Detect).

Thanks RehabMan. I'll give it another try.


And so I did. This time I did a fresh install instead of use CCC to make a copy to the NVMe. I added the HackrNVMeFamily to the USB clover KEXT folder. The SSDT-NVMe-Pcc.aml was already on it.

And miracles do exist or at least you're an angel because this time it worked. I'm writing the mail from my Samsung Evo 960 10.12.4 installation!

Thanks a lot, you're the best RehabMan!
 
Last edited by a moderator:
Just wanted to say thanks for all the work. This got me up and running with a 960. Super stoked!
 
Dear @RehabMan , i am unable to see my 960 evo 1TB as an option when i am able to boot from clover usb installation , i only get to see the USB stick as an option to install on.

could you help me out?


i am using
motherboard: Asus Maximus IX Formula
cpu: Kabylake i7 7700k
2x M.2.SSD Drives: Samsung 960 EVO 1TB
Plextor 1TB M8Pe
Graphics: ASUS ROG GTX1080 8GB OC

i used my mac to git clone your patch_nvme.git
i did
`./patch_nvme.sh --spoof 10_12_4`

it generated a HackrNVMeFamily-10_12_4.kext

i copied it and pasted to "EFI/CLOVER/kexts/10.12/"

i also downloaded nvme_for_osx.zip and extracted everything into UniBeast/EFI/CLOVER/Kexts/10.12

i plug out the usb from my macbook and plug it into the desktop to boot from it, but still no sign of the nvme ssd drive appearing as an option to install to..
 
Last edited:
Dear @RehabMan , i am unable to see my 960 evo 1TB as an option when i am able to boot from clover usb installation , i only get to see the USB stick as an option to install on.

could you help me out?


i am using
motherboard: Asus Maximus IX Formula
cpu: Kabylake i7 7700k
2x M.2.SSD Drives: Samsung 960 EVO 1TB
Plextor 1TB M8Pe
Graphics: ASUS ROG GTX1080 8GB OC

i used my mac to git clone your patch_nvme.git
i did
`./patch_nvme.sh --spoof 10_12_4`

it generated a HackrNVMeFamily-10_12_4.kext

i copied it and pasted to "EFI/CLOVER/kexts/10.12/"

i also downloaded nvme_for_osx.zip and extracted everything into UniBeast/EFI/CLOVER/Kexts/10.12

i plug out the usb from my macbook and plug it into the desktop to boot from it, but still no sign of the nvme ssd drive appearing as an option to install to..

https://www.tonymacx86.com/threads/...h-ionvmefamily-using-class-code-spoof.210316/
 
Dear @RehabMan , i am unable to see my 960 evo 1TB as an option when i am able to boot from clover usb installation , i only get to see the USB stick as an option to install on.

could you help me out?


i am using
motherboard: Asus Maximus IX Formula
cpu: Kabylake i7 7700k
2x M.2.SSD Drives: Samsung 960 EVO 1TB
Plextor 1TB M8Pe
Graphics: ASUS ROG GTX1080 8GB OC

i used my mac to git clone your patch_nvme.git
i did
`./patch_nvme.sh --spoof 10_12_4`

it generated a HackrNVMeFamily-10_12_4.kext

i copied it and pasted to "EFI/CLOVER/kexts/10.12/"

i also downloaded nvme_for_osx.zip and extracted everything into UniBeast/EFI/CLOVER/Kexts/10.12

i plug out the usb from my macbook and plug it into the desktop to boot from it, but still no sign of the nvme ssd drive appearing as an option to install to..

What about SSDT-NVMe-Pcc.aml patch ??
https://www.tonymacx86.com/threads/...h-ionvmefamily-using-class-code-spoof.210316/
 
Hi @RehabMan

I did look at this before you reply on this earlier but which code do I use because I have two m2 drives,


I have this 2 path under my device manager that i checked..
===ACPI path ===
\_SB.PCI0.RP17.PXSX nvm
\_SB.PCI0.RP09.PXSX nvme

where do i copy the template to? do i do?

`touch IONVMeFamily.kext` , then use vim editor and paste in the below code after you tell me which code block i should use below?




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

=== if SSD has no ACPI IDENTITY ===
// Inject bogus class-code for NVMe SSD to prevent IONVMeFamily.kext from loading
DefinitionBlock("", "SSDT", 2, "hack", "NVMe-Pcc", 0)
{
External(_SB.PCI0.RP09.PXSX, DeviceObj)
// Add PXSX device under RP13
Device(_SB.PCI0.RP09.PXSX.PXSX) { Name(_ADR, 0) }
/// Now we can inject the method at RP13.PXSX
Method(_SB.PCI0.RP09.PXSX._DSM, 4)
{
If (!Arg2) { Return (Buffer() { 0x03 } ) }
Return(Package()
{
"class-code", Buffer() { 0xff, 0x08, 0x01, 0x00 },
"built-in", Buffer() { 0 },
})
}
}
//EOF


=== MULTIPLE NVMe ===


// Inject bogus class-code for NVMe SSD to prevent IONVMeFamily.kext from loading
DefinitionBlock("", "SSDT", 2, "hack", "NVMe-Pcc", 0)
{
External(_SB.PCI0.RP09.PXSX, DeviceObj)
Method(_SB.PCI0.RP09.PXSX._DSM, 4)
{
If (!Arg2) { Return (Buffer() { 0x03 } ) }
Return(Package()
{
"class-code", Buffer() { 0xff, 0x08, 0x01, 0x00 },
"built-in", Buffer() { 0 },
})
}
External(_SB.PCI0.RP17.PXSX, DeviceObj)
Method(_SB.PCI0.RP17.PXSX._DSM, 4)
{
If (!Arg2) { Return (Buffer() { 0x03 } ) }
Return(Package()
{
"class-code", Buffer() { 0xff, 0x08, 0x01, 0x00 },
"built-in", Buffer() { 0 },
})
}
}
//EOF
 
Last edited:
Hi @RehabMan

I did look at this before you reply on this earlier but which code do I use because I have two m2 drives,


I have this 2 path under my device manager that i checked..
===ACPI path ===
\_SB.PCI0.RP17.PXSX nvm
\_SB.PCI0.RP09.PXSX nvme

where do i copy the template to? do i do?

Are they both NVMe?
Not all M.2 SSDs are NVMe.
If they are both NVMe, you will need to inject (via _DSM) at both paths.
Don't forget about native _DSM methods and _DSM->XDSM patch.

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.PXSX, DeviceObj)
    Method(_SB.PCI0.RP09.PXSX._DSM, 4)
    {
        If (!Arg2) { Return (Buffer() { 0x03 } ) }
        Return(Package()
        {
            "class-code", Buffer() { 0xff, 0x08, 0x01, 0x00 },
            "built-in", Buffer() { 0 },
        })
    }
    External(_SB.PCI0.RP17.PXSX, DeviceObj)
    Method(_SB.PCI0.RP17.PXSX._DSM, 4)
    {
        If (!Arg2) { Return (Buffer() { 0x03 } ) }
        Return(Package()
        {
            "class-code", Buffer() { 0xff, 0x08, 0x01, 0x00 },
            "built-in", Buffer() { 0 },
        })
    }
}
//EOF

That will work provided your paths are accurate and you take care of native _DSM methods as per guide.
 
Are they both NVMe?
Not all M.2 SSDs are NVMe.
If they are both NVMe, you will need to inject (via _DSM) at both paths.
Don't forget about native _DSM methods and _DSM->XDSM patch.



That will work provided your paths are accurate and you take care of native _DSM methods as per guide.

yes they are both nvme. where can i find the manual for ths _DSM and _DSM->XDSM patch?

Where do i paste this code into?
Screen Shot 2017-04-17 at 21.34.51.png
inside here?
 

Attachments

  • Screen Shot 2017-04-17 at 17.01.27.png
    Screen Shot 2017-04-17 at 17.01.27.png
    1,020.3 KB · Views: 112
Status
Not open for further replies.
Back
Top