IONVMeFamily.kext bin patch data for El Capitan

I patched the NVMeFamily.kext of El Capitan (10.11.5) and the M2 drive shows up and Disk Utility -> First Aid works so it is time to start testing.

Anyone willing to test has to e-mail me. If not. You won’t get it. I won’t share the binary anymore because from now on, you can use the new Clover patch data.

More text to come soon… yada yada yada

Marc is currently still at work and he will try to come up with a working set of patches for El Capitan tonight. Yeah! Thank you Marc!

Update: Done! Here it is. Clover love from Marc for the IONVMeFamily.kext:

IMPORTANT NOTE: We had some errors in the Clover patch data – thanks to RacerRehabMan and Sander37 for catching them – that we fixed (now version 3 available)!!!

Note: The first section in the patch data is used to search for the PCI vendor and device-id:


And to have that replaced with:


This replacement won’t work for everyone, due to different vendors and device-id’s, so make sure that you check this!

STOP STOP STOP: RacerRehab man just told me that the last two Clover patch sets are still broken. Doesn’t match with anything in the binary, and thus they won’t do anything. I have no idea what happened, but this may explain some issue I have been reading about. 

		<string>NVMe SSD IONameMatch</string>
		<string>IONVMeFamily Pike R. Alpha Patch#01</string>
		<string>IONVMeFamily Pike R. Alpha Patch#02&amp;03</string>
		<string>IONVMeFamily Pike R. Alpha Patch#04</string>
		<string>IONVMeFamily Pike R. Alpha Patch#05&amp;06</string>
		<string>IONVMeFamily Pike R. Alpha Patch#07&amp;08&amp;09</string>
		<string>IONVMeFamily Pike R. Alpha Patch#10</string>
		<string>IONVMeFamily Pike R. Alpha Patch#11</string>
		<string>IONVMeFamily Pike R. Alpha Patch#12&amp;13</string>
		<string>IONVMeFamily Pike R. Alpha Patch#14</string>
		<string>IONVMeFamily Pike R. Alpha Patch#15&amp;16&amp;17&amp;18&amp;19</string>
		<string>IONVMeFamily Pike R. Alpha Patch#20&amp;21&amp;22&amp;23</string>
		<string>IONVMeFamily Pike R. Alpha Patch#24 - 51</string>

Back to the movie now…


167 thoughts on “IONVMeFamily.kext bin patch data for El Capitan

  1. Pingback: NVMeFamily.kext bin patch data – Pike's Universum

  2. Hi,Pike
    I currently have a sm961 ssd on hand and really want to see and test it.
    I have sent a request email and looking forward for your reply!

      • Hi, Pike
        Here is what I tried so far.
        I put the patched kext into the folder clover/kexts/Other, the disk is not shown on disk utility,then I opend terminal and mount the efi partition and tried to ‘kextload’ the patched kext manually, but I got some error about ‘load faild,not authentication’.

        Now I’m using nvmegeneric.kext to get installation done than I will try to use your patch and remove the nvmegeneric.kext.

      • The patched kext or the binary file that you got from me?

        Note that you need to copy/rename the binary file – the file you got from me – and put it into: IONVMeFamily.kext/C*/M*

        Make sure that the ownership and file properties are what they should be, then use sudo with SIP disabled.

      • Hi Pike,

        I have some good news, now the patch is working good for sm961 on 10.11, but one thing that I noticed is that I don’t need to change the device-id in Info.plist. If I change it, it will not boot.

        ps: I will test more tomorrow)

        For the speed, still a litter bit slower but it’s enough for me lol.
        Here is the screenshot.

      • Hi pike,
        I’m not very sure about details of the motherboard,it definitely is a 100-series motherboard and cpu is I7-6600u, the laptop is thinkpad x1 yoga
        after using the patch, the sleep and shut down issues are no longer exist!
        thanks for your amazing job again!

      • Hi, Pike
        i bought a sm 951 ssd and now i need a patch for it.
        could you please send me an email?

        kind regards from switzerland

  3. Hi Pike,

    I like to test your nvme patch on an Asrock x99m Extreme4 with Samsung SM951 256GB NVME with 10.11.5.
    I dont find your email address to send a request, so here we go. Can you get in contact with me? My Email is attached to this comment.
    Greetings from Germany

  4. it works! (samsung sm951)

    When using the binary, don’t forget to patch the ioNameMatch in the info.plist

  5. Greatttt Pike , i love you and Marc for test ( I have been very busy for personal things, I think you understand why) fantastic Kext …tomorrow install El on my Samsung 950 Pro [url=][img][/img][/url]

  6. Great great Pike , and marc for test (I have been very busy since this morning for personal things, I think you’ve figured out why) Tomorrow i’ll try new installation on my 950 Pro
    Thz of heart , i am very happy now

  7. Hallo God Pike!
    The first thing after hackintosh booting up is to open your website where I can always find gift or something from god…I immediately put the patch into work but the read speed is rather slow, it cost me more than 1 hour to copy to another new bought SSD. I am using sm951 nvme and the genericNvme.kext would perform better in comparison.
    Thanks a bunch, pike, you are awesome !

    • Lol I am far from God, but thanks anyway. About the write speed problem. I don’t get it. There have been a whole bunch of testers, and you are the first to complain about this. Not saying that there is no issue/bug or whatever, but if I copy a ton of files then everything is blistering fast.

      • Yes indeed, i copied several games on steam(about 50GB) and it’s lightning fast which I just can’t believe, but the and Xcode are quite painful, I tried several disks including 2 850pro 256 SSDs and 2 ST2000GB Hard drive. It often failed at the middle way and finder tells that the file I am copying can’t be read from sm951. I don’t know if it is a common issue, or the sm951 ran into high temperature.

      • I just ran a script to copy the file ten times (with a new name). No issues so far…

        Edit: One other thing. Were you using the Clover patch data or my binary patched kext?

  8. Yes, with some questions!
    full speed, system information under nvmeexpress, trim yes, but diskutility shows it as external pci-express volume. any idea how to fix this?

  9. Looks like a mistake in the two patches marked #15, and #16,#17,#18,#19.
    The find/replace sizes do not match. Clover will not apply a patch unless the sizes match.

    I suspect this is not the intention.

    SPEEDY-OSX:nvme RehabMan$ echo -n QYP4B3dtRIpVEEQP|base64 –decode|xxd
    0000000: 4183 f807 776d 448a 5510 440f A…wmD.U.D.

    SPEEDY-OSX:nvme RehabMan$ echo -n QYP4B3dtRA+2VRBEDw==|base64 –decode|xxd
    0000000: 4183 f807 776d 440f b655 1044 0f A…wmD..U.D.

    SPEEDY-OSX:nvme RehabMan$ echo -n tsFECcCJwYHJABAAAEWE0g9EyImPPgEA|base64 –decode|xxd
    0000000: b6c1 4409 c089 c181 c900 1000 0045 84d2 ..D……….E..
    0000010: 0f44 c889 8f3e 0100 .D…>..

    SPEEDY-OSX:nvme RehabMan$ echo -n tsHB4AmQkJCQkJCQRAnARAnQiYc+AQA=|base64 –decode|xxd
    0000000: b6c1 c1e0 0990 9090 9090 9090 4409 c044 …………D..D
    0000010: 09d0 8987 3e01 00 …

  10. I think there is still a small but significant mistake:

            <string>IONVMeFamily Pike R. Alpha Patch#15&16&17&18&19</string>

    disabled -> false?

    • Right. That must be a silly mistake. Fixed in my blog post.
      Please re-test the patches and let me know if this solved it.

      Edit: Marc confirmed it. Just a silly typo. Sorry folks!

    • Yeah, sorry again folks. Just switched to to test, if the whole patch is working also w/o this patch#15… and just forget to switch it back to to enable Line 15 again when sending Pike the new patch.

      Again… i am SO sorry for that. Shame on me 😉 But now, i can confirm, that it fully works within CLOVER during CLOVER boot.

  11. Thanks for giving me an opportunity to make a (small) contribution ;).

    I noticed while benchmarking the NVMe 951 with BlackMagic Speedtest, that after about 15-20 write/read runs the performance starts to drop, significantly, from 1950MB/s to 300MB/s, this does not happen with my AHCI 951. After the drop the speed keeps fluctuating.

    • Is this still an issue with the v3 data? No problem here with running BlackMagic Disc Speed Test. Also. Open IORegistryExplorer and check thees:


      Should all be 0x0 (zero)

  12. I don’t know if it’s of any importance, but notice the difference between the Sierra(NVMe) and OSX(AHCI); (internal) versus (internal, physical)

    /dev/disk0 (internal):
    0: GUID_partition_scheme 256.1 GB disk0
    1: EFI EFI 209.7 MB disk0s1
    2: Apple_HFS Sierra 255.2 GB disk0s2
    3: Apple_Boot Recovery HD 650.0 MB disk0s3
    /dev/disk1 (internal, physical):
    0: GUID_partition_scheme *256.1 GB disk1
    1: EFI EFI 209.7 MB disk1s1
    2: Apple_HFS OSX 255.2 GB disk1s2
    3: Apple_Boot Recovery HD 650.0 MB disk1s3

    thanks for the great work, guys.
    with V3.0, all patches are Go!

  13. With patch v3.0 properly installed, BM speedtest still drops in performance after 18 runs.

    IOreg shows no errors or retries, all 4 stats are 0x0.

    I have the same performance drop in 10.12 as in 10.11.5

      • I did some more tests.
        I think you are right, throttling probably is the cause.
        (I didn’t expect such a big drop in speed (90%), caused by throttling.)

        my AHCI drive is probably in a cooler place in my PC then the NVMe is.
        i’ll see if better cooling will help.

  14. Pingback: Help. My NVMe shows up as External… – Pike's Universum

  15. Hi Pike, been testing for a bit and have not succeeded into making it show in NVMExpress hardware info.. It does show on PCI devices after I’ve added the ssdt with proper device for my board..

  16. @Felix, how would we go about it if instead of a ssdt we would want to add it to our dsdt? just to have things tidy 🙂

  17. I just saw the alert from racerRehabman, and just wanted to mention that all patches including the last 2, are (still) successfully patched, according to clover boot, on my hack.
    (OSX 10.11.5. clover v3579)

    • Clover does not write anything to the bootlog to indicate whether a given patch had any effect on the binary. In other words, it writes nothing as to whether the Find pattern matches or not.

      For the last two patches for 10.11.5 listed here, the Find pattern does not match any bits in the binary.

      • Ah I see, I assumed that if Clover didn’t give a find/replace error, the patch was succesfull.
        But what your saying is that clover only gives a find/replace error when find and replace data differ in length.
        That means I don’t know which or how many patches were successful.

        It also means Clover could be improved on this point. 😉

      • And this will be correct, cause i used IONVMeFamily.kext from 10.11.6 beta4 to make the first patch. I have just installed fresh copy of 10.11.5 and used the kext from this build to make a new CLOVER patch for 10.11.5 users. Send the fix already to PIKE. So, the one you can find here already, is a patch for 10.11.6beta4 – not fully compatible to 10.11.5

        CLOVER patch for 10.11.5 users will follow, as soon, as Pike will update blog with the patch i already send him for EL CAPITAN users 10.11.5

      • It also appears that find and replace data of the last 2 patches have been mixed up.

        looking at the original binary and the Pike.patched binary in HEXedit, shows dat the the replace data of the last 2 patches is already present in both files.

        enjoy your weekend!

      • Hi,Pike
        Some feedbacks here:
        I saw many people who have the desktop confirm that the 10.11.6dp4 patch works on 10.11.5

        But my laptop just could not boot via that patch and the new corresponding patch did the trick.

        And thanks again to Mork and Pike for the amazing work!

      • Thanks,

        You know what. I think that it is time for Clover users to use some sort of script to (automatically) convert patched binaries to KextToPatch data. That and improved (verbose) checks to notice you about failed patches, when not applied, are a must have. Especially for targets like IONVMeFamily.kext

  18. Hi there, Thanks for all your work on the patching! My RD400 still isn’t able to be seen with any of the solutions provided. Would you be able to see how I might add the device id to the info.plist??? Not sure if that would be the solution or not to get the IO to see it. From Windows the id shows up as “PCI/VEN_1B85&DEV_6018&REV_01” .. not sure if thats enough for you to see how to make it work, but please try if possible. Thanks!

    • Ok. Your PCI device-id should be:


      Which is (hexadecimal values):
      3c 73 74 72 69 6e 67 3e 70 63 69 31 62 38 35 2c 30 36 30 31 3C 2f 73 74 72 69 6e 67 3e
      Next you convert it with:

      echo -n '3c737472696e673e706369316238352c303630313c2f737472696e673e'|xxd -r -p|base64

      Giving you:


      Use that as your Clover ‘Replace’ data. The ‘Find’ data stay the same as revision 3 in my blog post.
      Also check the assigned interrupt, which should be 0x10

      • Tried that for my Toshiba XG3 512GB ssd (mine is 1179&010f). Patch works fine, changed string is correct (pci1179,010f) but i don’t see my ssd in disk utility in installer. Could you help me how i can troubleshoot what is wrong?

      • Your motherboard (read UEFI BIOS) supports booting from NVMe devices? If yes, then open a terminal window from the installer app and load it manually with kextload [path to]/IONVMeFamily.kext after that you first check /var/log/system.log for related errors.

  19. hi pike ,

    I try to your patch edited by Cloverconfigurator Kext to patch but Disk Utility doesn’t show internal NVME ssd.

    My SSd is Intel 750 1.2TB that model name to “SSDPEDMW012T4X1” PCI-Express Type but I don’t know device id and vendor id

    If i find device id and vendor id i replace

    Note: The first section in the patch data is used to search for the PCI vendor and device-id:


    And to have that replaced with:



    Very difficult. Plz advice me.

      • oh ~ pike

        below Eric Taleb Walch ‘s same condition!!

        i know that vendor id and device id use by dpcimanager!!

        id is pci8086,0953


        which.. or where? fix my kext, or fix config?

        i don’t that ….

        plz advice and help me

      • If you don’t know what to do then please stop trying. I mean. The hack kext is out, and then you don’t need to mess with a vendor-id and/or device-id.

        p.s. If you post something, then please wait for your post to show up (this is a moderation blog). Do not post the same message over and over again or your posts end up as spam. Like your previous message, and I usually do not check posts marked as spam.

      • oh…. i’m very.. sorry….


        i written ur blog.. but immediately apply my post…….

        and i thinks my safari ’s problem..

        and i retry copy my post ctrl + v… use…

        anyway… i really disappoint you.. pike..

        i’m awfully sorry…

      • oh thank you so much for accept my apology ^^

        i try just only el capitan 11.5 and 11.6 i don’t try sierra ..

        like you said i ‘ll try sierra install and samsung950pro nvme sad too and i muddle one step forward.

    • Hi Guys,

      Any luck with this ?
      Just received my 750 1.2Tb and I’d like to see it in OSX.

      What I did:

      I discover pci_id on Windows is pci8086,0953.

      Which translates to PHN0cmluZz5wY2k4MDg2LDA5NTM8L3N0cmluZz4NCg==

      in bin patch #1..

      I created a Hackr kext using rehabman’s script and changin the first patch in the 10.11.5 plist to that string in replace.

      Still no SSD seen by OSX…

      Any advice ?

      a million thanks in advance,

      PS: My UEFI bios sees it. Linux and Windows see it.

  20. no errors whatsoever…As far as I understand rehabmans uses IOPCIClassMatch instead with value 0x01080200&0xFFFFFF00 for NVMe mass storage controller class…So I guess I didn’t even have to change pci device ids… I tried with both (use the class match toggle in the script and adding my pci device id)…I also tried with no kext and using your kextToPatch in clover changing just the first patch’s IOName to match the Intel 750 SSD.

    I have tried everything…SSD works great on Linux and win…

    How do I enable debug ?

    This is my output:

    sudo kextload -v 6 /Volumes/Dev/patch-nvme/HackrNVMeFamily-10_11_5.kext
    Kext user-space log filter changed from 0xff2 to 0xfff.
    Kext kernel-space log filter changed from 0xff2 to 0xfff.
    Requesting load of /Volumes/Dev/patch-nvme/HackrNVMeFamily-10_11_5.kext.
    /Volumes/Dev/patch-nvme/HackrNVMeFamily-10_11_5.kext loaded successfully (or already loaded).

    Many thanks for the help you are providing… it is pretty frustrating to receive the intel 750 and not being able to use it in your favorite so… 😦

    • What I would like to advise you is to first boot with the original IONVMeFamily.kext – without any patch method – and use boot arguments: -v debug=0x12a

      This should throw some errors on the console screen. If not, then download/run

      You may not need the script, but I always use it and I cannot remember to have booted without first running the script.

      • Hi Pike,

        I did what you suggested. debug 0x12a showed no unusual errors (i started with clover in, debug mode too and the prebootlog shows my nvme partition in Clover’s volume scanning phase)…

        As per the script, I added the flags booted and didn’t see any unusual error neither.

        Then I launched the script, the output is beyond what I can understand in the hackintosh universe… 🙂 v0.2 Copyright (c) 2012 by † RevoGirl
        v1.2 Copyright (c) 2013-2016 by Pike R. Alpha

        _kprintf found @ 0xFFFFFF800090ECB0
        Converted to…: 0x90ecb0 / 9497776
        File offset….: 0x70ecb0 / 7400624

        _printf found @ 0xFFFFFF80002EA6C0
        Converted to…: 0x2ea6c0 / 3057344
        File offset….: 0xea6c0 / 960192

        Error: _kprintf is already patched!
        Aborting …

        I am lost. One thing though. The drive “works” with the NVMEGeneric kext. But:

        1) On don’t trust closed source patchy and obscure stuff on my workstation
        2) the speeds were completely wrong… ~ 200Mb/s …

        I hope I can sort this out…otherwise I’ll be forced to switch back to my GNU/Debian system…

      • Oh crap. Sorry. My mistake. It won’t show errors on the console with the kext from 10.11.6 as the debug data is stripped in the official release build of OS X 10.11.6. Please use the kext from 10.11.6 beta.

        In case you happen to have macOS Sierra 10.12 running, that is fine as well. But don’t use the kext with 10.11.6 😉

      • Last but not least.
        The PCI NVMe card shows in IO Explorer with the right device ids and the matching IO PCI Class for NVME mass storage (the one rehabman’s script)

        Thanks again for your help…it bring a tiny piece of hope…;-)

      • Only Errors I found remotely related to ACPI DSDT etc… where these:

        Jul 22 18:27:05 localhost kernel[0]: ACPI Error: [_DSM] Namespace lookup failure, AE_ALREADY_EXISTS (20140828/dswload-1c5)
        Jul 22 18:27:05 localhost kernel[0]: ACPI Error: [RCB0] Namespace lookup failure, AE_NOT_FOUND (20140828/psargs-1d1)
        Jul 22 18:27:05 localhost kernel[0]: ACPI Error: Method parse/execution failed [\_SB_.PCI0.XRES._CRS] (Node ffffff80517ffd50), AE_NOT_FOUND (20140828/psparse-270)
        Jul 22 18:29:08 localhost kernel[0]: ACPI Error: [_DSM] Namespace lookup failure, AE_ALREADY_EXISTS (20140828/dswload-1c5)
        Jul 22 18:29:08 localhost kernel[0]: ACPI Error: [RCB0] Namespace lookup failure, AE_NOT_FOUND (20140828/psargs-1d1)
        Jul 22 18:29:08 localhost kernel[0]: ACPI Error: Method parse/execution failed [\_SB_.PCI0.XRES._CRS] (Node ffffff804ff0ac10), AE_NOT_FOUND (20140828/psparse-270)

        Honestly don’t know if it is related

      • It may not be related, but I do see a _DSM method (namespace) conflict. You should take care of it. Check your SSDT tables. There has to be one with a _DSM method in it and that one is dropped. Another thing. What is \_SB_.PCI0.XRES for device? There _CSR is missing. Might be due to a dropped ACPI table.

      • For your information, don’t know if it helps, but these are the only kext I have added to the original OSX 10.11.6:

        ls -la /Volumes/EFI/EFI/CLOVER/kexts/10.11
        total 14
        drwxrwxrwx 1 eric staff 2560 Jul 22 18:47 .
        drwxrwxrwx 1 eric staff 512 Jul 21 19:19 ..
        drwxrwxrwx 1 eric staff 512 Jul 14 19:44 ACPISensors.kext
        drwxrwxrwx 1 eric staff 512 Jul 14 19:44 CPUSensors.kext
        drwxrwxrwx 1 eric staff 512 Jul 14 19:44 FakeSMC.kext
        drwxrwxrwx 1 eric staff 512 Jul 14 19:44 GPUSensors.kext
        drwxrwxrwx 1 eric staff 512 Jul 22 00:56 HackrNVMeFamily-10_11_6.kext
        drwxrwxrwx 1 eric staff 512 Aug 11 2014 IONetworkingFamilyInjector.kext
        drwxrwxrwx 1 eric staff 512 Jul 14 19:44 LPCSensors.kext
        drwxrwxrwx 1 eric staff 512 Jul 22 18:18 realtekALC.kext

        Thanks again for your help!


      • This log file is not what I am looking for – there is not a single line with ‘NVMeFamily’ in it. Are you using a Beta version of OS X 10.11.6 or macOS Sierra?

        Edit: I checked the output of macOS Sierra with -v debug=0x12a in and with the factory vanilla IONVMeFamily.kext binary, with the correct (matching) device-id I immediately see the first two errors on my console screen. And without first running

        Edit-2: For macOS Sierra you can do this:

        1.) sudo kextunload IONVMeFamily.kext
        2.) sudo log config --mode "level:debug"
        3.) sudo kextload IONVMeFamily.kext
        4.) log show --predicate 'process == "kernel"' --last "5m"

        The output should be something like this:

        Default 0x0 0 kernel: (kernel) AppleNVMe Assert failed: ( LBAFormat->LBA_DATA_SIZE == 12 )
        Default 0x0 0 kernel: (kernel) CompleteBuffer
        Default 0x0 0 kernel: (kernel) file: /BuildRoot/Library/Caches/
        Default 0x0 0 kernel: (kernel) line: 182
        Default 0x0 0 kernel: (kernel)

        Default 0x0 0 kernel: (kernel) AppleNVMe Assert failed: 0 == (status)
        Default 0x0 0 kernel: (kernel) QueueDelete
        Default 0x0 0 kernel: (kernel) file: /BuildRoot/Library/Caches/
        Default 0x0 0 kernel: (kernel) line: 269
        Default 0x0 0 kernel: (kernel)

        Default 0x0 0 kernel: (kernel) virtual bool IONVMeBlockStorageDevice::start(IOService *)::324:failed with status = 0xe00002c7
        Default 0x0 0 kernel: (kernel) AppleNVMe Assert failed: result
        Default 0x0 0 kernel: (kernel) StartFailureExit
        Default 0x0 0 kernel: (kernel) file: /BuildRoot/Library/Caches/
        Default 0x0 0 kernel: (kernel) line: 3215
        Default 0x0 0 kernel: (kernel)

      • Hi Pike,

        I am on 10.11.6 final. I have hackr 10.11.6-beta kext in my clover kexts dir.

        I booted with debug 0x12a.

        I did kextload IONVMEFamily.kext and the output in console is the following:

        23/07/2016 05:01:23,000 kernel[0]: OSMetaClass: Kext class IONVMeController is a duplicate;kext already has a class by that name.
        23/07/2016 05:01:23,000 kernel[0]: Kext start failed (result 0xdc00400a).
        23/07/2016 05:01:23,000 kernel[0]: Kext failed to load (0xdc008017).
        23/07/2016 05:01:23,000 kernel[0]: Failed to load kext (error 0xdc008017).
        23/07/2016 05:01:23,580[58]: Failed to load /System/Library/Extensions/IONVMeFamily.kext – (libkern/kext) kext (kmod) start/stop routine failed.

      • This is basic stuff. And like I said earlier; don’t use a patched binary when you try to load IONVMeFamily.kext All you really need to do is fix the device-id in the plist so that is matched with your hardware. And again. There won’t be any output without a beta/debug kext.

      • Thanks for your help/support.
        I have made some definite progress.

        As you suggested I gave Sierra Beta3 a shot, whithout chaning any DSDT or setup. Just added le 10.12=beta hackr generated kext to kext/Others in Clover and guess what ?

        The Intel 750 PCIe SSD shoed up perfectly in system report and I can see the drive.

        So my guess is: something was fixed or modified to make the driver more compatible with the 750…I remember reading somewhere that they made the driver compatible with other LBA sizes than 4096. I know for sure the 750 has an LBA size of 512…

        IMHO despite what we read on some forums, Intel 750 SSD works on 10.12beta with HackrKext but DOES NOT WORK on 10.11…

        Now for the bad news…the performance are completely wrong… ~200Mb/s like with NVMEGeneric kext…

        But it’s encouraging and I pretty sure someone will get things right to make in work like it doesn on GNU/Linux… 3Gbs/2Gbs… amazing…

        Again, Pike, really, thanks for the time you have put to help me out on this. And lets hope someone gets this fixed when Sierra comes out! :=)

      • No. The DP3 driver barks about the 512 KB size and still wants 4096 KB so to me nothing has changed to improve the compatibility with said drive. And without data… I’m not buying anything.

        Please dump the hack NVMe kext. Only fix the Info.plist Then follow the steps that I have provided and you will see, with your own eyes, that I am right.

      • Pike this the result on Sierra Beta:

        2016-07-24 15:47:02.152401+0200 0x14f6 Default 0x0 0 kernel: (kernel) AppleNVMe Assert failed: ( LBAFormat->LBA_DATA_SIZE == 12 )
        2016-07-24 15:47:02.152404+0200 0x14f6 Default 0x0 0 kernel: (kernel) CompleteBuffer
        2016-07-24 15:47:02.152405+0200 0x14f6 Default 0x0 0 kernel: (kernel) file: /BuildRoot/Library/Caches/
        2016-07-24 15:47:02.152406+0200 0x14f6 Default 0x0 0 kernel: (kernel) line: 182
        2016-07-24 15:47:02.152407+0200 0x14f6 Default 0x0 0 kernel: (kernel)

        2016-07-24 15:47:02.153514+0200 0x14f6 Default 0x0 0 kernel: (kernel) AppleNVMe Assert failed: 0 == (status)
        2016-07-24 15:47:02.153516+0200 0x14f6 Default 0x0 0 kernel: (kernel) QueueDelete
        2016-07-24 15:47:02.153516+0200 0x14f6 Default 0x0 0 kernel: (kernel) file: /BuildRoot/Library/Caches/
        2016-07-24 15:47:02.153518+0200 0x14f6 Default 0x0 0 kernel: (kernel) line: 269
        2016-07-24 15:47:02.153519+0200 0x14f6 Default 0x0 0 kernel: (kernel)

        2016-07-24 15:47:02.154616+0200 0x14f6 Default 0x0 0 kernel: (kernel) virtual bool IONVMeBlockStorageDevice::start(IOService *)::324:failed with status = 0xe00002c7
        2016-07-24 15:47:02.154619+0200 0x14f6 Default 0x0 0 kernel: (kernel) AppleNVMe Assert failed: result
        2016-07-24 15:47:02.154620+0200 0x14f6 Default 0x0 0 kernel: (kernel) StartFailureExit
        2016-07-24 15:47:02.154621+0200 0x14f6 Default 0x0 0 kernel: (kernel) file: /BuildRoot/Library/Caches/
        2016-07-24 15:47:02.154626+0200 0x14f6 Default 0x0 0 kernel: (kernel) line: 3215
        2016-07-24 15:47:02.154628+0200 0x14f6 Default 0x0 0 kernel: (kernel)

      • You see. Exactly the same errors that I said would be there. Please dow do the same with the patched binary and see if you get any error at all.

      • Did the same with the Hackr kext and IONVME did not show any errors.

        The drive showed up in System Report under NVMExpress.

        In fact there was 0 errors at all. But all this in Sierra…In Sierra it works… In 10.11.6 it does not…I don’t have an 11.6 beta to shown the IONVMEFamily debug errors…sorry…

        It’s okay, as I said earlier, considering the performance under OSX Sierra, there is no point in using it anyways…

  21. This is what I see in /var/log/system.log when I kextload it manually:[58]: kext-dev-mode allowing invalid signature -67030 0xFFFFFFFFFFFEFA2A for kext “/Volumes/Dev/patch-nvme/HackrNVMeFamily-10_11_5.kext”[58]: kext signature failure override allowing invalid signature -67030 0xFFFFFFFFFFFEFA2A for kext “/Volumes/Dev/patch-nvme/HackrNVMeFamily-10_11_5.kext”

      • Well i have manahed to get rid of XRES…
        As for the rest I am a sabertooth x79 and use rampage’s ssdt which works great.

        Now I don’t understand why indent see any errors and still the Intel 750 name PCI card is not seen.
        I have even managed to boot Ubuntu on the nvme from clover perfectly….

        Just osx does not see it with hacked kext…

        As I said before nvme generic kext is bot an option…

        Is there something special needed in ssdt for nvme ? Maybe I missed something…I can see it in to explorer…

        Sorry I. Not very expert at editing dsdt or ssdt…😥

      • In my view things are only working great without errors and warning, with your Intel 750 being recognised by OS X. The fact that you can use the Intel 750 with Windows/Linux is great, but won’t help me a bit. You need a functional driver for OS X or it will never work.

        Now. Let’s go back to my question: “What is Device XRES?”. And once more. Use a debug driver and tell me what you see, or I won’t be able to help you. You first have to deliver… or nothing goes.

  22. Hello, I am looking for an NVME kext for installing 10.11.6 on a Rampage V using a Pro 950. I tried to understand all that was posted here, and I must admit it is all beyond me. There is stuff to patch and I am not even sure how to begin to do that. I have seen mention of IONVMeFamily.kext and HackrNVMeFamily.kext
    I am not sure which I need but is there a kext somewhere that I can just download and put in the kext direxttory, or is some type of patching to a specific system needed. Sorry for the very basic question and understanding but I really want to get this to work and I guess I am in way over my head.

  23. I’m using Pike’s code with Rehabman’s NVMe patch. The disk speedtest result:
    AJA for Mac Samsung SM951 M.2 PCI-E 512Gb NVMe SSD SpeedTest
    But I couldn’t get the Hackintosh boot through clover from EFI partition of Samsung SM951 M.2 PCI-E 512Gb NVMe SSD.
    Does somebody know how to manage it?
    Any ideas are appreciated.

      • Specs:
        Asus Maximus VII Hero, Intel Core i7 4790K, Kingston HyperX 2400MHz DDR3 8GB (2*4GB), SSD M.2 PCI-E Samsung MZHPV512HDGL-00000 512 GB through JZLL PCI-E 4x Adapter Card

        How to check it? MAXIMUS VII HERO BIOS 3103

      • Your motherboard has an M2 slot and NVMe support since BIOS v2601 but I don’t know if that includes boot support. Do you see the M2 drive when you press F8 (to select a boot drive) or anywhere else in the UEFI BIOS?

      • Yes, I do see UEFI Windows 10 record from M.2 drive, and do boot from it, but I couldn’t see any Clover UEFI boot records there. I have tried to install Clover from Mac on the M.2 drive in EFI partition. Have added the boot records from Clover. But nothing works. I boot from the USB flash drive.

    • Hello guys! Does someone use a Samsung SM/PM 951/961 NVMe SSDs? Could you tell, who of you could boot from the NVMe EFI record of SSD directly from UEFI BIOS to CLOVER/CHIMERA or other boot loader and what exactly motherboard do you use.
      I have to change my motherboard because I spilled water on my Asus Maximus VII Hero, and probably will buy the motherboard with M.2 PCI-E slot support on Z97 chipset and LBA 1150 socket for my Intel Core i7 4790K processor.
      Could you give me an advice, maybe I should sell my CPU, and to assemble the PC on LBA 1151 socket with Z170 chipset? If someone have the motherboard with the configuration like this, please confirm the direct boot with NVMe M.2 SSD to other then Windows EFI boot record (for hackintosh boot). Becouse my MB had a problem with that, and the Asus support team said, that they don’t responsible for correct boot with other then Windows OS.

  24. Hi Pike,
    I would like to test your NVME patch in my Aorus X5S V5 laptop with a pair of Samsung MZVPV256HDGL in raid 0 with 10.11.5
    i can’t find your email address to send a request… Can you contact with me? My Email is attached to this comment.
    I have to mention that I’m kind of new in these so can you tell me what to do with the rest of the files (if there are any) beside of the plist content at the top that should go into the “KernelAndKextPatches” section of my CLOVER config.plist?

  25. I intend to install OS X 10.11.6 using Clover on those drives (boot from them), so where should I put the “HackrNVMeFamily-10_11_6.kext” file in order to take effect durring the OS installation (I want clover to recognize those drives)?
    And a bit thanks so far, I’m really appreciate your help man

      • I knew where the other kext patches are going, just wanted to make sure he doesn’t get a special treatment 😉
        Thanks anyway pike

      • Remember this. I want you to learn something so please try to get away from following guides. Go try something. Make mistakes. Make errors. I do that all the time, because then I can learn from my mistakes and errors. Like anyone else here.

  26. @pikeralpha can you please help me out i read almost every post to make the nvme internal but with no luck i have an samsung 950 pro 512GB working fine and showing up with HackrNVMeFamily 10.11.6 kext in EFI/CLOVER/kexts/10.11/ i try many times to fix the external problem i could not find the ssd in IORegistryExplorer

  27. This is my results after apply this patch:
    I use the Rehabman script to create a kext for NVMe
    The only thing that i don’t like to much is increase boot time
    with my system:
    Samsung M2 SSD 950PRo 256GB

  28. Hi Pike Clearly noob in this blog, I just want to know, been following the blog and read thread above regarding Intel SSD NVMe drive, are there any working patched driver already..? appreciate the info, if not, would it be possible for us to collaborate work on a working patch as I have an Intel Drive and really would like to get it working and rocognize by OS X. Thanks

  29. Hey Pike. Hows it going? Was wondering if you could point me in the right direction. I have 11.6 and a functioning Intel 750 NVME drive with NvmeGeneric Kext. Trying to transition to the Rehabman/Piker patch kext and having difficulties. I replaced the line in that mentions device-ids with “pci8086,953” and “pci8086,370d” based on lspci, ioreg, dpciManager search data. Ran the patch with in terminal against 11-6 and copied the kext in my Clover kext folder but notta. Nothing. Not recognized. Any ideas?


    PS: Glad you found your phone. Your a lucky man!

      • Funny you ask. Couldn’t find any thing that said it was loaded in Console after including it in my S/L/E folder and rebuilding the kext cache. I tried to use Kextload to load it after and it had no effect on the system seeing any nvme drives. Maybe because it should load early on? Thanks Pike.

      • For a boot drive yes, but I can load IONVMeFamily.kext for a secondary drive without any problem. If it isn’t loaded, then check the log file (with debug enabled).

    • No. Sorry. Very busy with something.

      Note: There are two utilities that you can use to create a patched kext, or you have to extract the data yourself from the utilities (search

  30. Thanks, I was able to figure out where to go …, your blog have too much information and sometimes is hard follow the thread complete specially when the reader barely can read english. Congratulations by your awesome work …

    Works fantastic …

    can i help you sending some data from my build? the configuration is

    CPU: i7 6700k / Mobo: Gigabyte Z-170M-D3H / Video: Gigabyte GTX 980 ti / Storage: Samsung SM951 PCI/e – Bootloader: Last version clover / SO: Capitan 10.11.6 with security update 2016-001 installed

  31. Hi,
    I also have the SM961 (on an Asus H110T), could the patched binary you mention to Xinyu in the first reply made osx installer show the drive?

      • Thank you for the confirmation, i tried to list the steps, is it correct?

        -patch the kext using NVMe patching script by rehab man (github )
        -patch the kext using Micky1979/NVMeP command line tool (github )
        -change device id in info plist to match SM961 (or maybe not according xinyu post)
        -put the patched binary file (how to make it?) into IONVMeFamily.kext/C*/M*
        -repair ownerships
        -set SIP to -without kext


  32. i used the rehab man patching script, it generated the kext right away, once this kext dropped to the Clover kext folder OS X install shows the SSD! So nice. Thanks again.

  33. The Rehabman did wrote in the readme file of patch for the Pike’s code that:
    If you are trying to use HackrNVMeFamily for the 10.12 installer, forget about it. Use the correct patches in config.plist KextsToPatch.

    But I couldn’t get the /EFI/CLOVER/config.plist file correctly to work, if I pasting the HackrNVMeFamily-10_12_0.kext/Contents/Info.plist code beginning from first tag after

    Please, help to solve injection of the patch to clovers config, to boot in to Mac OS Sierra installation with Pikeralpha’s code.

  34. Hello Pike! first of all, Merry Christmas to you and your family.

    To the case at hand, I have recently purchased a sm961 which is the replacement of my 950pro.. But!, it doesn’t work… I’ve been able to get to the installation part on sierra 10.12.2 with the kextToPatch patch, install, but then it doesn’t work.. when I load OS with clover it shows the message “testing new hardware” and that since I installed the new SM961. I’ve seen another user at the top of the post that has same drive and you have helped him somehow..

    Could you help me please, I’m a bit lost tbh.. Thanks!

    • Thanks. About kextToPatch data. I only added it on request, but I myself don’t use the patch data, but a patched kext instead. This is, or should be, easier. Give rehabman’s script or mickeys app a go. That should work.

      You do own an NVME drive, right?

      P.s. Apple has changed something in the kext daemon department and I have yet to figure out what that is (lack of time is not helping me).

      • I do have the NVME drive, its only that I can’t get through the installation.. The kext that creates rehabman’s patch is not intended for installation (at least that’s what he stated in the readme), and also I have noticed that my bios doesn’t recognise the drive in the boot department! it just doesn’t show.. I have latest bios on the X99 AII btw… so weird

      • The M2 NVMe drive should show up in the BIOS. Not seeing it there is a problem. You have to fix that first. Does the BIOS even support NVMe drives? Are the PCI lanes of the M2 slot shared with other hardware?

      • The bios does, I’ve been using the sm950 pro till now without hiccups, another weird thing is that the drive shows only when csm is active…. It never was like this.. the pci slot shares with the last PCI but theres no device there.

      • Well. In that case leave CSM enabled and see what that does.

        Also. About the kext with the OS installer. I let RevoBoot inject a patched kext from /Extra/Extensions and the installation process works fine. Same procedure is used for normal booting. And ever since I worked on the kext patching so it should work for you as well.

      • I have just realised that it doesn’t matter if CSM is active! It only shows up in bios after I’ve cut the power to the PSU and connected again! I have tried the same drive in a Asus Z170m plus and this problem doesn’t happen! what the **ll is going on with the bios..

  35. Hi @pikerlpha,
    Quick question I installed a NVMe M.2 ssd in my MacPro 5.1 PCI slot 4 but disk utility shows the SSD as an external hard drive PCI format which is weird. I’m running El capitan last release.

    Do you know if it is possible to fix it and to enable the TRIM?
    Or this only work under Sierra?


    • DSDT patching on a real Mac is not possible so I assume that you are using the patched kext. And sure. This can also be fixed for El Capitan. Take a look at Help. My NVMe shows up as External… where you can find the patterns:

      Search for..: 0x48, 0x85, 0xC0, 0x74, 0x07, 0x80, 0x8B, 0x00, 0x01, 0x00, 0x00, 0x10
      Replace with: 0x90, 0x90, 0x90, 0x90, 0x90, 0x80, 0x8B, 0x00, 0x01, 0x00, 0x00, 0x10

      In other words. Use a hex editor and make the required changes in: /S*/L*/Extensions/IONVMeFamily.kext/C*/M*/IONVMeFamily. Note that you need to allow unsigned kexts to load, and thus change your SIP setting.

      As for the enabling of TRIM. You can do that with:

      sudo trimforce enable

  36. Thank you pikeralpha, and yes indeed I’m using the patched kext. You solution is just the right one and I assume once edited do I need to remove the patched kext or should I keep it as well?
    What do you mean by C* and M*? Got it C*/M* stand for Contents/MacOS 🙂

    Thank you!

      • Hi Pikeralpha,
        Appreciate your help thank you 🙂 I’ve replaced the kext instead and didn’t work. I’ll try to replace only the binary file.
        When I look at my console I’ve the following message:
        kext signature failure override allowing invalid signature -67061 0xFFFFFFFFFFFEFA0B for kext “/System/Library/Extensions/IONVMeFamily.kext”

      • I still can’t see the PCIe SSD as an internal disk and so trim I guess doesn’t work even if the trim is enable.
        In your opinion what is wrong?

  37. Hi Pikeralpha,

    Have you heard or experienced something similar that the SSD M.2 can’t/doesn’t want to be recognised as an internal device?
    I should try on Sierra 🙂 soon.


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s