Contribute
Register

[Guide] HackrNVMeFamily co-existence with IONVMeFamily using class-code spoof

Status
Not open for further replies.
First, thanks again for taking the time to help me learn....

What files would be the most useful here? Your original post talks about zip'ing up the EFI of the install media, but I have that working. And since Clover injection is primarily disabled on the boot volume (because FakeSMC is present in /Library/Extensions), I don't know what would be helpful here.

You already said you can boot from SATA, right?

Read FAQ, "Problem Reporting"
https://www.tonymacx86.com/threads/faq-read-first-laptop-frequent-questions.164990/
 
I used bash/terminal and cp'd the directories. I can boot from USB (install media). I'll go read the FAQ you linked. The title says laptop, so I didn't read this one...

I'm only interested that you read the "Problem Reporting" section.
Since you can boot from USB, you can use it to gather EFI/Clover from the SSD and get kextcache output (and ioreg).
It is probably best that you provide both EFI/Clover from SSD and from the USB.
The fact that you can boot from USB but not SSD means there is some difference between them...
Need also verbose boot photo... (of failed scenario).
 
I'm only interested that you read the "Problem Reporting" section.
Since you can boot from USB, you can use it to gather EFI/Clover from the SSD and get kextcache output (and ioreg).
It is probably best that you provide both EFI/Clover from SSD and from the USB.
The fact that you can boot from USB but not SSD means there is some difference between them...
Need also verbose boot photo... (of failed scenario).

I'm up and running. I dug into understanding what Unibeast, Multibeast, and Clover were doing, rather than just following multiple guides blindly, and then started over from scratch. I think the error was somewhere in the process when I was copying kexts between the install media and the boot EFI/volume. In one guide it says you can just cp them over (they are just directories), and another guide says you should use a tool, such as KextBeast. It seems as if copying and then rebuilding the cache would be sufficient, but perhaps these tools are doing more behind the scenes than I currently understand.

My original plan was to share the NVME SSD with a Win10 install, but I've just read that Sierra and Win10 don't play nicely with each other on a shared disk; differences in partitioning between Disk Utility and windows storage manager? My machine also has 2x500 GB SATA SSDs, so I've changed my plan and I'm going to use one of them for Win10. I could have saved myself some pain and used that for the Sierra install and skipped the entire NVME driver issue completely, and use the NVME just for Windows... but I'd rather have the faster disk on the Mac anyway.

Next on the list is to try to get the thunderbolt port to work, but that's a different thread.

Thanks again, Rehabman, especially for your patience.
 
I'm up and running. I dug into understanding what Unibeast, Multibeast, and Clover were doing, rather than just following multiple guides blindly, and then started over from scratch. I think the error was somewhere in the process when I was copying kexts between the install media and the boot EFI/volume. In one guide it says you can just cp them over (they are just directories), and another guide says you should use a tool, such as KextBeast. It seems as if copying and then rebuilding the cache would be sufficient, but perhaps these tools are doing more behind the scenes than I currently understand.

My original plan was to share the NVME SSD with a Win10 install, but I've just read that Sierra and Win10 don't play nicely with each other on a shared disk; differences in partitioning between Disk Utility and windows storage manager? My machine also has 2x500 GB SATA SSDs, so I've changed my plan and I'm going to use one of them for Win10. I could have saved myself some pain and used that for the Sierra install and skipped the entire NVME driver issue completely, and use the NVME just for Windows... but I'd rather have the faster disk on the Mac anyway.

Next on the list is to try to get the thunderbolt port to work, but that's a different thread.

Thanks again, Rehabman, especially for your patience.

You can install Windows + macOS/OS X on the same disk, but the disk must be partitioned correctly...
But having them on separate devices is not a bad idea either...
 
Hi RehabMan,
first, thanks a lot for all your work on the topic.

I am trying to update my machine to macOS Sierra on a new NVMe SSD (Samsung 960 Pro 512) but all my attempts failed.

The machine I have is currently running Yosemite 10.10.5 on on a SATA SSD without any issue.

I was able to run the installer to install macOS on the NVMe disk using KextsToPatch (Clover zip attached)
But when rebooting, using either Clover from the installer USB stick or the Clover install I could add from Yosemite on the NVMe disk, It doesn't boot I always get "Still waiting for root device"

I know that in the past we fixed that error using "PCIRootUID=1" or 0 but as I have an install running without this. I supposed the problem lied somewhere else.

The NVMe disk is recognized in yosemite using NVMeGeneric driver, this allowed me to try the following combinations :

- Without DSDT, without KextToPatch (Just to have a base to make the diffs)
- Without DSDT, with KextsToPatch (Same as for the installer)
- With DSDT + Patched Kext (spoofed)
- Without DSDT + Patched Kext + removed IONVMeFamily.kext

The two first cases gave me this :

Code:
[ PCI configuration begin ]
    console relocated to 0x7f91000000
    mcache: 8 CPU(s), 64 bytes CPU cache line size
    mbinit: done [128 MB total pool size, (85/42) split]
    [ PCI configuration end, bridges 9, devices 16 ]
    com.apple.AppleFSCompressionTypeZlib kmod start
    000000.781751 XHC@14000000: AppleUSBXHCIPCI::createPorts: ports limit reached. Not creating the remaining 6 ports
    AppleNVMe Assert Failed ( LBAFormat->LBA_DATA_SIZE == 12 CompleteBuffer file: /BuildRoot/Library/Caches/com.apple.xbs/Sources/IONVMEFamily-234.50.32/IONVMEBlockStorageService.cpp line : 182)
    com.apple.AppleFSCompressionTypeDataless kmod start
    com.apple.AppleFSCompressionTypeZlib load succeeded
    com.apple.AppleFSCompressionTypeDataless load succeeded
    rooting via boot-uuid from /chosen: 151B3C5C-A5BE-3AEE-A057-1CD68A9B0C12
    Waiting on <dict ID="0"><key>IOProviderClass</key><string ID="1">IOResources</string><key>IOResourceMatch</key><string ID="2">boot-uuid-media</string></dict>
    AppleNVMe Assert failed: 0 == (status) ResourceDeallocate file: /BuildRoot/Library/Caches/com.apple.xbs/Sources/IONVMeFamily/IONVMeFamily-234.50.32/IONVMeBlockStorageDevice.cpp line : 273
    virtual bool IONVMeBlockStorageDevice::start(IOService *)::341:failed with status = 0xe00002c7
    AppleNVMe Assert failed: result StartFailureExit file: /BuildRoot/Library/Caches/com.apple.xbs/Sources/IONVMeFamily/IONVMeFamily-234.50.32/IONVMeBlockStorageDevice.cpp line : 3301
    HID: Legacy shim 2
    HID: Legacy shim 2

The two other resulted in this : (Just missing all "AppleNVMe Assert")

Code:
[ PCI configuration end, bridges 9, devices 16 ]
    mcache: 8 CPU(s), 64 bytes CPU cache line size
    mbinit: done [128 MB total pool size, (85/42) split]
    com.apple.AppleFSCompressionTypeZlib kmod start
    000000.781751 XHC@14000000: AppleUSBXHCIPCI::createPorts: ports limit reached. Not creating the remaining 6 ports
    com.apple.AppleFSCompressionTypeDataless kmod start
    com.apple.AppleFSCompressionTypeZlib load succeeded
    com.apple.AppleFSCompressionTypeDataless load succeeded
    rooting via boot-uuid from /chosen: 151B3C5C-A5BE-3AEE-A057-1CD68A9B0C12
    Waiting on <dict ID="0"><key>IOProviderClass</key><string ID="1">IOResources</string><key>IOResourceMatch</key><string ID="2">boot-uuid-media</string></dict>
    HID: Legacy shim 2
    HID: Legacy shim 2

using IORegistryExplorer I was able to get the following informations for the disk
- IODeviceTree:/PCI0@0/RP05@1C,4/PXSX@0
- devID: pci144d,a804

Can you please help me ?
I have no idea what else I can try.
 

Attachments

  • Clover_ssd.zip
    609.2 KB · Views: 71
  • Clover_install.zip
    561.6 KB · Views: 72
using IORegistryExplorer I was able to get the following informations for the disk
- IODeviceTree:/PCI0@0/RP05@1C,4/PXSX@0
- devID: pci144d,a804

So the path is _SB.PCI0.RP05.PXSX.
Follow the guide in post #1 using that path.
 
Hi,
I'm a newbie in Hackintosh. I did my best, but I can't get it to work. I'm a newbie AND French, so there are a few steps in the guide post #1, that I don't fully understand if they are optional or not.

My build:
Mobo: GA-H170M-D3H
CPU: Intel i7 6700K
SSD: Samsung 960 EVO 500Go

I've managed to install Sierra 10.12 on a regular HDD in it.

The ACPI path of my Samsung 960 EVO is "\_SB.PCI0.RP09.PXSX". I'm sorry, I've no screenshot, and I can't boot on Windows anymore.

I've created the SSDT-NVMe-Pcc.aml file with MaciASL, and put it in the EFI partition of my bootable USB drive, in EFI/Clover/ACPI/patched/.

I've not fully understood the "existing _DSM method", so maybe the problem comes from here. I've pasted
Code:
<array>
                <dict>
                    <key>Comment</key>
                    <string>change _DSM to XDSM [...]
</array>
from the config_patches.plist, just below "<key>Patches</key>" in the config.plist file from my bootable USB drive.

I've generated the HackrNVMeFamily file and put it EFI/Clover/kexts/Other in my USB drive.

When I boot from the USB drive, I can't see the SSD in "Disk Utility" during the installation process to format it :(

What did I miss? I would be so happy if someone helped me to make it work. I've attached the EFI/CLOVER folder of the USB drive as requested.

Thank you!
 

Attachments

  • CLOVER.zip
    1.5 MB · Views: 78
Hi,
I'm a newbie in Hackintosh. I did my best, but I can't get it to work. I'm a newbie AND French, so there are a few steps in the guide post #1, that I don't fully understand if they are optional or not.

My build:
Mobo: GA-H170M-D3H
CPU: Intel i7 6700K
SSD: Samsung 960 EVO 500Go

I've managed to install Sierra 10.12 on a regular HDD in it.

The ACPI path of my Samsung 960 EVO is "\_SB.PCI0.RP09.PXSX". I'm sorry, I've no screenshot, and I can't boot on Windows anymore.

I've created the SSDT-NVMe-Pcc.aml file with MaciASL, and put it in the EFI partition of my bootable USB drive, in EFI/Clover/ACPI/patched/.

I've not fully understood the "existing _DSM method", so maybe the problem comes from here. I've pasted
Code:
<array>
                <dict>
                    <key>Comment</key>
                    <string>change _DSM to XDSM [...]
</array>
from the config_patches.plist, just below "<key>Patches</key>" in the config.plist file from my bootable USB drive.

I've generated the HackrNVMeFamily file and put it EFI/Clover/kexts/Other in my USB drive.

When I boot from the USB drive, I can't see the SSD in "Disk Utility" during the installation process to format it :(

What did I miss? I would be so happy if someone helped me to make it work. I've attached the EFI/CLOVER folder of the USB drive as requested.

Thank you!

Problems:
- No SSDT-NVMe-Pcc.aml in ACPI/patched.
- No _DSM->XDSM patch in config.plist/ACPI/patches (use a plist editor and copy/paste)
- No HackrNVMeFamily_10_12_4.kext in EFI/Clover/kexts/Other (in fact you don't even have FakeSMC.kext)

In other words, you have zero of the three components needed to implement this solution...

If you've already installed, you must have FakeSMC.kext on the system volume (or you would fail to boot), so don't forget to install HackrNVMeFamily_10_12_4.kext to the system volume as well. Make sure you use --spoof.
 
So the path is _SB.PCI0.RP05.PXSX.
Follow the guide in post #1 using that path.

I did use that path, I first generated my DSDT using ssdtGen.sh. I modified it to follow the description in post #1 but now I also get the ` AppleNVMe Assert failed:` errors when using the SSDT + spoofed Kext.

Am I missing something or is the 960 Pro not compatible with Sierra ?
 
Status
Not open for further replies.
Back
Top