Contribute
Register

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

Status
Not open for further replies.
Dear Rahabman,

I have new build, mainboard: Z270N-WIFI, core i5 7600k, Western Black PCIe SSD 256GB, VGA MSI GTX 1050 TI 4GB. I have use config.plist with your guide for install Sierra 10.12.6 by USB, It working!
- NVMe_patches_10_12_6_sec2017-001.plist
- HackrNVMeFamilyInjector.kext

And I want use SSDT for EFI in bootload without USB but if I remove line config and addition SSDT_NVMe-Pcc.aml file to EFI/Clover/ACPI/patched/ folder but it not working.
- remove
- IONVMeFamily.kext
- SSDT_NVMe-Pcc.aml

maybe I do not understand your teach. you can help me?
 
Dear Rahabman,

I have new build, mainboard: Z270N-WIFI, core i5 7600k, Western Black PCIe SSD 256GB, VGA MSI GTX 1050 TI 4GB. I have use config.plist with your guide for install Sierra 10.12.6 by USB, It working!
- NVMe_patches_10_12_6_sec2017-001.plist
- HackrNVMeFamilyInjector.kext

And I want use SSDT for EFI in bootload without USB but if I remove line config and addition SSDT_NVMe-Pcc.aml file to EFI/Clover/ACPI/patched/ folder but it not working.
- remove
- IONVMeFamily.kext
- SSDT_NVMe-Pcc.aml

maybe I do not understand your teach. you can help me?

HackrNVMeFamilyInjector.kext is only for 10.13.x (read the README).
No need to remove IONVMeFamily.kext when using class-code spoof (read post #1).
 
If you're using the class-code spoof (eg. SSDT_NVMe-Pcc.aml is in ACPI/patched), maybe you forgot to put HackrNVMeFamily in EFI/Clover/kexts/Other.

For booting the 10.13 installer, you could also choose to do it without the SSDT_NVMe-Pcc.aml and therefore using native IONVMeFamily.kext.

Oh, Okay. Missed that step.

I do have a patched ACPI with the HackrNVMeFamily-10_12_6 in /Library/Extensions.

I'll copy the kext over for the install (so that it's easy to recover from an install failure), and then after I'm at 10.13 I should be able to remove the aml and kext entirely, right?

Edit: typos, formatting
 
Oh, Okay. Missed that step.

I do have a patched ACPI with the HackrNVMeFamily-10_12_6 in /Library/Extensions.

I'll copy the kext over for the install (so that it's easy to recover from an install failure), and then after I'm at 10.13 I should be able to remove the aml and kext entirely, right?

Edit: typos, formatting

Both valid scenarios for booting the macOS 10.13 installer were listed/detailed in post #1081.

When you're booting the installer for the 10.13 update, what you have in /Library/Extensions on your 10.12.x system volume is not relevant (kexts you put on your system volume are not used when you're booting the installer since it has its own system volume).
 
HackrNVMeFamilyInjector.kext is only for 10.13.x (read the README).
No need to remove IONVMeFamily.kext when using class-code spoof (read post #1).
Your summary, so we not need addition line KextsToPatch in config.plist file?

we only do:
- SSDT_NVMe-Pcc.aml copy to patched folder
- rename _DSM to XDSM in config.plist file
- HackrNVMeFamily-10_11_6.kext copy to system volume
 
Your summary, so we not need addition line KextsToPatch in config.plist file?

we only do:
- SSDT_NVMe-Pcc.aml copy to patched folder
- rename _DSM to XDSM in config.plist file
- HackrNVMeFamily-10_11_6.kext copy to system volume

Depends on what you're doing.
What you say makes sense if you're already running 10.11.6 (eg. already installed).
If you're still booting the 10.11.6 installer (or recovery, or some other installer with SSDT_NVme-Pcc.aml in place), you will need to have HackrNVMeFamily*.kext in Clover/kexts/Other.
And in any case, you need to use the --spoof option when you generate the Hackr kext.
If you're booting 10.13.x, no need for any of this, as IONVMeFamily.kext works with more hardware.
Some hardware still needs one of the "preferred block size" patches in config_patches.plist.
 
Depends on what you're doing.
What you say makes sense if you're already running 10.11.6 (eg. already installed).
If you're still booting the 10.11.6 installer (or recovery, or some other installer with SSDT_NVme-Pcc.aml in place), you will need to have HackrNVMeFamily*.kext in Clover/kexts/Other.
And in any case, you need to use the --spoof option when you generate the Hackr kext.
If you're booting 10.13.x, no need for any of this, as IONVMeFamily.kext works with more hardware.
Some hardware still needs one of the "preferred block size" patches in config_patches.plist.
Yes! I already running 10.11.6.
My hardware have need patches in config.plist?
 

Attachments

  • config.plist
    12.9 KB · Views: 271
  • SSDT_NVMe-Pcc.aml
    157 bytes · Views: 215
  • HackrNVMeFamily-10_12_6.kext.zip
    91.6 KB · Views: 78
  • Screen Shot 2017-12-10 at 09.37.21.png
    Screen Shot 2017-12-10 at 09.37.21.png
    288.6 KB · Views: 187
  • Screen Shot 2017-12-10 at 09.41.02.png
    Screen Shot 2017-12-10 at 09.41.02.png
    129.3 KB · Views: 182
  • Screen Shot 2017-12-10 at 09.55.39.png
    Screen Shot 2017-12-10 at 09.55.39.png
    104.6 KB · Views: 201
Last edited:
Dear Rahabman,
My Mainboard is Z87X-UD3H, when I update a modded bios (F9 -> F10b) , the ACPI path of my SM961 SSD changed. SSD appears external. There is a "pci-bridge@1,1" under PCI0 shown in ioreg. In windows 10 device manager, the nvme controller is under PEG1 which cannot be seen in ioreg from macOS. I have tried many ways but still no success.
Need your help or advice again:)

version1
Code:
DefinitionBlock("", "SSDT", 2, "hack", "NVMe-Pcc", 0)
{
    External(_SB.PCI0.PEG1.SSD0, DeviceObj)
    Method(_SB.PCI0.PEG1.SSD0._DSM, 4)
    {
        If (!Arg2) { Return (Buffer() { 0x03 } ) }
        Return(Package()
        {
            "class-code", Buffer() { 0xff, 0x08, 0x01, 0x00 },
            "built-in", Buffer() { 0 },
        })
    }
}


version2
Code:
DefinitionBlock ("", "SSDT", 2, "hack", "NVMe-Pcc", 0x00000000)
{
    External (_SB_.PCI0, DeviceObj)    // (from opcode)

    Device (_SB.PCI0.P0PA)
    {
        Name (_ADR, 0x00010001)  // _ADR: Address
        Device (_SB.PCI0.P0PA.SSD0)
        {
            Name (_ADR, Zero)  // _ADR: Address
        }
    }

    Method (_SB.PCI0.P0PA.SSD0._DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
    {
        If (LNot (Arg2))
        {
            Return (Buffer (One)
            {
                 0x03                                        
            })
        }

        Return (Package (0x04)
        {
            "class-code",
            Buffer (0x04)
            {
                 0xFF, 0x08, 0x01, 0x00                      
            },

            "built-in",
            Buffer (One)
            {
                 0x00                                        
            }
        })
    }
}
 

Attachments

  • 2017-12-10 下午12.22.49.png
    2017-12-10 下午12.22.49.png
    199.6 KB · Views: 145
  • win10path.jpg
    win10path.jpg
    61.9 KB · Views: 123
  • CLOVER.zip
    10.1 MB · Views: 81
  • ioreg_output.ioreg
    5.6 MB · Views: 163
  • kextstat.txt
    4 KB · Views: 157
  • patchmatic_extract.zip
    24.4 KB · Views: 90
  • touch_SLE.txt
    337 bytes · Views: 155
Last edited:
Yes! I already running 10.11.6.
My hardware have need patches in config.plist?

If you are already running 10.11.6 using the class-code spoof here, what is your question?
 
Dear Rahabman,
My Mainboard is Z87X-UD3H, when I update a modded bios (F9 -> F10b) , the ACPI path of my SM961 SSD changed. SSD appears external. There is a "pci-bridge@1,1" under PCI0 shown in ioreg. In windows 10 device manager, the nvme controller is under PEG1 which cannot be seen in ioreg from macOS. I have tried many ways but still no success.
Need your help or advice again:)

version1
Code:
DefinitionBlock("", "SSDT", 2, "hack", "NVMe-Pcc", 0)
{
    External(_SB.PCI0.PEG1.SSD0, DeviceObj)
    Method(_SB.PCI0.PEG1.SSD0._DSM, 4)
    {
        If (!Arg2) { Return (Buffer() { 0x03 } ) }
        Return(Package()
        {
            "class-code", Buffer() { 0xff, 0x08, 0x01, 0x00 },
            "built-in", Buffer() { 0 },
        })
    }
}


version2
Code:
DefinitionBlock ("", "SSDT", 2, "hack", "NVMe-Pcc", 0x00000000)
{
    External (_SB_.PCI0, DeviceObj)    // (from opcode)

    Device (_SB.PCI0.P0PA)
    {
        Name (_ADR, 0x00010001)  // _ADR: Address
        Device (_SB.PCI0.P0PA.SSD0)
        {
            Name (_ADR, Zero)  // _ADR: Address
        }
    }

    Method (_SB.PCI0.P0PA.SSD0._DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
    {
        If (LNot (Arg2))
        {
            Return (Buffer (One)
            {
                 0x03                                        
            })
        }

        Return (Package (0x04)
        {
            "class-code",
            Buffer (0x04)
            {
                 0xFF, 0x08, 0x01, 0x00                      
            },

            "built-in",
            Buffer (One)
            {
                 0x00                                        
            }
        })
    }
}


Since you're booting from some other device successfully, attach full problem reporting files as per FAQ.
https://www.tonymacx86.com/threads/faq-read-first-laptop-frequent-questions.164990/
Use the tool mentioned in the FAQ, so you don't forget anything.
 
Status
Not open for further replies.
Back
Top