Jump to content

Patch for using NVMe under macOS Sierra is ready.


1,382 posts in this topic

Recommended Posts

same KP at boot.

 

Generated kext alone runs fine, with both kexts installed in S/L/E KP at boot.

Vanilla is taking the precedence, but both are installed properly. Can you try to rename IONVMEFamilyBorg.kext to something other like "IOMyNVME.kext" and retry?

First boot w/o cache please.

Link to comment
Share on other sites

Vanilla is taking the precedence, but both are installed properly. Can you try to rename IONVMEFamilyBorg.kext to something other like "IOMyNVME.kext" and retry?

First boot w/o cache please.

but why not put him in clover? Why you are using your kext in SLE? They can ever live together? :wallbash:

Link to comment
Share on other sites

Vanilla is taking the precedence, but both are installed properly. Can you try to rename IONVMEFamilyBorg.kext to something other like "IOMyNVME.kext" and retry?

First boot w/o cache please.

 

renamed the kext, boot without caches and tested install in clover/kexts/10.12

 

always KP at boot. 

 

When original kext is removed from S/L/E, Sierra boots without problems. 

 

Try this NVMePtest, no controller patch, no fake identifier, IONVMEFamilyBorg.kext will be generated with Pike's patches + kext version increased only.

now is not a duplicate kext... but is a newer kext..

NVMePtest.zip

  • Like 1
Link to comment
Share on other sites

Vanilla is taking the precedence, but both are installed properly. Can you try to rename IONVMEFamilyBorg.kext to something other like "IOMyNVME.kext" and retry?

First boot w/o cache please.

The vanilla IONVMeFamily should fail probe, leaving the patched one to take over...

 

If that is not working, set IOProbeScore (larger number than native kext).

Link to comment
Share on other sites

If that is not working, set IOProbeScore (larger number than native kext).

 

thought of this, but what should be the vanilla value since is not set in Info.plist? The kernel programming is not clear about that and not sure what can be for this kind of devices.

...waiting @SammlerG...

 

 

The vanilla IONVMeFamily should fail probe, leaving the patched one to take over...

Yep, the idea is exactly this

Link to comment
Share on other sites

thought of this, but what should be the vanilla value since is not set in Info.plist? The kernel programming is not clear about that and not sure what can be for this kind of devices.

...waiting @SammlerG...

I forget the default... but it is probably low (like zero or 1000). Set large... 5000.

Link to comment
Share on other sites

NVMePtest v2.2 by Micky1979,
program to patch IONVMeFamily.kext.
Patches Author: Pike R.Alpha.
Contributors: Mork vom Ork and RehabMan

using optarg -s 0 (Sierra DP4):
Success applying patch with Comment "IONVMeFamily Pike R. Alpha Patch 01 (DP4)"
Success applying patch with Comment "IONVMeFamily Pike R. Alpha Patch 02"
Success applying patch with Comment "IONVMeFamily Pike R. Alpha Patch 03"
Success applying patch with Comment "IONVMeFamily Pike R. Alpha Patch 04"
Success applying patch with Comment "IONVMeFamily Pike R. Alpha Patch 05"
Success applying patch with Comment "IONVMeFamily Pike R. Alpha Patch 06-07"
Success applying patch with Comment "IONVMeFamily Pike R. Alpha Patch 08"
Success applying patch with Comment "IONVMeFamily Pike R. Alpha Patch 09-10"
Success applying patch with Comment "IONVMeFamily Pike R. Alpha Patch 11"
Success applying patch with Comment "IONVMeFamily Pike R. Alpha Patch 12"
Success applying patch with Comment "IONVMeFamily Pike R. Alpha Patch 13"
Success applying patch with Comment "IONVMeFamily Pike R. Alpha Patch 14"
Success applying patch with Comment "IONVMeFamily Pike R. Alpha Patch 15"
Success applying patch with Comment "IONVMeFamily Pike R. Alpha Patch 16"
Success applying patch with Comment "IONVMeFamily Pike R. Alpha Patch 17"
Success patching binary!
IOPCIClassMatch = 0x01080200&0xffffff00
Success patching Info.plist!
Success creating /Users/test/IONVMeFamilyBorg.kext
Success creating /Users/test/configSample.plist!
NOTE: for EC kexts may need to adjust the InfoPlistPatch to match your device id.
      and off course if you install the kext, no need for the KextsToPatch!

SUCCESS!
IONVMeFamilyBorg.kext successfully generated using Sierra DP4 patches! 

installed in L/E and worked with Sierra latest PB and Sierra GM.

 

Boot with kext in L/E is no problem now.

tested NVMePtest and ... success!

 

  • Like 1
Link to comment
Share on other sites

Yeah, this way vanilla will be unloaded w/o spamming the log..

I'm actually not sure about that... since it is possible probe can *change* the IOProbeScore, vanilla IONVMeFamily probe will still run.

Link to comment
Share on other sites

NVMePtest v2.2 by Micky1979,
program to patch IONVMeFamily.kext.
Patches Author: Pike R.Alpha.
Contributors: Mork vom Ork and RehabMan

using optarg -s 0 (Sierra DP4):
Success applying patch with Comment "IONVMeFamily Pike R. Alpha Patch 01 (DP4)"
Success applying patch with Comment "IONVMeFamily Pike R. Alpha Patch 02"
Success applying patch with Comment "IONVMeFamily Pike R. Alpha Patch 03"
Success applying patch with Comment "IONVMeFamily Pike R. Alpha Patch 04"
Success applying patch with Comment "IONVMeFamily Pike R. Alpha Patch 05"
Success applying patch with Comment "IONVMeFamily Pike R. Alpha Patch 06-07"
Success applying patch with Comment "IONVMeFamily Pike R. Alpha Patch 08"
Success applying patch with Comment "IONVMeFamily Pike R. Alpha Patch 09-10"
Success applying patch with Comment "IONVMeFamily Pike R. Alpha Patch 11"
Success applying patch with Comment "IONVMeFamily Pike R. Alpha Patch 12"
Success applying patch with Comment "IONVMeFamily Pike R. Alpha Patch 13"
Success applying patch with Comment "IONVMeFamily Pike R. Alpha Patch 14"
Success applying patch with Comment "IONVMeFamily Pike R. Alpha Patch 15"
Success applying patch with Comment "IONVMeFamily Pike R. Alpha Patch 16"
Success applying patch with Comment "IONVMeFamily Pike R. Alpha Patch 17"
Success patching binary!
IOPCIClassMatch = 0x01080200&0xffffff00
Success patching Info.plist!
Success creating /Users/test/IONVMeFamilyBorg.kext
Success creating /Users/test/configSample.plist!
NOTE: for EC kexts may need to adjust the InfoPlistPatch to match your device id.
      and off course if you install the kext, no need for the KextsToPatch!

SUCCESS!
IONVMeFamilyBorg.kext successfully generated using Sierra DP4 patches! 

installed in L/E and worked with Sierra latest PB and Sierra GM.

 

Boot with kext in L/E is no problem now.

tested NVMePtest and ... success!

 

 

Thanks to you for testing. I'm now convinced to switch to this method!

I'm actually not sure about that... since it is possible probe can *change* the IOProbeScore, vanilla IONVMeFamily probe will still run.

I mean that they should probably have their "kern_return_t IONVMEFamily_stop" function, I hope.

Link to comment
Share on other sites

I mean that they should probably have their "kern_return_t IONVMEFamily_stop" function, I hope.

I'm not sure I get what you're saying... should probe fail, start is never called. And stop is not called in the event start is never called or in the case that start fails.

  • Like 2
Link to comment
Share on other sites

I'm not sure I get what you're saying... should probe fail, start is never called. And stop is not called in the event start is never called or in the case that start fails.

Ok you are right, but is the init() and attach() called? what I wanted to say is that no spam will be logged because no service is provided by the vanilla kext. And anyway I'm not even sure of this since an "old" driver for the same thing is found and initialized as well (that will do nothing)

New release ?

yes

Link to comment
Share on other sites

Ok you are right, but is the init() and attach() called? what I wanted to say is that no spam will be logged because no service is provided by the vanilla kext. And anyway I'm not even sure of this since an "old" driver for the same thing is found and initialized as well (that will do nothing)

yes

init and attach are called before probe.

Link to comment
Share on other sites

yes

 

 

There something you do not like me, I'm with 11.6 and 11.5 for a kext

 

 

Last login: Mon Sep  5 13:19:15 on console
Airdimagnifico:~ magnifico$ cd /Users/magnifico/Desktop/cartella\ senza\ titolo\ 4 
Airdimagnifico:cartella senza titolo 4 magnifico$ /Users/magnifico/Desktop/cartella\ senza\ titolo\ 4/NVMeP 
NVMeP v2.2 by Micky1979,
program to patch IONVMeFamily.kext.
Patches Author: Pike R.Alpha.
Contributors: Mork vom Ork and RehabMan
 
 
Try using patch for Sierra DP4:
**Error applying patch with Comment "IONVMeFamily Pike R. Alpha Patch 01 (DP4)"
**Error applying patch with Comment "IONVMeFamily Pike R. Alpha Patch 02"
**Error applying patch with Comment "IONVMeFamily Pike R. Alpha Patch 03"
Success applying patch with Comment "IONVMeFamily Pike R. Alpha Patch 04"
Success applying patch with Comment "IONVMeFamily Pike R. Alpha Patch 05"
**Error applying patch with Comment "IONVMeFamily Pike R. Alpha Patch 06-07"
**Error applying patch with Comment "IONVMeFamily Pike R. Alpha Patch 08"
**Error applying patch with Comment "IONVMeFamily Pike R. Alpha Patch 09-10"
**Error applying patch with Comment "IONVMeFamily Pike R. Alpha Patch 11"
**Error applying patch with Comment "IONVMeFamily Pike R. Alpha Patch 12"
**Error applying patch with Comment "IONVMeFamily Pike R. Alpha Patch 13"
**Error applying patch with Comment "IONVMeFamily Pike R. Alpha Patch 14"
**Error applying patch with Comment "IONVMeFamily Pike R. Alpha Patch 15"
**Error applying patch with Comment "IONVMeFamily Pike R. Alpha Patch 16"
**Error applying patch with Comment "IONVMeFamily Pike R. Alpha Patch 17"
Success applying Controller patch (idea of RehabMan)!
Failed applying binary patches, nothing done.
 
Try using patch for Sierra DP1/3:
**Error applying patch with Comment "IONVMeFamily Pike R. Alpha Patch 01 (DP1-DP3)"
**Error applying patch with Comment "IONVMeFamily Pike R. Alpha Patch 02"
**Error applying patch with Comment "IONVMeFamily Pike R. Alpha Patch 03"
Success applying patch with Comment "IONVMeFamily Pike R. Alpha Patch 04"
Success applying patch with Comment "IONVMeFamily Pike R. Alpha Patch 05"
**Error applying patch with Comment "IONVMeFamily Pike R. Alpha Patch 06-07"
**Error applying patch with Comment "IONVMeFamily Pike R. Alpha Patch 08"
**Error applying patch with Comment "IONVMeFamily Pike R. Alpha Patch 09-10"
**Error applying patch with Comment "IONVMeFamily Pike R. Alpha Patch 11"
**Error applying patch with Comment "IONVMeFamily Pike R. Alpha Patch 12"
**Error applying patch with Comment "IONVMeFamily Pike R. Alpha Patch 13"
**Error applying patch with Comment "IONVMeFamily Pike R. Alpha Patch 14"
**Error applying patch with Comment "IONVMeFamily Pike R. Alpha Patch 15"
**Error applying patch with Comment "IONVMeFamily Pike R. Alpha Patch 16"
**Error applying patch with Comment "IONVMeFamily Pike R. Alpha Patch 17"
Success applying Controller patch (idea of RehabMan)!
Failed applying binary patches, nothing done.
 
Try using patch for El Capitan 10.11.6 (15G31):
Success applying patch with Comment "IONVMeFamily Pike R. Alpha Patch 01"
Success applying patch with Comment "IONVMeFamily Pike R. Alpha Patch 02-03"
Success applying patch with Comment "IONVMeFamily Pike R. Alpha Patch 04"
Success applying patch with Comment "IONVMeFamily Pike R. Alpha Patch 05-06"
Success applying patch with Comment "IONVMeFamily Pike R. Alpha Patch 07-08-09"
Success applying patch with Comment "IONVMeFamily Pike R. Alpha Patch 10"
Success applying patch with Comment "IONVMeFamily Pike R. Alpha Patch 11"
Success applying patch with Comment "IONVMeFamily Pike R. Alpha Patch 12-13"
Success applying patch with Comment "IONVMeFamily Pike R. Alpha Patch 14"
Success applying patch with Comment "IONVMeFamily Pike R. Alpha Patch 15-16-17-18-19"
**Error applying patch with Comment "IONVMeFamily Pike R. Alpha Patch 20-21-22"
**Error applying patch with Comment "IONVMeFamily Pike R. Alpha Patch 23-50"
Success applying Controller patch (idea of RehabMan)!
Failed applying binary patches, nothing done.
 
Try using patch for El Capitan 10.11.6 (Beta 4):
Success applying patch with Comment "IONVMeFamily Pike R. Alpha Patch 01"
Success applying patch with Comment "IONVMeFamily Pike R. Alpha Patch 02-03"
Success applying patch with Comment "IONVMeFamily Pike R. Alpha Patch 04"
Success applying patch with Comment "IONVMeFamily Pike R. Alpha Patch 05-06"
Success applying patch with Comment "IONVMeFamily Pike R. Alpha Patch 07-08-09"
Success applying patch with Comment "IONVMeFamily Pike R. Alpha Patch 10"
Success applying patch with Comment "IONVMeFamily Pike R. Alpha Patch 11"
Success applying patch with Comment "IONVMeFamily Pike R. Alpha Patch 12-13"
Success applying patch with Comment "IONVMeFamily Pike R. Alpha Patch 14"
Success applying patch with Comment "IONVMeFamily Pike R. Alpha Patch 15-16-17-18-19"
**Error applying patch with Comment "IONVMeFamily Pike R. Alpha Patch 20-21-22-23 (Beta4)"
**Error applying patch with Comment "IONVMeFamily Pike R. Alpha Patch 24-51 (10.11.6 Beta4)"
Success applying Controller patch (idea of RehabMan)!
Failed applying binary patches, nothing done.
 
Try using patch for El Capitan 10.11.5 (15F34):
Success applying patch with Comment "IONVMeFamily Pike R. Alpha Patch 01"
Success applying patch with Comment "IONVMeFamily Pike R. Alpha Patch 01"
Success applying patch with Comment "IONVMeFamily Pike R. Alpha Patch 04"
Success applying patch with Comment "IONVMeFamily Pike R. Alpha Patch 05-06"
Success applying patch with Comment "IONVMeFamily Pike R. Alpha Patch 07"
Success applying patch with Comment "IONVMeFamily Pike R. Alpha Patch 08-09"
Success applying patch with Comment "IONVMeFamily Pike R. Alpha Patch 10"
Success applying patch with Comment "IONVMeFamily Pike R. Alpha Patch 11"
Success applying patch with Comment "IONVMeFamily Pike R. Alpha Patch 12-13-14"
Success applying patch with Comment "IONVMeFamily Pike R. Alpha Patch 15-16-17-18-19"
Success applying Controller patch (idea of RehabMan)!
Success patching binary!
IOPCIClassMatch = 0x01080200&0xffffff00
Success patching Info.plist!
Success creating /Users/magnifico/Desktop/cartella senza titolo 4/IONVMeFamilyBorg.kext
Success creating /Users/magnifico/Desktop/cartella senza titolo 4/configSample.plist!
NOTE: for EC kexts may need to adjust the InfoPlistPatch to match your device id.
      and off course if you install the kext, no need for the KextsToPatch!
 
SUCCESS!
IONVMeFamilyBorg.kext successfully generated using El Capitan 10.11.5 (15F34) patches!
Airdimagnifico:cartella senza titolo 4 magnifico$
  :whistle:
Link to comment
Share on other sites

init and attach are called before probe.

Ok. What I want to avoid is to see messages in kernel log that say that two driver are found but the newer is loaded. Cannot find a screen shot and cannot try my self since I have only my notebook with me now..

 

There something you do not like me, I'm with 11.6 and 11.5 for a kext

It says that use patches created for 10.11.5 .. and is true.. and as far as I know are working well for 10.11.6 with Security update installed!

And the kext used as base is the IONVMEFamily.kext you have in /System/Library/Extensions, unless you had specify otherwise with -k option. So is the same kext that comes with your operating system.

Link to comment
Share on other sites

Ok. What I want to avoid is to see messages in kernel log that say that two driver are found but the newer is loaded. Cannot find a screen shot and cannot try my self since I have only my notebook with me now..

The way my patches work there is no such issue...

- class name is renamed from AppleNVMeController -> HackrNVMeController (note same length)

- bundle identifier/bundle name is changed to be unique

Link to comment
Share on other sites

It says that use patches created for 10.11.5 .. and is true.. and as far as I know are working well for 10.11.6 with Security update installed!

And the kext used as base is the IONVMEFamily.kext you have in /System/Library/Extensions, unless you had specify otherwise with -k option. So is the same kext that comes with your operating system.

and the kext that generated is also compatible for the 11.6  :rolleyes:

Link to comment
Share on other sites

The way my patches work there is no such issue...

- class name is renamed from AppleNVMeController -> HackrNVMeController (note same length)

- bundle identifier/bundle name is changed to be unique

Actual NVMeP do the same:

// Controller patch
    UInt8 nvControllerBytesF[] = {0x00, 0x41, 0x70, 0x70, 0x6C, 0x65, 0x4E, 0x56, 0x4D, 0x65, 0x43, 0x6F, 0x6E, 0x74, 0x72, 0x6F, 0x6C, 0x6C, 0x65, 0x72, 0x00};
    
    UInt8 nvControllerBytesR[] = {0x00, 0x42, 0x6F, 0x72, 0x67, 0x50, 0x4E, 0x56, 0x4D, 0x65, 0x43, 0x6F, 0x6E, 0x74, 0x72, 0x6F, 0x6C, 0x6C, 0x65, 0x72, 0x00}; 

(but not the test version I made here #290, that is not published yet).

SummlerG, maybe can test your for couriosity (its kp never happen to me as well...).

This log Is not an issue, is OSX that tell you something (but is totally deceived :D ). Try to install two FakeSMC.kext with different versions (same but editing one of it) and you probably will notice a message in kernel log for that.

Link to comment
Share on other sites

Actual NVMeP do the same:

// Controller patch
    UInt8 nvControllerBytesF[] = {0x00, 0x41, 0x70, 0x70, 0x6C, 0x65, 0x4E, 0x56, 0x4D, 0x65, 0x43, 0x6F, 0x6E, 0x74, 0x72, 0x6F, 0x6C, 0x6C, 0x65, 0x72, 0x00};
    
    UInt8 nvControllerBytesR[] = {0x00, 0x42, 0x6F, 0x72, 0x67, 0x50, 0x4E, 0x56, 0x4D, 0x65, 0x43, 0x6F, 0x6E, 0x74, 0x72, 0x6F, 0x6C, 0x6C, 0x65, 0x72, 0x00}; 

 

Important also to change the bundle-id/bundle-name in the Info.plist

Link to comment
Share on other sites

 Share

×
×
  • Create New...