Contribute
Register

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

Status
Not open for further replies.
Your ioreg is corrupt (wrong version of IORegistryExplorer.app used).
ACPI/origin files missing (you forgot to press F4)
_DSM->XDSM patch missing.
Sorry about that, fixed _DSM->XDSM patch. Also got the ACPI/origin by pressing f4 and installed the correct version of ioregExplorer. New files attached. Thank you!
 

Attachments

  • CLOVER.zip
    7.6 MB · Views: 100
  • OrangeMk3.ioreg
    5.7 MB · Views: 231
Sorry about that, fixed _DSM->XDSM patch. Also got the ACPI/origin by pressing f4 and installed the correct version of ioregExplorer. New files attached. Thank you!

Your SSDT_NVMe-Pcc.aml is wrong.

Your device is attached to a PCI bridge without an ACPI identity.

As per post #1:
Code:
// Inject bogus class-code for NVMe SSD to prevent IONVMeFamily.kext from loading
DefinitionBlock("", "SSDT", 2, "hack", "NVMe-Pcc", 0)
{
    External(_SB.PCI0.BR2A.H000, DeviceObj)
    // create identities for the bridge @8 and SSD0 @0
    Device(_SB.PCI0.BR2A.H000.PBR8)
    {
        Name(_ADR, 0x00080000)  // corresponds to @8 from ioreg
        Device(SSD0) { Name(_ADR, 0) } // corresponds to @0 from ioreg
    }
    // now we can inject the _DSM at the newly created ACPI path
    Method(_SB.PCI0.BR2A.H000.PBR8.SSD0._DSM, 4)
    {
        If (!Arg2) { Return (Buffer() { 0x03 } ) }
        Return(Package()
        {
            "class-code", Buffer() { 0xff, 0x08, 0x01, 0x00 },
            "built-in", Buffer() { 0 },
        })
    }
}
//EOF
 
Your SSDT_NVMe-Pcc.aml is wrong.

Your device is attached to a PCI bridge without an ACPI identity.

As per post #1:
Code:
// Inject bogus class-code for NVMe SSD to prevent IONVMeFamily.kext from loading
DefinitionBlock("", "SSDT", 2, "hack", "NVMe-Pcc", 0)
{
    External(_SB.PCI0.BR2A.H000, DeviceObj)
    // create identities for the bridge @8 and SSD0 @0
    Device(_SB.PCI0.BR2A.H000.PBR8)
    {
        Name(_ADR, 0x00080000)  // corresponds to @8 from ioreg
        Device(SSD0) { Name(_ADR, 0) } // corresponds to @0 from ioreg
    }
    // now we can inject the _DSM at the newly created ACPI path
    Method(_SB.PCI0.BR2A.H000.PBR8.SSD0._DSM, 4)
    {
        If (!Arg2) { Return (Buffer() { 0x03 } ) }
        Return(Package()
        {
            "class-code", Buffer() { 0xff, 0x08, 0x01, 0x00 },
            "built-in", Buffer() { 0 },
        })
    }
}
//EOF
This was it! Thanks a lot! I didn't know what I was looking at in the ioreg so I wasn't sure what a complete ID would look like. Now booting from the nvme and all's well again.
Screen Shot 2017-11-11 at 9.17.02 PM.png
 
I've got a Lenovo M710 Tiny i7-7700 with a 512GB Samsung NVMe drive (PM981 rebranded for Lenovo) and a 500GB WD5000LPLX HDD. I can install High Sierra to the HDD, but not to the NVMe. It gets about half way and then says something about the bless tool not able to bless the filesystem. I've tried both Unibeast and a vanilla install with clover and required kexts to install to NVMe

I've got it booted and running on the HDD, but when I try to copy over to the NVMe via CCC, it gets about 20gb in and then the following shows up in log files

kernel AppleNVMe Assert failed: 0 == (status)
kernel AppleNVMe Assert failed: ( fFatalState == false ) ErrorUnlock file: /BuildRoot/Library/Caches/com.apple.xbs/Sources/IONVMeFamily/IONVMeFamily-356.1.4/IONVMeController.cpp AppleNVMe Assert failed: 0 == (status) line: 4608
kernel ProcessingError
kernel
kernel ProcessingError
kernel file: /BuildRoot/Library/Caches/com.apple.xbs/Sources/IONVMeFamily/IONVMeFamily-356.1.4/IONVMeBlockStorageDevice.cpp
kernel line: 545


I've tried with vanilla IONVMeFamily from original install, IONVMeFamily and hackrnvmefamily both in SLE, just hackrnvmefamily in SLE (removed IONVMeFamily, but no NVMe shows up). Am I supposed to only have hackrnvmefamily and be able to see the NVMe SSD?

Suggestions?
 
Last edited:
I've got a Lenovo M710 Tiny i7-7700 with a 512GB Samsung NVMe drive (PM981 rebranded for Lenovo) and a 500GB WD5000LPLX HDD. I can install High Sierra to the HDD, but not to the NVMe. It gets about half way and then says something about the bless tool not able to bless the filesystem. I've tried both Unibeast and a vanilla install with clover and required kexts to install to NVMe

I've got it booted and running on the HDD, but when I try to copy over to the NVMe via CCC, it gets about 20gb in and then the following shows up in log files

kernel AppleNVMe Assert failed: 0 == (status)
kernel AppleNVMe Assert failed: ( fFatalState == false ) ErrorUnlock file: /BuildRoot/Library/Caches/com.apple.xbs/Sources/IONVMeFamily/IONVMeFamily-356.1.4/IONVMeController.cpp AppleNVMe Assert failed: 0 == (status) line: 4608
kernel ProcessingError
kernel
kernel ProcessingError
kernel file: /BuildRoot/Library/Caches/com.apple.xbs/Sources/IONVMeFamily/IONVMeFamily-356.1.4/IONVMeBlockStorageDevice.cpp
kernel line: 545


I've tried with vanilla IONVMeFamily from original install, IONVMeFamily and hackrnvmefamily both in SLE, just hackrnvmefamily in SLE (removed IONVMeFamily, but no NVMe shows up). Am I supposed to only have hackrnvmefamily and be able to see the NVMe SSD?

Suggestions?

This thread is not for High Sierra (NVMe 512 byte LBA is native).
Post your question to the appropriate desktop forum.
 
Hi RehabMan, recently I got a Samsung PM1725 SSD. Is this disk compatible with the NVME Driver?
Tested with native 10.13 install disk, patched 10.12.6, even do a format under linux by 'nvme format -l2 /dev/nvmexxxxx'. Always got an error like 'AppleNVMe Assert failed'
Look forward to your favourable reply.IMG_1355.JPG
 
Hi RehabMan, recently I got a Samsung PM1725 SSD. Is this disk compatible with the NVME Driver?
Tested with native 10.13 install disk, patched 10.12.6, even do a format under linux by 'nvme format -l2 /dev/nvmexxxxx'. Always got an error like 'AppleNVMe Assert failed'
Look forward to your favourable reply.View attachment 293150

No "Problem Reporting" files attached. Read post #1.

Keep in mind this guide (for the most part) is applicable only to 10.12.x and 10.11.x.
 
I gave this a shot on 10.12.6 with my PM981 and had no luck either. Getting the same error as on High Sierra. @wdk23411 seem to be experiencing the same thing on newer Samsung NVMe SSDs.
 
Repair the disk in Disk Utility.
As for the cause, you would need to provide more information on your system configuration.
Most corruption is caused by incorrectly implemented PM (eg. forgetting to disable hibernation), or use of software such as Paragon HFS+ for Windows.

Long Story short, went back to 10.10.5 because 2nd monitor (VGA) would not allow Sierra to boot up.

Reformatted the M.2 couple weeks ago. All the sudden, 2 files from yesterday went missing, and after reboot, got same M2 message.
Screen Shot 2017-11-30 at 16.11.10.png
while running disk repair:

Screen Shot 2017-11-30 at 16.12.33.png

Hibernate has never been allowed. Paragon is present but I turned it off.

Using the nvme present here: https://www.tonymacx86.com/threads/os-x-driver-for-nvme-m-2-solid-state-drives-released.181387/ as the class code spoof is for post 10.11, right?
 
Long Story short, went back to 10.10.5 because 2nd monitor (VGA) would not allow Sierra to boot up.

AFAIK, no native NVMe kext in 10.10.
Any NVMe thing you're doing on 10.10 is therefore off-topic here.
This topic is only for patched IONVMeFamily.kext (eg. HackrNVMeFamily*.kext).

Paragon is present but I turned it off.

Paragon on Windows?

Using the nvme present here: https://www.tonymacx86.com/threads/os-x-driver-for-nvme-m-2-solid-state-drives-released.181387/ as the class code spoof is for post 10.11, right?

I don't know what you mean "using the nvme present here".
 
Status
Not open for further replies.
Back
Top