Contribute
Register

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

Status
Not open for further replies.
I did use that path, I first generated my DSDT using ssdtGen.sh. I modified it to follow the description in post #1 but now I also get the ` AppleNVMe Assert failed:` errors when using the SSDT + spoofed Kext.

Am I missing something or is the 960 Pro not compatible with Sierra ?
See system in my sig - running fine with 960 PRO boot drive on 10.12.4.
 
I did use that path, I first generated my DSDT using ssdtGen.sh. I modified it to follow the description in post #1 but now I also get the ` AppleNVMe Assert failed:` errors when using the SSDT + spoofed Kext.

Am I missing something or is the 960 Pro not compatible with Sierra ?

Read post #1, "Problem Reporting".
 
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...
 
Status
Not open for further replies.
Back
Top