Jump to content

Patch for using NVMe under macOS Sierra is ready.


1,382 posts in this topic

Recommended Posts

@Jsl :

 

Same problem... my NVMe is CX2-8B512-Q11 NVMe LITEON 512GB

Clover r3923

Osx 10.2.1 (16B2657)

in 10.2.1, if I put the modded kext or IONVMeFamily (patched by clover) into CLOVER/Kext/Other, it won't load, need to be in S/L/E

 

and finally my NVMe is..... Ven_14A4 & Dev_2200

 

3 days on this problem : No result...

Link to comment
Share on other sites

@Jsl :

 

Same problem... my NVMe is CX2-8B512-Q11 NVMe LITEON 512GB

Clover r3923

Osx 10.2.1 (16B2657)

in 10.2.1, if I put the modded kext or IONVMeFamily (patched by clover) into CLOVER/Kext/Other, it won't load, need to be in S/L/E

 

and finally my NVMe is..... Ven_14A4 & Dev_2200

 

3 days on this problem : No result...

1. Have you edited DevID in patch_nvme.sh to yours ?

2. Was your HackrNVMeFamily-10_12_1.kext loaded ?

3. Can you post your IORegistryExplorer 2.1 output ?

4. What is MD5 for your HackrNVMeFamily-10_12_1.kext's binary ?

I need these info for comparison and try to fix it as soon as possible.

Link to comment
Share on other sites

I managed to come up with a method that allows vanilla IONVMeFamily.kext to co-exist with HackrNVMeFamily*.kext.

The trick is to spoof the class-code such that IONVMeFamily.kext IOPCIClassMatch doesn't match.

Hi RehabMan, I create SSDT, change the IOPCIClassMatch in HackrNVMeFamily's Info.plist and return IONVMeFamily.kext to S/L/E but NVMe disks don't shows up. I have two NVMe disks, can you please look into my SSDT if I create it right way? Im using MaciASL with ACPI 6.1. Thanks.

 

EDIT: There must be something wrong with my SSDT, when I use my SSDT without IONVMeFamily.kext in S/L/E, NVMe disks works even when I don't change the IOPCIClassMatch in HackrNVMeFamily's Info.plist. So bogus class-code is not injected.

 

Here is my ioreg and SSDT I created.

SPARKpro.zip

SSDT-NVME-BOGUS.aml.zip

Link to comment
Share on other sites

Hi,RehabMan. I guess HackrNVMeFamily uses [/size]IONameMatch [/size]instead of [/size]IOPCIClassMatch .We need only a SSDT. Is it possible?[/size]

Using IONameMatch is possible (read the script itself). But the script, as in github, uses IOPCIClassMatch.

I don't know what you mean by "We need only a SSDT". If that is a statement, it is wrong. If that is a question, the answer is "No... read README at patch-nvme github".

Hi RehabMan, I create SSDT, change the IOPCIClassMatch in HackrNVMeFamily's Info.plist and return IONVMeFamily.kext to S/L/E but NVMe disks don't shows up. I have two NVMe disks, can you please look into my SSDT if I create it right way? Im using MaciASL with ACPI 6.1. Thanks.

 

EDIT: There must be something wrong with my SSDT, when I use my SSDT without IONVMeFamily.kext in S/L/E, NVMe disks works even when I don't change the IOPCIClassMatch in HackrNVMeFamily's Info.plist. So bogus class-code is not injected.

 

Here is my ioreg and SSDT I created.

Your Clover bootlog (extracted from ioreg) shows that the SSDT is not installed in ACPI/patched.

 

4:017  0:000  Start: Processing Patched AML(s): Unsorted
4:017  0:000  Inserting SSDT.aml from EFI\CLOVER\ACPI\patched ... Success
4:022  0:005  End: Processing Patched AML(s)
Link to comment
Share on other sites

Your Clover bootlog (extracted from ioreg) shows that the SSDT is not installed in ACPI/patched.

 

4:017  0:000  Start: Processing Patched AML(s): Unsorted
4:017  0:000  Inserting SSDT.aml from EFI\CLOVER\ACPI\patched ... Success
4:022  0:005  End: Processing Patched AML(s)

Yeah, i saved ioreg without SSDT installed... but when i have it installed, it is inserted with success... but bogus class-code is not injected. My SSDT looks ok to you?

Link to comment
Share on other sites

Yeah, i saved ioreg without SSDT installed... but when i have it installed, it is inserted with success... but bogus class-code is not injected. My SSDT looks ok to you?

You must provide files that actually correspond to what you're doing.

Also, need EFI/Clover (don't forget to press F4 so ACPI/origin is populated).

Link to comment
Share on other sites

You must provide files that actually correspond to what you're doing.

Also, need EFI/Clover (don't forget to press F4 so ACPI/origin is populated).

Ok, but i cant boot with IONVMeFamily.kext in S/L/E so i provide requested files without it installed. Im out from computer now so i send it asap. Thanks.

Link to comment
Share on other sites

Ok, but i cant boot with IONVMeFamily.kext in S/L/E so i provide requested files without it installed. Im out from computer now so i send it asap. Thanks.

IONVMeFamily.kext is irrelevant. Keep it removed until you resolve the injection issue.

You can also inject the standard class-code and verify the injection is done via ioreg:IOACPIPlane.

Once you have it working, you can put the modified HackrNVMeFamily in place and enable the bogus class-code..

 

Without seeing your files, based on what you provided so far, I'm guessing you have a _DSM already at each of those paths in OEM ACPI, but did not remove it... duplicate _DSM means first one wins. I use a config.plist patch to rename all _DSM -> XDSM, such that it is not a problem.

Link to comment
Share on other sites

Using IONameMatch is possible (read the script itself). But the script, as in github, uses IOPCIClassMatch.

I don't know what you mean by "We need only a SSDT". If that is a statement, it is wrong. If that is a question, the answer is "No... read README at patch-nvme github".

 

Your Clover bootlog (extracted from ioreg) shows that the SSDT is not installed in ACPI/patched.

 

4:017  0:000  Start: Processing Patched AML(s): Unsorted
4:017  0:000  Inserting SSDT.aml from EFI\CLOVER\ACPI\patched ... Success
4:022  0:005  End: Processing Patched AML(s)

It need only a SSDT to finish co-exsit in CLOVER. And changing the IOPCIClassMatch is unnecessary in HackrNVMeFamily.

Link to comment
Share on other sites

IONVMeFamily.kext is irrelevant. Keep it removed until you resolve the injection issue.

You can also inject the standard class-code and verify the injection is done via ioreg:IOACPIPlane.

Once you have it working, you can put the modified HackrNVMeFamily in place and enable the bogus class-code..

 

Without seeing your files, based on what you provided so far, I'm guessing you have a _DSM already at each of those paths in OEM ACPI, but did not remove it... duplicate _DSM means first one wins. I use a config.plist patch to rename all _DSM -> XDSM, such that it is not a problem.

You're right, RehabMan, i have _DSM on those paths in DSDT, so i add bogus class-code right in DSDT and now all works. Thanks.

Link to comment
Share on other sites

It need only a SSDT to finish co-exsit in CLOVER. And changing the IOPCIClassMatch is unnecessary in HackrNVMeFamily.

No. A working SSDT to inject the bogus class-code will prevent HackrNVMeFamily from loading.

You're right, RehabMan, i have _DSM on those paths in DSDT, so i add bogus class-code right in DSDT and now all works. Thanks.

Yes, I see now in your ioreg/IOACPIPlane that you're using a _DSM method (that you added) to inject APPL,slot-name, model, name, device-id, etc.

Not sure why you're injecting device-id, but ok...

In the case you already have added a _DSM method to your DSDT (should really be done in an SSDT), adding the "class-code" injection to it is required.

Link to comment
Share on other sites

Following Mork vom Ork's steps in post #8, using R.Alpha's IONVMeFamily.kext. All work perfectly!

 

Big Thank to Mori and R.Alpha!!!

May I know which model of your NVMe SSD was used ?

Is it a Samsung 950 or others ?

Link to comment
Share on other sites

No. A working SSDT to inject the bogus class-code will prevent HackrNVMeFamily from loading.

 

Yes, I see now in your ioreg/IOACPIPlane that you're using a _DSM method (that you added) to inject APPL,slot-name, model, name, device-id, etc.

Not sure why you're injecting device-id, but ok...

In the case you already have added a _DSM method to your DSDT (should really be done in an SSDT), adding the "class-code" injection to it is required.

Thanks for you work.

Link to comment
Share on other sites

1. Have you edited DevID in patch_nvme.sh to yours ?

 

Yes, i did it too, but no result.

 

2. Was your HackrNVMeFamily-10_12_1.kext loaded ?

 

Curiously, if i put it in Clover/kext/Other, like IONVMEFamily: NO load, if i put him into S/L/E (of course : rebuild cache,etc...) : YES

And if i try to patch via Clover : NO load too.

 

3. Can you post your IORegistryExplorer 2.1 output ?

 

i'll try as soon as possible

 

4. What is MD5 for your HackrNVMeFamily-10_12_1.kext's binary ?

 

Same problem, the MD5 is not good

 

I need these info for comparison and try to fix it as soon as possible.

Link to comment
Share on other sites

 

1. Have you edited DevID in patch_nvme.sh to yours ?

 

Yes, i did it too, but no result.

 

2. Was your HackrNVMeFamily-10_12_1.kext loaded ?

 

Curiously, if i put it in Clover/kext/Other, like IONVMEFamily: NO load, if i put him into S/L/E (of course : rebuild cache,etc...) : YES

And if i try to patch via Clover : NO load too.

 

3. Can you post your IORegistryExplorer 2.1 output ?

 

i'll try as soon as possible

 

4. What is MD5 for your HackrNVMeFamily-10_12_1.kext's binary ?

 

Same problem, the MD5 is not good

 

I need these info for comparison and try to fix it as soon as possible.

 

May I suggest:

1. install HackrNVMeFamily-10_12_1.kext in /System/Library/Extensions

2. Make sure it was loaded and shown in "about this mackintosh"->Extensions

3. check whether its MD5 is 291b7e63764598ac8052c8a363964cb8 or not

4. If it is the same MD5, please show your IORegistryExplorer 2.1 output

Link to comment
Share on other sites

May I suggest:

1. install HackrNVMeFamily-10_12_1.kext in /System/Library/Extensions

2. Make sure it was loaded and shown in "about this mackintosh"->Extensions

3. check whether its MD5 is 291b7e63764598ac8052c8a363964cb8 or not

4. If it is the same MD5, please show your IORegistryExplorer 2.1 output

Don't forget that IONVMeFamily.kext must be deleted unless you're using the class-code spoof as discussed in #569.

  • Like 2
Link to comment
Share on other sites

May I suggest:

1. install HackrNVMeFamily-10_12_1.kext in /System/Library/Extensions

 

i do this Too

 

2. Make sure it was loaded and shown in "about this mackintosh"->Extensions

 

To check if the kext was loaded : i do this Too.

 

3. check whether its MD5 is 291b7e63764598ac8052c8a363964cb8 or not

4. If it is the same MD5, please show your IORegistryExplorer 2.1 output

 

i'll do this when i'll be with the machine ;Op

Don't forget that IONVMeFamily.kext must be deleted unless you're using the class-code spoof as discussed in #569.

 

 

Yes, and i do it too.

Link to comment
Share on other sites

 Share

×
×
  • Create New...