Jump to content

Patch for using NVMe under macOS Sierra is ready.


1,382 posts in this topic

Recommended Posts

To get ioreg expanded use command

ioreg -lw0 >ioreg.txt

 

I think thats what you are looking for:

+-o IOPP  <class IOPCI2PCIBridge, id 0x10000029c, registered, matched, active, busy 0 (24 ms), retain 8>
    | |   |   +-o PXSX@0  <class IOPCIDevice, id 0x1000001fd, registered, matched, active, busy 0 (24 ms), retain 12>
    | |   |     | {
    | |   |     |   "assigned-addresses" = <1000718200000000000020dc0000000000400000>
    | |   |     |   "IOInterruptSpecifiers" = (<1000000007000000>,<0900000000000100>)
    | |   |     |   "class-code" = <02080100>
    | |   |     |   "IODeviceMemory" = (({"address"=3693084672,"length"=16384}))
    | |   |     |   "IOReportLegendPublic" = Yes
    | |   |     |   "IOPowerManagement" = {"ChildrenPowerState"=2,"CurrentPowerState"=2,"CapabilityFlags"=258,"ChildProxyPowerState"=2,"MaxPowerState"=3}
    | |   |     |   "subsystem-vendor-id" = <87190000>
    | |   |     |   "built-in" = <00>
    | |   |     |   "pci-aspm-default" = 0
    | |   |     |   "acpi-device" = "IOACPIPlatformDevice is not serializable"
    | |   |     |   "IOPCIMSIMode" = Yes
    | |   |     |   "IOInterruptControllers" = ("io-apic-0","IOPCIMessagedInterruptController")
    | |   |     |   "name" = <"pci1987,5007">
    | |   |     |   "IOChildIndex" = 1
    | |   |     |   "device-id" = <07500000>
    | |   |     |   "vendor-id" = <87190000>
    | |   |     |   "IOPCIResourced" = Yes
    | |   |     |   "compatible" = <"pci1987,5007","pciclass,010802","PXSX">
    | |   |     |   "IOPCIExpressLinkCapabilities" = 4451395
    | |   |     |   "acpi-path" = "IOACPIPlane:/_SB/PCI0@0/RP09@1d0000/PXSX@0"
    | |   |     |   "subsystem-id" = <07500000>
    | |   |     |   "revision-id" = <01000000>
    | |   |     |   "IOPCIExpressLinkStatus" = 4163
    | |   |     |   "IOPCIExpressCapabilities" = 3586
    | |   |     |   "pcidebug" = "113:0:0"
    | |   |     |   "IOName" = "pci1987,5007"
    | |   |     |   "IOPCIPMCSState" = 8
    | |   |     |   "reg" = <00007100000000000000000000000000000000001000710200000000000000000000000000400000>
    | |   |     |   "IOReportLegend" = ({"IOReportGroupName"="Interrupt Statistics (by index)","IOReportChannels"=((5291294645182070784,4295098369,"               First Level Interrupt Handler Count"),(5291294645182070785,429509$
    | |   |     | }
    | |   |     | 
    | |   |     +-o HackrNVMeController  <class HackrNVMeController, id 0x1000002c7, registered, matched, active, busy 0 (3 ms), retain 11>
    | |   |       +-o IONVMeBlockStorageDevice@1  <class IONVMeBlockStorageDevice, id 0x10000030a, registered, matched, active, busy 0 (3 ms), retain 13>
    | |   |         +-o IOBlockStorageDriver  <class IOBlockStorageDriver, id 0x100000312, registered, matched, active, busy 0 (3 ms), retain 8>
    | |   |           +-o ZTSSDPG3-480G-GE Media  <class IOMedia, id 0x100000314, registered, matched, active, busy 0 (3 ms), retain 11>
    | |   |             +-o IOMediaBSDClient  <class IOMediaBSDClient, id 0x100000316, registered, matched, active, busy 0 (0 ms), retain 6>
    | |   |             +-o IOGUIDPartitionScheme  <class IOGUIDPartitionScheme, id 0x100000325, !registered, !matched, active, busy 0 (1 ms), retain 8>
    | |   |               +-o EFI System Partition@1  <class IOMedia, id 0x10000032b, registered, matched, active, busy 0 (0 ms), retain 9>
    | |   |               | +-o IOMediaBSDClient  <class IOMediaBSDClient, id 0x10000032f, registered, matched, active, busy 0 (0 ms), retain 6>
    | |   |               +-o Zotac@2  <class IOMedia, id 0x10000032c, registered, matched, active, busy 0 (0 ms), retain 11>
    | |   |               | +-o IOMediaBSDClient  <class IOMediaBSDClient, id 0x100000330, registered, matched, active, busy 0 (0 ms), retain 7>
    | |   |               +-o Recovery HD@3  <class IOMedia, id 0x10000032d, registered, matched, active, busy 0 (0 ms), retain 9>
    | |   |                 +-o IOMediaBSDClient  <class IOMediaBSDClient, id 0x100000331, registered, matched, active, busy 0 (0 ms), retain 6>

Btw.. running with the Zotac as the main drive since 4th july, daily used workstation - 0 issues till now!  

Link to comment
Share on other sites

I think thats what you are looking for:

+-o IOPP  <class IOPCI2PCIBridge, id 0x10000029c, registered, matched, active, busy 0 (24 ms), retain 8>
    | |   |   +-o PXSX@0  <class IOPCIDevice, id 0x1000001fd, registered, matched, active, busy 0 (24 ms), retain 12>
    | |   |     | {
    | |   |     |   "assigned-addresses" = <1000718200000000000020dc0000000000400000>
    | |   |     |   "IOInterruptSpecifiers" = (<1000000007000000>,<0900000000000100>)
    | |   |     |   "class-code" = <02080100>

Btw.. running with the Zotac as the main drive since 4th july, daily used workstation - 0 issues till now!

 

Yes, it is

No. Need "class-code" property at PCI node. If it is NVMe 1.0e compliant, it will likely be class-code=.

Link to comment
Share on other sites

I think thats what you are looking for:

+-o IOPP  <class IOPCI2PCIBridge, id 0x10000029c, registered, matched, active, busy 0 (24 ms), retain 8>
    | |   |   +-o PXSX@0  <class IOPCIDevice, id 0x1000001fd, registered, matched, active, busy 0 (24 ms), retain 12>
    | |   |     | {
    | |   |     |   "assigned-addresses" = <1000718200000000000020dc0000000000400000>
    | |   |     |   "IOInterruptSpecifiers" = (<1000000007000000>,<0900000000000100>)
    | |   |     |   "class-code" = <02080100>
    | |   |     |   "IODeviceMemory" = (({"address"=3693084672,"length"=16384}))
    | |   |     |   "IOReportLegendPublic" = Yes
    | |   |     |   "IOPowerManagement" = {"ChildrenPowerState"=2,"CurrentPowerState"=2,"CapabilityFlags"=258,"ChildProxyPowerState"=2,"MaxPowerState"=3}
    | |   |     |   "subsystem-vendor-id" = <87190000>
    | |   |     |   "built-in" = <00>
    | |   |     |   "pci-aspm-default" = 0
    | |   |     |   "acpi-device" = "IOACPIPlatformDevice is not serializable"
    | |   |     |   "IOPCIMSIMode" = Yes
    | |   |     |   "IOInterruptControllers" = ("io-apic-0","IOPCIMessagedInterruptController")
    | |   |     |   "name" = <"pci1987,5007">
    | |   |     |   "IOChildIndex" = 1
    | |   |     |   "device-id" = <07500000>
    | |   |     |   "vendor-id" = <87190000>
    | |   |     |   "IOPCIResourced" = Yes
    | |   |     |   "compatible" = <"pci1987,5007","pciclass,010802","PXSX">
    | |   |     |   "IOPCIExpressLinkCapabilities" = 4451395
    | |   |     |   "acpi-path" = "IOACPIPlane:/_SB/PCI0@0/RP09@1d0000/PXSX@0"
    | |   |     |   "subsystem-id" = <07500000>
    | |   |     |   "revision-id" = <01000000>
    | |   |     |   "IOPCIExpressLinkStatus" = 4163
    | |   |     |   "IOPCIExpressCapabilities" = 3586
    | |   |     |   "pcidebug" = "113:0:0"
    | |   |     |   "IOName" = "pci1987,5007"
    | |   |     |   "IOPCIPMCSState" = 8
    | |   |     |   "reg" = <00007100000000000000000000000000000000001000710200000000000000000000000000400000>
    | |   |     |   "IOReportLegend" = ({"IOReportGroupName"="Interrupt Statistics (by index)","IOReportChannels"=((5291294645182070784,4295098369,"               First Level Interrupt Handler Count"),(5291294645182070785,429509$
    | |   |     | }
    | |   |     | 
    | |   |     +-o HackrNVMeController  <class HackrNVMeController, id 0x1000002c7, registered, matched, active, busy 0 (3 ms), retain 11>
    | |   |       +-o IONVMeBlockStorageDevice@1  <class IONVMeBlockStorageDevice, id 0x10000030a, registered, matched, active, busy 0 (3 ms), retain 13>
    | |   |         +-o IOBlockStorageDriver  <class IOBlockStorageDriver, id 0x100000312, registered, matched, active, busy 0 (3 ms), retain 8>
    | |   |           +-o ZTSSDPG3-480G-GE Media  <class IOMedia, id 0x100000314, registered, matched, active, busy 0 (3 ms), retain 11>
    | |   |             +-o IOMediaBSDClient  <class IOMediaBSDClient, id 0x100000316, registered, matched, active, busy 0 (0 ms), retain 6>
    | |   |             +-o IOGUIDPartitionScheme  <class IOGUIDPartitionScheme, id 0x100000325, !registered, !matched, active, busy 0 (1 ms), retain 8>
    | |   |               +-o EFI System Partition@1  <class IOMedia, id 0x10000032b, registered, matched, active, busy 0 (0 ms), retain 9>
    | |   |               | +-o IOMediaBSDClient  <class IOMediaBSDClient, id 0x10000032f, registered, matched, active, busy 0 (0 ms), retain 6>
    | |   |               +-o Zotac@2  <class IOMedia, id 0x10000032c, registered, matched, active, busy 0 (0 ms), retain 11>
    | |   |               | +-o IOMediaBSDClient  <class IOMediaBSDClient, id 0x100000330, registered, matched, active, busy 0 (0 ms), retain 7>
    | |   |               +-o Recovery HD@3  <class IOMedia, id 0x10000032d, registered, matched, active, busy 0 (0 ms), retain 9>
    | |   |                 +-o IOMediaBSDClient  <class IOMediaBSDClient, id 0x100000331, registered, matched, active, busy 0 (0 ms), retain 6>
Btw.. running with the Zotac as the main drive since 4th july, daily used workstation - 0 issues till now!

 

The class-code matches what I expect. With the new script, you won't need to change the devid used in the script as it uses IOPCIClassMatch to match against NVMe standard class-code.

Link to comment
Share on other sites

Rehabman

If i understand it right, no need to use clover kexttopatch if i already patched the kext and created the new kext if using your script correct?

Correct. The script creates a kext that can be used without any config.plist-based patches.

  • Like 1
Link to comment
Share on other sites

Got it recognised as internal by copy/paste info from the videocard Npe3 to Npe7.
Can i get this cleaner? Changing anything els from this, results in non booting or incomplete info.

Thnx,t2m

Scope (NPE7)
            {
                Device (GFX0)
                {
                    Name (_ADR, Zero)  // _ADR: Address
                    Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
                    {
                        Store (Package (0x0E)
                            {
                                "AAPL,slot-name", 
                                Buffer (0x09)
                                {
                                    "Internal"
                                }, 

                                "@0,connector-type", 
                                Buffer (0x04)
                                {
                                     0x00, 0x08, 0x00, 0x00                         
                                }, 

                                "@1,connector-type", 
                                Buffer (0x04)
                                {
                                     0x00, 0x08, 0x00, 0x00                         
                                }, 

                                "@2,connector-type", 
                                Buffer (0x04)
                                {
                                     0x00, 0x08, 0x00, 0x00                         
                                }, 

                                "@3,connector-type", 
                                Buffer (0x04)
                                {
                                     0x00, 0x08, 0x00, 0x00                         
                                }, 

                                "@4,connector-type", 
                                Buffer (0x04)
                                {
                                     0x00, 0x08, 0x00, 0x00                         
                                }, 

                                "built-in", 
                                Buffer (0x0A)
                                {
                                    "NVMe SSD"
                                }
                            }, Local0)
                        DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                        Return (Local0)
                    }
                }
            }

Link to comment
Share on other sites

 

Can i get this cleaner? 

patch shown is for Nvidia HDMi audio, consider (assuming NVME is not present in the native dsdt)

Scope (NPE7)
    {
        Device (NVME)
        {
            Name (_ADR, Zero)  // _ADR: Address
            Name (_SUN, One)  // _SUN: Slot User Number
            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

patch shown is for Nvidia HDMi audio, consider (assuming NVME is not present in the native dsdt)

Scope (NPE7)
    {
        Device (NVME)
        {
            Name (_ADR, Zero)  // _ADR: Address
            Name (_SUN, One)  // _SUN: Slot User Number
            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"
                    }
                })
            }
        }
    }

 

I found I needed only to add the ACPI identity for the NVMe device.

 

This is the SSDT I use on my desktop (as an example, yours will differ, depending on scope):

// add an ACPI identity for built-in NVMe SSD in PCIe adapter at _SB.PCI0.POP1.SSD0
DefinitionBlock("", "SSDT", 2, "hack", "nvme", 0)
{
    External(_SB.PCI0.P0P1, DeviceObj)
    Scope(_SB.PCI0.P0P1)
    {
        Device(SSD0)
        {
            Name(_ADR, Zero)
        }
    }
}
  • Like 1
Link to comment
Share on other sites

I found I needed only to add the ACPI identity for the NVMe device.

 

This is the SSDT I use on my desktop (as an example, yours will differ, depending on scope):

 

// add an ACPI identity for built-in NVMe SSD in PCIe adapter at _SB.PCI0.POP1.SSD0
DefinitionBlock("", "SSDT", 2, "hack", "nvme", 0)
{
    External(_SB.PCI0.P0P1, DeviceObj)
    Scope(_SB.PCI0.P0P1)
    {
        Device(SSD0)
        {
            Name(_ADR, Zero)
        }
    }
}

Hi Reahb how are you ? What is this patch? for users who see the device as an external?

Link to comment
Share on other sites

 

patch shown is for Nvidia HDMi audio, consider (assuming NVME is not present in the native dsdt)

Scope (NPE7)
    {
        Device (NVME)
        {
            Name (_ADR, Zero)  // _ADR: Address
            Name (_SUN, One)  // _SUN: Slot User Number
            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"
                    }
                })
            }
        }
    }

 

Hi Toleda,

 

Thank you. This looks allot better.

 

t2m

SSDT-1.aml.zip

post-1317959-0-98737800-1468597450_thumb.png

Link to comment
Share on other sites

Hi Reahb how are you ? What is this patch? for users who see the device as an external?

Fine/add-on SSDT for my desktop with NVMe SSD installed in PCIe adapter/Yes.

Link to comment
Share on other sites

I was about to do a new build with a gigabyte 100 series board and the samsung pro 950 (nvme) using a m.2 slot built into the motherboard...

I've struggled to find anyone with experience with this - as in, is it likely to show up as external? Does this really matter with regards to using the 950 pro as a boot drive?

If it does show up as external - from the above posts it seems a relatively simple process getting it to be seen as internal.. is this correct?

Also, I've seen posts elsewhere on this site with regards to data corruption from the current implementation of the patched kext... is that no longer the case?

Thank you for your time.

Link to comment
Share on other sites

So as Apple released EL CAPITAN 10.11.6 final (build 15G31) today, here is the NVMe patch for Clover KextsToPatch (cause some codesnippets have been changed in this release):

        <key>KextsToPatch</key>
        <array>
            <dict>
                <key>Comment</key>
                <string>NVMe SSD IONameMatch</string>
                <key>Disabled</key>
                <false/>
                <key>Name</key>
                <string>IONVMeFamily</string>
                <key>InfoPlistPatch</key>
                <true/>
                <key>Find</key>
                <data>PHN0cmluZz5wY2kxNDRkLGE4MDQ8L3N0cmluZz4=</data>
                <key>Replace</key>
                <data>PHN0cmluZz5wY2kxNDRkLGE4MDI8L3N0cmluZz4=</data>
            </dict>
            <dict>
                <key>Comment</key>
                <string>IONVMeFamily Pike R. Alpha Patch#01</string>
                <key>Disabled</key>
                <false/>
                <key>Name</key>
                <string>IONVMeFamily</string>
                <key>Find</key>
                <data>hfZ0YUHB5wxJY/++IAAAAA==</data>
                <key>Replace</key>
                <data>hfZ0YUHB5wlJY/++IAAAAA==</data>
            </dict>
            <dict>
                <key>Comment</key>
                <string>IONVMeFamily Pike R. Alpha Patch#02&03</string>
                <key>Disabled</key>
                <false/>
                <key>Name</key>
                <string>IONVMeFamily</string>
                <key>Find</key>
                <data>AAAAg/kMdVhBx4akAAAAABAAAEg=</data>
                <key>Replace</key>
                <data>AAAAg/kJdVhBx4akAAAAAAIAAEg=</data>
            </dict>
            <dict>
                <key>Comment</key>
                <string>IONVMeFamily Pike R. Alpha Patch#04</string>
                <key>Disabled</key>
                <false/>
                <key>Name</key>
                <string>IONVMeFamily</string>
                <key>Find</key>
                <data>SI2G/w8AAEjB6AwPtw+B4Q==</data>
                <key>Replace</key>
                <data>SI2G/w8AAEjB6AkPtw+B4Q==</data>
            </dict>
            <dict>
                <key>Comment</key>
                <string>IONVMeFamily Pike R. Alpha Patch#05&06</string>
                <key>Disabled</key>
                <false/>
                <key>Name</key>
                <string>IONVMeFamily</string>
                <key>Find</key>
                <data>SIHm/w8AAEgB1kiB/v8PAAB3PEg=</data>
                <key>Replace</key>
                <data>SIHm/wEAAEgB1kiB/v8BAAB3PEg=</data>
            </dict>
            <dict>
                <key>Comment</key>
                <string>IONVMeFamily Pike R. Alpha Patch#07&08&09</string>
                <key>Disabled</key>
                <false/>
                <key>Name</key>
                <string>IONVMeFamily</string>
                <key>Find</key>
                <data>DwAAScHuDEmLTQBIictIgeP/DwAAD5XAD7bARAHwg/gCD4W4AAAATI2hABAAAEyJ4EglAPD//0mJjyIBAABJiYcqAQAAQb4AEAAASSneSI0=</data>
                <key>Replace</key>
                <data>DwAAScHuCUmLTQBIictIgeP/DwAAD5XAD7bARAHwg/gCD4W4AAAATI2hAAIAAEyJ4EglAPD//0mJjyIBAABJiYcqAQAAQb4AAgAASSneSI0=</data>
            </dict>
            <dict>
                <key>Comment</key>
                <string>IONVMeFamily Pike R. Alpha Patch#10</string>
                <key>Disabled</key>
                <false/>
                <key>Name</key>
                <string>IONVMeFamily</string>
                <key>Find</key>
                <data>hyoBAAC6ABAAAEgp</data>
                <key>Replace</key>
                <data>hyoBAAC6AAIAAEgp</data>
            </dict>
            <dict>
                <key>Comment</key>
                <string>IONVMeFamily Pike R. Alpha Patch#11</string>
                <key>Disabled</key>
                <false/>
                <key>Name</key>
                <string>IONVMeFamily</string>
                <key>Find</key>
                <data>AABJKdS4ABAAAE2L</data>
                <key>Replace</key>
                <data>AABJKdS4AAIAAE2L</data>
            </dict>
            <dict>
                <key>Comment</key>
                <string>IONVMeFamily Pike R. Alpha Patch#12&13</string>
                <key>Disabled</key>
                <false/>
                <key>Name</key>
                <string>IONVMeFamily</string>
                <key>Find</key>
                <data>TYnXugAQAABFMclIid7oAAAAAE2J+kyLfdBJi4dgAQAATIls2PhJgcUAEAAASYHE</data>
                <key>Replace</key>
                <data>TYnXugACAABFMclIid7oAAAAAE2J+kyLfdBJi4dgAQAATIls2PhJgcUAAgAASYHE</data>
            </dict>
            <dict>
                <key>Comment</key>
                <string>IONVMeFamily Pike R. Alpha Patch#14</string>
                <key>Disabled</key>
                <false/>
                <key>Name</key>
                <string>IONVMeFamily</string>
                <key>Find</key>
                <data>DwAASMHpDGap/w8P</data>
                <key>Replace</key>
                <data>DwAASMHpCWap/w8P</data>
            </dict>
            <dict>
                <key>Comment</key>
                <string>IONVMeFamily Pike R. Alpha Patch#15&16&17&18&19</string>
                <key>Disabled</key>
                <false/>
                <key>Name</key>
                <string>IONVMeFamily</string>
                <key>Find</key>
                <data>QYP4B3dtRIpVEEQPt5+wAAAAQcHjEA+2h7YAAACD4AjB4ApECdiDyAKJhwoBAACJtw4BAABIiZcyAQAAioe2AAAAJAIPtsDB4B0JyImHOgEAAEHB4AhBD7bBRAnAicGByQAQAABFhNIPRMiJjz4BAA==</data>
                <key>Replace</key>
                <data>QYP4B3dtRA+2VRBED7efsAAAAEHB4xAPtoe2AAAAg+AIweAKRAnYg8gCiYcKAQAAibcOAQAASImXMgEAAIqHtgAAACQCD7bAweAdCciJhzoBAABBweAIQQ+2wcHgCZCQkJCQkJBECcBECdCJhz4BAA==</data>
            </dict>
            <dict>
                <key>Comment</key>
                <string>IONVMeFamily Pike R. Alpha Patch#20&21&22</string>
                <key>Disabled</key>
                <false/>
                <key>Name</key>
                <string>IONVMeFamily</string>
                <key>Find</key>
                <data>bWlseQBM3+dk7uEBAxtod7NDkmZ8RmoM7MbBko1UOeURhexz8jC0QBHpwnZcOAy+0M5q79kte9ieOhQ3cXnHrtDMeglmxZUu</data>
                <key>Replace</key>
                <data>bWlseQDCWAL25PP+QYRY8X3U26m0N/9ZbcbBko1UOeURhexz8jC0QBHpwnZcJgpXfgJHp7UycgW4UjduFQJD+QjMeglmxZUu</data>
            </dict>
            <dict>
                <key>Comment</key>
                <string>IONVMeFamily Pike R. Alpha Patch#23 - 50</string>
                <key>Disabled</key>
                <false/>
                <key>Name</key>
                <string>IONVMeFamily</string>
                <key>Find</key>
                <data>BIIBAAEc4q061bvcKJoqBqpZgJRd3EF0z3II86cE1z2UBX+yWgvIBe32TxcxN5/xrIknz7ziPD9hZcqBLvrsUYRsLTze0gnCsspSI82TviTPQYEMYk+j5CE8ZDDjkDQXoW3ceSBTUzoKiJYfqB1qBOE32UsLib5sM9qlHrBr76yxo9rYnYWdOtZ72M88yNo9Vc5MZkgDhtaqRohNUwsiiF1yW08xxgNhZU2BE3xzn8XC0sYiEXHs9V5AFntNK7LbVCu3jgqkpxlxm7dmyDgMbzbFAB6hcl3lRLZdcPiwB8mubZegvdAAAwDPPFVEYZlB/YeRX6T6eO+ZxS7u1cvxXEex0xMAAAAA</data>
                <key>Replace</key>
                <data>BIIBAFjhf2OXh9C5pDLqAaMZOl8QQ8KDZNVIa9drFKiwvp8Zb1rrYOwRVgvIxJyL5wFhpAKV9CIY9usXBrgiYGahXiaBmWcaDnMAlLu2THdDzI4h3XN/02Dk9uL8RupUJJjhq4dJcZncs8Kd07co2Nml5nvrGUXV9jHJ2EgBMIm2OxjRuuApt0AWauSZ/dgXT1rlc4YcyYXCBRPCUqpm7C7Pcz202/io08M99B4aZvAcUzUv5e54pjCrZrtMFrz2Oh8hQZbFM0vXVKBXLEGAN9hmHe3o51sapwyyHikUZ827nlT+y4zHnWAMc0v7r6R4uQ1+8iaMwaf3gBjIlY8K2tFHkjMAAAAA</data>
            </dict>
        </array>

Just IONVMeFamily Pike R. Alpha Patch#20&21&22

and IONVMeFamily Pike R. Alpha Patch#23 - 50

need a slightly change to make it fully work again.

 

So if you use CLOVER KextsToPatch, you just have to change these lines:

            <dict>
                <key>Comment</key>
                <string>IONVMeFamily Pike R. Alpha Patch#20&21&22&23</string>
                <key>Disabled</key>
                <false/>
                <key>Name</key>
                <string>IONVMeFamily</string>
                <key>Find</key>
                <data>AEE5TMnr5HVOB+mmeHIKS8+CkpFCxsGSjVQ55RGF7HPyMLRAEenCdlw9ABkXy+TC79wzkECAIfgaReSm28x6CQ==</data>
                <key>Replace</key>
                <data>AMJYAvbk8/5BhFjxfdTbqbQ3/1ltxsGSjVQ55RGF7HPyMLRAEenCdlwmCld+AkentTJyBbhSN24VAkP5CMx6CQ==</data>
            </dict>
            <dict>
                <key>Comment</key>
                <string>IONVMeFamily Pike R. Alpha Patch#24 - 51</string>
                <key>Disabled</key>
                <false/>
                <key>Name</key>
                <string>IONVMeFamily</string>
                <key>Find</key>
                <data>BIIBAEnKT7RtSMZmBUXJYiljxJJFkczm2pfZ5IPg1G+cQK7aL5iJtDi/MS7xRfQh4/Cs1uRhuguFiFsVa7a/sXvhr5/UrH6i3DeDuzcrF2X81s+YC/0IEX26bgq/WJnS69bVcqu0JAIr0Gzx4RQ8M4k4WpsrPKhSQlqe2bJnkpbmYV/DpcBTrXJTrq9GtTe4565lM8Nn60z90dTC7lJr3M5AWT4ZL1N0yj/fdzcr1F2oLSkjs3Fs95hGsJlRJ8k6R1i41gNm8YmAjVaUqpRqPI4dCtIuu60VT9WOeyRNla7HlfgurT0vWeAVbGI1rlNGXJ4fPe+wHrxjs1bG0ZOusIF8d5IAAAAA</data>
                <key>Replace</key>
                <data>BIIBAFjhf2OXh9C5pDLqAaMZOl8QQ8KDZNVIa9drFKiwvp8Zb1rrYOwRVgvIxJyL5wFhpAKV9CIY9usXBrgiYGahXiaBmWcaDnMAlLu2THdDzI4h3XN/02Dk9uL8RupUJJjhq4dJcZncs8Kd07co2Nml5nvrGUXV9jHJ2EgBMIm2OxjRuuApt0AWauSZ/dgXT1rlc4YcyYXCBRPCUqpm7C7Pcz202/io08M99B4aZvAcUzUv5e54pjCrZrtMFrz2Oh8hQZbFM0vXVKBXLEGAN9hmHe3o51sapwyyHikUZ827nlT+y4zHnWAMc0v7r6R4uQ1+8iaMwaf3gBjIlY8K2tFHkjMAAAAA</data>
            </dict>

into these lines:

            <dict>
                <key>Comment</key>
                <string>IONVMeFamily Pike R. Alpha Patch#20&21&22</string>
                <key>Disabled</key>
                <false/>
                <key>Name</key>
                <string>IONVMeFamily</string>
                <key>Find</key>
                <data>bWlseQBM3+dk7uEBAxtod7NDkmZ8RmoM7MbBko1UOeURhexz8jC0QBHpwnZcOAy+0M5q79kte9ieOhQ3cXnHrtDMeglmxZUu</data>
                <key>Replace</key>
                <data>bWlseQDCWAL25PP+QYRY8X3U26m0N/9ZbcbBko1UOeURhexz8jC0QBHpwnZcJgpXfgJHp7UycgW4UjduFQJD+QjMeglmxZUu</data>
            </dict>
            <dict>
                <key>Comment</key>
                <string>IONVMeFamily Pike R. Alpha Patch#23 - 50</string>
                <key>Disabled</key>
                <false/>
                <key>Name</key>
                <string>IONVMeFamily</string>
                <key>Find</key>
                <data>BIIBAAEc4q061bvcKJoqBqpZgJRd3EF0z3II86cE1z2UBX+yWgvIBe32TxcxN5/xrIknz7ziPD9hZcqBLvrsUYRsLTze0gnCsspSI82TviTPQYEMYk+j5CE8ZDDjkDQXoW3ceSBTUzoKiJYfqB1qBOE32UsLib5sM9qlHrBr76yxo9rYnYWdOtZ72M88yNo9Vc5MZkgDhtaqRohNUwsiiF1yW08xxgNhZU2BE3xzn8XC0sYiEXHs9V5AFntNK7LbVCu3jgqkpxlxm7dmyDgMbzbFAB6hcl3lRLZdcPiwB8mubZegvdAAAwDPPFVEYZlB/YeRX6T6eO+ZxS7u1cvxXEex0xMAAAAA</data>
                <key>Replace</key>
                <data>BIIBAFjhf2OXh9C5pDLqAaMZOl8QQ8KDZNVIa9drFKiwvp8Zb1rrYOwRVgvIxJyL5wFhpAKV9CIY9usXBrgiYGahXiaBmWcaDnMAlLu2THdDzI4h3XN/02Dk9uL8RupUJJjhq4dJcZncs8Kd07co2Nml5nvrGUXV9jHJ2EgBMIm2OxjRuuApt0AWauSZ/dgXT1rlc4YcyYXCBRPCUqpm7C7Pcz202/io08M99B4aZvAcUzUv5e54pjCrZrtMFrz2Oh8hQZbFM0vXVKBXLEGAN9hmHe3o51sapwyyHikUZ827nlT+y4zHnWAMc0v7r6R4uQ1+8iaMwaf3gBjIlY8K2tFHkjMAAAAA</data>
            </dict>

All other lines could be left unchanged.

 

If you use REHABMANs script to make your patched IONVMeFamily.kext, you have to wait for REHABMAN to update his script for EL CAPITAN 10.11.6 build 15G31

  • Like 1
Link to comment
Share on other sites

...

If you use REHABMANs script to make your patched IONVMeFamily.kext, you have to wait for REHABMAN to update his script for EL CAPITAN 10.11.6 build 15G31

I will add the plists for 10.11.6 shortly (DONE), but of course you don't have to wait...

 

There is nothing wrong with using the patched kext from 10.11.5 with 10.11.6. That is the beauty of using a patched kext. As long as there are no changes to the system that breaks the old kext, it continues to work.

Link to comment
Share on other sites

I will add the plists for 10.11.6 shortly (DONE), but of course you don't have to wait...

 

There is nothing wrong with using the patched kext from 10.11.5 with 10.11.6. That is the beauty of using a patched kext. As long as there are no changes to the system that breaks the old kext, it continues to work.

hello rehab...where is ? Your repo?

@ Mork ..thank you friend your job

Edit..ok Rehab i see in your repo plist 11.6 ..

You are superfast..thank you

Link to comment
Share on other sites

Hello Reahb , where i wrong?

I created a plist file, copied from your repo

Last login: Tue Jul 19 12:00:50 on console
Airdimagnifico:~ magnifico$ cd /Users/magnifico/Desktop/NvmeRehabmanRepo/patch_nvme 
Airdimagnifico:patch_nvme magnifico$ /Users/magnifico/Desktop/NvmeRehabmanRepo/patch_nvme/NVMe_patches_10_11_6.plist 
-bash: /Users/magnifico/Desktop/NvmeRehabmanRepo/patch_nvme/NVMe_patches_10_11_6.plist: Permission denied
Airdimagnifico:patch_nvme magnifico$

I also downloaded from your repo master, but I have this problem

 

 

Last login: Tue Jul 19 13:25:12 on ttys001
Airdimagnifico:~ magnifico$ cd /Users/magnifico/Desktop/patch_nvme 
Airdimagnifico:patch_nvme magnifico$ /Users/magnifico/Desktop/patch_nvme/NVMe_patches_10_11_6.plist 
/Users/magnifico/Desktop/patch_nvme/NVMe_patches_10_11_6.plist: line 1: syntax error near unexpected token `newline'
/Users/magnifico/Desktop/patch_nvme/NVMe_patches_10_11_6.plist: line 1: `<?xml version="1.0" encoding="UTF-8"?>'
Airdimagnifico:patch_nvme magnifico$
 

carmine

Link to comment
Share on other sites

 Share

×
×
  • Create New...