Contribute
Register

OS X Driver for NVMe M.2 Solid State Drives Released

Status
Not open for further replies.
Ok, so I've reinstalled Sierra on the NVMe drive.

Multibeast > Bootloaders > Clover UEFI mode
Mounted NVMe EFI via clover configurator
Pasted SSDT-NVMe-Pcc in the NVMe EFI/CLOVER/ACPI/patched

Opened nvme EFI config plist in clover configurator
ACPI > DSDT patches:
Comment: Change all _DSM to XDSM
Find: <5f44534d>
Replace: <5844534d>
Saved.

put the folder patch-nvme-master in downloads and ran these terminal commands:
cd ~/Downloads/patch-nvme-master
./patch_nvme.sh --spoof 10_12_3

Opened kext wizard
Instalation tab > Dragged the created HackrNVMeFamily-10_12_3.kext in there (s/l/e) and installed
Then on the first tab I clicked repair disk permissions.

Then with my 2 ssd's and the USB instal drive connected I rebooted.
Got to clover boot screen and chose nvme drive. It took a while but it booted!
Then I removed the usb stick, shut down. When I tried to boot again I can't get in the nvme drive anymore.
Disconnected the SATA drive aswel and tried to boot in the nvme.

Verbose is attached.
What am I doing wrong?
 

Attachments

  • IMG_0866.JPG.jpeg
    IMG_0866.JPG.jpeg
    1.1 MB · Views: 130
Ok, so I've reinstalled Sierra on the NVMe drive.

Multibeast > Bootloaders > Clover UEFI mode
Mounted NVMe EFI via clover configurator
Pasted SSDT-NVMe-Pcc in the NVMe EFI/CLOVER/ACPI/patched

Opened nvme EFI config plist in clover configurator
ACPI > DSDT patches:
Comment: Change all _DSM to XDSM
Find: <5f44534d>
Replace: <5844534d>
Saved.

put the folder patch-nvme-master in downloads and ran these terminal commands:
cd ~/Downloads/patch-nvme-master
./patch_nvme.sh --spoof 10_12_3

Opened kext wizard
Instalation tab > Dragged the created HackrNVMeFamily-10_12_3.kext in there (s/l/e) and installed
Then on the first tab I clicked repair disk permissions.

Then with my 2 ssd's and the USB instal drive connected I rebooted.
Got to clover boot screen and chose nvme drive. It took a while but it booted!
Then I removed the usb stick, shut down. When I tried to boot again I can't get in the nvme drive anymore.
Disconnected the SATA drive aswel and tried to boot in the nvme.

Verbose is attached.
What am I doing wrong?

No EFI/Clover attached.
 
No EFI/Clover attached.
I couldn't do that, because I couldn't get into Sierra to copy the EFI/clover..

Just did a fresh install again. Could my mistake be that im using:


// Inject bogus class-code for NVMe SSD to prevent IONVMeFamily.kext from loading
DefinitionBlock("", "SSDT", 2, "hack", "NVMe-Pcc", 0)
{
External(_SB.PCI0.P0P4, DeviceObj)
Device(_SB.PCI0.P0P4.SSD0) { Name(_ADR, 0) } // adding SSD0 identity under _SB.PCI0.P0P4
Method(_SB.PCI0.P0P4.SSD0._DSM, 4)
{
If (!Arg2) { Return (Buffer() { 0x03 } ) }
Return(Package()
{
"class-code", Buffer() { 0xff, 0x08, 0x01, 0x00 },
"built-in", Buffer() { 0 },
})
}
}
//EOF

Your guide mentions that the code below is for Special injections required for 10.11.x and Samsung 960 EVO. I ignored this code because I'm on 10.12.3. Could this be the problem? That im supposed to use the bottom one instead of the top one? If I enter the bottom code in MaciASL and compile, ill get an error. "Input file does not appear to be an ASL or data table source file".


// Inject bogus class-code for NVMe SSD to prevent IONVMeFamily.kext from loading
// also inject "compatible", "IOName", and "name" such that 10.11.x IONVMeFamily
// does not match on pci144d,a804 (Samsung 960 EVO)
DefinitionBlock("", "SSDT", 2, "hack", "NVMe-Pcc", 0)
{
External(_SB.PCI0.RP13.PXSX, DeviceObj)
Method(_SB.PCI0.RP13.PXSX._DSM, 4)
{
If (!Arg2) { Return (Buffer() { 0x03 } ) }
Return(Package()
{
"class-code", Buffer() { 0xff, 0x08, 0x01, 0x00 },
"built-in", Buffer() { 0 },
"compatible", Buffer() { "pci144d,a801" },
"IOName", "pci144d,a801",
"name", Buffer() { "pci144d,a801" },
})
}
}
//EOF
 
Last edited:
I couldn't do that, because I couldn't get into Sierra to copy the EFI/clover..

Use USB to boot. Collect failed EFI/Clover. Attach.

Just did a fresh install again. Could my mistake be that im using:


// Inject bogus class-code for NVMe SSD to prevent IONVMeFamily.kext from loading
DefinitionBlock("", "SSDT", 2, "hack", "NVMe-Pcc", 0)
{
External(_SB.PCI0.P0P4, DeviceObj)
Device(_SB.PCI0.P0P4.SSD0) { Name(_ADR, 0) } // adding SSD0 identity under _SB.PCI0.P0P4
Method(_SB.PCI0.P0P4.SSD0._DSM, 4)
{
If (!Arg2) { Return (Buffer() { 0x03 } ) }
Return(Package()
{
"class-code", Buffer() { 0xff, 0x08, 0x01, 0x00 },
"built-in", Buffer() { 0 },
})
}
}
//EOF

Your guide mentions that the code below is for Special injections required for 10.11.x and Samsung 960 EVO. I ignored this code because I'm on 10.12.3. Could this be the problem? That im supposed to use the bottom one instead of the top one? If I enter the bottom code in MaciASL and compile, ill get an error. "Input file does not appear to be an ASL or data table source file".


// Inject bogus class-code for NVMe SSD to prevent IONVMeFamily.kext from loading
// also inject "compatible", "IOName", and "name" such that 10.11.x IONVMeFamily
// does not match on pci144d,a804 (Samsung 960 EVO)
DefinitionBlock("", "SSDT", 2, "hack", "NVMe-Pcc", 0)
{
External(_SB.PCI0.RP13.PXSX, DeviceObj)
Method(_SB.PCI0.RP13.PXSX._DSM, 4)
{
If (!Arg2) { Return (Buffer() { 0x03 } ) }
Return(Package()
{
"class-code", Buffer() { 0xff, 0x08, 0x01, 0x00 },
"built-in", Buffer() { 0 },
"compatible", Buffer() { "pci144d,a801" },
"IOName", "pci144d,a801",
"name", Buffer() { "pci144d,a801" },
})
}
}
//EOF

You seem conflicted over the correct ACPI path.
One of those uses _SB.PCI0.POP4 and injects the SSD0 device.
The second uses _SB.PCI0.RP13.PXSX.
Both cannot be right.

The second code you mention compiles fine with ACPI 6.1 (my version of MaciASL).
 
Use USB to boot. Collect failed EFI/Clover. Attach.



You seem conflicted over the correct ACPI path.
One of those uses _SB.PCI0.POP4 and injects the SSD0 device.
The second uses _SB.PCI0.RP13.PXSX.
Both cannot be right.

The second code you mention compiles fine with ACPI 6.1 (my version of MaciASL).

Ah your right, that was just a bad copy/paste action. The correct path is: _SB.PCI0.RP13.PXSX. This one I also used, just copyd wrong code in the post above.

Trying to boot now from USB > force inject kexts, but that isn't working..
 
Trying to boot now from USB > force inject kexts, but that isn't working..

Boot verbose (from USB, force kext inject), attach photo. Attach EFI/Clover folder (from USB) as ZIP (omit 'themes' folder).
 
Boot verbose (from USB, force kext inject), attach photo. Attach EFI/Clover folder (from USB) as ZIP (omit 'themes' folder).
Ok.. well I think im getting tired.. Been doing "this" literally the whole day. And im loosing focus.

I inserted USB, in clover pressed space and selected boot verbose and inject kexts, return, selected the nvme disk and it booted in Sierra. Attached is my efi/clover. I couldn't take photo of verbose because it went to fast and didn't get any errors.

Any sign there that im doing anything wrong? Trying 1 more thing tonight, replacing my nvme efi/clover/acpi/patched SSDT with the one below. That compiled without errors on my MacBook Pro.

I'm going to bed after this test, checking in again tomorrow. And again, RehabMan, thanks for all the help and putting up with a "noob". I really appreciate your help. Thanks!

--- New SSDT-NVMe-Pcc.aml in nvme clover/acpi/patched

// Inject bogus class-code for NVMe SSD to prevent IONVMeFamily.kext from loading
// also inject "compatible", "IOName", and "name" such that 10.11.x IONVMeFamily
// does not match on pci144d,a804 (Samsung 960 EVO)
DefinitionBlock("", "SSDT", 2, "hack", "NVMe-Pcc", 0)
{
External(_SB.PCI0.RP13.PXSX, DeviceObj)
Method(_SB.PCI0.RP13.PXSX._DSM, 4)
{
If (!Arg2) { Return (Buffer() { 0x03 } ) }
Return(Package()
{
"class-code", Buffer() { 0xff, 0x08, 0x01, 0x00 },
"built-in", Buffer() { 0 },
"compatible", Buffer() { "pci144d,a801" },
"IOName", "pci144d,a801",
"name", Buffer() { "pci144d,a801" },
})
}
}
//EOF
 

Attachments

  • CLOVER.zip
    2.5 MB · Views: 91
Ok.. well I think im getting tired.. Been doing "this" literally the whole day. And im loosing focus.

I inserted USB, in clover pressed space and selected boot verbose and inject kexts, return, selected the nvme disk and it booted in Sierra. Attached is my efi/clover. I couldn't take photo of verbose because it went to fast and didn't get any errors.

Any sign there that im doing anything wrong? Trying 1 more thing tonight, replacing my nvme efi/clover/acpi/patched SSDT with the one below. That compiled without errors on my MacBook Pro.

I'm going to bed after this test, checking in again tomorrow. And again, RehabMan, thanks for all the help and putting up with a "noob". I really appreciate your help. Thanks!

--- New SSDT-NVMe-Pcc.aml in nvme clover/acpi/patched

// Inject bogus class-code for NVMe SSD to prevent IONVMeFamily.kext from loading
// also inject "compatible", "IOName", and "name" such that 10.11.x IONVMeFamily
// does not match on pci144d,a804 (Samsung 960 EVO)
DefinitionBlock("", "SSDT", 2, "hack", "NVMe-Pcc", 0)
{
External(_SB.PCI0.RP13.PXSX, DeviceObj)
Method(_SB.PCI0.RP13.PXSX._DSM, 4)
{
If (!Arg2) { Return (Buffer() { 0x03 } ) }
Return(Package()
{
"class-code", Buffer() { 0xff, 0x08, 0x01, 0x00 },
"built-in", Buffer() { 0 },
"compatible", Buffer() { "pci144d,a801" },
"IOName", "pci144d,a801",
"name", Buffer() { "pci144d,a801" },
})
}
}
//EOF

You don't have HackrNVMeFamily-10_12_3.kext in EFI/Clover/kexts/Other.
It means you won't be able to inject it.
It means if you didn't install it to your system partition, your NVMe device will not work.

If you actually have it installed (and it is correctly generated with --spoof, matching md5 sums), then it could be your current issue is something other than an NVMe issue. It seems you're implying no NVMe issue because otherwise you would get "still waiting for root device".

Perhaps a graphics issue?
 
You don't have HackrNVMeFamily-10_12_3.kext in EFI/Clover/kexts/Other.
It means you won't be able to inject it.
It means if you didn't install it to your system partition, your NVMe device will not work.

If you actually have it installed (and it is correctly generated with --spoof, matching md5 sums), then it could be your current issue is something other than an NVMe issue. It seems you're implying no NVMe issue because otherwise you would get "still waiting for root device".

Perhaps a graphics issue?

After my previous post I put the HackrNVMeFamily-10_12_3.kext in EFI/Clover/kexts/Other
Updated my SSDT-NVMe-Pcc.aml in nvme clover/acpi/patched with the code from my last post

I'm assuming kext wizard installed the HackrNVMeFamily-10_12_3.kext correctly to /s/l/e. When creating the spoof I got indeed matching md5 sums.

Rebooted and again, stuck on 90% loading bar. Booted again with verbose and force inject kexts (without USB) and got this verbose screen (attached). Indeed stating:
[iGPU] Graphics driver failed to load: could not register with Framebuffer driver!
busy timeout[01], (60s), kexts wait (0): 'AppleACPICPU'
busy timeout[02], (60s), kexts wait (0): 'AppleACPICPU'
IOConsoleUsers: time(0) 0->0, Lin 0, llk1,
IOConsoleUsers: gIOScreenLockState 3, hs 0, bs 0, now 0, sm 0x0

And this is the end state I guess.. im running a fresh instal, monitor connected via VGA to my motherboard (za-170x-ud3, i7 6700k). Has this something to do with inject intel orso? Or is there any other error which im missing?
 

Attachments

  • IMG_0868.JPG.jpeg
    IMG_0868.JPG.jpeg
    1.3 MB · Views: 148
After my previous post I put the HackrNVMeFamily-10_12_3.kext in EFI/Clover/kexts/Other
Updated my SSDT-NVMe-Pcc.aml in nvme clover/acpi/patched with the code from my last post

With any change, you must provide new files. I cannot guess about what you're actually doing.

I'm assuming kext wizard installed the HackrNVMeFamily-10_12_3.kext correctly to /s/l/e. When creating the spoof I got indeed matching md5 sums.

Must be generated with --spoof.

Rebooted and again, stuck on 90% loading bar. Booted again with verbose and force inject kexts (without USB) and got this verbose screen (attached).

This implies that you didn't install a correct HackrNVMeFamily to the system volume.

Indeed stating:
[iGPU] Graphics driver failed to load: could not register with Framebuffer driver!
busy timeout[01], (60s), kexts wait (0): 'AppleACPICPU'
busy timeout[02], (60s), kexts wait (0): 'AppleACPICPU'
IOConsoleUsers: time(0) 0->0, Lin 0, llk1,
IOConsoleUsers: gIOScreenLockState 3, hs 0, bs 0, now 0, sm 0x0

Your profile indicates no IGPU.

And this is the end state I guess.. im running a fresh instal, monitor connected via VGA to my motherboard (za-170x-ud3, i7 6700k). Has this something to do with inject intel orso? Or is there any other error which im missing?

VGA not supported.
 
Status
Not open for further replies.
Back
Top