Contribute
Register

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

Status
Not open for further replies.
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.
 
With any change, you must provide new files. I cannot guess about what you're actually doing.

Attached is a new zip of my clover, as it is right now. And a photo of verbose when I try to boot without USB inserted.

This implies that you didn't install a correct HackrNVMeFamily to the system volume.
What I did:
download folder from: https://github.com/RehabMan/patch-nvme (checked if it has correct name in /downloads)
Made a copy
Run these commands:
cd ~/Downloads/patch-nvme-master
./patch_nvme.sh --spoof 10_12_3

Opend Kext wizard, dragged the created kext to installation tab to /s/l/e and pressed install. After that repair permissions.
Checked if it was in /s/l/e/ and it was.

Your profile indicates no IGPU.
What do you meen? My profile on Tonymac? Or some kind of file in my clover? Reason why im using my mobo for graphics atm is because I have a rx480 card which isn't natively supported, I know how to "activate/accelerate/cu" it, but I can only do this after the nvme SSD is successfully running.

VGA not supported.
Changed my cable to DVI from motherboard to monitor, nothing changed (only the resolution).
 

Attachments

  • CLOVER.zip
    1.6 MB · Views: 95
  • IMG_0870.JPG.jpeg
    IMG_0870.JPG.jpeg
    1.1 MB · Views: 122
Ok, I've tried a fresh installation. I made sure to follow the guide to the letter.

- Created the SSDT-NVMe-Pcc.aml on my macbook pro and copied it to usb installer clover/acpi/patched (attached)
- Created the HackrNVMeFamily-10_12_3.kext on my MacBook Pro (running 10.12.3) and copied it to usb installer clover/kexts/patched. While creating the kext, terminal outputted: MD5 matches expected MD5 entry - for vanilla and patched. (attached)
- Did the _DSM->XDSM patch: Opened the config.plist of my usb installer in text edit and added the patch key from your GitHub config_patches.plist to the /ACPI/DSDT/Patches (attached)

Put USB in hackintosh, turned on, in clover select USB, pressed space, forced inject kexts and booted in installer.
Formatted nvme SSD and installed Sierra.

- In Sierra I launched Multibeast and only installed Clover UEFI bootloader.
- Mounted USB efi and copied SSDT-NVMe-Pcc.aml and HackrNVMeFamily-10_12_3.kext to my desktop
- Opened the config.plist (of usb efi) in text editor and copied the _DSM to XDSM part, pasted it in empty text editor file for later
- Mounted NVME efi
- Pasted SSDT-NVMe-Pcc.aml to nvme efi/clover/acpi/patched
- Pasted HackrNVMeFamily-10_12_3.kext to nvme efi/clover/kexts/other
- Opened nvme efi config.plist (first made backup ofc) and pasted the _DSM to XDSM patches in the same place as before. And saved
- opened the nvme config.plist in clover configurator to check if the patches where in the acpi tab, and they were. Closed clover configurator.

Then, when I tried to drag the HackrNVMeFamily-10_12_3.kext to /s/l/e I got an error:
"System extension cannot be used
The system extension "/System/Library/Extensions/HackrNVMeFamily-10_12_3.kext" was installed improperly and cannot be used. Please try reinstalling it, or contact the product's vendor for an update."

So I removed the HackrNVMeFamily-10_12_3.kext from /s/l/e and ran kext wizard to repair permissions and rebuild cache.
When I drag the HackrNVMeFamily-10_12_3.kext to kext wizard installation tab and press instal I don't get an error.
Repaired permissions and rebuild cache afterwards.

Now my hackintosh is still turned on, havent rebooted yet. Wanted to check first if this is all done correctly. Ive also attached a clover.zip of my nvme ssd efi.

Does this mean my HackrNVMeFamily-10_12_3.kext is bad? Or was the installation method just not good?
Am I safe to restart now? With or without the installer usb inserted? Did I miss any step or made any errors?
 

Attachments

  • HackrNVMeFamily-10_12_3.kext.zip
    89.9 KB · Views: 97
  • SSDT-NVMe-Pcc.aml
    134 bytes · Views: 168
  • config.plist
    5.2 KB · Views: 207
  • nvme SSD efi CLOVER.zip
    1.6 MB · Views: 102
Status
Not open for further replies.
Back
Top