Jump to content

Patch for using NVMe under macOS Sierra is ready.


1,382 posts in this topic

Recommended Posts

yes samsung 950 pro $ 230 for 256go... and $420 for 512go

 

just one last question....

is it normal? <00 04 06 00> for class code

That is your PCI bridge. Nothing to do with NVMe.

 

File is corrupt/damaged. Attach.

Link to comment
Share on other sites

sorry...

I was right clicking open with

When macial is open it works (file/open)

You probably have multiple copies of MaciASL.app on your system... different versions.

Link to comment
Share on other sites

RehabMan.... using your guide and patches with spoofed option, the NVME Samsung 960 Evo is shown as external drive.

 

I tried to remediate using the following method:

 

https://www.tonymacx86.com/threads/giacomoleopardos-workstation-triplet.199643/

 

See section about creating an ssdt to fix the external problem.

When I use both SSDTs in my system, it will not boot anymore.

 

Any insight here?

 

To fix it I use the following code:

/*
 * Intel ACPI Component Architecture
 * AML/ASL+ Disassembler version 20160422-64(RM)
 * Copyright (c) 2000 - 2016 Intel Corporation
 * 
 * Disassembling to non-symbolic legacy ASL operators
 *
 * Disassembly of iASLdHTc9c.aml, Wed Jan  4 00:07:42 2017
 *
 * Original Table Header:
 *     Signature        "SSDT"
 *     Length           0x000000C4 (196)
 *     Revision         0x02
 *     Checksum         0x09
 *     OEM ID           "hack"
 *     OEM Table ID     "nvme"
 *     OEM Revision     0x00000000 (0)
 *     Compiler ID      "INTL"
 *     Compiler Version 0x20160422 (538313762)
 */
DefinitionBlock ("", "SSDT", 2, "hack", "nvme", 0x00000000)
{
    External (_SB_.PCI0.BR2D, DeviceObj)    // (from opcode)
    External (_SB_.PCI0.BR2D.H000._ADR)    // (from opcode)

    Scope (\_SB.PCI0.BR2D)
    {
        Device (NVME)
        {
            Name (_ADR, Zero)  // _ADR: Address
            Name (_SUN, One)  // _SUN: Slot User Number
            Method (_INI, 0, NotSerialized)  // _INI: Initialize
            {
                Store (0x0F, \_SB.PCI0.BR2D.H000._ADR)
            }

            Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
            {
                If (LEqual (Arg2, Zero))
                {
                    Return (Buffer (One)
                    {
                         0x03                                           
                    })
                }

                Return (Package (0x02)
                {
                    "built-in", 
                    Buffer (0x0A)
                    {
                        "NVMe SSD"
                    }
                })
            }
        }
    }
}

Link to comment
Share on other sites

RehabMan.... using your guide and patches with spoofed option, the NVME Samsung 960 Evo is shown as external drive.

You need to provide ioreg (IORegistryExplorer v2.1) and EFI/Clover (omit themes).

 

I tried to remediate using the following method:

 

https://www.tonymacx86.com/threads/giacomoleopardos-workstation-triplet.199643/

 

See section about creating an ssdt to fix the external problem.

When I use both SSDTs in my system, it will not boot anymore.

No idea.

You mention something about two SSDTs, but you provide only one.

It sounds like you may have created two separate _DSM methods at the same path.

Only one will win.

If the one that loses is your class-code injector, you won't be able to boot.

If you want to inject both "class-code" and "built-in", you must do it from a single _DSM method in a single SSDT.

i know I am painful lol

But that also is normal?

I have 3 same location name PXSX@0

Normal.

 

I try to understand why it does not work

I think your problem has nothing to do with ACPI/etc.

I think it is just incompatibility of your SSD with Pike's patches and IONVMeFamily code provided by Apple.

Link to comment
Share on other sites

I attached the requested files....

 

The question I have is how to fix that the NVME drive is shown as external.

 

I used the SSDT code in the previous post with the hope this would fix it.

 

But it seems to cause problems with the spoof ssdt.

 

Thanks, Mike

Your ioreg is corrupt. Please use IORegistryExplorer v2.1 as per request.

 

You cannot use the SSDT you have planned to use in post #756. It conflicts with the code in SSDT-NVMe-Pcc.aml (two different _DSM methods at the same path)

 

You must combine the two injections you want to do...

 

// SSDT-NVMe-Pcc.dsl with both "class-code" and "built-in"
DefinitionBlock("", "SSDT", 2, "hack", "NVMe-Pcc", 0)
{
    External(_SB_.PCI0.BR2D.H000, DeviceObj)
    Method(_SB.PCI0.BR2D.H000._DSM, 4)
    {
        If (!Arg2) { Return (Buffer() { 0x03 } ) }
        Return(Package()
        {
            "class-code", Buffer() { 0xff, 0x08, 0x01, 0x00 },
            "built-in", Buffer() { 0 },
        })
    }
}
  • Like 1
Link to comment
Share on other sites

Wow thanks, that worked out of the box so to say.

 

Maybe you can add this info to your blog.

This really fixes the NVME SSD shown as external orange drive for people who have problems.

 

Many thanks!!

 

Mike

I would like to see ioreg without "built-in" inject. Please attach (from IORegistryExplorer v2.1).

Link to comment
Share on other sites

Hello Rehabman

 

find it attached..... 

 

I quickly had to find IORegexplorer 2.1

It probably has to do with the fact that you're injecting AAPL,slot-name=<"PCI Slot 6">.

I'm not exactly sure where that is coming from.

Maybe it is in native DSDT..._SUN (no ACPI/origin previously provided).

 

In my NUC6i7KYK, it is much the same as yours but no AAPL,slot-name inject, and as a result built-in is in ioreg automatically...

 

At any rate, I'll add the built-in=<00> to my guide with a note regarding why it is there.

Link to comment
Share on other sites

I think it is just incompatibility of your SSD with Pike's patches and IONVMeFamily code provided by Apple.

 

Spot on. I gave him a config.plist with all of Pike's patches and no bueno. His Intel NVMe wasn't recognized by IONvmeFamily.

Link to comment
Share on other sites

Spot on. I gave him a config.plist with all of Pike's patches and no bueno. His Intel NVMe wasn't recognized by IONvmeFamily.

I'm unlucky :(

I will exchange it

What do you think of corsair MP500 ? (256 go)

I read the specifications it looks more powerful than samsung 950 pro (same price)

 

samsung vs corsair

read : 2200 vs 3000 mo/s

write : 900 vs 2200 mo/s

 

But do you think it's compatible?

Someone tried it?

Link to comment
Share on other sites

 

I'm unlucky :(

I will exchange it

What do you think of corsair MP500 ? (256 go)

I read the specifications it looks more powerful than samsung 950 pro (same price)

 

samsung vs corsair

read : 2200 vs 3000 mo/s

write : 900 vs 2200 mo/s

 

But do you think it's compatible?

Someone tried it?

 

Off topic. Responded via PM.

Link to comment
Share on other sites

Is there any issues installing the 10.12.2 update with this fix already applied and main drive is the NVMe ?

If you're using the class-code spoof, no problem at all.

If you're not, then all bets are off.

Link to comment
Share on other sites

obviously with the SSDT also  B)

The "class-code spoof" solution has two components:

- SSDT to inject class-code (or with config.plist/Devices/Arbitrary)

AND

- HackrNVMeFamily generated with --spoof

 

When I refer to "the class-code spoof", it is referring to both components of the solution.

Link to comment
Share on other sites

I got this kernel panic

I copied rehabsman patch-nvme to root of usb

boot from usb open terminal run 

./patch_nvme.sh 10_12_0

copy HackrNVMeFamilty-10_12_0.kext to EFI/CLOVER/kexts/Other and then reboot to boot again from usb

And then got this kernel panic

post-1636018-0-71262900-1483634096_thumb.jpg

Link to comment
Share on other sites

I got this kernel panic

I copied rehabsman patch-nvme to root of usb[/size]

 

boot from usb open terminal run 

./patch_nvme.sh 10_12_0

copy HackrNVMeFamilty-10_12_0.kext to EFI/CLOVER/kexts/Other and then reboot to boot again from usb

And then got this kernel panic

It is because you still have IONVMeFamily.kext present.

As per patch-nvme README, you must delete IONVMeFamily.kext if you're not using the class-code spoof.

 

Suggest you read carefully.

Link to comment
Share on other sites

The "class-code spoof" solution has two components:

- SSDT to inject class-code (or with config.plist/Devices/Arbitrary)

AND

- HackrNVMeFamily generated with --spoof

 

When I refer to "the class-code spoof", it is referring to both components of the solution.

Racer, this I mean, it takes both spoof that SSDT

Link to comment
Share on other sites

 Share

×
×
  • Create New...