Contribute
Register

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

Status
Not open for further replies.
Hi RehabMan,

It's me again. Thanks for helping getting my hackintosh to recognize my 960 Pro SSD. I have another question regarding to your patch-nvme support on the next macOS. I am trying the install the new 10.13 public beta onto the same machine. But I noticed that you don't have any .plist file available for 10.13 in your GitHub repo. Do you support public beta? If not, what changes should I make in existing plist files in order to give a shot? Many thanks!

According to people who have the 960 Pro, support in 10.13 is native with stock IONVMeFamily.kext.

I will be adding a HackrNVMeFamilyInjector.kext to be used on 10.13 where your ACPI setup has the class-code spoof. It is useful in the case of dual boot 10.11 or 10.12 + 10.13. It is a simple codeless kext that adds a match for the spoofed class-code.
 
According to people who have the 960 Pro, support in 10.13 is native with stock IONVMeFamily.kext.

I will be adding a HackrNVMeFamilyInjector.kext to be used on 10.13 where your ACPI setup has the class-code spoof. It is useful in the case of dual boot 10.11 or 10.12 + 10.13. It is a simple codeless kext that adds a match for the spoofed class-code.

That's exactly what my situation is. I am running both 10.12.6 and the 10.13 public beta. A hack kext would bring me peace. Thanks in advance!
 
That's exactly what my situation is. I am running both 10.12.6 and the 10.13 public beta. A hack kext would bring me peace. Thanks in advance!

Added.
See patch-nvme github README.
 
Hi RehabMan,
i've got everything setup correctly (i think) i have two nvme samsung 960 EVO 500GB
on a gigabyte designare EX 1 with 10.12.6 and the other with Windows 10 and i get kp every time i connect the win10 nvme
the SSDT_NVMe-Pcc.aml is working fine with 1 nvme but i can't figure out the correct address (behind a bridge) for the windows nvme maybe that is causing the kp.
i had dual boot before 10.12.6
NVMe_1.PNG NVMe_2.PNG

Than you for your work and time you spend to help us all build our hackintosh
glatham
 

Attachments

  • config.plist
    6.5 KB · Views: 233
  • X99’s Mac Pro.ioreg
    8.4 MB · Views: 81
Hi RehabMan,
i've got everything setup correctly (i think) i have two nvme samsung 960 EVO 500GB
on a gigabyte designare EX 1 with 10.12.6 and the other with Windows 10 and i get kp every time i connect the win10 nvme
the SSDT_NVMe-Pcc.aml is working fine with 1 nvme but i can't figure out the correct address (behind a bridge) for the windows nvme maybe that is causing the kp.
i had dual boot before 10.12.6
View attachment 277987 View attachment 277988

Than you for your work and time you spend to help us all build our hackintosh
glatham

_SB.PCI0.BR2A.H000, and then bridge @0x11, SSD @0.
With the first SSD @ _SB.PCI0.BR1A.H000, you end up with:
Code:
DefinitionBlock("", "SSDT", 2, "hack", "NVMe-Pcc", 0)
{
// NVMe @_SB.PCI0.BR1A.H000
    External(_SB.PCI0.BR1A.H000, DeviceObj)
    Method(_SB.PCI0.BR1A.H000._DSM, 4)
    {
        If (!Arg2) { Return (Buffer() { 0x03 } ) }
        Return(Package()
        {
            "class-code", Buffer() { 0xff, 0x08, 0x01, 0x00 },
            "built-in", Buffer() { 0 },
        })
    }
// NVMe @_SB.PCI0.BR2A.H000 -> @0x1100 -> @0
    External(_SB.PCI0.BR2A.H000, DeviceObj)
    // create identities for the bridge @11 and SSD0 @0
    Device(_SB.PCI0.BR2A.H000.PB11)
    {
        Name(_ADR, 0x00110000)  // corresponds to #PCI(1100), 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.BR2A.H000.PB11.SSD0._DSM, 4)
    {
        If (!Arg2) { Return (Buffer() { 0x03 } ) }
        Return(Package()
        {
            "class-code", Buffer() { 0xff, 0x08, 0x01, 0x00 },
            "built-in", Buffer() { 0 },
        })
    }
}
 
YESSS,
Exactly what i could not figure out for the bridge nvme !!
Thank you so much, i can move on now thanks to you !!
you rock ;-)
 
Guys, need help! Could you please make a video guide, I cannot get the idea :(( have 960 evo
 
Is HackrNVMeFamily co-existence with IONVMeFamily possible using device IDs in HackrNVMeFamily? I ask because the class code spoof method isn't easy to implement on real Macs. patch_nvme.sh does have a hidden option to use device ids instead of class code.
 
Is HackrNVMeFamily co-existence with IONVMeFamily possible using device IDs in HackrNVMeFamily? I ask because the class code spoof method isn't easy to implement on real Macs. patch_nvme.sh does have a hidden option to use device ids instead of class code.

The class-code spoof is necessary to keep vanilla IONVMeFamily.kext from loading. It matches on class-code.
Look at the Info.plist and you'll see.

For a real Mac, you need to delete IONVMeFamily.kext (and use non-spoof HackrNVMeFamily), or use 10.13.
 
Status
Not open for further replies.
Back
Top