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:
<string>pci144d,a804</string>
And to have that replaced with:
<string>pci144d,a802</string>
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.
<key>KextsToPatch</key> <array> <dict> <key>Comment</key> <string>NVMe SSD IONameMatch</string> <key>Disabled</key> <false/> <key>Name</key> <string>IONVMeFamily</string> <key>InfoPlistPatch</key> <true/> <key>Find</key> <data>PHN0cmluZz5wY2kxNDRkLGE4MDQ8L3N0cmluZz4=</data> <key>Replace</key> <data>PHN0cmluZz5wY2kxNDRkLGE4MDI8L3N0cmluZz4=</data> </dict> <dict> <key>Comment</key> <string>IONVMeFamily Pike R. Alpha Patch#01</string> <key>Disabled</key> <false/> <key>Name</key> <string>IONVMeFamily</string> <key>Find</key> <data>hfZ0YUHB5wxJY/++IAAAAA==</data> <key>Replace</key> <data>hfZ0YUHB5wlJY/++IAAAAA==</data> </dict> <dict> <key>Comment</key> <string>IONVMeFamily Pike R. Alpha Patch#02&03</string> <key>Disabled</key> <false/> <key>Name</key> <string>IONVMeFamily</string> <key>Find</key> <data>AAAAg/kMdVhBx4akAAAAABAAAEg=</data> <key>Replace</key> <data>AAAAg/kJdVhBx4akAAAAAAIAAEg=</data> </dict> <dict> <key>Comment</key> <string>IONVMeFamily Pike R. Alpha Patch#04</string> <key>Disabled</key> <false/> <key>Name</key> <string>IONVMeFamily</string> <key>Find</key> <data>SI2G/w8AAEjB6AwPtw+B4Q==</data> <key>Replace</key> <data>SI2G/w8AAEjB6AkPtw+B4Q==</data> </dict> <dict> <key>Comment</key> <string>IONVMeFamily Pike R. Alpha Patch#05&06</string> <key>Disabled</key> <false/> <key>Name</key> <string>IONVMeFamily</string> <key>Find</key> <data>SIHm/w8AAEgB1kiB/v8PAAB3PEg=</data> <key>Replace</key> <data>SIHm/wEAAEgB1kiB/v8BAAB3PEg=</data> </dict> <dict> <key>Comment</key> <string>IONVMeFamily Pike R. Alpha Patch#07&08&09</string> <key>Disabled</key> <false/> <key>Name</key> <string>IONVMeFamily</string> <key>Find</key> <data>DwAAScHuDEmLTQBIictIgeP/DwAAD5XAD7bARAHwg/gCD4W4AAAATI2hABAAAEyJ4EglAPD//0mJjyIBAABJiYcqAQAAQb4AEAAASSneSI0=</data> <key>Replace</key> <data>DwAAScHuCUmLTQBIictIgeP/DwAAD5XAD7bARAHwg/gCD4W4AAAATI2hAAIAAEyJ4EglAPD//0mJjyIBAABJiYcqAQAAQb4AAgAASSneSI0=</data> </dict> <dict> <key>Comment</key> <string>IONVMeFamily Pike R. Alpha Patch#10</string> <key>Disabled</key> <false/> <key>Name</key> <string>IONVMeFamily</string> <key>Find</key> <data>hyoBAAC6ABAAAEgp</data> <key>Replace</key> <data>hyoBAAC6AAIAAEgp</data> </dict> <dict> <key>Comment</key> <string>IONVMeFamily Pike R. Alpha Patch#11</string> <key>Disabled</key> <false/> <key>Name</key> <string>IONVMeFamily</string> <key>Find</key> <data>AABJKdS4ABAAAE2L</data> <key>Replace</key> <data>AABJKdS4AAIAAE2L</data> </dict> <dict> <key>Comment</key> <string>IONVMeFamily Pike R. Alpha Patch#12&13</string> <key>Disabled</key> <false/> <key>Name</key> <string>IONVMeFamily</string> <key>Find</key> <data>TYnXugAQAABFMclIid7oAAAAAE2J+kyLfdBJi4dgAQAATIls2PhJgcUAEAAASYHE</data> <key>Replace</key> <data>TYnXugACAABFMclIid7oAAAAAE2J+kyLfdBJi4dgAQAATIls2PhJgcUAAgAASYHE</data> </dict> <dict> <key>Comment</key> <string>IONVMeFamily Pike R. Alpha Patch#14</string> <key>Disabled</key> <false/> <key>Name</key> <string>IONVMeFamily</string> <key>Find</key> <data>DwAASMHpDGap/w8P</data> <key>Replace</key> <data>DwAASMHpCWap/w8P</data> </dict> <dict> <key>Comment</key> <string>IONVMeFamily Pike R. Alpha Patch#15&16&17&18&19</string> <key>Disabled</key> <false/> <key>Name</key> <string>IONVMeFamily</string> <key>Find</key> <data>QYP4B3dtRIpVEEQPt5+wAAAAQcHjEA+2h7YAAACD4AjB4ApECdiDyAKJhwoBAACJtw4BAABIiZcyAQAAioe2AAAAJAIPtsDB4B0JyImHOgEAAEHB4AhBD7bBRAnAicGByQAQAABFhNIPRMiJjz4BAA==</data> <key>Replace</key> <data>QYP4B3dtRA+2VRBED7efsAAAAEHB4xAPtoe2AAAAg+AIweAKRAnYg8gCiYcKAQAAibcOAQAASImXMgEAAIqHtgAAACQCD7bAweAdCciJhzoBAABBweAIQQ+2wcHgCZCQkJCQkJBECcBECdCJhz4BAA==</data> </dict> <dict> <key>Comment</key> <string>IONVMeFamily Pike R. Alpha Patch#20&21&22&23</string> <key>Disabled</key> <false/> <key>Name</key> <string>IONVMeFamily</string> <key>Find</key> <data>AEE5TMnr5HVOB+mmeHIKS8+CkpFCxsGSjVQ55RGF7HPyMLRAEenCdlw9ABkXy+TC79wzkECAIfgaReSm28x6CQ==</data> <key>Replace</key> <data>AMJYAvbk8/5BhFjxfdTbqbQ3/1ltxsGSjVQ55RGF7HPyMLRAEenCdlwmCld+AkentTJyBbhSN24VAkP5CMx6CQ==</data> </dict> <dict> <key>Comment</key> <string>IONVMeFamily Pike R. Alpha Patch#24 - 51</string> <key>Disabled</key> <false/> <key>Name</key> <string>IONVMeFamily</string> <key>Find</key> <data>BIIBAEnKT7RtSMZmBUXJYiljxJJFkczm2pfZ5IPg1G+cQK7aL5iJtDi/MS7xRfQh4/Cs1uRhuguFiFsVa7a/sXvhr5/UrH6i3DeDuzcrF2X81s+YC/0IEX26bgq/WJnS69bVcqu0JAIr0Gzx4RQ8M4k4WpsrPKhSQlqe2bJnkpbmYV/DpcBTrXJTrq9GtTe4565lM8Nn60z90dTC7lJr3M5AWT4ZL1N0yj/fdzcr1F2oLSkjs3Fs95hGsJlRJ8k6R1i41gNm8YmAjVaUqpRqPI4dCtIuu60VT9WOeyRNla7HlfgurT0vWeAVbGI1rlNGXJ4fPe+wHrxjs1bG0ZOusIF8d5IAAAAA</data> <key>Replace</key> <data>BIIBAFjhf2OXh9C5pDLqAaMZOl8QQ8KDZNVIa9drFKiwvp8Zb1rrYOwRVgvIxJyL5wFhpAKV9CIY9usXBrgiYGahXiaBmWcaDnMAlLu2THdDzI4h3XN/02Dk9uL8RupUJJjhq4dJcZncs8Kd07co2Nml5nvrGUXV9jHJ2EgBMIm2OxjRuuApt0AWauSZ/dgXT1rlc4YcyYXCBRPCUqpm7C7Pcz202/io08M99B4aZvAcUzUv5e54pjCrZrtMFrz2Oh8hQZbFM0vXVKBXLEGAN9hmHe3o51sapwyyHikUZ827nlT+y4zHnWAMc0v7r6R4uQ1+8iaMwaf3gBjIlY8K2tFHkjMAAAAA</data> </dict> </array>
Back to the movie now…
Pingback: NVMeFamily.kext bin patch data – Pike's Universum
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!
thanks!
Xinyu
Yup. Replied with the patched binary. Please, don’t forget to update the device-id match in Info.plist
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.
Ah ok. Almost nobody else here will have the Samsung SM961 😉
About the speed; What model CPU and motherboard are you using?
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 also have the SM961. Can you also help with the patched binary and kext. Thanks!
Sorry, but I do not share (Apple) copyrighted material. You have to use the tools/data provided.
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
Hi,
Please use the script (by rehabman) or the app available from insanelymac.com The bezt chance in getting it to work these days.
Hi,Pike
I have sent a email to you for the patch, looking forward for your reply.
Thanks for your great work
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
Felix
It should be this: **********@yahoo.com
Sorry for editing your post, but there is a reason for not putting it out here.
it works! (samsung sm951)
thanks.
When using the binary, don’t forget to patch the ioNameMatch in the info.plist
the site would be updated with recent information shortly… i can smell it. So stay tuned.
🙂
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=https://postimg.org/image/fzw454g69/][img]https://s32.postimg.org/fzw454g69/P_20160629_235745.jpg[/img][/url]
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
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 Xcode.app 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 !
Ken
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.
lol
Yes indeed, i copied several games on steam(about 50GB) and it’s lightning fast which I just can’t believe, but the Xcode.app and Xcode beta.app 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?
Kudos, great job Pike! Working well on 10.11.5 and a Samsung 950 Pro.
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?
ok and after sleep, it just reboots on my
Asrock x99m Extreme4
but that can be another problem because sleep does not work with the NVMeGeneric, too.
I see, but I don’t think that this is related to NVMe devices. More likely a ACPI tables issue.
I would need an IORegistryExplorer v2 dump to investigate this.
Edit: I checked the IONVMeFamily.kext binary and I see that IONVMeController::InitializePCI() checks property ‘built-in’ and set bit-4 only if found.
After this IONVMeController::SetProperties() checks bit-4 (0x10) and if that bit isn’t set, then you end up with ‘External’.
Hey Pike,
ok I think I understand what you are trying to tell me. My guess, this is a dsdt error telling the IONVMeController that this bit is not set correctly? How can I fix this. I checked ioregs and dsdt but I don’t find it.
It’s behind a pci-bridge and the IONVMeFamily.kext binary fails to locate the built-in property. Add it from a _DSM method in your DSDT or some (new) SSDT. That should do the trick.
for other folks with the same issue, here the ssdt patch:
https://www.dropbox.com/s/w2p5svfxfpw9c0v/SSDT-2.aml?dl=0
Hi Felix,
could you also provide ur ioreg so that I can compare ur ssdt with the ioreg to fix the ‘external’ issue.
Big Thanks!
The SSDT should be enough for you. Is your M.2 sitting behind a PCI bridge?
HI, Pike
my one also shows external on Disk Utility, I’m not sure about it’s whether sitting behind a pic bridge or not(would you mind tell me how check it?). I checked my ioreg, appleNvmeController is under the path ‘pci0@0/exp5@1c,4/pci144d,a804@0’.for the ssdt that Felix provides,I tried without modification and change the scope to_SB_.PCI0.EXP5, but either of them works.
Thanks in advance!
Xinyu
See Help. My NVMe shows up as External…
hi pike,
it turns out that i did some dsdt changes when i was using nvmegeneric.kext(refer to this link http://www.tonymacx86.com/threads/os-x-10-11-el-capitan-setup-guide-for-asus-rampage-v-extreme-x99-haswell-e.188171/#post-1218158),
now it shows internal out of box
sorry for the silly mistake…
😢
Pike it’s working great in 10.11.5
http://imgur.com/a/IB5i9
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.
Note:
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 …
Hello Rehab
What does that mean? We must do a better kext to patch?
same here,
clover bootlog reports: patch #15 and patch #16#17#18#19 are skipped.
I just veryfied it, and it is correct: entry #15 as well as entry#16&17&18&19 now have been combined into just one line as patch#15&16&17&18&19.
Allready send Pike the new patch, tested here with my drives, i have seen no differences between old and new patch, but to be sure i send the new one to Pike to get this post updated.
My fault and i am verry sorry for this mistake.
Hello marc ..so you have edited new kext to patch?
Yes. Just use the latest one (v3) in my blog post.
I think there is still a small but significant mistake:
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.
Thanks!
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.
No worries. We are all humans. But let’s not mess with the patches for BuildCommentRead() or bad things may happen.
Dont worry Marc dont worry , relax relax
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:
IOBlockStorageDriver/Statistics/Errors(Read)
IOBlockStorageDriver/Statistics/Errors(Write)
IOBlockStorageDriver/Statistics/Retries(Read)
IOBlockStorageDriver/Statistics/Retries(Write)
Should all be 0x0 (zero)
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):
#: TYPE NAME SIZE IDENTIFIER
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):
#: TYPE NAME SIZE IDENTIFIER
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!
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
Ok. This is most likely related to data flushing, but I will try to get to the bottom of it.
No, its well known that Speed trops after some time due to thermal trotteling (esp. 850 pro). My sm951 has the same Problem at around 25 Test runs.
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.
Pingback: Help. My NVMe shows up as External… – Pike's Universum
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..
Please e-mail me your IORegistryExplorer dump and I’ll look into it.
@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 🙂
Pike posted my ssdt as clover Patch. Use this.
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
hello … Pike is a serious problem that has noticed rehabman? can it be solved ? I speak of the last two sets that do not clover patch
It appears that everything is fine without the last two patch sets, but I am going to look into it next week. It is now weekend for me and my family.
ok …good week
carmine
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
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:
Giving you:
PHN0cmluZz5wY2kxYjg1LDA2MDE8L3N0cmluZz4=
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.
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:
pci144d,a804
And to have that replaced with:
pci144d,a802
Right??
Very difficult. Plz advice me.
You need to use the device-id and vendor-id of the installed M2/PCIe SSD. Something like pci8086,xxxx Please don’t use the Samsung data.
oh ~ pike
below Eric Taleb Walch ‘s same condition!!
i know that vendor id and device id use by dpcimanager!!
id is pci8086,0953
but!
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….
really…..
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…
Ok. Do you have macOS Sierra running? If yes… do what I posted for Eric.
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.
The kext is loaded and throws no errors (enable debug) on the console?
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 debugMachKernel.sh.
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… 🙂
debugMachKernel.sh 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 …
Done.
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!
Cheers
As long as this kext loads… there won’t be errors from IONVMeFamily.kext
I understand… XRES was related to SSDT-2 (for USB3 it think) but never worked, the file was probably left over and I didn’t notice because everything was running fine.
You can find below a complete boot system.log…
https://dl.dropboxusercontent.com/u/663951/system.log
Please let me know any information you need !
Many thanks, again!
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 com.apple.Boot.plist 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 debugMachKernel.shEdit-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/com.apple.xbs/Sources/IONVMeFamily/IONVMeFamily-234.1.10/IONVMeBlockStorageDevice.cpp
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/com.apple.xbs/Sources/IONVMeFamily/IONVMeFamily-234.1.10/IONVMeBlockStorageDevice.cpp
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/com.apple.xbs/Sources/IONVMeFamily/IONVMeFamily-234.1.10/IONVMeController.cpp
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 com.apple.iokit.IONVMeFamily class IONVMeController is a duplicate;kext com.apple.hack.HackrNVMeFamily already has a class by that name.
23/07/2016 05:01:23,000 kernel[0]: Kext com.apple.iokit.IONVMeFamily start failed (result 0xdc00400a).
23/07/2016 05:01:23,000 kernel[0]: Kext com.apple.iokit.IONVMeFamily failed to load (0xdc008017).
23/07/2016 05:01:23,000 kernel[0]: Failed to load kext com.apple.iokit.IONVMeFamily (error 0xdc008017).
23/07/2016 05:01:23,580 com.apple.kextd[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/com.apple.xbs/Sources/IONVMeFamily/IONVMeFamily-234.1.10/IONVMeBlockStorageDevice.cpp
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/com.apple.xbs/Sources/IONVMeFamily/IONVMeFamily-234.1.10/IONVMeBlockStorageDevice.cpp
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/com.apple.xbs/Sources/IONVMeFamily/IONVMeFamily-234.1.10/IONVMeController.cpp
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…
This is what I see in /var/log/system.log when I kextload it manually:
com.apple.kextd[58]: kext-dev-mode allowing invalid signature -67030 0xFFFFFFFFFFFEFA2A for kext “/Volumes/Dev/patch-nvme/HackrNVMeFamily-10_11_5.kext”
com.apple.kextd[58]: kext signature failure override allowing invalid signature -67030 0xFFFFFFFFFFFEFA2A for kext “/Volumes/Dev/patch-nvme/HackrNVMeFamily-10_11_5.kext”
That is due to the invalid signature of the kext. Nothing wrong with that.
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.
That is the ssdt I use and the ssdt-1 is the one generated by your script on an Ivybridge 6 cores 4930k..
https://dl.dropboxusercontent.com/u/663951/ssdt.dsl
I don’t if it helps. Let me know anything else I can provide….
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.
Thanks
Hi! Basically, just put this file in EFI/Clover/kexts/10.11 folder:
http://www.macvidcards.com/nvme-driver1.html
But you’ll not see the NVMe SSD in disk utility.
That is not the patch this blog post is about. Better is to use the script that RehabMan wrote:
https://github.com/RehabMan/patch-nvme
The short instruction for using the Rehabman’s NVMe patch based upon the Pike code is here:
http://www.tonymacx86.com/threads/storks-gene-build-asus-maximus-viii-gene-i5-6600k-gigabyte-gtx-950.181272/page-53#post-1283085
I’m using Pike’s code with Rehabman’s NVMe patch. The disk speedtest result:
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.
Hardware specs? Your UEFI BIOS supports NVMe boot devices?
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.
I’m pretty sure that there is a simple solution to this problem, but I don’t use Clover. Hopefully someone else (here_ can help you with this.
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.
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?
Let’s keep it simple shall we.
Rehabman wrote a script to create a kext for NVMe https://github.com/RehabMan/patch-nvme and Micky1979 wrote an app https://github.com/Micky1979/NVMeP for it.
Note that I don’t know if Micky1979 solved the kext linkage problem he was having, and thus my advise is to use the script by Rehabman.
Why use a kext instead of Clover patches? Simple. With a kext you don’t have to worry about updates.
Everything works here 🙂
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
This is a basic and unrelated question. Please, do some research. I’m not a general / Clover help desk. Thanks.
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.
Is it possible to install this patch with Ozmosis?
No idea. Never used it. Sorry.
@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
im new in the patching world can you please tell me how to do it? i did try that already i most been doing something wrong
This is my results after apply this patch:
/Users/Raffa/Desktop/1.png
/Users/Raffa/Desktop/2.png
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:
MOBO: GA Z97X-SLI
Samsung M2 SSD 950PRo 256GB
Hi Pike, something courious happend here: http://www.insanelymac.com/forum/topic/312803-patch-for-using-nvme-under-macos-sierra-is-ready/page-12?p=2273449#entry2273449
10.11.6 build 15G1004 (with Security Update) have a new kext and works with old patches created for 10.11.5..
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
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 patch_nvme.sh 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?
Thanks.
PS: Glad you found your phone. Your a lucky man!
I presume that the kext is actually loaded, then the next step is to enable/check the log for errors. Let me know what you find.
Yeah I am. Thanks 😉
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).
NvmeGeneric Kext work on 11.6 …sure???
Hello Pike. Can you send me the patch for try on my SAMSUNG SM951?
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 insanelymac.com).
Thanks, I was able to figure out where to go … https://github.com/RehabMan/patch-nvme, 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
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?
Thanks.
Hoel
Yes. The scripts and app to patch the kext that are floating around should work. As long as your motherboards support it.
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 )
or
-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
Thanks.
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.
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
KextsToPatch
Please, help to solve injection of the patch to clovers config, to boot in to Mac OS Sierra installation with Pikeralpha’s code.
listen to the racer … you told you how to do it is the way ..
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..
Weird. Try a cold boot, warm boot and sleep-wake cycle and then reboot to see if it sees/detects the drive; might be a S3 resume boots script issues.
I just used this data on my 10.11.5 system with a Samsung 960 EVO m.2 and it just works fine. I have about 2000 MB/s read and write. Great!
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?
Thanks!
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
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!
Did you patch /S*/L*/Extensions/IONVMeFamily.kext/C*/M*/IONVMeFamily?
If that’s a yes, then replace the binary (IONVMeFamily) in this kext.
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”
The log output is fine. You’ve allowed unsigned kexts to load.
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?
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.
Thanks!
Yes. That can happen. See also Help. Mu NVMe shows up as External….
Note that some devices are hidden behind PCI bridge(s) and then the SSDT route is a bit more complicated than my example.