Jump to content
Mork vom Ork

Patch for using NVMe under macOS Sierra is ready.

1,373 posts in this topic

Recommended Posts

Next, you'll want to select the leaf node (H000@0) and write this "class-code" down (we won't be copying it exactly, instead, we'll be overwriting this first value with a spoofed value so that IONVMEFamily.ktext doesn't load during the boot process):

 

OEM class-code => <02 08 01 00> 

Spoofed class-code => <FF 08 01 00>

An NVMe drive will always have (essentially) the same class code <02 08 01 00>.

And we will always be injecting the same spoofed code <ff 08 01 00>.

So... there is no need to write anything down... These values are already known.

Share this post


Link to post
Share on other sites
Advertisement

An NVMe drive will always have (essentially) the same class code <02 08 01 00>.

And we will always be injecting the same spoofed code <ff 08 01 00>.

So... there is no need to write anything down... These values are already known.

Thanks, will update the guide to include this information (wasn't 100% sure and didn't want to overstep my knowledge boundary)

Share this post


Link to post
Share on other sites

thanks a lot for your help
I followed all your guide step by step but it doesn't work :(
I'm giving up

I was thinking something....
As I use "NVMeGeneric" May be my location is false

But if I do not use my nvme does not appear in IOReg


I started on my standard SSD (not mvme) with no "NVMeGeneric.kext" in clover
And ioreg does not see the nvme storage and no ACPI on PCI0

 

Share this post


Link to post
Share on other sites

thanks a lot for your help

I followed all your guide step by step but it doesn't work :(

I'm giving up

 

I was thinking something....

As I use "NVMeGeneric" May be my location is false

But if I do not use my nvme does not appear in IOReg

 

I started on my standard SSD (not mvme) with no "NVMeGeneric.kext" in clover

And ioreg does not see the nvme storage and no ACPI on PCI0

Attach ioreg (IORegistryExplorer 2.1).

Attach EFI/Clover (eg. with the SSDT you created, and also don't forget to press F4 to populate ACPI/origin). You can omit 'themes' to save space.

Attach image from Windows Device Manager (as per my guide).

Share this post


Link to post
Share on other sites

thanks a lot for your help

I followed all your guide step by step but it doesn't work :(

I'm giving up

 

I was thinking something....

As I use "NVMeGeneric" May be my location is false

But if I do not use my nvme does not appear in IOReg

 

I started on my standard SSD (not mvme) with no "NVMeGeneric.kext" in clover

And ioreg does not see the nvme storage and no ACPI on PCI0

If this screen shot you've posted is the correct ssd: Intel NVMe 600p Series SSDPEKKW256G7X1, then it's located at SB.PCI0.RP01.PXSX

 

io.png

 

This is what your SSDT should look like:

// Inject bogus class-code for NVMe SSD to prevent IONVMeFamily.kext from loading
DefinitionBlock("", "SSDT", 2, "hack", "NVMe-Pcc", 0)
{
    External(_SB.PCI0.RP01.PXSX, DeviceObj)
    Method(_SB.PCI0.RP01.PXSX._DSM, 4)
    {
        If (!Arg2) { Return (Buffer() { 0x03 } ) }
        Return(Package()
        {
            "class-code", Buffer() { 0xFF, 0x08, 0x01, 0x00 },
        })
    }
}
//EOF
Compile and save the SSDT per the guide above, then place it inside: EFI->CLOVER->ACPI->patched! If you're not using a modified DSDT.aml in your EFI->CLOVER->ACPI->patched folder, you can use Rehabman's _DSM Clover DSDT patch (open your config.plist in Clover Configurator->ACPI->DSDT->Patches (you should see an empty table located at the very top of window inside the "ACPI" tab)

 

Add an entry for _DSM->XDSM by clicking the "+" sign:

Comment: Change all _DSM to XDSM
Find: <5f44534d>
Replace: <5844534d> 
Generate a hackrnvmefamily.kext using Rehabman's nvmepatch. Then place the generated kext inside: EFI->CLOVER->KEXTS->OTHER

 

Reboot your computer and boot into the primary drive. Open up IOReg and see if you can find the Intel NVMe.

Share this post


Link to post
Share on other sites

Attach ioreg (IORegistryExplorer 2.1).

Attach EFI/Clover (eg. with the SSDT you created, and also don't forget to press F4 to populate ACPI/origin). You can omit 'themes' to save space.

Attach image from Windows Device Manager (as per my guide).

Unfortunately I don't have windows 10 ...

Just an old installation of wondows7 (which I never use)

And there is no nvme location path :(

If this screen shot you've posted is the correct ssd: Intel NVMe 600p Series SSDPEKKW256G7X1, then it's located at SB.PCI0.RP01.PXSX

 

Only with "NVMeGeneric.kext"

without  nothing appears

 

config.zip

Share this post


Link to post
Share on other sites

If this screen shot you've posted is the correct ssd: Intel NVMe 600p Series SSDPEKKW256G7X1, then it's located at SB.PCI0.RP01.PXSX

 

io.png

 

This is what your SSDT should look like:

// Inject bogus class-code for NVMe SSD to prevent IONVMeFamily.kext from loading
DefinitionBlock("", "SSDT", 2, "hack", "NVMe-Pcc", 0)
{
    External(_SB.PCI0.RP01.PXSX, DeviceObj)
    Method(_SB.PCI0.RP01.PXSX._DSM, 4)
    {
        If (!Arg2) { Return (Buffer() { 0x03 } ) }
        Return(Package()
        {
            "class-code", Buffer() { 0xFF, 0x08, 0x01, 0x00 },
        })
    }
}
//EOF
Compile and save the SSDT per the guide above, then place it inside: EFI->CLOVER->ACPI->patched! If you're not using a modified DSDT.aml in your EFI->Clover->patched folder, you can use Rehabman's _DSM Clover DSDT patch (open your config.plist in Clover Configurator->ACPI->DSDT->Patches (you should see an empty table located at the very top of window inside the "ACPI" tab)

 

Add an entry for _DSM->XDSM by clicking the "+" sign:

Comment: Change all _DSM to XDSM
Find: <5f44534d>
Replace: <5844534d> 
Generate a hackrnvmefamily.kext using Rehabman's nvmepatch. Then place the generated kext inside: EFI->CLOVER->KEXTS->OTHER

 

Reboot your computer and boot into the primary drive. Open up IOReg and see if you can find the Intel NVMe.

 

Some further notes:

- if config.plist/SystemParameters/InjectKexts=Detect (typical), and FakeSMC.kext is installed to the system volume (/L/E or /S/L/E), then the kexts in EFI/Clover/kexts/Other will not be injected. In that case, must install HackrNVMeFamily to /S/L/E or /L/E.

- must remove NVMeGeneric.kext

- must generate HackrNVMeFamily with --spoof (assuming SSDT is correct, no _DSM method conflicts, etc)

- if you're using config.plist/ACPI/SortedOrder, you must add the SSDT to the list

 

In other words, there are many opportunities for mistakes...

Unfortunately I don't have windows 10 ...

Just an old installation of wondows7 (which I never use)

And there is no nvme location path :(

 

Only with "NVMeGeneric.kext"

without  nothing appears

You have no files in ACPI/patched.

You have no _DSM->XDSM patch in config.plist/ACPI/DSDT/Patches.

There is no HackrNVMeFamily in EFI/Clover/kexts.

Share this post


Link to post
Share on other sites

Unfortunately I don't have windows 10 ...

Just an old installation of wondows7 (which I never use)

And there is no nvme location path :(

 

Only with "NVMeGeneric.kext"

without  nothing appears

Fix these issues, then reupload the config files if it doesn't work.

- Missing SSDT patch in EFI->CLOVER->ACPI->patched

- Missing _DSM patch in conflig.plist->ACPI->DSDT->Patches

- Missing hackrnvmefamily.kext inside

Some further notes:

- if config.plist/SystemParameters/InjectKexts=Detect (typical), and FakeSMC.kext is installed to the system volume (/L/E or /S/L/E), then the kexts in EFI/Clover/kexts/Other will not be injected. In that case, must install HackrNVMeFamily to /S/L/E or /L/E.

- must remove NVMeGeneric.kext

- must generate HackrNVMeFamily with --spoof (assuming SSDT is correct, no _DSM method conflicts, etc)

- if you're using config.plist/ACPI/SortedOrder, you must add the SSDT to the list

 

In other words, there are many opportunities for mistakes...

You have no files in ACPI/patched.

You have no _DSM->XDSM patch in config.plist/ACPI/DSDT/Patches.

There is no HackrNVMeFamily in EFI/Clover/kexts.

Bah! Ya beat me to it! 

Share this post


Link to post
Share on other sites

Some further notes:

- if config.plist/SystemParameters/InjectKexts=Detect (typical), and FakeSMC.kext is installed to the system volume (/L/E or /S/L/E), then the kexts in EFI/Clover/kexts/Other will not be injected. In that case, must install HackrNVMeFamily to /S/L/E or /L/E.

- must remove NVMeGeneric.kext

- must generate HackrNVMeFamily with --spoof (assuming SSDT is correct, no _DSM method conflicts, etc)

- if you're using config.plist/ACPI/SortedOrder, you must add the SSDT to the list

 

In other words, there are many opportunities for mistakes...

You have no files in ACPI/patched.

You have no _DSM->XDSM patch in config.plist/ACPI/DSDT/Patches.

There is no HackrNVMeFamily in EFI/Clover/kext

I sent you my configuration without anything installed or patched

Share this post


Link to post
Share on other sites

I sent you my configuration without anything installed or patched

You need to show us what you're attempting.

 

Your scenario is very easy...

- need to add the SSDT into ACPI/patched.

- need to add the patch for _DSM->XDSM.

- need to generate HackrNVMeFamily with --spoof.

- need to install the HackrNVMeFamily kext.

 

Even in the ioreg without NVMeGeneric.kext it is easy to see your SSD is at _SB.PCI0.RP01.PXSX (it is the Intel device, 8086:f1a5 with class-code <02 08 01 00>).

Share this post


Link to post
Share on other sites

You need to show us what you're attempting.

 

Your scenario is very easy...

- need to add the SSDT into ACPI/patched.

- need to add the patch for _DSM->XDSM.

- need to generate HackrNVMeFamily with --spoof.

- need to install the HackrNVMeFamily kext.

 

Even in the ioreg without NVMeGeneric.kext it is easy to see your SSD is at _SB.PCI0.RP01.PXSX (it is the Intel device, 8086:f1a5 with class-code <02 08 01 00>).

I did everything and it did not work ...

 

be indulgent

For you what seems simple is difficult for me

I have a bad English for all that is techinique

And I'm not coder

 

 

Share this post


Link to post
Share on other sites

I did everything and it did not work ...

 

be indulgent

For you what seems simple is difficult for me

I have a bad English for all that is techinique

And I'm not coder

You made a mistake.

Attach files that show what you did.

 

Attach ioreg (IORegistryExplorer 2.1).

Attach EFI/Clover (eg. with the SSDT you created, and also don't forget to press F4 to populate ACPI/origin). You can omit 'themes' to save space.

Attach output from:

sudo kextcache -i /

Share this post


Link to post
Share on other sites

You made a mistake.

Attach files that show what you did.

As it did not work I deleted everything

I will start all over again the guide and I send you this

 

_SB.PCI0.RP01.PXSX I think is false

Because without NVMeGeneric.kext I do not see my nvme in IOreg...

(i use a crucial M4 SSD for test)

 

 

 

post-1204234-0-66322600-1483471779_thumb.png

Share this post


Link to post
Share on other sites

As it did not work I deleted everything

I will start all over again the guide and I send you this

OK. Good plan.

 

_SB.PCI0.RP01.PXSX I think is false

Wrong. It is easy to see in your ioreg:

post-1031260-0-12145900-1483472121_thumb.png

 

Because without NVMeGeneric.kext I do not see my nvme in IOreg...

Your mistake. You cannot expect to search for "storage" and find the NVMe without the drivers loaded.

But the device is still there at _SB.PCI0.RP01.PXSX as I show in the image above...

Share this post


Link to post
Share on other sites

Your mistake. You cannot expect to search for "storage" and find the NVMe without the drivers loaded.

But the device is still there at _SB.PCI0.RP01.PXSX as I show in the image above...

ok I found nvme....

so Later when I finish....

 

Share this post


Link to post
Share on other sites

I followed step by step guide....
make a ssdt with MaciAS
insalled HackrNVMeFamily in S/L/E with Kext Wizard
add arguments in clover....
and nothing works.... raaaah !!!!!!


May be a compatibility problem with my hardware?
• motherboard : Asus Z97-Pro (Wi-Fi ac)
• processor : i7 4770k
• ram : crucial ballitix sport @1600Mhz (32Go)
• Wi-fi/blutooth card : BCM94360cd on PCI adapter (no use Asus card)
• video card : nvidia GTX680 (for full compatibility with adode premiere)
• external sound card on usb : M-audio fast track C600 (not use internal realteak ACL1150)
OSX El Capitan 10.11.6  (15G1212)

Or else I'm verry faulty
..... (Probably)
I do not know why it doesn't work :(


 

patched.zip

Share this post


Link to post
Share on other sites

I followed step by step guide....

make a ssdt with MaciAS

insalled HackrNVMeFamily in S/L/E with Kext Wizard

add arguments in clover....

and nothing works.... raaaah !!!!!!

 

May be a compatibility problem with my hardware?

No... Failure to follow instructions.

 

You have a _DSM method at _SB.PCI0.RP01.PXSX (in your native DSDT), but failed to add the _DSM->XDSM patch to config.plist/ACPI/DSDT/Patches.

As a result, your SSDT for spoofing the class-code is rejected.

 

Note: No need to specify SortedOrder in your scenario (but it is currently not hurting your efforts... just not needed)

Also note: You forgot to provide ioreg.

 

Also... another mistake. HackrNVMeFamily-10_11_6_sec2016-003.kext was not generated with the --spoof option.

Share this post


Link to post
Share on other sites

No... Failure to follow instructions.

 

You have a _DSM method at _SB.PCI0.RP01.PXSX (in your native DSDT), but failed to add the _DSM->XDSM patch to config.plist/ACPI/DSDT/Patches.

As a result, your SSDT for spoofing the class-code is rejected.

 

Note: No need to specify SortedOrder in your scenario (but it is currently not hurting your efforts... just not needed)

Also note: You forgot to provide ioreg.

 

Also... another mistake. HackrNVMeFamily-10_11_6_sec2016-003.kext was not generated with the --spoof option.

heu.... I didn't understand everything

It gets too technical for me lol

Instead of making video editing I will learn to code

 

Mac Pro.ioreg.zip

Share this post


Link to post
Share on other sites

heu.... I didn't understand everything

It gets too technical for me lol

You should try to correct the things identified previously.

Then see if it works... (be sure to look at your ioreg to check for spoofed class-code etc.)

 

Right now you have HackrNVMeFamily installed that was without the --spoof code.

And you have failed to inject the bogus class-code (due to conflicting _DSM methods).

And you are on 10.11.6...

 

Which means it should actually be working.

My conclusion: Your SSD is not compatible with Pike's patches.

 

But you could try with the spoofing just to see.

 

Note: Your mistake with _DSM is that you added it to config.plist/KernelAndKextPatches/KextsToPatch instead of config.plist/ACPI/DSDT/Patches. That patch is an ACPI patch, not a kext patch.

Share this post


Link to post
Share on other sites

You should try to correct the things identified previously.

Then see if it works... (be sure to look at your ioreg to check for spoofed class-code etc.)

 

Right now you have HackrNVMeFamily installed that was without the --spoof code.

And you have failed to inject the bogus class-code (due to conflicting _DSM methods).

And you are on 10.11.6...

 

Which means it should actually be working.

My conclusion: Your SSD is not compatible with Pike's patches.

 

But you could try with the spoofing just to see.

 

Note: Your mistake with _DSM is that you added it to config.plist/KernelAndKextPatches/KextsToPatch instead of config.plist/ACPI/DSDT/Patches. That patch is an ACPI patch, not a kext patch.

I corrected but it still does not work

thinking no worries with I bought this intel nvme

I will stay on my 850 pro

I prefer to stay on el capitan because my external sound card has worries with sierra (I have already tested)

 

Give me the phone number of pike I will call him so that he finds me a solution lol

 

 

Share this post


Link to post
Share on other sites

Give me the phone number of pike I will call him so that he finds me a solution lol

He has a published email address.

But yes, fact is some devices work with Pike's NVMe patches. Some don't.

Samsung has good drives that are compatible. Little reason to take risks on other unproven brands.

Share this post


Link to post
Share on other sites

He has a published email address.

But yes, fact is some devices work with Pike's NVMe patches. Some don't.

Samsung has good drives that are compatible. Little reason to take risks on other unproven brands.

I was joking for his phone number

I will wait before buying a samsung

In france they are expensive yet ($ 230)

With the risk that it does not work on El capitan

 

Share this post


Link to post
Share on other sites

I was joking for his phone number

I will wait before buying a samsung

In france they are expensive yet ($ 230)

With the risk that it does not work on El capitan

I have used a 950 Pro with 10.11.x and 10.12.x. It works.

 

$230 would be a good deal if it is 512gb (probably that is for 256gb).

There are some new EVO NVMe (950 EVO?) from Samsung. Haven't read the reviews/details yet though.

Share this post


Link to post
Share on other sites

I have used a 950 Pro with 10.11.x and 10.12.x. It works.

 

$230 would be a good deal if it is 512gb (probably that is for 256gb).

There are some new EVO NVMe (950 EVO?) from Samsung. Haven't read the reviews/details yet though.

yes samsung 950 pro $ 230 for 256go... and $420 for 512go

 

just one last question....

is it normal? <00 04 06 00> for class code

And I can not re open my SSDT-NVMe-Pcc

 

post-1204234-0-31272500-1483481788_thumb.png post-1204234-0-20268600-1483481806_thumb.png

 

 

 

 

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.

×