Patching support for NVMe SSDs on macOS Sierra

Sean C. Albito
3 min readJan 15, 2017

Welcome to Part V of building a macOS Sierra Hackintosh on an Asus X99 Deluxe II.

Table of Contents For This Series

  1. macOS Sierra on Asus X99 Deluxe II
  2. Creating a bootable macOS Sierra Installer
  3. Installing Clover on the macOS Sierra Installer
  4. EFI drivers & kexts for an Asus X99 Deluxe II Hackintosh
  5. Patching support for NVMe SSDs on macOS Sierra
  6. Configuring the clover config.plist for an Asus X99 Deluxe II
  7. Installing macOS Sierra via the Clover bootloader*
  8. Installing Nvidia Web Drivers on a Hackintosh*
  9. Generating a SSDT for CPU Power Management on a Hackintosh*
  10. Post Installation steps for macOS Sierra on an Asus X99 Deluxe II*

*: Not yet published

For this next part you will need a copy of Windows 10. Don’t worry as you wont need to actually buy a license. You can install Windows 10 without a product key by clicking “I don’t have a product key” during the installation process. You’ll only need Windows 10 for a couple of minutes and can get yourself a copy of Windows 10 from here.

Install Windows 10 onto the Non-NVMe SSD and open up the Device Manager. Go to the storage controllers section and find your two NVM Express Controllers. Open up the device properties, click the details tab and find the BIOS device name property.

Windows 10 Device Manager. Credit to RehabMan for this screenshot.

You’ll want to write down the value for the BIOS device name for BOTH of your NVMe drives. We will use these BIOS device names to generate the SSDT-NVMe-Pcc.asl to inject some bogus class code. Open MaciASL and open a new file. Paste the following code.

DefinitionBlock("", "SSDT", 2, "hack", "NVMe-Pcc", 0)
{
External(${BIOS_NAME_FOR_NVMe_DRIVE_1}, DeviceObj)
Method(${BIOS_NAME_FOR_NVMe_DRIVE_1}, 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" },
})
}
External(${BIOS_NAME_FOR_NVMe_DRIVE_2}, DeviceObj)
Method(${BIOS_NAME_FOR_NVMe_DRIVE_2}._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" },
})
}
}

Replace the sections for the bios name appropriately. Next save this as SSDT-NVMe-Pcc.asl into CLOVER/ACPI/patched on the mounted EFI volume.

Save the file as SSDT-NVMe-Pcc.aml

The EFI volume should now look like the following.

The new SSDT-NVMe-Pcc.aml in its right place

--

--