Jump to content

Patch for using NVMe under macOS Sierra is ready.


1,382 posts in this topic

Recommended Posts

 

Have been having a few issues trying to get my Samsung 960 EVO 250gb visible in 10.12.5. Running on a GA-Z170X-UD3 board on a regular SATA SSD for now.

 

Tried Pikers Clover config patch and get a panic attached with output attached below.

 

Tried the HackrNVMeFamily patch with and without the --spoof argument and it just reboots at the Apple Logo with no error text. Double checked BIOS settings. Don't have any DSDT patches, and a relatively vanilla config.plist.

 

Here's my config.plist:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>ACPI</key>
	<dict>
		<key>DSDT</key>
		<dict>
			<key>Debug</key>
			<false/>
			<key>DropOEM_DSM</key>
			<false/>
			<key>Fixes</key>
			<dict>
				<key>AddDTGP_0001</key>
				<false/>
				<key>AddHDMI_8000000</key>
				<false/>
				<key>AddIMEI_80000</key>
				<false/>
				<key>AddMCHC_0008</key>
				<false/>
				<key>AddPNLF_1000000</key>
				<false/>
				<key>DeleteUnused_400000</key>
				<false/>
				<key>FIX_ACST_4000000</key>
				<false/>
				<key>FIX_ADP1_800000</key>
				<false/>
				<key>FIX_INTELGFX_100000</key>
				<false/>
				<key>FIX_RTC_20000</key>
				<false/>
				<key>FIX_S3D_2000000</key>
				<false/>
				<key>FakeLPC_0020</key>
				<false/>
				<key>FiX_TMR_40000</key>
				<false/>
				<key>FiX_WAK_200000</key>
				<false/>
				<key>FixAirport_4000</key>
				<false/>
				<key>FixDarwin_0002</key>
				<false/>
				<key>FixDisplay_0100</key>
				<false/>
				<key>FixFirewire_0800</key>
				<false/>
				<key>FixHDA_8000</key>
				<false/>
				<key>FixHPET_0010</key>
				<false/>
				<key>FixIDE_0200</key>
				<false/>
				<key>FixIPIC_0040</key>
				<false/>
				<key>FixLAN_2000</key>
				<false/>
				<key>FixRegions_10000000</key>
				<false/>
				<key>FixSATA_0400</key>
				<false/>
				<key>FixSBUS_0080</key>
				<false/>
				<key>FixShutdown_0004</key>
				<false/>
				<key>FixUSB_1000</key>
				<false/>
				<key>NewWay_80000000</key>
				<false/>
			</dict>
			<key>Name</key>
			<string>DSDT.aml</string>
			<key>Patches</key>
			<array>
				<dict>
					<key>Comment</key>
					<string>Rename HDAS to HDEF</string>
					<key>Find</key>
					<data>
					SERBUw==
					</data>
					<key>Replace</key>
					<data>
					SERFRg==
					</data>
				</dict>
			</array>
			<key>ReuseFFFF</key>
			<false/>
		</dict>
		<key>HaltEnabler</key>
		<false/>
		<key>SSDT</key>
		<dict>
			<key>DropOem</key>
			<false/>
			<key>Generate</key>
			<dict>
				<key>CStates</key>
				<false/>
				<key>PStates</key>
				<false/>
			</dict>
		</dict>
	</dict>
	<key>Boot</key>
	<dict>
		<key>Arguments</key>
		<string>dart=0</string>
		<key>DefaultVolume</key>
		<string>Sierra</string>
		<key>Legacy</key>
		<string>PBR</string>
		<key>Log</key>
		<true/>
		<key>Secure</key>
		<false/>
		<key>Timeout</key>
		<integer>3</integer>
		<key>XMPDetection</key>
		<string>NO</string>
	</dict>
	<key>Devices</key>
	<dict>
		<key>Audio</key>
		<dict>
			<key>Inject</key>
			<string>1</string>
		</dict>
		<key>FakeID</key>
		<dict>
			<key>ATI</key>
			<string>0x0</string>
			<key>IMEI</key>
			<string>0x0</string>
			<key>IntelGFX</key>
			<string>0x0</string>
			<key>LAN</key>
			<string>0x0</string>
			<key>NVidia</key>
			<string>0x0</string>
			<key>SATA</key>
			<string>0x0</string>
			<key>WIFI</key>
			<string>0x0</string>
			<key>XHCI</key>
			<string>0x0</string>
		</dict>
		<key>USB</key>
		<dict>
			<key>FixOwnership</key>
			<false/>
			<key>Inject</key>
			<false/>
		</dict>
		<key>UseIntelHDMI</key>
		<false/>
	</dict>
	<key>DisableDrivers</key>
	<array>
		<string>Nothing</string>
	</array>
	<key>GUI</key>
	<dict>
		<key>Hide</key>
		<array>
			<string>Windows</string>
			<string>\EFI\BOOT\BOOTX64.EFI</string>
		</array>
		<key>Language</key>
		<string>en:0</string>
		<key>Mouse</key>
		<dict>
			<key>Enabled</key>
			<true/>
			<key>Speed</key>
			<integer>8</integer>
		</dict>
		<key>Scan</key>
		<dict>
			<key>Entries</key>
			<true/>
			<key>Legacy</key>
			<string>First</string>
			<key>Tool</key>
			<true/>
		</dict>
		<key>ScreenResolution</key>
		<string>1920x1080</string>
		<key>Theme</key>
		<string>embedded</string>
	</dict>
	<key>Graphics</key>
	<dict>
		<key>Inject</key>
		<dict>
			<key>ATI</key>
			<false/>
			<key>Intel</key>
			<true/>
			<key>NVidia</key>
			<false/>
		</dict>
	</dict>
	<key>KernelAndKextPatches</key>
	<dict>
		<key>#FakeCPUID</key>
		<string>0x010676</string>
		<key>AppleRTC</key>
		<true/>
		<key>AsusAICPUPM</key>
		<true/>
		<key>KernelCpu</key>
		<false/>
		<key>KernelHaswellE</key>
		<false/>
		<key>KernelLapic</key>
		<false/>
		<key>KernelPm</key>
		<true/>
		<key>KextsToPatch</key>
		<array>
			<dict>
				<key>Comment</key>
				<string>t1-10.12-AppleHDA/Realtek ALC...</string>
				<key>Find</key>
				<data>
				ihnUEQ==
				</data>
				<key>Name</key>
				<string>AppleHDA</string>
				<key>Replace</key>
				<data>
				AAAAAA==
				</data>
			</dict>
			<dict>
				<key>Comment</key>
				<string>t1-10.9-10.12-AppleHDA/Realtek ALC1150</string>
				<key>Find</key>
				<data>
				ixnUEQ==
				</data>
				<key>Name</key>
				<string>AppleHDA</string>
				<key>Replace</key>
				<data>
				AAnsEA==
				</data>
			</dict>
			<dict>
				<key>Comment</key>
				<string>t1-AppleHDA/Resources/xml>zml</string>
				<key>Find</key>
				<data>
				eG1sLnps
				</data>
				<key>Name</key>
				<string>AppleHDA</string>
				<key>Replace</key>
				<data>
				em1sLnps
				</data>
			</dict>
			<dict>
				<key>Comment</key>
				<string>External icons patch</string>
				<key>Find</key>
				<data>
				RXh0ZXJuYWw=
				</data>
				<key>Name</key>
				<string>AppleAHCIPort</string>
				<key>Replace</key>
				<data>
				SW50ZXJuYWw=
				</data>
			</dict>
		</array>
	</dict>
	<key>RtVariables</key>
	<dict>
		<key>BooterConfig</key>
		<string>0x28</string>
		<key>CsrActiveConfig</key>
		<string>0x3</string>
	</dict>
	<key>SMBIOS</key>
	<dict>
		<key>BiosReleaseDate</key>
		<string>09/03/2013</string>
		<key>BiosVendor</key>
		<string>Apple Inc.</string>
		<key>BiosVersion</key>
		<string>IM142.88Z.0118.B00.1309031249</string>
		<key>Board-ID</key>
		<string>Mac-27ADBB7B4CEE8E61</string>
		<key>BoardManufacturer</key>
		<string>Apple Inc.</string>
		<key>BoardType</key>
		<integer>10</integer>
		<key>ChassisAssetTag</key>
		<string>iMac-Aluminum</string>
		<key>ChassisManufacturer</key>
		<string>Apple Inc.</string>
		<key>ChassisType</key>
		<string>13</string>
		<key>Family</key>
		<string>iMac</string>
		<key>Manufacturer</key>
		<string>Apple Inc.</string>
		<key>Mobile</key>
		<false/>
		<key>ProductName</key>
		<string>iMac14,2</string>
		<key>SerialNumber</key>
		<string>C02ND17MFLHH</string>
		<key>Trust</key>
		<false/>
		<key>Version</key>
		<string>1.0</string>
	</dict>
	<key>SystemParameters</key>
	<dict>
		<key>InjectKexts</key>
		<string>YES</string>
		<key>InjectSystemID</key>
		<true/>
	</dict>
</dict>
</plist>

 

My recommendation: Follow the full class-code spoof/HackrNVMeFamily guide as linked from my patch-nvme README.

Link to comment
Share on other sites

Okay, so I went back to the original post (not the readme on GitHub) and put in the class code to generate the AML file. It booted and recognized the drive and I was able to format it in Disk Utility. But when I cloned (CCC) it wouldn't boot to clover from the NVMe drive and I had to boot off the SATA drive (though I am able to boot to the NVMe drive using the SATA Clover).

 

I also installed Clover to the NVMe drive and copied the SATA EFI to it. But whenever I try to boot off the NVMe drive it acts like there is no bootloader on it, asking me to insert Install Media.

 

Any tips? Motherboard is GA-Z170X-UD3

 

Thanks for the help!!

Link to comment
Share on other sites

Okay, so I went back to the original post (not the readme on GitHub) and put in the class code to generate the AML file. It booted and recognized the drive and I was able to format it in Disk Utility. But when I cloned (CCC) it wouldn't boot to clover from the NVMe drive and I had to boot off the SATA drive (though I am able to boot to the NVMe drive using the SATA Clover).

 

I also installed Clover to the NVMe drive and copied the SATA EFI to it. But whenever I try to boot off the NVMe drive it acts like there is no bootloader on it, asking me to insert Install Media.

 

Any tips? Motherboard is GA-Z170X-UD3

 

Thanks for the help!!

 

Make sure you have the whole HackrNVMeFamily setup (config.plist settings, SSDT_NVMe-Pcc.aml, HackrNVMeFamily itself) on the EFI partition which you're booting Clover from.

Also, if you installed FakeSMC.kext to the system volume (likely) and have config.plist/SystemParameters/InjectKexts=Detect (also likely), keep in mind that EFI/Clover/kexts is ignored... so HackrNVMeFamily must also be installed to the system volume (just like FakeSMC.kext).

 

But it sounds somewhat like you neglected to install Clover to your NVMe drive...

Link to comment
Share on other sites

You cannot use HackrNVMeFamily during installation without doing the class-code spoof.

And you should really check if the Plextor can be changed to 4k LBA (see link from patch-nvme README into this thread...)

I'm trying to migrate my current hackintosh to nvme without installation. 

Link to comment
Share on other sites

I'm trying to migrate my current hackintosh to nvme without installation. 

Certainly possible.  But you must configure your Clover correctly for the class-code spoof.

Link to comment
Share on other sites

Just a general question. Im using a Corsiar MP500 250GB NVMe drive. I use the HackrNvmeFamily.kext in Clover/kexts/10.12 and also use the SSDT-NVMe-Pcc.aml in clover patched. All plist patches in kext to patch are removed and NVMe works flawless as internal as usual. "I dont use the _DSM-XDSM patch due to using a custom DSDT in clover patched" Anyways usual write and read speeds are 1239mb write and 2253read but from time to time my write speeds will fall all the way down to 200mb write speeds. And they will stay there for a minute or so. Then back up to normal speeds. Is this normal? Or is there something im doing wrong somewhere? 

CLOVER.zip

Link to comment
Share on other sites

So I went through the topic and I have to admit i'm a bit confused.

Could someone sum up what is currently required to install macos the vanilla way on a Samsung 960 Pro NVMe drive?

Thanks!

 

My way to do it: First install clover and system on sata HDD, boot in, patch NVMe, made it visible to disk utility and create partitions. Then install Clover on NVMe and copy clover EFI from sata HDD, also carbon copy system. Then boot from NVMe. Possibly it's not the most short way, but it works for me.

Link to comment
Share on other sites

Just a general question. Im using a Corsiar MP500 250GB NVMe drive. I use the HackrNvmeFamily.kext in Clover/kexts/10.12 and also use the SSDT-NVMe-Pcc.aml in clover patched. All plist patches in kext to patch are removed and NVMe works flawless as internal as usual. "I dont use the _DSM-XDSM patch due to using a custom DSDT in clover patched" Anyways usual write and read speeds are 1239mb write and 2253read but from time to time my write speeds will fall all the way down to 200mb write speeds. And they will stay there for a minute or so. Then back up to normal speeds. Is this normal? Or is there something im doing wrong somewhere? 

 

Normal.  Probably throttling due to heat issues, or just the SSD firmware catching up with requests.

  • Like 1
Link to comment
Share on other sites

So I went through the topic and I have to admit i'm a bit confused.

Could someone sum up what is currently required to install macos the vanilla way on a Samsung 960 Pro NVMe drive?

Thanks!

Hey I can share my aml file with you later today.

 

Also thanks to Rehabman for his amazing support.

 

I was able to get the nvme drive to UFI boot by doing a stand-alone clover install. Also ##### will mess things up and boot you to prohibitory so you should make a ##### installer and add the .aml to ACPI>Patch folder and Hackr kext to other kexts folder.

 

From there I copied the ##### config. And am manually patching audio, graphics, etc.

 

 

Everything #### is from the site that shall not be named /politics.

  • Like 1
Link to comment
Share on other sites

Can anyone confirm whether the Samsung 960 pro is formattable with 4K sectors? I've heard that my current drive (950 pro) is not, but I'm extremely interested by this native ionvmefamily approach.

 

I does not seen such option when mounted it under linux.

Link to comment
Share on other sites

Just an update. I have a WD-Black NVMe drive which is (in theory) capable of being formatted in 4Kb sector. But I can't do it, as I get a permission denied error.

 

I have opened a ticket to WD and waiting for their response. As soon as I get their feedback, I will let you know.

 

In the meantime, it works under MacOS. I just edited config.plist with the code lines, no need to use the hack. I don't understand why, but it's working.

Link to comment
Share on other sites

In the meantime, it works under MacOS. I just edited config.plist with the code lines, no need to use the hack. I don't understand why, but it's working.

 

KextsToPatch is effective.  But a bit dangerous...  First, you have to be certain you have the correct patches for the version of IONVMeFamily you have.  And in the case of an update, you must be sure you have both the set of patches for the current version as well as the updated version, selected via MatchOS or MatchBuild.  It can get tricky.

  • Like 1
Link to comment
Share on other sites

KextsToPatch is effective. But a bit dangerous... First, you have to be certain you have the correct patches for the version of IONVMeFamily you have. And in the case of an update, you must be sure you have both the set of patches for the current version as well as the updated version, selected via MatchOS or MatchBuild. It can get tricky.

Yep! I know.

 

Fingers crossed in every update (and a backup, of course).

Link to comment
Share on other sites

Yep! I know.

 

Fingers crossed in every update (and a backup, of course).

 

If you are to use KextsToPatch, crossed fingers will not help.

My suggestion:

- wait for new patches to be confirmed before updating

- once they are, enter them in your config.plist with the appropriate MatchBuild or MatchOS specification

- make sure old patches are marked with the appropriate MatchBuild or MatchOS specification

 

The class-code spoof an HackrNVMeFamily is simpler... once setup...

Link to comment
Share on other sites

If you are to use KextsToPatch, crossed fingers will not help.

My suggestion:

- wait for new patches to be confirmed before updating

- once they are, enter them in your config.plist with the appropriate MatchBuild or MatchOS specification

- make sure old patches are marked with the appropriate MatchBuild or MatchOS specification

 

The class-code spoof an HackrNVMeFamily is simpler... once setup...

I know HackrNVMeFamily is simpler, but I cannot do it. I just follow the instructions and doesn't work for me.

Link to comment
Share on other sites

Do you follow all steps from guide, including SSDT patch?

 

I guess that might be my mistake then, no. I fallowed the ReadMe and i don't see anything about a SSDT patch, can you point me int he right direction please? Sorry I'm noob at this.

Link to comment
Share on other sites

I guess that might be my mistake then, no. I fallowed the ReadMe and i don't see anything about a SSDT patch, can you point me int he right direction please? Sorry I'm noob at this.

 

If you read this readme, it contain some links:

 

 

 

10.12 UPDATE

By tricking the system, we can prevent IONVMeFamily.kext from loading. It involves injecting a fake "class-code" such that the IOPCIClassMatch in IONVMeFamily's Info.plist no longer matches.

With this technique, HackrNVMeFamily and IONVMeFamily can co-exist. Applies to installation scenarios and to post-install.

See here for further details: http://www.insanelymac.com/forum/topic/312803-patch-for-using-nvme-under-macos-sierra-is-ready/page-29?do=findComment&comment=2322636

Or here: https://www.tonymacx86.com/threads/guide-hackrnvmefamily-co-existence-with-ionvmefamily-using-class-code-spoof.210316/

  • Like 1
Link to comment
Share on other sites

Hey,

 

Can anyone confirm whether the Samsung 960 pro is formattable with 4K sectors? I've heard that my current drive (950 pro) is not, but I'm extremely interested by this native ionvmefamily approach.

 

Samsung 960 EVO not support 4K sector

PS With patches works fine.

mkuzminov@debian:~$ sudo smartctl -a /dev/nvme0
<<skip>>
Supported LBA Sizes (NSID 0x1)
Id Fmt  Data  Metadt  Rel_Perf
 0 +     512       0         0
<<skip>>
Link to comment
Share on other sites

In 10.13 for Plextor only need this patch:

<dict>
				<key>Comment</key>
				<string>IONVMeFamily Preferred Block Size 0x10 -> 0x01 (c) Pike R. Alpha</string>
				<key>Disabled</key>
				<false/>
				<key>Find</key>
				<data>
				9sEQD4VBAQAA
				</data>
				<key>Name</key>
				<string>IONVMeFamily</string>
				<key>Replace</key>
				<data>
				9sEBD4UcAQAA
				</data>
			</dict>
			<dict>
				<key>Comment</key>
				<string>external Icon</string>
				<key>Disabled</key>
				<false/>
				<key>Find</key>
				<data>
				SIXAdAeAiyA=
				</data>
				<key>Name</key>
				<string>IONVMeFamily</string>
				<key>Replace</key>
				<data>
				SIXAZpCAiyA=
				</data>
			</dict>

  • Like 2
Link to comment
Share on other sites

 Share

×
×
  • Create New...