Contribute
Register

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

Status
Not open for further replies.
Hi, I think we can find the path quite easily in DiskUtility --› Info (We can see the IODeviceTree). Do you confirm we could use it to find the ACPI Path ??
 
Disk Utility will not see the NVMe because macOS doesn't recognize it's there until the HackrFamily...kext is installed. However, IORegistryExplorer will show the path.
 
Problems:
- No SSDT-NVMe-Pcc.aml in ACPI/patched.
- No _DSM->XDSM patch in config.plist/ACPI/patches (use a plist editor and copy/paste)
- No HackrNVMeFamily_10_12_4.kext in EFI/Clover/kexts/Other (in fact you don't even have FakeSMC.kext)

In other words, you have zero of the three components needed to implement this solution...

If you've already installed, you must have FakeSMC.kext on the system volume (or you would fail to boot), so don't forget to install HackrNVMeFamily_10_12_4.kext to the system volume as well. Make sure you use --spoof.
Hi,
I must have uploaded the wrong archive, sorry.
Anyway, I'm ashamed to admit it, but it was the dumbest mistake ever... the SSD wasn't properly inserted in the mobo...
Sorry for wasting your time. Thank you anyway for the amazing work. I managed to make everything work. I've made a donation to Tonymacx86 to thank you ;)
 
Hi, I'm sorry to ask again, but I can't find the path I need to replace from the example (With no Acpi behind a PCI-Bridge). Here is my path: PCI0@0/AppleACPIPCI/pci-bridge@1D/IOPP/pci144d,a802@0

Does someone could help me ?

I know that I certainly need to put: 0x001d0000 after _ADR (in order to generate the ACPI path) but it is not enough, I need to change others things but what ?
 
Hi, I'm sorry to ask again, but I can't find the path I need to replace from the example (With no Acpi behind a PCI-Bridge). Here is my path: PCI0@0/AppleACPIPCI/pci-bridge@1D/IOPP/pci144d,a802@0

Does someone could help me ?

I know that I certainly need to put: 0x001d0000 after _ADR (in order to generate the ACPI path) but it is not enough, I need to change others things but what ?

Your ACPI path data stops at _SB.PCI0. What follows is a PCI bridge at 0x001d0000, and SSD at 0.

Code:
// Inject bogus class-code for NVMe SSD to prevent IONVMeFamily.kext from loading
DefinitionBlock("", "SSDT", 2, "hack", "NVMe-Pcc", 0)
{
    External(_SB.PCI0, DeviceObj)
    // create identities for the bridge @1d and SSD0 @0
    Device(_SB.PCI0.PB1D)
    {
        Name(_ADR, 0x001d0000)  // corresponds to pci-bridge@1D
        Device(SSD0) { Name(_ADR, 0) } // corresponds to pci144d,a802@0
    }
    // now we can inject the _DSM at the newly created ACPI path
    Method(_SB.PCI0.PB1D.SSD0._DSM, 4)
    {
        If (!Arg2) { Return (Buffer() { 0x03 } ) }
        Return(Package()
        {
            "class-code", Buffer() { 0xff, 0x08, 0x01, 0x00 },
            "built-in", Buffer() { 0 },
        })
    }
}
//EOF
 
Thank you so much RehabMan ! It works perfectly !

And it helps me to understand better: (of course I couldn't save with PBR1D).. Well, I definitively need to read some things more in depth about computing.. (I wish I could know more and stop asking ^^)

Thanks again ; )
 
(of course I couldn't save with PBR1D)

All ACPI identifiers are limited 4 characters. Which is why I used PB1D...
 
Samsung 960 Pro in a GA-Z170N-WIFI v1 with F21 BIOS from Windows 10:
\_SB.PCI0.RP09.PXSX​
I wonder if these are consistent given the same configuration

Same hardware, BIOS, BIOS settings, and install location will result in same ACPI path.
 
Status
Not open for further replies.
Back
Top