[
  {
    "path": "Configs/CoffeeLake/config.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>ACPI</key>\n\t<dict>\n\t\t<key>DSDT</key>\n\t\t<dict>\n\t\t\t<key>Fixes</key>\n\t\t\t<dict>\n\t\t\t\t<key>AddMCHC</key>\n\t\t\t\t<true/>\n\t\t\t\t<key>FixHPET</key>\n\t\t\t\t<true/>\n\t\t\t\t<key>FixIPIC</key>\n\t\t\t\t<true/>\n\t\t\t\t<key>FixRTC</key>\n\t\t\t\t<true/>\n\t\t\t\t<key>FixShutdown</key>\n\t\t\t\t<true/>\n\t\t\t\t<key>FixTMR</key>\n\t\t\t\t<true/>\n\t\t\t</dict>\n\t\t\t<key>Patches</key>\n\t\t\t<array>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>change XHCI to XHC</string>\n\t\t\t\t\t<key>Disabled</key>\n\t\t\t\t\t<false/>\n\t\t\t\t\t<key>Find</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tWEhDSQ==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Replace</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tWEhDXw==\n\t\t\t\t\t</data>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>change XHC1 to XHC</string>\n\t\t\t\t\t<key>Disabled</key>\n\t\t\t\t\t<false/>\n\t\t\t\t\t<key>Find</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tWEhDMQ==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Replace</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tWEhDXw==\n\t\t\t\t\t</data>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>change SAT0 to SATA</string>\n\t\t\t\t\t<key>Disabled</key>\n\t\t\t\t\t<false/>\n\t\t\t\t\t<key>Find</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tU0FUMA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Replace</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tU0FUQQ==\n\t\t\t\t\t</data>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>Fix 300-series RTC Bug</string>\n\t\t\t\t\t<key>Disabled</key>\n\t\t\t\t\t<true/>\n\t\t\t\t\t<key>Find</key>\n\t\t\t\t\t<data>\n\t\t\t\t\toAqTU1RBUwE=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Replace</key>\n\t\t\t\t\t<data>\n\t\t\t\t\toAqRCv8L//8=\n\t\t\t\t\t</data>\n\t\t\t\t</dict>\n\t\t\t</array>\n\t\t</dict>\n\t\t<key>DropTables</key>\n\t\t<array>\n\t\t\t<dict>\n\t\t\t\t<key>Signature</key>\n\t\t\t\t<string>DMAR</string>\n\t\t\t</dict>\n\t\t\t<dict>\n\t\t\t\t<key>Signature</key>\n\t\t\t\t<string>MATS</string>\n\t\t\t</dict>\n\t\t</array>\n\t\t<key>FixHeaders</key>\n\t\t<true/>\n\t\t<key>HaltEnabler</key>\n\t\t<false/>\n\t\t<key>SSDT</key>\n\t\t<dict>\n\t\t\t<key>Generate</key>\n\t\t\t<dict>\n\t\t\t\t<key>PluginType</key>\n\t\t\t\t<true/>\n\t\t\t</dict>\n\t\t</dict>\n\t</dict>\n\t<key>Boot</key>\n\t<dict>\n\t\t<key>Arguments</key>\n\t\t<string>keepsyms=1 dart=0 debug=0x100 -v</string>\n\t\t<key>DefaultVolume</key>\n\t\t<string>LastBootedVolume</string>\n\t\t<key>Timeout</key>\n\t\t<integer>5</integer>\n\t\t<key>XMPDetection</key>\n\t\t<string>Yes</string>\n\t</dict>\n\t<key>Devices</key>\n\t<dict>\n\t\t<key>Audio</key>\n\t\t<dict>\n\t\t\t<key>Inject</key>\n\t\t\t<integer>1</integer>\n\t\t\t<key>ResetHDA</key>\n\t\t\t<true/>\n\t\t</dict>\n\t\t<key>Properties</key>\n\t\t<dict>\n\t\t\t<key>PciRoot(0x0)/Pci(0x2,0x0)</key>\n\t\t\t<dict>\n\t\t\t\t<key>AAPL,ig-platform-id</key>\n\t\t\t\t<data>\n\t\t\t\tBwCbPg==\n\t\t\t\t</data>\n\t\t\t\t<key>framebuffer-patch-enable</key>\n\t\t\t\t<data>\n\t\t\t\tAQAAAA==\n\t\t\t\t</data>\n\t\t\t\t<key>framebuffer-stolenmem</key>\n\t\t\t\t<data>\n\t\t\t\tAAAwAQ==\n\t\t\t\t</data>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<key>USB</key>\n\t\t<dict>\n\t\t\t<key>FixOwnership</key>\n\t\t\t<true/>\n\t\t</dict>\n\t</dict>\n\t<key>Graphics</key>\n\t<dict>\n\t\t<key>Inject</key>\n\t\t<false/>\n\t</dict>\n\t<key>GUI</key>\n\t<dict>\n\t\t<key>Scan</key>\n\t\t<dict>\n\t\t\t<key>Entries</key>\n\t\t\t<true/>\n\t\t\t<key>Tool</key>\n\t\t\t<true/>\n\t\t</dict>\n\t</dict>\n\t<key>KernelAndKextPatches</key>\n\t<dict>\n\t\t<key>AppleIntelCPUPM</key>\n\t\t<false/>\n\t\t<key>KernelPm</key>\n\t\t<true/>\n\t\t<key>KextsToPatch</key>\n\t\t<array>\n\t\t\t<dict>\n\t\t\t\t<key>Comment</key>\n\t\t\t\t<string>Port limit increase</string>\n\t\t\t\t<key>Disabled</key>\n\t\t\t\t<false/>\n\t\t\t\t<key>Find</key>\n\t\t\t\t<data>\n\t\t\t\tg710////EA==\n\t\t\t\t</data>\n\t\t\t\t<key>InfoPlistPatch</key>\n\t\t\t\t<false/>\n\t\t\t\t<key>MatchOS</key>\n\t\t\t\t<string>10.12.x</string>\n\t\t\t\t<key>Name</key>\n\t\t\t\t<string>com.apple.driver.usb.AppleUSBXHCI</string>\n\t\t\t\t<key>Replace</key>\n\t\t\t\t<data>\n\t\t\t\tg710////Gw==\n\t\t\t\t</data>\n\t\t\t</dict>\n\t\t\t<dict>\n\t\t\t\t<key>Comment</key>\n\t\t\t\t<string>Port limit increase (RehabMan)</string>\n\t\t\t\t<key>Disabled</key>\n\t\t\t\t<false/>\n\t\t\t\t<key>Find</key>\n\t\t\t\t<data>\n\t\t\t\tg32IDw+DpwQAAA==\n\t\t\t\t</data>\n\t\t\t\t<key>InfoPlistPatch</key>\n\t\t\t\t<false/>\n\t\t\t\t<key>MatchOS</key>\n\t\t\t\t<string>10.13.x</string>\n\t\t\t\t<key>Name</key>\n\t\t\t\t<string>com.apple.driver.usb.AppleUSBXHCI</string>\n\t\t\t\t<key>Replace</key>\n\t\t\t\t<data>\n\t\t\t\tg32ID5CQkJCQkA==\n\t\t\t\t</data>\n\t\t\t</dict>\n\t\t\t<dict>\n\t\t\t\t<key>Comment</key>\n\t\t\t\t<string>Port limit increase (Ricky)</string>\n\t\t\t\t<key>Disabled</key>\n\t\t\t\t<false/>\n\t\t\t\t<key>Find</key>\n\t\t\t\t<data>\n\t\t\t\tg/sPD4OPBAAA\n\t\t\t\t</data>\n\t\t\t\t<key>InfoPlistPatch</key>\n\t\t\t\t<false/>\n\t\t\t\t<key>MatchOS</key>\n\t\t\t\t<string>10.14.x</string>\n\t\t\t\t<key>Name</key>\n\t\t\t\t<string>com.apple.driver.usb.AppleUSBXHCI</string>\n\t\t\t\t<key>Replace</key>\n\t\t\t\t<data>\n\t\t\t\tg/sPkJCQkJCQ\n\t\t\t\t</data>\n\t\t\t</dict>\n\t\t\t<dict>\n\t\t\t\t<key>Comment</key>\n\t\t\t\t<string>External icons patch</string>\n\t\t\t\t<key>Disabled</key>\n\t\t\t\t<false/>\n\t\t\t\t<key>Find</key>\n\t\t\t\t<data>\n\t\t\t\tRXh0ZXJuYWw=\n\t\t\t\t</data>\n\t\t\t\t<key>InfoPlistPatch</key>\n\t\t\t\t<false/>\n\t\t\t\t<key>Name</key>\n\t\t\t\t<string>AppleAHCIPort</string>\n\t\t\t\t<key>Replace</key>\n\t\t\t\t<data>\n\t\t\t\tSW50ZXJuYWw=\n\t\t\t\t</data>\n\t\t\t</dict>\n\t\t</array>\n\t</dict>\n\t<key>RtVariables</key>\n\t<dict>\n\t\t<key>BooterConfig</key>\n\t\t<string>0x28</string>\n\t\t<key>CsrActiveConfig</key>\n\t\t<string>0x3E7</string>\n\t\t<key>MLB</key>\n\t\t<string>C02726902CDH69F1M</string>\n\t\t<key>ROM</key>\n\t\t<string>UseMacAddr0</string>\n\t</dict>\n\t<key>SMBIOS</key>\n\t<dict>\n\t\t<key>BoardSerialNumber</key>\n\t\t<string>C02726902CDH69F1M</string>\n\t\t<key>ProductName</key>\n\t\t<string>iMac18,1</string>\n\t\t<key>SerialNumber</key>\n\t\t<string>C02TX0VDH7JY</string>\n\t\t<key>SmUUID</key>\n\t\t<string>91492A73-595C-4D97-A6FC-2B5D3ED1B54D</string>\n\t</dict>\n\t<key>SystemParameters</key>\n\t<dict>\n\t\t<key>InjectKexts</key>\n\t\t<string>Yes</string>\n\t\t<key>InjectSystemID</key>\n\t\t<true/>\n\t</dict>\n</dict>\n</plist>\n"
  },
  {
    "path": "Configs/Haswell/config.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>ACPI</key>\n\t<dict>\n\t\t<key>DSDT</key>\n\t\t<dict>\n\t\t\t<key>Fixes</key>\n\t\t\t<dict>\n\t\t\t\t<key>AddMCHC</key>\n\t\t\t\t<true/>\n\t\t\t\t<key>FixHPET</key>\n\t\t\t\t<true/>\n\t\t\t\t<key>FixIPIC</key>\n\t\t\t\t<true/>\n\t\t\t\t<key>FixRTC</key>\n\t\t\t\t<true/>\n\t\t\t\t<key>FixShutdown</key>\n\t\t\t\t<true/>\n\t\t\t\t<key>FixTMR</key>\n\t\t\t\t<true/>\n\t\t\t</dict>\n\t\t\t<key>Patches</key>\n\t\t\t<array>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>change EHC1 to EH01</string>\n\t\t\t\t\t<key>Disabled</key>\n\t\t\t\t\t<false/>\n\t\t\t\t\t<key>Find</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tRUhDMQ==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Replace</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tRUgwMQ==\n\t\t\t\t\t</data>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>change EHC2 to EH02</string>\n\t\t\t\t\t<key>Disabled</key>\n\t\t\t\t\t<false/>\n\t\t\t\t\t<key>Find</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tRUhDMg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Replace</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tRUgwMg==\n\t\t\t\t\t</data>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>change XHCI to XHC</string>\n\t\t\t\t\t<key>Disabled</key>\n\t\t\t\t\t<false/>\n\t\t\t\t\t<key>Find</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tWEhDSQ==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Replace</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tWEhDXw==\n\t\t\t\t\t</data>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>change XHC1 to XHC</string>\n\t\t\t\t\t<key>Disabled</key>\n\t\t\t\t\t<false/>\n\t\t\t\t\t<key>Find</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tWEhDMQ==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Replace</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tWEhDXw==\n\t\t\t\t\t</data>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>change SAT0 to SATA</string>\n\t\t\t\t\t<key>Disabled</key>\n\t\t\t\t\t<false/>\n\t\t\t\t\t<key>Find</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tU0FUMA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Replace</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tU0FUQQ==\n\t\t\t\t\t</data>\n\t\t\t\t</dict>\n\t\t\t</array>\n\t\t</dict>\n\t\t<key>DropTables</key>\n\t\t<array>\n\t\t\t<dict>\n\t\t\t\t<key>Signature</key>\n\t\t\t\t<string>DMAR</string>\n\t\t\t</dict>\n\t\t\t<dict>\n\t\t\t\t<key>Signature</key>\n\t\t\t\t<string>MATS</string>\n\t\t\t</dict>\n\t\t</array>\n\t\t<key>FixHeaders</key>\n\t\t<true/>\n\t\t<key>HaltEnabler</key>\n\t\t<false/>\n\t\t<key>SSDT</key>\n\t\t<dict>\n\t\t\t<key>Generate</key>\n\t\t\t<dict>\n\t\t\t\t<key>PluginType</key>\n\t\t\t\t<true/>\n\t\t\t</dict>\n\t\t</dict>\n\t</dict>\n\t<key>Boot</key>\n\t<dict>\n\t\t<key>Arguments</key>\n\t\t<string>keepsyms=1 dart=0 debug=0x100 -v</string>\n\t\t<key>DefaultVolume</key>\n\t\t<string>LastBootedVolume</string>\n\t\t<key>Timeout</key>\n\t\t<integer>5</integer>\n\t\t<key>XMPDetection</key>\n\t\t<string>Yes</string>\n\t</dict>\n\t<key>Devices</key>\n\t<dict>\n\t\t<key>Audio</key>\n\t\t<dict>\n\t\t\t<key>Inject</key>\n\t\t\t<integer>1</integer>\n\t\t\t<key>ResetHDA</key>\n\t\t\t<true/>\n\t\t</dict>\n\t\t<key>Properties</key>\n\t\t<dict>\n\t\t\t<key>PciRoot(0x0)/Pci(0x2,0x0)</key>\n\t\t\t<dict>\n\t\t\t\t<key>AAPL,ig-platform-id</key>\n\t\t\t\t<data>\n\t\t\t\tAwAiDQ==\n\t\t\t\t</data>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<key>USB</key>\n\t\t<dict>\n\t\t\t<key>FixOwnership</key>\n\t\t\t<true/>\n\t\t</dict>\n\t</dict>\n\t<key>Graphics</key>\n\t<dict>\n\t\t<key>Inject</key>\n\t\t<false/>\n\t</dict>\n\t<key>GUI</key>\n\t<dict>\n\t\t<key>Scan</key>\n\t\t<dict>\n\t\t\t<key>Entries</key>\n\t\t\t<true/>\n\t\t\t<key>Tool</key>\n\t\t\t<true/>\n\t\t</dict>\n\t</dict>\n\t<key>KernelAndKextPatches</key>\n\t<dict>\n\t\t<key>AppleIntelCPUPM</key>\n\t\t<false/>\n\t\t<key>KernelPm</key>\n\t\t<true/>\n\t\t<key>KextsToPatch</key>\n\t\t<array>\n\t\t\t<dict>\n\t\t\t\t<key>Comment</key>\n\t\t\t\t<string>Port limit increase</string>\n\t\t\t\t<key>Disabled</key>\n\t\t\t\t<false/>\n\t\t\t\t<key>Find</key>\n\t\t\t\t<data>\n\t\t\t\tg710////EA==\n\t\t\t\t</data>\n\t\t\t\t<key>InfoPlistPatch</key>\n\t\t\t\t<false/>\n\t\t\t\t<key>MatchOS</key>\n\t\t\t\t<string>10.12.x</string>\n\t\t\t\t<key>Name</key>\n\t\t\t\t<string>com.apple.driver.usb.AppleUSBXHCI</string>\n\t\t\t\t<key>Replace</key>\n\t\t\t\t<data>\n\t\t\t\tg710////Gw==\n\t\t\t\t</data>\n\t\t\t</dict>\n\t\t\t<dict>\n\t\t\t\t<key>Comment</key>\n\t\t\t\t<string>Port limit increase (RehabMan)</string>\n\t\t\t\t<key>Disabled</key>\n\t\t\t\t<false/>\n\t\t\t\t<key>Find</key>\n\t\t\t\t<data>\n\t\t\t\tg32IDw+DpwQAAA==\n\t\t\t\t</data>\n\t\t\t\t<key>InfoPlistPatch</key>\n\t\t\t\t<false/>\n\t\t\t\t<key>MatchOS</key>\n\t\t\t\t<string>10.13.x</string>\n\t\t\t\t<key>Name</key>\n\t\t\t\t<string>com.apple.driver.usb.AppleUSBXHCI</string>\n\t\t\t\t<key>Replace</key>\n\t\t\t\t<data>\n\t\t\t\tg32ID5CQkJCQkA==\n\t\t\t\t</data>\n\t\t\t</dict>\n\t\t\t<dict>\n\t\t\t\t<key>Comment</key>\n\t\t\t\t<string>Port limit increase (Ricky)</string>\n\t\t\t\t<key>Disabled</key>\n\t\t\t\t<false/>\n\t\t\t\t<key>Find</key>\n\t\t\t\t<data>\n\t\t\t\tg/sPD4OPBAAA\n\t\t\t\t</data>\n\t\t\t\t<key>InfoPlistPatch</key>\n\t\t\t\t<false/>\n\t\t\t\t<key>MatchOS</key>\n\t\t\t\t<string>10.14.x</string>\n\t\t\t\t<key>Name</key>\n\t\t\t\t<string>com.apple.driver.usb.AppleUSBXHCI</string>\n\t\t\t\t<key>Replace</key>\n\t\t\t\t<data>\n\t\t\t\tg/sPkJCQkJCQ\n\t\t\t\t</data>\n\t\t\t</dict>\n\t\t\t<dict>\n\t\t\t\t<key>Comment</key>\n\t\t\t\t<string>External icons patch</string>\n\t\t\t\t<key>Disabled</key>\n\t\t\t\t<false/>\n\t\t\t\t<key>Find</key>\n\t\t\t\t<data>\n\t\t\t\tRXh0ZXJuYWw=\n\t\t\t\t</data>\n\t\t\t\t<key>InfoPlistPatch</key>\n\t\t\t\t<false/>\n\t\t\t\t<key>Name</key>\n\t\t\t\t<string>AppleAHCIPort</string>\n\t\t\t\t<key>Replace</key>\n\t\t\t\t<data>\n\t\t\t\tSW50ZXJuYWw=\n\t\t\t\t</data>\n\t\t\t</dict>\n\t\t</array>\n\t</dict>\n\t<key>RtVariables</key>\n\t<dict>\n\t\t<key>BooterConfig</key>\n\t\t<string>0x28</string>\n\t\t<key>CsrActiveConfig</key>\n\t\t<string>0x3E7</string>\n\t\t<key>MLB</key>\n\t\t<string>C02532300QXG2Y7AD</string>\n\t\t<key>ROM</key>\n\t\t<string>UseMacAddr0</string>\n\t</dict>\n\t<key>SMBIOS</key>\n\t<dict>\n\t\t<key>BoardSerialNumber</key>\n\t\t<string>C02532300QXG2Y7AD</string>\n\t\t<key>ProductName</key>\n\t\t<string>iMac15,1</string>\n\t\t<key>SerialNumber</key>\n\t\t<string>C02Q6FYUFY10</string>\n\t\t<key>SmUUID</key>\n\t\t<string>C495EE18-C8EA-4100-8CAD-3099AC27772F</string>\n\t</dict>\n\t<key>SystemParameters</key>\n\t<dict>\n\t\t<key>InjectKexts</key>\n\t\t<string>Yes</string>\n\t\t<key>InjectSystemID</key>\n\t\t<true/>\n\t</dict>\n</dict>\n</plist>\n"
  },
  {
    "path": "Configs/Ivy Bridge/config.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>ACPI</key>\n\t<dict>\n\t\t<key>DSDT</key>\n\t\t<dict>\n\t\t\t<key>Fixes</key>\n\t\t\t<dict>\n\t\t\t\t<key>AddMCHC</key>\n\t\t\t\t<true/>\n\t\t\t\t<key>FixHPET</key>\n\t\t\t\t<true/>\n\t\t\t\t<key>FixIPIC</key>\n\t\t\t\t<true/>\n\t\t\t\t<key>FixRTC</key>\n\t\t\t\t<true/>\n\t\t\t\t<key>FixShutdown</key>\n\t\t\t\t<true/>\n\t\t\t\t<key>FixTMR</key>\n\t\t\t\t<true/>\n\t\t\t</dict>\n\t\t\t<key>Patches</key>\n\t\t\t<array>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>change EHC1 to EH01</string>\n\t\t\t\t\t<key>Disabled</key>\n\t\t\t\t\t<false/>\n\t\t\t\t\t<key>Find</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tRUhDMQ==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Replace</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tRUgwMQ==\n\t\t\t\t\t</data>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>change EHC2 to EH02</string>\n\t\t\t\t\t<key>Disabled</key>\n\t\t\t\t\t<false/>\n\t\t\t\t\t<key>Find</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tRUhDMg==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Replace</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tRUgwMg==\n\t\t\t\t\t</data>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>change XHCI to XHC</string>\n\t\t\t\t\t<key>Disabled</key>\n\t\t\t\t\t<false/>\n\t\t\t\t\t<key>Find</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tWEhDSQ==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Replace</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tWEhDXw==\n\t\t\t\t\t</data>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>change XHC1 to XHC</string>\n\t\t\t\t\t<key>Disabled</key>\n\t\t\t\t\t<false/>\n\t\t\t\t\t<key>Find</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tWEhDMQ==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Replace</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tWEhDXw==\n\t\t\t\t\t</data>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>change SAT0 to SATA</string>\n\t\t\t\t\t<key>Disabled</key>\n\t\t\t\t\t<false/>\n\t\t\t\t\t<key>Find</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tU0FUMA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Replace</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tU0FUQQ==\n\t\t\t\t\t</data>\n\t\t\t\t</dict>\n\t\t\t</array>\n\t\t</dict>\n\t\t<key>DropTables</key>\n\t\t<array>\n\t\t\t<dict>\n\t\t\t\t<key>Signature</key>\n\t\t\t\t<string>SSDT</string>\n\t\t\t\t<key>TableId</key>\n\t\t\t\t<string>CpuPm</string>\n\t\t\t</dict>\n\t\t\t<dict>\n\t\t\t\t<key>Signature</key>\n\t\t\t\t<string>SSDT</string>\n\t\t\t\t<key>TableId</key>\n\t\t\t\t<string>Cpu0Ist</string>\n\t\t\t</dict>\n\t\t\t<dict>\n\t\t\t\t<key>Signature</key>\n\t\t\t\t<string>DMAR</string>\n\t\t\t</dict>\n\t\t\t<dict>\n\t\t\t\t<key>Signature</key>\n\t\t\t\t<string>MATS</string>\n\t\t\t</dict>\n\t\t</array>\n\t\t<key>FixHeaders</key>\n\t\t<true/>\n\t\t<key>SSDT</key>\n\t\t<dict>\n\t\t\t<key>Generate</key>\n\t\t\t<dict/>\n\t\t</dict>\n\t</dict>\n\t<key>Boot</key>\n\t<dict>\n\t\t<key>Arguments</key>\n\t\t<string>keepsyms=1 debug=0x100 -xcpm -v</string>\n\t\t<key>DefaultVolume</key>\n\t\t<string>LastBootedVolume</string>\n\t\t<key>Timeout</key>\n\t\t<integer>5</integer>\n\t\t<key>XMPDetection</key>\n\t\t<string>Yes</string>\n\t</dict>\n\t<key>Devices</key>\n\t<dict>\n\t\t<key>Audio</key>\n\t\t<dict>\n\t\t\t<key>Inject</key>\n\t\t\t<integer>1</integer>\n\t\t\t<key>ResetHDA</key>\n\t\t\t<true/>\n\t\t</dict>\n\t\t<key>Properties</key>\n\t\t<dict>\n\t\t\t<key>PciRoot(0x0)/Pci(0x2,0x0)</key>\n\t\t\t<dict>\n\t\t\t\t<key>AAPL,ig-platform-id</key>\n\t\t\t\t<data>\n\t\t\t\tCgBmAQ==\n\t\t\t\t</data>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<key>USB</key>\n\t\t<dict>\n\t\t\t<key>FixOwnership</key>\n\t\t\t<true/>\n\t\t</dict>\n\t</dict>\n\t<key>Graphics</key>\n\t<dict>\n\t\t<key>Inject</key>\n\t\t<false/>\n\t</dict>\n\t<key>GUI</key>\n\t<dict>\n\t\t<key>Scan</key>\n\t\t<dict>\n\t\t\t<key>Entries</key>\n\t\t\t<true/>\n\t\t\t<key>Tool</key>\n\t\t\t<true/>\n\t\t</dict>\n\t</dict>\n\t<key>KernelAndKextPatches</key>\n\t<dict>\n\t\t<key>AppleIntelCPUPM</key>\n\t\t<true/>\n\t\t<key>KernelPm</key>\n\t\t<true/>\n\t\t<key>KextsToPatch</key>\n\t\t<array>\n\t\t\t<dict>\n\t\t\t\t<key>Comment</key>\n\t\t\t\t<string>Port limit increase</string>\n\t\t\t\t<key>Disabled</key>\n\t\t\t\t<false/>\n\t\t\t\t<key>Find</key>\n\t\t\t\t<data>\n\t\t\t\tg710////EA==\n\t\t\t\t</data>\n\t\t\t\t<key>InfoPlistPatch</key>\n\t\t\t\t<false/>\n\t\t\t\t<key>MatchOS</key>\n\t\t\t\t<string>10.12.x</string>\n\t\t\t\t<key>Name</key>\n\t\t\t\t<string>com.apple.driver.usb.AppleUSBXHCI</string>\n\t\t\t\t<key>Replace</key>\n\t\t\t\t<data>\n\t\t\t\tg710////Gw==\n\t\t\t\t</data>\n\t\t\t</dict>\n\t\t\t<dict>\n\t\t\t\t<key>Comment</key>\n\t\t\t\t<string>Port limit increase (RehabMan)</string>\n\t\t\t\t<key>Disabled</key>\n\t\t\t\t<false/>\n\t\t\t\t<key>Find</key>\n\t\t\t\t<data>\n\t\t\t\tg32IDw+DpwQAAA==\n\t\t\t\t</data>\n\t\t\t\t<key>InfoPlistPatch</key>\n\t\t\t\t<false/>\n\t\t\t\t<key>MatchOS</key>\n\t\t\t\t<string>10.13.x</string>\n\t\t\t\t<key>Name</key>\n\t\t\t\t<string>com.apple.driver.usb.AppleUSBXHCI</string>\n\t\t\t\t<key>Replace</key>\n\t\t\t\t<data>\n\t\t\t\tg32ID5CQkJCQkA==\n\t\t\t\t</data>\n\t\t\t</dict>\n\t\t\t<dict>\n\t\t\t\t<key>Comment</key>\n\t\t\t\t<string>Port limit increase (Ricky)</string>\n\t\t\t\t<key>Disabled</key>\n\t\t\t\t<false/>\n\t\t\t\t<key>Find</key>\n\t\t\t\t<data>\n\t\t\t\tg/sPD4OPBAAA\n\t\t\t\t</data>\n\t\t\t\t<key>InfoPlistPatch</key>\n\t\t\t\t<false/>\n\t\t\t\t<key>MatchOS</key>\n\t\t\t\t<string>10.14.x</string>\n\t\t\t\t<key>Name</key>\n\t\t\t\t<string>com.apple.driver.usb.AppleUSBXHCI</string>\n\t\t\t\t<key>Replace</key>\n\t\t\t\t<data>\n\t\t\t\tg/sPkJCQkJCQ\n\t\t\t\t</data>\n\t\t\t</dict>\n\t\t\t<dict>\n\t\t\t\t<key>Comment</key>\n\t\t\t\t<string>External icons patch</string>\n\t\t\t\t<key>Disabled</key>\n\t\t\t\t<false/>\n\t\t\t\t<key>Find</key>\n\t\t\t\t<data>\n\t\t\t\tRXh0ZXJuYWw=\n\t\t\t\t</data>\n\t\t\t\t<key>InfoPlistPatch</key>\n\t\t\t\t<false/>\n\t\t\t\t<key>Name</key>\n\t\t\t\t<string>AppleAHCIPort</string>\n\t\t\t\t<key>Replace</key>\n\t\t\t\t<data>\n\t\t\t\tSW50ZXJuYWw=\n\t\t\t\t</data>\n\t\t\t</dict>\n\t\t</array>\n\t</dict>\n\t<key>RtVariables</key>\n\t<dict>\n\t\t<key>BooterConfig</key>\n\t\t<string>0x28</string>\n\t\t<key>CsrActiveConfig</key>\n\t\t<string>0x3E7</string>\n\t\t<key>MLB</key>\n\t\t<string>C02253902J9F2FRCB</string>\n\t\t<key>ROM</key>\n\t\t<string>UseMacAddr0</string>\n\t</dict>\n\t<key>SMBIOS</key>\n\t<dict>\n\t\t<key>BoardSerialNumber</key>\n\t\t<string>C02253902J9F2FRCB</string>\n\t\t<key>ProductName</key>\n\t\t<string>iMac13,2</string>\n\t\t<key>SerialNumber</key>\n\t\t<string>C02JX0KSDNCW</string>\n\t\t<key>SmUUID</key>\n\t\t<string>FDDCE665-D5C0-4738-8F80-77380686E42B</string>\n\t</dict>\n\t<key>SystemParameters</key>\n\t<dict>\n\t\t<key>InjectKexts</key>\n\t\t<string>Yes</string>\n\t\t<key>InjectSystemID</key>\n\t\t<true/>\n\t</dict>\n</dict>\n</plist>\n"
  },
  {
    "path": "Configs/KabyLake/config.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>ACPI</key>\n\t<dict>\n\t\t<key>DSDT</key>\n\t\t<dict>\n\t\t\t<key>Fixes</key>\n\t\t\t<dict>\n\t\t\t\t<key>AddMCHC</key>\n\t\t\t\t<true/>\n\t\t\t\t<key>FixHPET</key>\n\t\t\t\t<true/>\n\t\t\t\t<key>FixIPIC</key>\n\t\t\t\t<true/>\n\t\t\t\t<key>FixRTC</key>\n\t\t\t\t<true/>\n\t\t\t\t<key>FixShutdown</key>\n\t\t\t\t<true/>\n\t\t\t\t<key>FixTMR</key>\n\t\t\t\t<true/>\n\t\t\t</dict>\n\t\t\t<key>Patches</key>\n\t\t\t<array>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>change XHCI to XHC</string>\n\t\t\t\t\t<key>Disabled</key>\n\t\t\t\t\t<false/>\n\t\t\t\t\t<key>Find</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tWEhDSQ==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Replace</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tWEhDXw==\n\t\t\t\t\t</data>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>change XHC1 to XHC</string>\n\t\t\t\t\t<key>Disabled</key>\n\t\t\t\t\t<false/>\n\t\t\t\t\t<key>Find</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tWEhDMQ==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Replace</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tWEhDXw==\n\t\t\t\t\t</data>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>change SAT0 to SATA</string>\n\t\t\t\t\t<key>Disabled</key>\n\t\t\t\t\t<false/>\n\t\t\t\t\t<key>Find</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tU0FUMA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Replace</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tU0FUQQ==\n\t\t\t\t\t</data>\n\t\t\t\t</dict>\n\t\t\t</array>\n\t\t</dict>\n\t\t<key>DropTables</key>\n\t\t<array>\n\t\t\t<dict>\n\t\t\t\t<key>Signature</key>\n\t\t\t\t<string>DMAR</string>\n\t\t\t</dict>\n\t\t\t<dict>\n\t\t\t\t<key>Signature</key>\n\t\t\t\t<string>MATS</string>\n\t\t\t</dict>\n\t\t</array>\n\t\t<key>FixHeaders</key>\n\t\t<true/>\n\t\t<key>HaltEnabler</key>\n\t\t<false/>\n\t\t<key>SSDT</key>\n\t\t<dict>\n\t\t\t<key>Generate</key>\n\t\t\t<dict>\n\t\t\t\t<key>PluginType</key>\n\t\t\t\t<true/>\n\t\t\t</dict>\n\t\t</dict>\n\t</dict>\n\t<key>Boot</key>\n\t<dict>\n\t\t<key>Arguments</key>\n\t\t<string>keepsyms=1 dart=0 debug=0x100 -v</string>\n\t\t<key>DefaultVolume</key>\n\t\t<string>LastBootedVolume</string>\n\t\t<key>Timeout</key>\n\t\t<integer>5</integer>\n\t\t<key>XMPDetection</key>\n\t\t<string>Yes</string>\n\t</dict>\n\t<key>Devices</key>\n\t<dict>\n\t\t<key>Audio</key>\n\t\t<dict>\n\t\t\t<key>Inject</key>\n\t\t\t<integer>1</integer>\n\t\t\t<key>ResetHDA</key>\n\t\t\t<true/>\n\t\t</dict>\n\t\t<key>Properties</key>\n\t\t<dict>\n\t\t\t<key>PciRoot(0x0)/Pci(0x2,0x0)</key>\n\t\t\t<dict>\n\t\t\t\t<key>AAPL,ig-platform-id</key>\n\t\t\t\t<data>\n\t\t\t\tAAASWQ==\n\t\t\t\t</data>\n\t\t\t\t<key>framebuffer-patch-enable</key>\n\t\t\t\t<data>\n\t\t\t\tAQAAAA==\n\t\t\t\t</data>\n\t\t\t\t<key>framebuffer-stolenmem</key>\n\t\t\t\t<data>\n\t\t\t\tAAAwAQ==\n\t\t\t\t</data>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<key>USB</key>\n\t\t<dict>\n\t\t\t<key>FixOwnership</key>\n\t\t\t<true/>\n\t\t</dict>\n\t</dict>\n    <key>Graphics</key>\n\t<dict>\n\t\t<key>Inject</key>\n\t\t<false/>\n\t</dict>\n\t<key>GUI</key>\n\t<dict>\n\t\t<key>Scan</key>\n\t\t<dict>\n\t\t\t<key>Entries</key>\n\t\t\t<true/>\n\t\t\t<key>Tool</key>\n\t\t\t<true/>\n\t\t</dict>\n\t</dict>\n\t<key>KernelAndKextPatches</key>\n\t<dict>\n\t\t<key>AppleIntelCPUPM</key>\n\t\t<false/>\n\t\t<key>KernelPm</key>\n\t\t<true/>\n\t\t<key>KextsToPatch</key>\n\t\t<array>\n\t\t\t<dict>\n\t\t\t\t<key>Comment</key>\n\t\t\t\t<string>Port limit increase</string>\n\t\t\t\t<key>Disabled</key>\n\t\t\t\t<false/>\n\t\t\t\t<key>Find</key>\n\t\t\t\t<data>\n\t\t\t\tg710////EA==\n\t\t\t\t</data>\n\t\t\t\t<key>InfoPlistPatch</key>\n\t\t\t\t<false/>\n\t\t\t\t<key>MatchOS</key>\n\t\t\t\t<string>10.12.x</string>\n\t\t\t\t<key>Name</key>\n\t\t\t\t<string>com.apple.driver.usb.AppleUSBXHCI</string>\n\t\t\t\t<key>Replace</key>\n\t\t\t\t<data>\n\t\t\t\tg710////Gw==\n\t\t\t\t</data>\n\t\t\t</dict>\n\t\t\t<dict>\n\t\t\t\t<key>Comment</key>\n\t\t\t\t<string>Port limit increase (RehabMan)</string>\n\t\t\t\t<key>Disabled</key>\n\t\t\t\t<false/>\n\t\t\t\t<key>Find</key>\n\t\t\t\t<data>\n\t\t\t\tg32IDw+DpwQAAA==\n\t\t\t\t</data>\n\t\t\t\t<key>InfoPlistPatch</key>\n\t\t\t\t<false/>\n\t\t\t\t<key>MatchOS</key>\n\t\t\t\t<string>10.13.x</string>\n\t\t\t\t<key>Name</key>\n\t\t\t\t<string>com.apple.driver.usb.AppleUSBXHCI</string>\n\t\t\t\t<key>Replace</key>\n\t\t\t\t<data>\n\t\t\t\tg32ID5CQkJCQkA==\n\t\t\t\t</data>\n\t\t\t</dict>\n\t\t\t<dict>\n\t\t\t\t<key>Comment</key>\n\t\t\t\t<string>Port limit increase (Ricky)</string>\n\t\t\t\t<key>Disabled</key>\n\t\t\t\t<false/>\n\t\t\t\t<key>Find</key>\n\t\t\t\t<data>\n\t\t\t\tg/sPD4OPBAAA\n\t\t\t\t</data>\n\t\t\t\t<key>InfoPlistPatch</key>\n\t\t\t\t<false/>\n\t\t\t\t<key>MatchOS</key>\n\t\t\t\t<string>10.14.x</string>\n\t\t\t\t<key>Name</key>\n\t\t\t\t<string>com.apple.driver.usb.AppleUSBXHCI</string>\n\t\t\t\t<key>Replace</key>\n\t\t\t\t<data>\n\t\t\t\tg/sPkJCQkJCQ\n\t\t\t\t</data>\n\t\t\t</dict>\n\t\t\t<dict>\n\t\t\t\t<key>Comment</key>\n\t\t\t\t<string>External icons patch</string>\n\t\t\t\t<key>Disabled</key>\n\t\t\t\t<false/>\n\t\t\t\t<key>Find</key>\n\t\t\t\t<data>\n\t\t\t\tRXh0ZXJuYWw=\n\t\t\t\t</data>\n\t\t\t\t<key>InfoPlistPatch</key>\n\t\t\t\t<false/>\n\t\t\t\t<key>Name</key>\n\t\t\t\t<string>AppleAHCIPort</string>\n\t\t\t\t<key>Replace</key>\n\t\t\t\t<data>\n\t\t\t\tSW50ZXJuYWw=\n\t\t\t\t</data>\n\t\t\t</dict>\n\t\t</array>\n\t</dict>\n\t<key>RtVariables</key>\n\t<dict>\n\t\t<key>BooterConfig</key>\n\t\t<string>0x28</string>\n\t\t<key>CsrActiveConfig</key>\n\t\t<string>0x3E7</string>\n\t\t<key>MLB</key>\n\t\t<string>C02726902CDH69F1M</string>\n\t\t<key>ROM</key>\n\t\t<string>UseMacAddr0</string>\n\t</dict>\n\t<key>SMBIOS</key>\n\t<dict>\n\t\t<key>BoardSerialNumber</key>\n\t\t<string>C02726902CDH69F1M</string>\n\t\t<key>ProductName</key>\n\t\t<string>iMac18,1</string>\n\t\t<key>SerialNumber</key>\n\t\t<string>C02TX0VDH7JY</string>\n\t\t<key>SmUUID</key>\n\t\t<string>91492A73-595C-4D97-A6FC-2B5D3ED1B54D</string>\n\t</dict>\n\t<key>SystemParameters</key>\n\t<dict>\n\t\t<key>InjectKexts</key>\n\t\t<string>Yes</string>\n        <key>InjectSystemID</key>\n\t\t<true/>\n\t</dict>\n</dict>\n</plist>\n"
  },
  {
    "path": "Configs/Skylake/config.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>ACPI</key>\n\t<dict>\n\t\t<key>DSDT</key>\n\t\t<dict>\n\t\t\t<key>Fixes</key>\n\t\t\t<dict>\n\t\t\t\t<key>AddMCHC</key>\n\t\t\t\t<true/>\n\t\t\t\t<key>FixHPET</key>\n\t\t\t\t<true/>\n\t\t\t\t<key>FixIPIC</key>\n\t\t\t\t<true/>\n\t\t\t\t<key>FixRTC</key>\n\t\t\t\t<true/>\n\t\t\t\t<key>FixShutdown</key>\n\t\t\t\t<true/>\n\t\t\t\t<key>FixTMR</key>\n\t\t\t\t<true/>\n\t\t\t</dict>\n\t\t\t<key>Patches</key>\n\t\t\t<array>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>change XHCI to XHC</string>\n\t\t\t\t\t<key>Disabled</key>\n\t\t\t\t\t<false/>\n\t\t\t\t\t<key>Find</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tWEhDSQ==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Replace</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tWEhDXw==\n\t\t\t\t\t</data>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>change XHC1 to XHC</string>\n\t\t\t\t\t<key>Disabled</key>\n\t\t\t\t\t<false/>\n\t\t\t\t\t<key>Find</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tWEhDMQ==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Replace</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tWEhDXw==\n\t\t\t\t\t</data>\n\t\t\t\t</dict>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>change SAT0 to SATA</string>\n\t\t\t\t\t<key>Disabled</key>\n\t\t\t\t\t<false/>\n\t\t\t\t\t<key>Find</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tU0FUMA==\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Replace</key>\n\t\t\t\t\t<data>\n\t\t\t\t\tU0FUQQ==\n\t\t\t\t\t</data>\n\t\t\t\t</dict>\n\t\t\t</array>\n\t\t</dict>\n\t\t<key>DropTables</key>\n\t\t<array>\n\t\t\t<dict>\n\t\t\t\t<key>Signature</key>\n\t\t\t\t<string>DMAR</string>\n\t\t\t</dict>\n\t\t\t<dict>\n\t\t\t\t<key>Signature</key>\n\t\t\t\t<string>MATS</string>\n\t\t\t</dict>\n\t\t</array>\n\t\t<key>FixHeaders</key>\n\t\t<true/>\n\t\t<key>HaltEnabler</key>\n\t\t<false/>\n\t\t<key>SSDT</key>\n\t\t<dict>\n\t\t\t<key>Generate</key>\n\t\t\t<dict>\n\t\t\t\t<key>PluginType</key>\n\t\t\t\t<true/>\n\t\t\t</dict>\n\t\t</dict>\n\t</dict>\n\t<key>Boot</key>\n\t<dict>\n\t\t<key>Arguments</key>\n\t\t<string>keepsyms=1 dart=0 debug=0x100 -v</string>\n\t\t<key>DefaultVolume</key>\n\t\t<string>LastBootedVolume</string>\n\t\t<key>Timeout</key>\n\t\t<integer>5</integer>\n\t\t<key>XMPDetection</key>\n\t\t<string>Yes</string>\n\t</dict>\n\t<key>Devices</key>\n\t<dict>\n\t\t<key>Audio</key>\n\t\t<dict>\n\t\t\t<key>Inject</key>\n\t\t\t<integer>1</integer>\n\t\t\t<key>ResetHDA</key>\n\t\t\t<true/>\n\t\t</dict>\n\t\t<key>Properties</key>\n\t\t<dict>\n\t\t\t<key>PciRoot(0x0)/Pci(0x2,0x0)</key>\n\t\t\t<dict>\n\t\t\t\t<key>AAPL,ig-platform-id</key>\n\t\t\t\t<data>\n\t\t\t\tAAASGQ==\n\t\t\t\t</data>\n\t\t\t\t<key>framebuffer-patch-enable</key>\n\t\t\t\t<data>\n\t\t\t\tAQAAAA==\n\t\t\t\t</data>\n\t\t\t\t<key>framebuffer-stolenmem</key>\n\t\t\t\t<data>\n\t\t\t\tAAAwAQ==\n\t\t\t\t</data>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<key>USB</key>\n\t\t<dict>\n\t\t\t<key>FixOwnership</key>\n\t\t\t<true/>\n\t\t</dict>\n\t</dict>\n\t<key>Graphics</key>\n\t<dict>\n\t\t<key>Inject</key>\n\t\t<false/>\n\t</dict>\n\t<key>GUI</key>\n\t<dict>\n\t\t<key>Scan</key>\n\t\t<dict>\n\t\t\t<key>Entries</key>\n\t\t\t<true/>\n\t\t\t<key>Tool</key>\n\t\t\t<true/>\n\t\t</dict>\n\t</dict>\n\t<key>KernelAndKextPatches</key>\n\t<dict>\n\t\t<key>AppleIntelCPUPM</key>\n\t\t<false/>\n\t\t<key>KernelPm</key>\n\t\t<true/>\n\t\t<key>KextsToPatch</key>\n\t\t<array>\n\t\t\t<dict>\n\t\t\t\t<key>Comment</key>\n\t\t\t\t<string>Port limit increase</string>\n\t\t\t\t<key>Disabled</key>\n\t\t\t\t<false/>\n\t\t\t\t<key>Find</key>\n\t\t\t\t<data>\n\t\t\t\tg710////EA==\n\t\t\t\t</data>\n\t\t\t\t<key>InfoPlistPatch</key>\n\t\t\t\t<false/>\n\t\t\t\t<key>MatchOS</key>\n\t\t\t\t<string>10.12.x</string>\n\t\t\t\t<key>Name</key>\n\t\t\t\t<string>com.apple.driver.usb.AppleUSBXHCI</string>\n\t\t\t\t<key>Replace</key>\n\t\t\t\t<data>\n\t\t\t\tg710////Gw==\n\t\t\t\t</data>\n\t\t\t</dict>\n\t\t\t<dict>\n\t\t\t\t<key>Comment</key>\n\t\t\t\t<string>Port limit increase (RehabMan)</string>\n\t\t\t\t<key>Disabled</key>\n\t\t\t\t<false/>\n\t\t\t\t<key>Find</key>\n\t\t\t\t<data>\n\t\t\t\tg32IDw+DpwQAAA==\n\t\t\t\t</data>\n\t\t\t\t<key>InfoPlistPatch</key>\n\t\t\t\t<false/>\n\t\t\t\t<key>MatchOS</key>\n\t\t\t\t<string>10.13.x</string>\n\t\t\t\t<key>Name</key>\n\t\t\t\t<string>com.apple.driver.usb.AppleUSBXHCI</string>\n\t\t\t\t<key>Replace</key>\n\t\t\t\t<data>\n\t\t\t\tg32ID5CQkJCQkA==\n\t\t\t\t</data>\n\t\t\t</dict>\n\t\t\t<dict>\n\t\t\t\t<key>Comment</key>\n\t\t\t\t<string>Port limit increase (Ricky)</string>\n\t\t\t\t<key>Disabled</key>\n\t\t\t\t<false/>\n\t\t\t\t<key>Find</key>\n\t\t\t\t<data>\n\t\t\t\tg/sPD4OPBAAA\n\t\t\t\t</data>\n\t\t\t\t<key>InfoPlistPatch</key>\n\t\t\t\t<false/>\n\t\t\t\t<key>MatchOS</key>\n\t\t\t\t<string>10.14.x</string>\n\t\t\t\t<key>Name</key>\n\t\t\t\t<string>com.apple.driver.usb.AppleUSBXHCI</string>\n\t\t\t\t<key>Replace</key>\n\t\t\t\t<data>\n\t\t\t\tg/sPkJCQkJCQ\n\t\t\t\t</data>\n\t\t\t</dict>\n\t\t\t<dict>\n\t\t\t\t<key>Comment</key>\n\t\t\t\t<string>External icons patch</string>\n\t\t\t\t<key>Disabled</key>\n\t\t\t\t<false/>\n\t\t\t\t<key>Find</key>\n\t\t\t\t<data>\n\t\t\t\tRXh0ZXJuYWw=\n\t\t\t\t</data>\n\t\t\t\t<key>InfoPlistPatch</key>\n\t\t\t\t<false/>\n\t\t\t\t<key>Name</key>\n\t\t\t\t<string>AppleAHCIPort</string>\n\t\t\t\t<key>Replace</key>\n\t\t\t\t<data>\n\t\t\t\tSW50ZXJuYWw=\n\t\t\t\t</data>\n\t\t\t</dict>\n\t\t</array>\n\t</dict>\n\t<key>RtVariables</key>\n\t<dict>\n\t\t<key>BooterConfig</key>\n\t\t<string>0x28</string>\n\t\t<key>CsrActiveConfig</key>\n\t\t<string>0x3E7</string>\n\t\t<key>MLB</key>\n\t\t<string>C026511044NGPF78C</string>\n\t\t<key>ROM</key>\n\t\t<string>UseMacAddr0</string>\n\t</dict>\n\t<key>SMBIOS</key>\n\t<dict>\n\t\t<key>BoardSerialNumber</key>\n\t\t<string>C026511044NGPF78C</string>\n\t\t<key>ProductName</key>\n\t\t<string>iMac17,1</string>\n\t\t<key>SerialNumber</key>\n\t\t<string>C02SVTZ7GG7L</string>\n\t\t<key>SmUUID</key>\n\t\t<string>B5191FBD-72A2-4668-B53D-1A151A414089</string>\n\t</dict>\n\t<key>SystemParameters</key>\n\t<dict>\n\t\t<key>InjectKexts</key>\n\t\t<string>Yes</string>\n\t\t<key>InjectSystemID</key>\n\t\t<true/>\n\t</dict>\n</dict>\n</plist>\n"
  },
  {
    "path": "README.md",
    "content": "# Getting Started\n\n## So You Want A Vanilla Install?\n\n#### What does that even mean?\n\nA vanilla setup implies that the OS itself remains relatively untouched - and that the bulk of the Hackintosh-related kexts, patches, etc are contained on the EFI partition. For all intents and purposes, a vanilla install's main partition is _identical_ to that of an official Apple computer.\n\n**Quick Terms Glossary**\n\nThere's a number of terms you'll be seeing throughout this guide - I'll outline a few of them and their definitions here:\n\n* _Clover_ - this is the bootloader we'll be using.  Real macs have a custom firmware that allows them to boot macOS.  PC hardware needs a little help to get this working; Clover helps us achieve that.  It also handles kext injection, ACPI renames, kext patches, and a ton of other functions.\n* _Kexts_ - the word \"kext\" is actually the combination of **K**ernel **Ext**ension; and you can think of kexts simply as drivers for macOS.\n* _Config.plist_ - this is the file that tells Clover what to do.  It's an XML formatted property list \\(looks very similar to HTML\\) and is one of the most important parts of setting up your Hackintosh.\n* _OOB_ - an acronym for _Out Of the Box_ that implies working support without tweaking.\n* More will be added as I work on this guide \\(probably\\)\n\n## PreRequisites\n\nThis guide focuses on Desktops _ONLY_. There are other guides out there for laptops \\(see [RehabMan's guide](https://www.tonymacx86.com/threads/guide-booting-the-os-x-installer-on-laptops-with-clover.148093/) at TMac\\) - but they're often _much more specific_ than this guide will be.\n\nWe'll need a few things to get us started:\n\n1. An 8+GB USB flash drive\n2. The Install OS X/macOS.app \\(preferably downloaded direct from the app store\\)\n3. \\_\\_[_Clover's Install Package_](https://github.com/Dids/clover-builder/releases) __\\(courtesy of Dids\\)\n4. [_Clover Configurator_](http://mackie100projects.altervista.org/download-clover-configurator/) \\(the brave can edit with any text editor - but CC is typically quicker\\)\n   * Make sure you get the _Global_ edition\n5. \\_\\_[_VirtualSMC.kext_](https://github.com/acidanthera/VirtualSMC/releases) - this supercedes _FakeSMC.kext_ as our SMC emulator and either _VirtualSMC_ or _FakeSMC_ is vital to booting our Hackintosh.  Without one of them, we'd never boot.\n6. Any other kexts for our mobo/etc\n   * We'll go over this in the next section!\n7. Some patience, persistence, and google-fu\n\n"
  },
  {
    "path": "SUMMARY.md",
    "content": "# Table of contents\n\n* [Getting Started](README.md)\n* [Gathering Kexts](gathering-kexts.md)\n* [Building the USB Installer](building-the-usb-installer.md)\n* [Clover Setup](clover-setup.md)\n* [Config.plist Basics](config.plist-basics.md)\n\n## Config.Plist Per Hardware\n\n* [Ivy Bridge](config.plist-per-hardware/ivy-bridge.md)\n* [Haswell](config.plist-per-hardware/haswell.md)\n* [Skylake](config.plist-per-hardware/skylake.md)\n* [Kaby Lake](config.plist-per-hardware/kaby-lake.md)\n* [Coffee Lake](config.plist-per-hardware/coffee-lake.md)\n\n"
  },
  {
    "path": "book.json",
    "content": "{\n    \"plugins\": [\"theme-api\"],\n    \"pluginsConfig\": {\n        \"theme-api\": {\n            \"theme\": \"dark\"\n        }\n    }\n}\n"
  },
  {
    "path": "building-the-usb-installer.md",
    "content": "# Building the USB Installer\n\nOnce you have your 8+GB USB installer, we need to make sure it's set up properly. If you don't plan on patching the installer \\(and I don't\\) - you want the USB setup the following way:\n\n* GUID Partition Map\n* 1 Partition\n* OS X Extended \\(Journaled\\)\n\nTo do this, fire up the Terminal \\(located in `/Applications/Utilities`\\) and type `diskutil list`.\n\nThis will give you a list of all the connected disks and their partitions. Take note of the disk identifier for your USB drive. **DO NOT GUESS THIS AS WE ARE ABOUT TO ERASE IT!** Then run the following replacing `disk#` with your actual identifier:\n\n```text\ndiskutil partitionDisk /dev/disk# GPT JHFS+ \"USB\" 100%\n```\n\nThis will partition the disk as listed above and rename it to \"USB\".\n\nYou can now run the corresponding command from [Apple's own instructions](https://support.apple.com/en-us/HT201372) - for this example, we'll be using the Mojave command:\n\n```text\nsudo \"/Applications/Install macOS Mojave.app/Contents/Resources/createinstallmedia\" --volume /Volumes/USB\n```\n\n_This will take some time, and it doesn't output much for status updates._ It can take upwards of 30-40 minutes, so just be patient.  Grab a cup of coffee, read the news, catch up with friends and family - you'll be here for a bit\n\nWhen this completes, you will have a USB installer that can boot on a _real Mac_. We just need to get the Hackintosh-related stuff set up, and we'll be in business!\n\nFor those that are timid around the command line - I _did_ put together [a script](https://github.com/corpnewt/USB-Installer-Creator) awhile back that can perform these actions for you.\n\n"
  },
  {
    "path": "clover-setup.md",
    "content": "# Clover Setup\n\n## Installing Clover\n\nFire up your Clover install package. On the 3rd page of the installer **make sure to select your USB as the destination**. We also want to **Customize** the installation - as the defaults are pretty lackluster.\n\n![3rd Page of the Clover Installer - Note the \"Customize\" button in the bottom left](<.gitbook/assets/screen-shot-2019-08-28-at-7.20.46-pm (1) (1).png>)\n\nThe _usual_ options you want to check in the Customize menu are shown in the following screenshots with an explanation of each after (**Note**: any non-Z370 300-series board will need _EmuVariableUefi-64_ as well - it is located under _UEFI Drivers -> Additional drivers_ in current Clover packages):\n\n![Recommended Customization Settings](.gitbook/assets/screen-shot-2019-08-28-at-7.21.14-pm.png)\n\n* _Install Clover for UEFI booting only_\n* _Install Clover to the ESP_\n* Under _UEFI Drivers:_\n  * _AptioMemoryFix_ (the new hotness that includes NVRAM fixes, as well as better memory management)\n    * **Note:** You can use _OsxAptioFix3Drv_ located in _UEFI Drivers -> Memory fix drivers_ if using the official Clover installer from SourceForge. Optionally, you can download the final release of _AptioMemoryFix_ from [here](https://github.com/acidanthera/AptioFixPkg/releases)\n  * _HFSPlus_ (or _VBoxHfs_) - one of these is required for Clover to see and boot HFS+ volumes. If you see the option to enable it in the installer, make sure it's selected - if you don't see it in the installer, verify that one of them exists in your Clover installs efi drivers folder\n  * _ApfsDriverLoader_ - (Available in Dids' Clover builds - or [here](https://github.com/acidanthera/ApfsSupportPkg/releases)) this allows Clover to see and boot from APFS volumes by loading _apfs.efi_ from the ApfsContainer located on block device (if using _AptioMemoryFix_ as well, ensure you have R21 or newer)\n\n_**That's it.**_\n\nIf you don't need FileVault, and are setting up a standard UEFI installation, these are the only entries you should need. You may find more than the above selected in the _UEFI Drivers_ section and subsections - feel free to deselect any not listed. There are some that can even cause conflicts with other settings/kexts (Like [_SMCHelper-64.efi_](https://github.com/acidanthera/VirtualSMC/blob/master/Docs/FAQ.md)), so it's a good idea to run as lean as possible here.\n\n_Where do they install?_\n\nIf you need to manually make changes to the efi drivers on your Clover installation (or just verify that you have what you need), their location may differ depending on your Clover version.\n\n* Clover version up to r4982: `EFI -> CLOVER -> drivers64UEFI`\n* Clover versions r4983 to r4985: `EFI -> CLOVER -> UEFIDrivers`\n  * Will still use `EFI -> CLOVER -> drivers64UEFI` if the above is not found\n* Clover versions r4986 to present: `EFI -> CLOVER -> drivers -> UEFI`\n  * Will still use `EFI -> CLOVER -> drivers64UEFI` if the above is not found\n\n## Copying Kexts\n\nOnce Clover has been installed, you'll see the EFI partition of your USB on the desktop - we want to navigate to `EFI -> CLOVER -> kexts -> Other` and copy the kexts we downloaded earlier there. Make sure you unzip the kexts before copying them over. Any _dSYM_ files can be ignored, we only want the _.kext_ files.\n\n_But what about the 10.xx folders?_\n\nWhen Clover is looking to inject kexts, the kexts in the _10.xx_ folders are only injected if Clover determines that the folder name matches the booted OS version. There are very few kexts that are OS version-dependent though, and updating the OS while forgetting to migrate the kexts can leave you in an unbootable state. The kexts located in the _Other_ folder will inject regardless of the detected OS version.\n"
  },
  {
    "path": "config.plist-basics.md",
    "content": "# Config.plist Basics\n\nThe _config.plist_ resides at _/Volumes/EFI/EFI/CLOVER/config.plist_ and is one of the tougher files to work with for those new to the Hackintosh world. We'll go into some of the basics of the structure here, then break out into different sections for different hardware config setup.\n\n## What Is It?\n\nThe _config.plist_ is an XML property list. XML is a markup language that shares a lot of similarities with HTML. This means you've got a few different data types available to you, and most of the structure revolves around keeping track of opening and closing tags.\n\n### The Structure\n\nWhen Clover explores a _config.plist_ it expects to have certain parts in certain spots. The order and scope of your config are very important as putting information in the wrong spot can effectively hide it from Clover. You can view the general layout that Clover expects on the [Clover Wiki](https://sourceforge.net/p/cloverefiboot/wiki/Configuration/#configplist-structure).\n\n### Data Types\n\nThere are a few major data types we'll run into when working with the config. I'll outline the most common here. **Note -** I'm only using the opening tags here, when actually working with the following types we'll need to make sure we clean up after ourselves and close our tags.\n\n#### Strings\n\n`<string>This is a string</string>`\n\nStrings are just text. Not terribly crazy - you will see them used a lot for comments and other such things.\n\n#### Integers\n\n`<integer>1</integer>`\n\nThese are just whole numbers. Again, nothing too wild here.\n\n#### Data\n\n`<data>RXh0ZXJuYWw=</data>`\n\nWhile this looks similar to the _strings_ above, it's actually the _base64_ representation of some data. _Wtf does that mean?_ You can read up on it [here](https://en.wikipedia.org/wiki/Base64), but in summation - it's a slick way to save binary data in a text format without it getting lost when copied, moved, etc. What's even more crazy is that you can take the above base64 data and convert it to ASCII via the following in Terminal.app:\n\n`echo RXh0ZXJuYWw= | python -m base64 -d && echo`\n\nThis will output `External` on the next line. We use the `&& echo` to output a newline after our text is spit out - this makes it easier to read.\n\nYou can also convert from ASCII to base64 (handy for working with ACPI renames - more about that later) with the following in Terminal.app:\n\n`echo -n External | base64`\n\nThis will spit out `RXh0ZXJuYWw=` which is exactly what we'd expect.\n\n**Note -** Many plist editors (Clover Configurator, Xcode, etc) will display data as _hexadecimal_ instead of _base64_, so make sure you pay attention to which you're using.\n\n#### Booleans\n\n`<true/>` or `<false/>`\n\nThese are _boolean_ values. You can think of them as _on/off_ values. Unlike the other types listed here, these are both an opening and closing tag at once so they don't require a matching tag.\n\n#### Arrays\n\n```markup\n<array>\n    <string>Bob</string>\n    <string>Jim</string>\n    <string>Chris</string>\n</array>\n```\n\nThis is an ordered list of items. If we wanted to gather up a collection of names, we could store them as `<string>` values in our `<array>` like the above example. They are accessed by index (which is just the number they're at in the list).\n\n#### Dictionaries\n\n```markup\n<dict>\n    <key>Name</key>\n    <string>Bob</string>\n    <key>Age</key>\n    <integer>20</integer>\n    <key>Knows XML</key>\n    <true/>\n</dict>\n```\n\nThis denotes a _dictionary_. These, like _arrays_ are great for storing extra collections of data, but instead of being index based, they utilize _key/value_ organization. As you can see from the above example, we are able to store specific data about _Bob_ through the use of these _key/value_ pairs. All the keys are just text (like our strings).\n\n### Examples\n\nLet's go over some _before/after_ examples with some pretend _config.plist_ data to hopefully remove some of the mystery that happens in this wizard's closet.\n\n#### Change True/False\n\nIn this first example, we're just going to change a boolean value from true to false, or vise versa. I'll use the _Disabled_ value inside a _KextsToPatch_ entry to make this actually a real-world example. First, I'll give us the _KextsToPatch_ entry we'll be working with:\n\n```markup\n<dict>\n    <key>Comment</key>\n    <string>External icons patch</string>\n    <key>Disabled</key>\n    <false/>\n    <key>Find</key>\n    <data>\n    RXh0ZXJuYWw=\n    </data>\n    <key>InfoPlistPatch</key>\n    <false/>\n    <key>Name</key>\n    <string>AppleAHCIPort</string>\n    <key>Replace</key>\n    <data>\n    SW50ZXJuYWw=\n    </data>\n</dict>\n```\n\nWhew, that might look like a lot up front, but we'll break things down. Firstly, I'll go over what the different keys mean:\n\n* `Comment` - this is just a comment to describe what the patch is doing.\n* `Disabled` - this is a bit counter-intuitive, but it's a boolean value that determines whether or not this patch is disabled. If set to `<true/>`, the patch will be disabled, and Clover will ignore it. If set to `<false/>` the patch is _not_ disabled, and it will be applied.\n* `InfoPlistPatch` - this is a boolean value that tells Clover if we're patching the Info.plist of the kext instead of the binary.\n* `Name` - this is the actual kext we intend to patch.\n* `Find` - this is the base64 data we want to look for in the binary to patch.\n* `Replace` - this is what we will be replacing the `Find` data with (if we find it).\n\nAlright, now I'll explain what this patch is actually for. Via the information in this patch, Clover will look for the _AppleAHCIPort_ kext and search for `RXh0ZXJuYWw=` (which becomes `External` when we decode the data) and replace it with `SW50ZXJuYWw=` (which becomes `Internal` when we decode it). The end result is that drives that are hot-pluggable (and normally considered external drives) will be displayed as internal drives and not have the orange icon on the desktop. This patching happens on the fly, and is non-destructive - meaning that the _AppleAHCIPort_ kext remains untouched on the system.\n\nSo - I guess at this point, I should explain how we would change a boolean value to disable this patch. I mentioned before how the `Disabled` key works - wo we'll change the `<false/>` on the next line to `<true/>` which sets this patch to _disabled_ like so:\n\n```markup\n<dict>\n    <key>Comment</key>\n    <string>External icons patch</string>\n    <key>Disabled</key>\n    <true/>\n    <key>Find</key>\n    <data>\n    RXh0ZXJuYWw=\n    </data>\n    <key>InfoPlistPatch</key>\n    <false/>\n    <key>Name</key>\n    <string>AppleAHCIPort</string>\n    <key>Replace</key>\n    <data>\n    SW50ZXJuYWw=\n    </data>\n</dict>\n```\n\nNot too scary, right?\n\n#### Adding a New Dict to an Array\n\nThis is one that I see quite often that can be a bit overwhelming for new folks. If you are told to add a new patch to _config.plist -> ACPI -> DSDT -> Patches_, we'd first pop open our _config.plist_ and see what we're working with.\n\nWe'll assume for this example that the config looks like so:\n\n```markup\n<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n    <key>ACPI</key>\n    <dict>\n        <key>DSDT</key>\n        <dict>\n            <key>Fixes</key>\n            <dict>\n                <key>FixHPET</key>\n                <true/>\n                <key>FixIPIC</key>\n                <true/>\n                <key>FixRTC</key>\n                <true/>\n                <key>FixTMR</key>\n                <true/>\n            </dict>\n            <key>Patches</key>\n            <array>\n                <dict>\n                    <key>Comment</key>\n                    <string>change OSID to XSID (to avoid match against _OSI XOSI patch)</string>\n                    <key>Disabled</key>\n                    <false/>\n                    <key>Find</key>\n                    <data>\n                    T1NJRA==\n                    </data>\n                    <key>Replace</key>\n                    <data>\n                    WFNJRA==\n                    </data>\n                </dict>\n                <dict>\n                    <key>Comment</key>\n                    <string>change _OSI to XOSI</string>\n                    <key>Disabled</key>\n                    <false/>\n                    <key>Find</key>\n                    <data>\n                    X09TSQ==\n                    </data>\n                    <key>Replace</key>\n                    <data>\n                    WE9TSQ==\n                    </data>\n                </dict>\n            </array>\n```\n\nAs we look down the config, starting at the top, we can follow that path I outlined before. We see _ACPI_, and under that _DSDT_. Then underneath _DSDT_ is _Fixes_ and in-line with that is _Patches_. We're not concerned with the _Fixes_ section currently, so we'll just ignore that and focus on the _Patches_.\n\nFirstly, I'll point out that under the `<key>Patches</key>` is an opening array tag (`<array>`) - and then we have 2 dictionaries - each with similar keys to what we worked with in the prior example (_Comment_, _Disabled_, _Find_, _Replace_). After the dictionaries, we see the closing array tag (`</array>`). Our goal is to add a new dictionary in between the `<array>` and `</array>` tags while also avoiding slicing up the other existing dictionaries. The data that we'll be adding looks like so:\n\n```markup\n<dict>\n    <key>Comment</key>\n    <string>change SAT0 to SATA</string>\n    <key>Disabled</key>\n    <false/>\n    <key>Find</key>\n    <data>\n    U0FUMA==\n    </data>\n    <key>Replace</key>\n    <data>\n    U0FUQQ==\n    </data>\n</dict>\n```\n\nLike I mentioned prior, arrays are ordered - but for this example, it doesn't matter whether we put our new dictionary before the existing 2, after them, or in between them. I'm going to add it to the end though - just above that last `</array>` tag like so:\n\n```markup\n<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n    <key>ACPI</key>\n    <dict>\n        <key>DSDT</key>\n        <dict>\n            <key>Fixes</key>\n            <dict>\n                <key>FixHPET</key>\n                <true/>\n                <key>FixIPIC</key>\n                <true/>\n                <key>FixRTC</key>\n                <true/>\n                <key>FixTMR</key>\n                <true/>\n            </dict>\n            <key>Patches</key>\n            <array>\n                <dict>\n                    <key>Comment</key>\n                    <string>change OSID to XSID (to avoid match against _OSI XOSI patch)</string>\n                    <key>Disabled</key>\n                    <false/>\n                    <key>Find</key>\n                    <data>\n                    T1NJRA==\n                    </data>\n                    <key>Replace</key>\n                    <data>\n                    WFNJRA==\n                    </data>\n                </dict>\n                <dict>\n                    <key>Comment</key>\n                    <string>change _OSI to XOSI</string>\n                    <key>Disabled</key>\n                    <false/>\n                    <key>Find</key>\n                    <data>\n                    X09TSQ==\n                    </data>\n                    <key>Replace</key>\n                    <data>\n                    WE9TSQ==\n                    </data>\n                </dict>\n                <dict>\n                    <key>Comment</key>\n                    <string>change SAT0 to SATA</string>\n                    <key>Disabled</key>\n                    <false/>\n                    <key>Find</key>\n                    <data>\n                    U0FUMA==\n                    </data>\n                    <key>Replace</key>\n                    <data>\n                    U0FUQQ==\n                    </data>\n                </dict>\n            </array>\n```\n\n#### More Examples\n\nI'll try to keep my ears open for more plist editing examples that people have issues with, and add them as needed.\n"
  },
  {
    "path": "config.plist-per-hardware/coffee-lake.md",
    "content": "---\ndescription: >-\n  We'll go through the config.plist sections, one at a time for a Coffee Lake\n  desktop setup.\n---\n\n# Coffee Lake\n\n## Starting Points\n\nI like to start with either the stock _config.plist_ that Clover gives you, or with just a blank canvas. In the next examples, I'll show you how I set things up from scratch; if you start from somewhere else, you may have more things checked/set than I do - but you'll want to follow along with what I do.\n\nI'll also include the raw xml examples too in order to show those that work with a text editor (as I prefer to).\n\n## ACPI\n\nThe default Clover settings are pretty overdone and can cause some issues. We'll keep this section fairly minimal, and I'll go through a bit of _why we do that_ for each part as well.\n\n### Raw XML\n\n```markup\n    <key>ACPI</key>\n    <dict>\n        <key>DSDT</key>\n        <dict>\n            <key>Fixes</key>\n            <dict>\n                <key>AddMCHC</key>\n                <true/>\n                <key>FixHPET</key>\n                <true/>\n                <key>FixIPIC</key>\n                <true/>\n                <key>FixRTC</key>\n                <true/>\n                <key>FixShutdown</key>\n                <true/>\n                <key>FixTMR</key>\n                <true/>\n            </dict>\n            <key>Patches</key>\n            <array>\n                <dict>\n                    <key>Comment</key>\n                    <string>change XHCI to XHC</string>\n                    <key>Disabled</key>\n                    <false/>\n                    <key>Find</key>\n                    <data>\n                    WEhDSQ==\n                    </data>\n                    <key>Replace</key>\n                    <data>\n                    WEhDXw==\n                    </data>\n                </dict>\n                <dict>\n                    <key>Comment</key>\n                    <string>change XHC1 to XHC</string>\n                    <key>Disabled</key>\n                    <false/>\n                    <key>Find</key>\n                    <data>\n                    WEhDMQ==\n                    </data>\n                    <key>Replace</key>\n                    <data>\n                    WEhDXw==\n                    </data>\n                </dict>\n                <dict>\n                    <key>Comment</key>\n                    <string>change SAT0 to SATA</string>\n                    <key>Disabled</key>\n                    <false/>\n                    <key>Find</key>\n                    <data>\n                    U0FUMA==\n                    </data>\n                    <key>Replace</key>\n                    <data>\n                    U0FUQQ==\n                    </data>\n                </dict>\n            </array>\n        </dict>\n        <key>DropTables</key>\n        <array>\n            <dict>\n                <key>Signature</key>\n                <string>DMAR</string>\n            </dict>\n            <dict>\n                <key>Signature</key>\n                <string>MATS</string>\n            </dict>\n        </array>\n        <key>FixHeaders</key>\n        <true/>\n        <key>SSDT</key>\n        <dict>\n            <key>Generate</key>\n            <dict>\n                <key>PluginType</key>\n                <true/>\n            </dict>\n        </dict>\n    </dict>\n```\n\n### Clover Configurator Screenshots\n\n![Coffee Lake Acpi CC Section 1](<../.gitbook/assets/image (7).png>)\n\n![Coffee Lake Acpi CC Section 2](<../.gitbook/assets/image (64).png>)\n\n![Coffee Lake Read-Only RTC Fix](<../.gitbook/assets/image (17).png>)\n\n### Explanation\n\n#### Patches:\n\nThe first thing we'll go over is the _Patches_ section. This section allows us to dynamically rename parts of the DSDT via Clover. Since we're not running a real mac, and macOS is pretty particular with how things are named, we can make non-destructive changes to keep things mac-friendly. We have three entries here:\n\n* _change XHCI to XHC -_ helps avoid a conflict with built-in USB injectors\n* _change XHC1 to XHC_ - helps avoid a conflict with built-in USB injectors\n* _change SAT0 to SATA_ - for potential SATA compatibility\n\nYou **may** also need the following Read-Only RTC fix (read about it [here](https://www.hackintosh-forum.de/forum/thread/39846-asrock-z390-taichi-ultimate/?pageNo=2)) if you have a _true_ 300-series board (non Z370) and you suffer a boot hang around this point:\n\n![Read-Only RTC Boot Stall](<../.gitbook/assets/image (40).png>)\n\nThe raw XML for that specific patch looks like so:\n\n```markup\n\t\t\t\t<dict>\n\t\t\t\t\t<key>Comment</key>\n\t\t\t\t\t<string>Fix 300-series RTC Bug</string>\n\t\t\t\t\t<key>Disabled</key>\n\t\t\t\t\t<false/>\n\t\t\t\t\t<key>Find</key>\n\t\t\t\t\t<data>\n\t\t\t\t\toAqTU1RBUwE=\n\t\t\t\t\t</data>\n\t\t\t\t\t<key>Replace</key>\n\t\t\t\t\t<data>\n\t\t\t\t\toAqRCv8L//8=\n\t\t\t\t\t</data>\n\t\t\t\t</dict>\n```\n\n#### Fixes:\n\nIf we look then at the _Fixes_ section, we'll see that we have a few things checked (there are 2 pages, so I included 2 screenshots):\n\n* _FixShutdown_ - this can help with some boards that prefer to restart instead of shutdown. Sometimes it can cause shutdown issues on other boards (ironic, right?), so if you have issues shutting down with this enabled, look at disabling it.\n* The remaining fixes help avoid IRQ conflicts and etc, and are not known to cause issues. They may not be necessary for all hardware, but do not negatively impact anything if applied.\n\n#### Drop Tables:\n\nWe touched in gently on DSDT with our _Patches_ section - and this is a a bit of an extension of that. SSDT is like a sub-section of DSDT. The _Drop Tables_ section allows us to omit certain SSDT tables from loading (as I mentioned before, mac and PC DSDT is different, and macOS can be rather picky). The two that I've added are as follows:\n\n* _DMAR_ - this prevents some issues with Vt-d; which is PCI passthrough for VMs, and not very functional (if at all?) on Hackintoshes.\n* _MATS_ - with High Sierra on up this table is parsed, and can sometimes contain unprintable characters that can lead to a kernel panic.\n\n#### FixHeaders and PluginType:\n\nThe only other things we've done on this page are enable these two checkboxes.\n\n* _FixHeaders_ - this is just a double-up of our _MATS_ table dropping. This checkbox tells Clover to sanitize headers to avoid kernel panics related to unprintable characters.\n* _PluginType_ - this injects some DSDT data to get _X86PlatformPlugin_ to load - giving us a leg-up on native CPU power management. This setting only works on Haswell and newer CPUs though.\n\n## Boot\n\nWe don't need to do _too much_ here, but we'll tweak a few things.\n\n### Raw XML\n\n```markup\n    <key>Boot</key>\n    <dict>\n        <key>Arguments</key>\n        <string>keepsyms=1 dart=0 debug=0x100 -v</string>\n        <key>DefaultVolume</key>\n        <string>LastBootedVolume</string>\n        <key>Timeout</key>\n        <integer>5</integer>\n    </dict>\n```\n\n### Clover Configurator Screenshots\n\n![Coffee Lake Boot CC Section](<../.gitbook/assets/image (15) (2).png>)\n\n### Explanation\n\n#### Arguments:\n\nWe have a few boot args set here:\n\n* `-v` - this enables verbose mode, which shows all the _behind-the-scenes_ text that scrolls by as you're booting instead of the Apple logo and progress bar. It's invaluable to any Hackintosher, as it gives you an inside look at the boot process, and can help you identify issues, problem kexts, etc.\n* `dart=0` - this is just an extra layer of protection against Vt-d issues.\n* `debug=0x100` - this prevents a reboot on a kernel panic. That way you can (hopefully) glean some useful info and follow the breadcrumbs to get past the issues.\n* `keepsyms=1` - this is a companion setting to `debug=0x100` that tells the OS to also print the symbols on a kernel panic. That can give some more helpful insight as to what's causing the panic itself.\n\n#### DefaultBootVolume and Timeout:\n\nThese are the only other settings I've updated in this section.\n\n* _DefaultBootVolume_ - this uses NVRAM to remember which volume was last booted by Clover, and auto-select that at the next boot.\n* _Timeout_ - this is the number of seconds before the _DefaultBootVolume_ auto-boots. You can set this to `-1` to avoid all timeout, or to `0` to skip the GUI entirely. If set to `0`, you can press any keys at boot to get the GUI to show back up in case of issues.\n\n## Boot Graphics\n\nNothing here - just the stock settings. You could adjust this if Clover's scaling needs changes, but I don't mess with it.\n\n## Cpu\n\nAgain, nothing here gets changed in most setups I've worked with.\n\n## Devices\n\nWe'll handle some slick property injection for _WhateverGreen_ here, and do some basic audio setup.\n\n### Raw XML\n\n```markup\n    <key>Devices</key>\n    <dict>\n        <key>Audio</key>\n        <dict>\n            <key>Inject</key>\n            <integer>1</integer>\n            <key>ResetHDA</key>\n            <true/>\n        </dict>\n        <key>Properties</key>\n        <dict>\n            <key>PciRoot(0x0)/Pci(0x2,0x0)</key>\n            <dict>\n                <key>AAPL,ig-platform-id</key>\n                <data>\n                BwCbPg==\n                </data>\n                <key>framebuffer-patch-enable</key>\n                <data>\n                AQAAAA==\n                </data>\n                <key>framebuffer-stolenmem</key>\n                <data>\n                AAAwAQ==\n                </data>\n            </dict>\n        </dict>\n        <key>USB</key>\n        <dict>\n            <key>FixOwnership</key>\n            <true/>\n        </dict>\n    </dict>\n```\n\n### Clover Configurator Screenshots\n\n![Coffee Lake Devices CC Section - iGPU](<../.gitbook/assets/image (74).png>)\n\n![Coffee Lake Devices CC Section - iGPU Connectorless](<../.gitbook/assets/image (48).png>)\n\n![Device-Id fake for i3-8100 UHD 630](<../.gitbook/assets/image (9).png>)\n\n### Explanation\n\n#### Fake ID:\n\nThis section remains empty for our example setup. In the past, almost-supported iGPUs (like the HD 4400) would get faked to a supported iGPU here, but we'll be using the cleaner Properties section for this.\n\n#### USB:\n\nUnder this section, we ensure that _Inject_ and _FixOwnership_ are selected to avoid issues with hanging at a half-printed line somewhere around the `Enabling Legacy Matching` verbose line. You can also get past that by enabling _XHCI Hand Off_ in BIOS.\n\n#### Audio:\n\nHere we set our audio to inject _Layout 1_ - this may or may not be compatible with your codec, but you can check on [_AppleALC's Supported Codec Page_](https://github.com/acidanthera/AppleALC/wiki/Supported-codecs).\n\nWe also enabled _ResetHDA_ which puts the codec back in a neutral state between OS reboots. This prevents some issues with no audio after booting to another OS and then back.\n\n#### Properties:\n\nThis section is setup via Headkaze's [_Intel Framebuffer Patching Guide_](https://www.insanelymac.com/forum/topic/334899-intel-framebuffer-patching-using-whatevergreen/?tab=comments#comment-2626271) and applies only one actual property to begin, which is the _ig-platform-id_. The way we get the proper value for this is to look at the ig-platform-id we intend to use, then swap the pairs of hex bytes.\n\nIf we think of our ig-plat as `0xAABBCCDD`, our swapped version would look like `0xDDCCBBAA`.\n\nThe two ig-platform-id's we use are as follows:\n\n* `0x3E9B0007` - this is used when the iGPU is used to drive a display\n  * `07009B3E` when hex-swapped\n  * `BwCbPg==` when the hex-swapped version is converted to base64\n* `0x3E920003` - this is used when the iGPU is only used for compute tasks, and doesn't drive a display\n  * `0300923E` when hex-swapped\n  * `AwCSPg==` when the hex-swapped version is converted to base64\n\nWorth noting that for 10.12 -> 10.13.5, you would need to fake the iGPU to the same values in the Kaby Lake guide, as this was before native Coffee Lake iGPU showed up.\n\nWe also add 2 more properties, _framebuffer-patch-enable_ and _framebuffer-stolenmem_. The first enables patching via _WhateverGreen.kext,_ and the second sets the min stolen memory to 19MB.\n\nI added another screenshot as well that shows a `device-id` fake for the i3-8100's UHD 630. This has a different device id than the UHD 630 found on the 8700k, for instance (`3e918086` vs `3e928086` ).\n\nFor this - we follow a similar procedure as our above ig-platform-id hex swapping - but this time, we only work with the first two pairs of hex bytes. If we think of our device id as `0xAABB0000`, our swapped version would look like `0xBBAA0000`. We don't do anything with the last 2 pairs of hex bytes.\n\nThe device-id fake is setup like so:\n\n* `0x3e920000` - this is the device id for the UHD 630 found on an 8700k\n  * `923e0000` when hex swapped\n  * `kj4AAA==` when the hex-swapped version is converted to base64\n\nIf using the raw xml, your Properties would look like this (make sure to still use the appropriate ig-platform-id for your setup):\n\n```markup\n        <key>Properties</key>\n        <dict>\n            <key>PciRoot(0x0)/Pci(0x2,0x0)</key>\n            <dict>\n                <key>device-id</key>\n                <data>\n                kj4AAA==\n                </data>\n                <key>AAPL,ig-platform-id</key>\n                <data>\n                BwCbPg==\n                </data>\n                <key>framebuffer-patch-enable</key>\n                <data>\n                AQAAAA==\n                </data>\n                <key>framebuffer-stolenmem</key>\n                <data>\n                AAAwAQ==\n                </data>\n            </dict>\n        </dict>\n```\n\n### Pink/Purple Tint?\n\nI've seen a couple users report a pink tint when using HDMI with the UHD 630 iGPU. I did some experimenting on my own system and was able to work around it a couple different ways.\n\n#### Force RGB\n\nI saw the issue in [a reddit post](https://www.reddit.com/r/hackintosh/comments/9pufo8/8700k\\_igpu\\_has\\_a\\_purple\\_tint\\_on\\_mojave/), and the solution was to apply a custom override for your display to force it to use RGB instead of YCbCr outlined [here](https://www.mathewinkson.com/2013/03/force-rgb-mode-in-mac-os-x-to-fix-the-picture-quality-of-an-external-monitor). I wrote [a script](https://github.com/corpnewt/ForceRGB) that wraps around this method and auto-applies the override when it's completed. This worked fine for me, but didn't feel like a _real fix_. Which lead me to dive a bit deeper...\n\n#### Connector Types In IOReg\n\nI opened up IORegistryExplorer and in the search bar typed `IGPU` (this is sometimes named `GFX0` in ACPI, but Lilu + WhateverGreen should rename it properly) and got the following screen:\n\n![Search for IGPU in IOReg](<../.gitbook/assets/image (78).png>)\n\nOnce we've located `IGPU` in IOReg, we can clear our search - this reveals all the info around the `IGPU` section while keeping our place:\n\n![IGPU Selected With Search Cleared](<../.gitbook/assets/image (38).png>)\n\nAs you can see in the above screenshot, I had a few different AppleIntelFramebuffer connections listed. I'm looking for the one that's specifically driving my display - which has the AppleDisplay property. In my case, this was AppleIntelFramebuffer@1. With that selected on the left pane, you can find the `connector-type` property, which was originally set to `<00 04 00 00>` in my case. The connector type can have a few different values:\n\n* `<00 04 00 00>` - this is DisplayPort\n* `<00 08 00 00>` - this is HDMI\n* `<04 00 00 00>` - this is Digital DVI\n* `<02 00 00 00>` - this is LVDS (for laptops)\n* `<01 00 00 00>` - this is just a Dummy port\n\nWhat I noticed in my case was that my HDMI port was listed as a DisplayPort - so I was able to use WhateverGreen's patching abilities to change the connector-type.\n\nSince my incorrect port was located at AppleIntelFramebuffer@1, this is port `1`. I needed to enable the port patch in Properties, and then set the connector type to HDMI. I used the following Properties entries for that:\n\n* `framebuffer-conX-enable = 01000000`\n* `framebuffer-conX-type = 00080000`\n\nI replaced the `conX` in both patches with `con1` to reflect the port that I am changing, then set the values as listed above.\n\n![](<../.gitbook/assets/image (42).png>)\n\n```markup\n        <key>Properties</key>\n        <dict>\n            <key>PciRoot(0x0)/Pci(0x2,0x0)</key>\n            <dict>\n                <key>AAPL,ig-platform-id</key>\n                <data>\n                BwCbPg==\n                </data>\n                <key>device-id</key>\n                <data>\n                kj4AAA==\n                </data>\n                <key>framebuffer-con1-enable</key>\n                <data>\n                AQAAAA==\n                </data>\n                <key>framebuffer-con1-type</key>\n                <data>\n                AAgAAA==\n                </data>\n                <key>framebuffer-patch-enable</key>\n                <data>\n                AQAAAA==\n                </data>\n                <key>framebuffer-stolenmem</key>\n                <data>\n                AAAwAQ==\n                </data>\n            </dict>\n        </dict>\n```\n\n![IOReg -\\&gt; IGPU -\\&gt; AppleIntelFramebuffer@1 After Patching](<../.gitbook/assets/image (10).png>)\n\nThis also enabled HDMI audio for me as well.\n\n![](<../.gitbook/assets/image (37).png>)\n\n## Disable Drivers\n\nWe have nothing to do here.\n\n## Gui\n\n### Raw XML\n\n```markup\n    <key>GUI</key>\n    <dict>\n        <key>Scan</key>\n        <dict>\n            <key>Entries</key>\n            <true/>\n            <key>Tool</key>\n            <true/>\n        </dict>\n    </dict>\n```\n\n### Clover Configurator Screenshots\n\n![Coffee Lake Gui CC Section](<../.gitbook/assets/image (67).png>)\n\n### Explanation\n\n#### Scan:\n\nThe only settings I've tweaked on this page are the _Scan_ settings. I've selected _Custom_, then checked everything except _Legacy_ and _Kernel_. This just omits some of the unbootable entries in Clover to clean up the menu.\n\n#### Hide Volumes:\n\nI haven't added anything here, but you _can_ hide unwanted volumes here. You can do so by either adding the volume's name, or UUID.\n\nTo hide extra APFS entries, add the following to this list:\n\n* `Preboot`\n* `VM`\n\nTo hide all Recovery partitions, add `Recovery` to the list.\n\nTo get the UUID of a drive to hide, you can use the following terminal command:\n\n```\ndiskutil info diskXsY | grep -i \"Partition UUID\" | rev | cut -d' ' -f 1 | rev\n```\n\nMake sure to replace `diskXsY` with the actual disk number of the volume you'd like to hide.\n\n#### Theme:\n\nIf you want to test out a new theme (and I suggest you look at [_clover-next-black_](https://github.com/al3xtjames/clover-theme-next-black)), you can add the unzipped theme folder to the _/Volumes/EFI/EFI/CLOVER/themes_ directory, then type the name of the folder in the _Theme_ text field to apply it.\n\n## Graphics\n\nIn the past, we'd setup the iGPU here, but since we already did that via Properties in the _Devices_ section, we have nothing to really configure here. **NOTE**: When Clover detects an Intel iGPU, it _automatically_ enables Intel Injection if the Graphics section doesn't exist in the config.plist. To bypass this, you can explicitly disable injection using the raw XML below, or by clicking the \"Inject Intel\" button once to check it, and once to uncheck it in CC.\n\n### Raw XML\n\n```markup\n    <key>Graphics</key>\n    <dict>\n        <key>Inject</key>\n        <false/>\n    </dict>\n```\n\n## Kernel And Kext Patches\n\n### Raw XML\n\n```markup\n    <key>KernelAndKextPatches</key>\n    <dict>\n        <key>KernelPm</key>\n        <true/>\n        <key>KextsToPatch</key>\n        <array>\n            <dict>\n                <key>Comment</key>\n                <string>Port limit increase</string>\n                <key>Disabled</key>\n                <false/>\n                <key>Find</key>\n                <data>\n                g710////EA==\n                </data>\n                <key>InfoPlistPatch</key>\n                <false/>\n                <key>MatchOS</key>\n                <string>10.12.x</string>\n                <key>Name</key>\n                <string>com.apple.driver.usb.AppleUSBXHCI</string>\n                <key>Replace</key>\n                <data>\n                g710////Gw==\n                </data>\n            </dict>\n            <dict>\n                <key>Comment</key>\n                <string>Port limit increase (RehabMan)</string>\n                <key>Disabled</key>\n                <false/>\n                <key>Find</key>\n                <data>\n                g32IDw+DpwQAAA==\n                </data>\n                <key>InfoPlistPatch</key>\n                <false/>\n                <key>MatchOS</key>\n                <string>10.13.x</string>\n                <key>Name</key>\n                <string>com.apple.driver.usb.AppleUSBXHCI</string>\n                <key>Replace</key>\n                <data>\n                g32ID5CQkJCQkA==\n                </data>\n            </dict>\n            <dict>\n                <key>Comment</key>\n                <string>Port limit increase (PMHeart)</string>\n                <key>Disabled</key>\n                <true/>\n                <key>Find</key>\n                <data>\n                g/sPD4MDBQAA\n                </data>\n                <key>InfoPlistPatch</key>\n                <false/>\n                <key>MatchOS</key>\n                <string>10.14.0</string>\n                <key>Name</key>\n                <string>com.apple.driver.usb.AppleUSBXHCI</string>\n                <key>Replace</key>\n                <data>\n                g/sPkJCQkJCQ\n                </data>\n            </dict>\n            <dict>\n                <key>Comment</key>\n                <string>Port limit increase (Ricky)</string>\n                <key>Disabled</key>\n                <false/>\n                <key>Find</key>\n                <data>\n                g/sPD4OPBAAA\n                </data>\n                <key>InfoPlistPatch</key>\n                <false/>\n                <key>MatchOS</key>\n                <string>10.14.x</string>\n                <key>Name</key>\n                <string>com.apple.driver.usb.AppleUSBXHCI</string>\n                <key>Replace</key>\n                <data>\n                g/sPkJCQkJCQ\n                </data>\n            </dict>\n            <dict>\n                <key>Comment</key>\n                <string>External Icons Patch</string>\n                <key>Disabled</key>\n                <false/>\n                <key>Find</key>\n                <data>\n                RXh0ZXJuYWw=\n                </data>\n                <key>InfoPlistPatch</key>\n                <false/>\n                <key>Name</key>\n                <string>AppleAHCIPort</string>\n                <key>Replace</key>\n                <data>\n                SW50ZXJuYWw=\n                </data>\n            </dict>\n        </array>\n    </dict>\n```\n\n### Clover Configurator Screenshots\n\n![Coffee Lake KernelAndKextPatches CC Section](<../.gitbook/assets/image (73).png>)\n\n### Explanation\n\nIn this section, we've enabled a few settings and added some kext patches.\n\n#### Checkboxes:\n\nWe have a couple checkboxes selected here:\n\n* _Apple RTC_ - this ensures that we don't have a BIOS reset on reboot.\n* _KernelPM_ - this setting prevents writing to MSR 0xe2 which can prevent a kernel panic at boot.\n\n#### KextsToPatch:\n\nWe added 4 different kexts to patch here. Three of them are for USB port limit increases, and the last acts as an _orange icons fix_ - when internal drives are hotpluggable, and treated as external drives.\n\nYou'll notice that there are MatchOS values set for each of the USB port limit patches. You can remove any of the entries for OS versions you don't intend to run. They won't do any harm being there, but if you want a clean, minimal plist, there's no sense in having them.\n\n## RtVariables And SMBIOS\n\n### Raw XML\n\n```markup\n    <key>RtVariables</key>\n    <dict>\n        <key>BooterConfig</key>\n        <string>0x28</string>\n        <key>CsrActiveConfig</key>\n        <string>0x3E7</string>\n        <key>MLB</key>\n        <string>C02726902CDH69F1M</string>\n        <key>ROM</key>\n        <string>UseMacAddr0</string>\n    </dict>\n    <key>SMBIOS</key>\n    <dict>\n        <key>BoardSerialNumber</key>\n        <string>C02726902CDH69F1M</string>\n        <key>ProductName</key>\n        <string>iMac18,1</string>\n        <key>SerialNumber</key>\n        <string>C02TX0VDH7JY</string>\n        <key>SmUUID</key>\n        <string>91492A73-595C-4D97-A6FC-2B5D3ED1B54D</string>\n    </dict>\n```\n\n### Clover Configurator Screenshots\n\n![Coffee Lake RtVariables CC Section](<../.gitbook/assets/image (71).png>)\n\n![Coffee Lake SMBIOS CC Section](<../.gitbook/assets/image (16).png>)\n\n### Explanation\n\nFor setting up the SMBIOS info, I use acidanthera's [_macserial_](https://github.com/acidanthera/macserial) application. I wrote a [_python script_](https://github.com/corpnewt/GenSMBIOS) that can leverage it as well (and auto-saves to the config.plist when selected). There's plenty of info that's left blank to allow Clover to fill in the blanks; this means that updating Clover will update the info passed, and not require you to also update your config.plist.\n\nFor this Coffee Lake example, I chose the _iMac18,1_ SMBIOS - this is done intentionally for compatibility's sake. There are two main SMBIOS used for Coffee Lake:\n\n* _iMac18,1_ - this is used for computers utilizing the iGPU for displaying.\n* _iMac18,3_ - this is used for computers using a dGPU for displaying, and an iGPU for compute tasks only.\n\nTo get the SMBIOS info generated with _macserial_, you can run it with the `-a` argument (which generates serials and board serials for all supported platforms). You can also parse it with `grep` to limit your search to one SMBIOS type.\n\nWith our _iMac18,1_ example, we would run _macserial_ like so via the terminal:\n\n```\nmacserial -a | grep -i iMac18,1\n```\n\nWhich would give us output similar to the following:\n\n```\n      iMac18,1 | C02T8SZNH7JY | C02707101J9H69F1F\n      iMac18,1 | C02VXBYDH7JY | C02753100GUH69FCB\n      iMac18,1 | C02T7RY6H7JY | C02706310GUH69FA8\n      iMac18,1 | C02VD07ZH7JY | C02737301J9H69FCB\n      iMac18,1 | C02TQPYPH7JY | C02720802CDH69FAD\n      iMac18,1 | C02VXYYVH7JY | C02753207CDH69FJC\n      iMac18,1 | C02VDBZ0H7JY | C02737700QXH69FA8\n      iMac18,1 | C02VP0H6H7JY | C02746300CDH69FJA\n      iMac18,1 | C02VL0W9H7JY | C02743303CDH69F8C\n      iMac18,1 | C02V2NYMH7JY | C02728600J9H69FAD\n```\n\nThe order is `Product | Serial | Board Serial (MLB)`\n\nThe `iMac18,1` part gets copied to _SMBIOS -> Product Name_.\n\nThe `Serial` part gets copied to _SMBIOS -> Serial Number._\n\nThe `Board Serial` part gets copied to _SMBIOS -> Board Serial Number_ as well as _Rt Variables -> MLB._\n\nWe can create an SmUUID by running `uuidgen` in the terminal (or it's auto-generated via my _GenSMBIOS_ script) - and that gets copied to _SMBIOS -> SmUUID_.\n\nWe set _Rt Variables -> ROM_ to `UseMacAddr0` which just utilizes our onboard Mac address - this should be unique enough to not conflict with any others.\n\n_BooterConfig_ gets set to `0x28`, and _CsrActiveConfig_ is set to `0x3e7` which effectively disables SIP. You can choose a number of other options to enable/disable sections of SIP. Some common ones are as follows:\n\n* `0x0` - SIP completely enabled\n* `0x3` - Allow unsigned kexts and writing to protected fs locations\n* `0x3e7` - SIP completely disabled\n\n## System Parameters\n\n### Raw XML\n\n```markup\n    <key>SystemParameters</key>\n    <dict>\n        <key>InjectKexts</key>\n        <string>Yes</string>\n        <key>InjectSystemID</key>\n        <true/>\n    </dict>\n```\n\n### Clover Configurator Screenshots\n\n![System Parameters CC Section](<../.gitbook/assets/image (34) (2).png>)\n\n### Explanation\n\n#### Inject Kexts:\n\nThis setting has 3 modes:\n\n* `Yes` - this tells Clover to inject kexts from the EFI regardless.\n* `No` - this tells Clover not to inject kexts from the EFI.\n* `Detect` - this has Clover inject kexts only if _FakeSMC.kext_ is not in the kext cache.\n\nWe set it to `Yes` to make sure that all the kexts we added before get injected properly.\n\n#### InjectSystemID\n\nThis setting tells clover to set the SmUUID as the `system-id` at boot - which is important for iMessage and such.\n\n## Saving\n\nAt this point, you can do _File -> Save_ to save the config.plist. If you have issues saving directly to the EFI, you can save it on the Desktop, then just copy it over. I'll leave the [sample config.plist here](../Configs/CoffeeLake/config.plist) too.\n"
  },
  {
    "path": "config.plist-per-hardware/haswell.md",
    "content": "---\ndescription: >-\n  We'll go through the config.plist sections, one at a time for a Haswell\n  desktop setup.\n---\n\n# Haswell\n\n## Starting Points\n\nI like to start with either the stock _config.plist_ that Clover gives you, or with just a blank canvas. In the next examples, I'll show you how I set things up from scratch; if you start from somewhere else, you may have more things checked/set than I do - but you'll want to follow along with what I do.\n\nI'll also include the raw xml examples too in order to show those that work with a text editor \\(as I prefer to\\).\n\n## ACPI\n\nThe default Clover settings are pretty overdone and can cause some issues. We'll keep this section fairly minimal, and I'll go through a bit of _why we do that_ for each part as well.\n\n### Raw XML\n\n```markup\n    <key>ACPI</key>\n    <dict>\n        <key>DSDT</key>\n        <dict>\n            <key>Fixes</key>\n            <dict>\n                <key>AddMCHC</key>\n                <true/>\n                <key>FixHPET</key>\n                <true/>\n                <key>FixIPIC</key>\n                <true/>\n                <key>FixRTC</key>\n                <true/>\n                <key>FixShutdown</key>\n                <true/>\n                <key>FixTMR</key>\n                <true/>\n            </dict>\n            <key>Patches</key>\n            <array>\n                <dict>\n                    <key>Comment</key>\n                    <string>change EHC1 to EH01</string>\n                    <key>Disabled</key>\n                    <false/>\n                    <key>Find</key>\n                    <data>\n                    RUhDMQ==\n                    </data>\n                    <key>Replace</key>\n                    <data>\n                    RUgwMQ==\n                    </data>\n                </dict>\n                <dict>\n                    <key>Comment</key>\n                    <string>change EHC2 to EH02</string>\n                    <key>Disabled</key>\n                    <false/>\n                    <key>Find</key>\n                    <data>\n                    RUhDMg==\n                    </data>\n                    <key>Replace</key>\n                    <data>\n                    RUgwMg==\n                    </data>\n                </dict>\n                <dict>\n                    <key>Comment</key>\n                    <string>change XHCI to XHC</string>\n                    <key>Disabled</key>\n                    <false/>\n                    <key>Find</key>\n                    <data>\n                    WEhDSQ==\n                    </data>\n                    <key>Replace</key>\n                    <data>\n                    WEhDXw==\n                    </data>\n                </dict>\n                <dict>\n                    <key>Comment</key>\n                    <string>change XHC1 to XHC</string>\n                    <key>Disabled</key>\n                    <false/>\n                    <key>Find</key>\n                    <data>\n                    WEhDMQ==\n                    </data>\n                    <key>Replace</key>\n                    <data>\n                    WEhDXw==\n                    </data>\n                </dict>\n                <dict>\n                    <key>Comment</key>\n                    <string>change SAT0 to SATA</string>\n                    <key>Disabled</key>\n                    <false/>\n                    <key>Find</key>\n                    <data>\n                    U0FUMA==\n                    </data>\n                    <key>Replace</key>\n                    <data>\n                    U0FUQQ==\n                    </data>\n                </dict>\n            </array>\n        </dict>\n        <key>DropTables</key>\n        <array>\n            <dict>\n                <key>Signature</key>\n                <string>DMAR</string>\n            </dict>\n            <dict>\n                <key>Signature</key>\n                <string>MATS</string>\n            </dict>\n        </array>\n        <key>FixHeaders</key>\n        <true/>\n        <key>SSDT</key>\n        <dict>\n            <key>Generate</key>\n            <dict>\n                <key>PluginType</key>\n                <true/>\n            </dict>\n        </dict>\n    </dict>\n```\n\n### Clover Configurator Screenshots\n\n![Haswell Acpi CC Section 1](../.gitbook/assets/image%20%2861%29.png)\n\n![Haswell Acpi CC Section 2](../.gitbook/assets/image%20%286%29.png)\n\n### Explanation\n\n#### Patches:\n\nThe first thing we'll go over is the _Patches_ section. This section allows us to dynamically rename parts of the DSDT via Clover. Since we're not running a real mac, and macOS is pretty particular with how things are named, we can make non-destructive changes to keep things mac-friendly. We have three entries here:\n\n* _change EHC1 to EH01 -_ helps avoid a conflict with built-in USB injectors\n* _change EHC2 to EH02_ - helps avoid a conflict with built-in USB injectors\n* _change XHC1 to XHC -_ helps avoid a conflict with built-in USB injectors\n* _change XHCI to XHC_ - helps avoid a conflict with built-in USB injectors\n* _change SAT0 to SATA_ - for potential SATA compatibility\n\n#### Fixes:\n\nIf we look then at the _Fixes_ section, we'll see that we have a few things checked \\(there are 2 pages, so I included 2 screenshots\\):\n\n* _FixShutdown_ - this can help with some boards that prefer to restart instead of shutdown.  Sometimes it can cause shutdown issues on other boards \\(ironic, right?\\), so if you have issues shutting down with this enabled, look at disabling it.\n* The remaining fixes help avoid IRQ conflicts and etc, and are not known to cause issues.  They may not be necessary for all hardware, but do not negatively impact anything if applied.\n\n#### Drop Tables:\n\nWe touched in gently on DSDT with our _Patches_ section - and this is a a bit of an extension of that. SSDT is like a sub-section of DSDT. The _Drop Tables_ section allows us to omit certain SSDT tables from loading \\(as I mentioned before, mac and PC DSDT is different, and macOS can be rather picky\\). The two that I've added are as follows:\n\n* _DMAR_ - this prevents some issues with Vt-d; which is PCI passthrough for VMs, and not very functional \\(if at all?\\) on Hackintoshes.\n* _MATS_ - with High Sierra on up this table is parsed, and can sometimes contain unprintable characters that can lead to a kernel panic.\n\n#### FixHeaders and PluginType:\n\nThe only other things we've done on this page are enable these two checkboxes.\n\n* _FixHeaders_ - this is just a double-up of our _MATS_ table dropping.  This checkbox tells Clover to sanitize headers to avoid kernel panics related to unprintable characters.\n* _PluginType_ - this injects some DSDT data to get _X86PlatformPlugin_ to load - giving us a leg-up on native CPU power management. This setting only works on Haswell and newer CPUs though.\n\n## Boot\n\nWe don't need to do _too much_ here, but we'll tweak a few things.\n\n### Raw XML\n\n```markup\n    <key>Boot</key>\n    <dict>\n        <key>Arguments</key>\n        <string>keepsyms=1 dart=0 debug=0x100 -v</string>\n        <key>DefaultVolume</key>\n        <string>LastBootedVolume</string>\n        <key>Timeout</key>\n        <integer>5</integer>\n    </dict>\n```\n\n### Clover Configurator Screenshots\n\n![Haswell Boot CC Section](../.gitbook/assets/image%20%2862%29.png)\n\n### Explanation\n\n#### Arguments:\n\nWe have a few boot args set here:\n\n* `-v` - this enables verbose mode, which shows all the _behind-the-scenes_ text that scrolls by as you're booting instead of the Apple logo and progress bar.  It's invaluable to any Hackintosher, as it gives you an inside look at the boot process, and can help you identify issues, problem kexts, etc.\n* `dart=0` - this is just an extra layer of protection against Vt-d issues.\n* `debug=0x100` - this prevents a reboot on a kernel panic.  That way you can \\(hopefully\\) glean some useful info and follow the breadcrumbs to get past the issues.\n* `keepsyms=1` - this is a companion setting to `debug=0x100` that tells the OS to also print the symbols on a kernel panic.   That can give some more helpful insight as to what's causing the panic itself.\n\n#### DefaultBootVolume and Timeout:\n\nThese are the only other settings I've updated in this section.\n\n* _DefaultBootVolume_ - this uses NVRAM to remember which volume was last booted by Clover, and auto-select that at the next boot.\n* _Timeout_ - this is the number of seconds before the _DefaultBootVolume_ auto-boots.  You can set this to `-1` to avoid all timeout, or to `0` to skip the GUI entirely.  If set to `0`, you can press any keys at boot to get the GUI to show back up in case of issues.\n\n## Boot Graphics\n\nNothing here - just the stock settings. You could adjust this if Clover's scaling needs changes, but I don't mess with it.\n\n## Cpu\n\nAgain, nothing here gets changed in most setups I've worked with.\n\n## Devices\n\nWe'll handle some slick property injection for _WhateverGreen_ here, and do some basic audio setup.\n\n### Raw XML\n\n```markup\n    <key>Devices</key>\n    <dict>\n        <key>Audio</key>\n        <dict>\n            <key>Inject</key>\n            <integer>1</integer>\n            <key>ResetHDA</key>\n            <true/>\n        </dict>\n        <key>Properties</key>\n        <dict>\n            <key>PciRoot(0x0)/Pci(0x2,0x0)</key>\n            <dict>\n                <key>AAPL,ig-platform-id</key>\n                <data>\n                AwAiDQ==\n                </data>\n            </dict>\n        </dict>\n        <key>USB</key>\n        <dict>\n            <key>FixOwnership</key>\n            <true/>\n        </dict>\n    </dict>\n```\n\n### Clover Configurator Screenshots\n\n![Haswell Devices CC Section - iGPU](../.gitbook/assets/image%20%2846%29.png)\n\n![Haswell Devices CC Section - iGPU \\(Connectorless\\) + dGPU](../.gitbook/assets/image%20%2827%29.png)\n\n![Device-Id fake for HD 4400 --&amp;gt; HD 4600](../.gitbook/assets/image%20%288%29.png)\n\n### Explanation\n\n#### Fake ID:\n\nThis section remains empty for our example setup. In the past, almost-supported iGPUs \\(like the HD 4400\\) would get faked to a supported iGPU here, but we'll be using the cleaner Properties section for this.\n\n#### USB:\n\nUnder this section, we ensure that _Inject_ and _FixOwnership_ are selected to avoid issues with hanging at a half-printed line somewhere around the `Enabling Legacy Matching` verbose line. You can also get past that by enabling _XHCI Hand Off_ in BIOS.\n\n#### Audio:\n\nHere we set our audio to inject _Layout 1_ - this may or may not be compatible with your codec, but you can check on [_AppleALC's Supported Codec Page_](https://github.com/acidanthera/AppleALC/wiki/Supported-codecs).\n\nWe also enabled _ResetHDA_ which puts the codec back in a neutral state between OS reboots. This prevents some issues with no audio after booting to another OS and then back.\n\n#### Properties:\n\nThis section is setup via Headkaze's [_Intel Framebuffer Patching Guide_](https://www.insanelymac.com/forum/topic/334899-intel-framebuffer-patching-using-whatevergreen/?tab=comments#comment-2626271) and applies only one actual property to begin, which is the _ig-platform-id_. The way we get the proper value for this is to look at the ig-platform-id we intend to use, then swap the pairs of hex bytes.\n\nIf we think of our ig-plat as `0xAABBCCDD`, our swapped version would look like `0xDDCCBBAA`.\n\nThe two ig-platform-id's we use are as follows:\n\n* `0x0D220003` - this is used when the iGPU is used to drive a display\n  * `0300220D` when hex-swapped\n  * `AwAiDQ==` when the hex-swapped version is converted to base64\n* `0x04120004` - this is used when the iGPU is only used for compute tasks, and doesn't drive a display\n  * `04001204` when hex-swapped\n  * `BAASBA==` when the hex-swapped version is converted to base64\n\nI added another screenshot as well that shows a `device-id` fake in case you have an HD 4400 which is unsupported in macOS.\n\nFor this - we follow a similar procedure as our above ig-platform-id hex swapping - but this time, we only work with the first two pairs of hex bytes. If we think of our device id as `0xAABB0000`, our swapped version would look like `0xBBAA0000`. We don't do anything with the last 2 pairs of hex bytes.\n\nThe device-id fake is setup like so:\n\n* `0x04120000` - this is the device id for HD 4600 which _does_ have support in macOS\n  * `12040000` when hex swapped\n  * `EgQAAA==` when the hex-swapped version is converted to base64\n\nIf using the raw xml, your Properties would look like this \\(make sure to still use the appropriate ig-platform-id for your setup\\):\n\n```markup\n        <key>Properties</key>\n        <dict>\n            <key>PciRoot(0x0)/Pci(0x2,0x0)</key>\n            <dict>\n                <key>device-id</key>\n                <data>\n                EgQAAA==\n                </data>\n                <key>AAPL,ig-platform-id</key>\n                <data>\n                AwAiDQ==\n                </data>\n            </dict>\n        </dict>\n```\n\n## Disable Drivers\n\nWe have nothing to do here.\n\n## Gui\n\n### Raw XML\n\n```markup\n    <key>GUI</key>\n    <dict>\n        <key>Scan</key>\n        <dict>\n            <key>Entries</key>\n            <true/>\n            <key>Tool</key>\n            <true/>\n        </dict>\n    </dict>\n```\n\n### Clover Configurator Screenshots\n\n![Haswell Gui CC Section](../.gitbook/assets/image%20%2867%29.png)\n\n### Explanation\n\n#### Scan:\n\nThe only settings I've tweaked on this page are the _Scan_ settings. I've selected _Custom_, then checked everything except _Legacy_ and _Kernel_. This just omits some of the unbootable entries in Clover to clean up the menu.\n\n#### Hide Volumes:\n\nI haven't added anything here, but you _can_ hide unwanted volumes here. You can do so by either adding the volume's name, or UUID.\n\nTo hide extra APFS entries, add the following to this list:\n\n* `Preboot`\n* `VM`\n\nTo hide all Recovery partitions, add `Recovery` to the list.\n\nTo get the UUID of a drive to hide, you can use the following terminal command:\n\n```text\ndiskutil info diskXsY | grep -i \"Partition UUID\" | rev | cut -d' ' -f 1 | rev\n```\n\nMake sure to replace `diskXsY` with the actual disk number of the volume you'd like to hide.\n\n#### Theme:\n\nIf you want to test out a new theme \\(and I suggest you look at [_clover-next-black_](https://github.com/al3xtjames/clover-theme-next-black)\\), you can add the unzipped theme folder to the _/Volumes/EFI/EFI/CLOVER/themes_ directory, then type the name of the folder in the _Theme_ text field to apply it.\n\n## Graphics\n\nIn the past, we'd setup the iGPU here, but since we already did that via Properties in the _Devices_ section, we have nothing to really configure here. **NOTE**: When Clover detects an Intel iGPU, it _automatically_ enables Intel Injection if the Graphics section doesn't exist in the config.plist. To bypass this, you can explicitly disable injection using the raw XML below, or by clicking the \"Inject Intel\" button once to check it, and once to uncheck it in CC.\n\n### Raw XML\n\n```markup\n    <key>Graphics</key>\n    <dict>\n        <key>Inject</key>\n        <false/>\n    </dict>\n```\n\n## Kernel And Kext Patches\n\n### Raw XML\n\n```markup\n    <key>KernelAndKextPatches</key>\n    <dict>\n        <key>KernelPm</key>\n        <true/>\n        <key>KextsToPatch</key>\n        <array>\n            <dict>\n                <key>Comment</key>\n                <string>Port limit increase</string>\n                <key>Disabled</key>\n                <false/>\n                <key>Find</key>\n                <data>\n                g710////EA==\n                </data>\n                <key>InfoPlistPatch</key>\n                <false/>\n                <key>MatchOS</key>\n                <string>10.12.x</string>\n                <key>Name</key>\n                <string>com.apple.driver.usb.AppleUSBXHCI</string>\n                <key>Replace</key>\n                <data>\n                g710////Gw==\n                </data>\n            </dict>\n            <dict>\n                <key>Comment</key>\n                <string>Port limit increase (RehabMan)</string>\n                <key>Disabled</key>\n                <false/>\n                <key>Find</key>\n                <data>\n                g32IDw+DpwQAAA==\n                </data>\n                <key>InfoPlistPatch</key>\n                <false/>\n                <key>MatchOS</key>\n                <string>10.13.x</string>\n                <key>Name</key>\n                <string>com.apple.driver.usb.AppleUSBXHCI</string>\n                <key>Replace</key>\n                <data>\n                g32ID5CQkJCQkA==\n                </data>\n            </dict>\n            <dict>\n                <key>Comment</key>\n                <string>Port limit increase (PMHeart)</string>\n                <key>Disabled</key>\n                <true/>\n                <key>Find</key>\n                <data>\n                g/sPD4MDBQAA\n                </data>\n                <key>InfoPlistPatch</key>\n                <false/>\n                <key>MatchOS</key>\n                <string>10.14.0</string>\n                <key>Name</key>\n                <string>com.apple.driver.usb.AppleUSBXHCI</string>\n                <key>Replace</key>\n                <data>\n                g/sPkJCQkJCQ\n                </data>\n            </dict>\n            <dict>\n                <key>Comment</key>\n                <string>Port limit increase (Ricky)</string>\n                <key>Disabled</key>\n                <false/>\n                <key>Find</key>\n                <data>\n                g/sPD4OPBAAA\n                </data>\n                <key>InfoPlistPatch</key>\n                <false/>\n                <key>MatchOS</key>\n                <string>10.14.x</string>\n                <key>Name</key>\n                <string>com.apple.driver.usb.AppleUSBXHCI</string>\n                <key>Replace</key>\n                <data>\n                g/sPkJCQkJCQ\n                </data>\n            </dict>\n            <dict>\n                <key>Comment</key>\n                <string>External Icons Patch</string>\n                <key>Disabled</key>\n                <false/>\n                <key>Find</key>\n                <data>\n                RXh0ZXJuYWw=\n                </data>\n                <key>InfoPlistPatch</key>\n                <false/>\n                <key>Name</key>\n                <string>AppleAHCIPort</string>\n                <key>Replace</key>\n                <data>\n                SW50ZXJuYWw=\n                </data>\n            </dict>\n        </array>\n    </dict>\n```\n\n### Clover Configurator Screenshots\n\n![Haswell KernelAndKextPatches CC Section](../.gitbook/assets/image%20%2849%29.png)\n\n### Explanation\n\nIn this section, we've enabled a few settings and added some kext patches.\n\n#### Checkboxes:\n\nWe have a couple checkboxes selected here:\n\n* _Apple RTC_ - this ensures that we don't have a BIOS reset on reboot.\n* _KernelPM_ - this setting prevents writing to MSR 0xe2 which can prevent a kernel panic at boot.\n\n#### KextsToPatch:\n\nWe added 4 different kexts to patch here. Three of them are for USB port limit increases, and the last acts as an _orange icons fix_ - when internal drives are hotpluggable, and treated as external drives.\n\nYou'll notice that there are MatchOS values set for each of the USB port limit patches. You can remove any of the entries for OS versions you don't intend to run. They won't do any harm being there, but if you want a clean, minimal plist, there's no sense in having them.\n\n## RtVariables And SMBIOS\n\n### Raw XML\n\n```markup\n    <key>RtVariables</key>\n    <dict>\n        <key>BooterConfig</key>\n        <string>0x28</string>\n        <key>CsrActiveConfig</key>\n        <string>0x3E7</string>\n        <key>MLB</key>\n        <string>C02532300QXG2Y7AD</string>\n        <key>ROM</key>\n        <string>UseMacAddr0</string>\n    </dict>\n    <key>SMBIOS</key>\n    <dict>\n        <key>BoardSerialNumber</key>\n        <string>C02532300QXG2Y7AD</string>\n        <key>ProductName</key>\n        <string>iMac15,1</string>\n        <key>SerialNumber</key>\n        <string>C02Q6FYUFY10</string>\n        <key>SmUUID</key>\n        <string>C495EE18-C8EA-4100-8CAD-3099AC27772F</string>\n    </dict>\n```\n\n### Clover Configurator Screenshots\n\n![Haswell Rt Variables CC Section](../.gitbook/assets/image%20%2826%29.png)\n\n![Haswell SMBIOS CC Section](../.gitbook/assets/image%20%2839%29.png)\n\n### Explanation\n\nFor setting up the SMBIOS info, I use acidanthera's [_macserial_](https://github.com/acidanthera/macserial) application. I wrote a [_python script_](https://github.com/corpnewt/GenSMBIOS) that can leverage it as well \\(and auto-saves to the config.plist when selected\\). There's plenty of info that's left blank to allow Clover to fill in the blanks; this means that updating Clover will update the info passed, and not require you to also update your config.plist.\n\nFor this Haswell example, I chose the _iMac15,1_ SMBIOS. The typical breakdown is as follows:\n\n* Haswell with only iGPU - _iMac14,1_\n* Haswell with dGPU - _iMac14,2_\n* Haswell Refresh - _iMac15,1_\n\nTo get the SMBIOS info generated with _macserial_, you can run it with the `-a` argument \\(which generates serials and board serials for all supported platforms\\). You can also parse it with `grep` to limit your search to one SMBIOS type.\n\nWith our _iMac15,1_ example, we would run _macserial_ like so via the terminal:\n\n```text\nmacserial -a | grep -i iMac15,1\n```\n\nWhich would give us output similar to the following:\n\n```text\n      iMac15,1 | C02NFZZYFY10 | C02438207QXG2Y7FB\n      iMac15,1 | C02P32YJFY10 | C02502303GUG2Y78C\n      iMac15,1 | C02P2VZ7FY10 | C02501306QXG2Y7AD\n      iMac15,1 | C02NM0EDFY10 | C02444701CDG2Y71H\n      iMac15,1 | C02NVHZCFY10 | C02451303CDG2Y7JA\n      iMac15,1 | C02QLRZ4FY10 | C02543300GUG2Y7JC\n      iMac15,1 | C02QJ0UPFY10 | C02541902GUG2Y7JA\n      iMac15,1 | C02QG0NGFY10 | C02539700J9G2Y71M\n      iMac15,1 | C02N3XYEFY10 | C02429104J9G2Y7UE\n      iMac15,1 | C02QW0M3FY10 | C02552700GUG2Y7JA\n```\n\nThe order is `Product | Serial | Board Serial (MLB)`\n\nThe `iMac15,1` part gets copied to _SMBIOS -&gt; Product Name_.\n\nThe `Serial` part gets copied to _SMBIOS -&gt; Serial Number._\n\nThe `Board Serial` part gets copied to _SMBIOS -&gt; Board Serial Number_ as well as _Rt Variables -&gt; MLB._\n\nWe can create an SmUUID by running `uuidgen` in the terminal \\(or it's auto-generated via my _GenSMBIOS_ script\\) - and that gets copied to _SMBIOS -&gt; SmUUID_.\n\nWe set _Rt Variables -&gt; ROM_ to `UseMacAddr0` which just utilizes our onboard Mac address - this should be unique enough to not conflict with any others.\n\n_BooterConfig_ gets set to `0x28`, and _CsrActiveConfig_ is set to `0x3e7` which effectively disables SIP. You can choose a number of other options to enable/disable sections of SIP. Some common ones are as follows:\n\n* `0x0` - SIP completely enabled\n* `0x3` - Allow unsigned kexts and writing to protected fs locations\n* `0x3e7` - SIP completely disabled\n\n## System Parameters\n\n### Raw XML\n\n```markup\n    <key>SystemParameters</key>\n    <dict>\n        <key>InjectKexts</key>\n        <string>Yes</string>\n        <key>InjectSystemID</key>\n        <true/>\n    </dict>\n```\n\n### Clover Configurator Screenshots\n\n![System Parameters CC Section](../.gitbook/assets/image%20%2843%29.png)\n\n### Explanation\n\n#### Inject Kexts:\n\nThis setting has 3 modes:\n\n* `Yes` - this tells Clover to inject kexts from the EFI regardless.\n* `No` - this tells Clover not to inject kexts from the EFI.\n* `Detect` - this has Clover inject kexts only if _FakeSMC.kext_ is not in the kext cache.\n\nWe set it to `Yes` to make sure that all the kexts we added before get injected properly.\n\n#### InjectSystemID\n\nThis setting tells clover to set the SmUUID as the `system-id` at boot - which is important for iMessage and such.\n\n## Saving\n\nAt this point, you can do _File -&gt; Save_ to save the config.plist. If you have issues saving directly to the EFI, you can save it on the Desktop, then just copy it over. I'll leave the [sample config.plist here](https://github.com/corpnewt/Hackintosh-Guide/blob/master/Configs/Haswell/config.plist) too.\n\n"
  },
  {
    "path": "config.plist-per-hardware/ivy-bridge.md",
    "content": "---\ndescription: >-\n  We'll go through the config.plist sections, one at a time for a Ivy Bridge\n  desktop setup.\n---\n\n# Ivy Bridge\n\n## Starting Points\n\nI like to start with either the stock _config.plist_ that Clover gives you, or with just a blank canvas. In the next examples, I'll show you how I set things up from scratch; if you start from somewhere else, you may have more things checked/set than I do - but you'll want to follow along with what I do.\n\nI'll also include the raw xml examples too in order to show those that work with a text editor \\(as I prefer to\\).\n\n## ACPI\n\nThe default Clover settings are pretty overdone and can cause some issues. We'll keep this section fairly minimal, and I'll go through a bit of _why we do that_ for each part as well.\n\n### Raw XML\n\n```markup\n    <key>ACPI</key>\n    <dict>\n        <key>DSDT</key>\n        <dict>\n            <key>Fixes</key>\n            <dict>\n                <key>AddMCHC</key>\n                <true/>\n                <key>FixHPET</key>\n                <true/>\n                <key>FixIPIC</key>\n                <true/>\n                <key>FixRTC</key>\n                <true/>\n                <key>FixShutdown</key>\n                <true/>\n                <key>FixTMR</key>\n                <true/>\n            </dict>\n            <key>Patches</key>\n            <array>\n                <dict>\n                    <key>Comment</key>\n                    <string>change EHC1 to EH01</string>\n                    <key>Disabled</key>\n                    <false/>\n                    <key>Find</key>\n                    <data>\n                    RUhDMQ==\n                    </data>\n                    <key>Replace</key>\n                    <data>\n                    RUgwMQ==\n                    </data>\n                </dict>\n                <dict>\n                    <key>Comment</key>\n                    <string>change EHC2 to EH02</string>\n                    <key>Disabled</key>\n                    <false/>\n                    <key>Find</key>\n                    <data>\n                    RUhDMg==\n                    </data>\n                    <key>Replace</key>\n                    <data>\n                    RUgwMg==\n                    </data>\n                </dict>\n                <dict>\n                    <key>Comment</key>\n                    <string>change XHCI to XHC</string>\n                    <key>Disabled</key>\n                    <false/>\n                    <key>Find</key>\n                    <data>\n                    WEhDSQ==\n                    </data>\n                    <key>Replace</key>\n                    <data>\n                    WEhDXw==\n                    </data>\n                </dict>\n                <dict>\n                    <key>Comment</key>\n                    <string>change XHC1 to XHC</string>\n                    <key>Disabled</key>\n                    <false/>\n                    <key>Find</key>\n                    <data>\n                    WEhDMQ==\n                    </data>\n                    <key>Replace</key>\n                    <data>\n                    WEhDXw==\n                    </data>\n                </dict>\n                <dict>\n                    <key>Comment</key>\n                    <string>change SAT0 to SATA</string>\n                    <key>Disabled</key>\n                    <false/>\n                    <key>Find</key>\n                    <data>\n                    U0FUMA==\n                    </data>\n                    <key>Replace</key>\n                    <data>\n                    U0FUQQ==\n                    </data>\n                </dict>\n            </array>\n        </dict>\n        <key>DropTables</key>\n        <array>\n            <dict>\n                <key>Signature</key>\n                <string>SSDT</string>\n                <key>TableId</key>\n                <string>CpuPm</string>\n            </dict>\n            <dict>\n                <key>Signature</key>\n                <string>SSDT</string>\n                <key>TableId</key>\n                <string>Cpu0Ist</string>\n            </dict>\n            <dict>\n                <key>Signature</key>\n                <string>DMAR</string>\n            </dict>\n            <dict>\n                <key>Signature</key>\n                <string>MATS</string>\n            </dict>\n        </array>\n        <key>FixHeaders</key>\n        <true/>\n        <key>SSDT</key>\n        <dict>\n            <key>Generate</key>\n            <dict/>\n        </dict>\n    </dict>\n```\n\n### Clover Configurator Screenshots\n\n### Explanation\n\n#### Patches:\n\n![Ivy Acpi CC Section 1](../.gitbook/assets/image%20%2877%29.png)\n\n![Ivy Acpi CC Section 2](../.gitbook/assets/image%20%2879%29.png)\n\nThe first thing we'll go over is the _Patches_ section. This section allows us to dynamically rename parts of the DSDT via Clover. Since we're not running a real mac, and macOS is pretty particular with how things are named, we can make non-destructive changes to keep things mac-friendly. We have three entries here:\n\n* _change EHC1 to EH01 -_ helps avoid a conflict with built-in USB injectors\n* _change EHC2 to EH02_ - helps avoid a conflict with built-in USB injectors\n* _change XHC1 to XHC -_ helps avoid a conflict with built-in USB injectors\n* _change XHCI to XHC_ - helps avoid a conflict with built-in USB injectors\n* _change SAT0 to SATA_ - for potential SATA compatibility\n\n#### Fixes:\n\nIf we look then at the _Fixes_ section, we'll see that we have a few things checked \\(there are 2 pages, so I included 2 screenshots\\):\n\n* _FixShutdown_ - this can help with some boards that prefer to restart instead of shutdown.  Sometimes it can cause shutdown issues on other boards \\(ironic, right?\\), so if you have issues shutting down with this enabled, look at disabling it.\n* The remaining fixes help avoid IRQ conflicts and etc, and are not known to cause issues.  They may not be necessary for all hardware, but do not negatively impact anything if applied.\n\n**Note:** If you use an Ivy Bridge CPU with a 6-series motherboard, you will also need to enable _AddDTGP_ and _AddIMEI_, and you will have to fake the IMEI to `0x1e3a8086` \\(I will go over this in the _Devices_ section\\).\n\n#### Drop Tables:\n\nWe touched in gently on DSDT with our _Patches_ section - and this is a a bit of an extension of that. SSDT is like a sub-section of DSDT. The _Drop Tables_ section allows us to omit certain SSDT tables from loading \\(as I mentioned before, mac and PC DSDT is different, and macOS can be rather picky\\). The two that I've added are as follows:\n\n* _CpuPm_ and _Cpu0Ist_ - these drop tables related to CPU power management which allow us to supplement the data by generating an SSDT.aml via Pike's [ssdtPRGen.sh](https://github.com/Piker-Alpha/ssdtPRGen.sh) script.\n* _DMAR_ - this prevents some issues with Vt-d; which is PCI passthrough for VMs, and not very functional \\(if at all?\\) on Hackintoshes.\n* _MATS_ - with High Sierra on up this table is parsed, and can sometimes contain unprintable characters that can lead to a kernel panic.\n\n#### FixHeaders and Generate:\n\nThe only other things we've done on this page are enable these two checkboxes.\n\n* _FixHeaders_ - this is just a double-up of our _MATS_ table dropping.  This checkbox tells Clover to sanitize headers to avoid kernel panics related to unprintable characters.\n* _Generate_ - this is set to an empty dictionary \\(you can acheive the same by ticking any of the _Generate_ options, then unticking them in CC\\) which prevents Clover from generating any C or P states, and also prevents it from adding _PluginType_ \\(as that's for Haswell and newer CPUs\\).\n\n## Boot\n\nWe don't need to do _too much_ here, but we'll tweak a few things.\n\n### Raw XML\n\n```markup\n    <key>Boot</key>\n    <dict>\n        <key>Arguments</key>\n        <string>keepsyms=1 dart=0 debug=0x100 -xcpm -v</string>\n        <key>DefaultVolume</key>\n        <string>LastBootedVolume</string>\n        <key>Timeout</key>\n        <integer>5</integer>\n    </dict>\n```\n\n### Clover Configurator Screenshots\n\n### Explanation\n\n#### Arguments:\n\nWe have a few boot args set here:\n\n![Ivy Boot CC Section](../.gitbook/assets/image%20%2854%29.png)\n\n* `-v` - this enables verbose mode, which shows all the _behind-the-scenes_ text that scrolls by as you're booting instead of the Apple logo and progress bar.  It's invaluable to any Hackintosher, as it gives you an inside look at the boot process, and can help you identify issues, problem kexts, etc.\n* `dart=0` - this is just an extra layer of protection against Vt-d issues.\n* `debug=0x100` - this prevents a reboot on a kernel panic.  That way you can \\(hopefully\\) glean some useful info and follow the breadcrumbs to get past the issues.\n* `keepsyms=1` - this is a companion setting to `debug=0x100` that tells the OS to also print the symbols on a kernel panic.   That can give some more helpful insight as to what's causing the panic itself.\n* `-xcpm` - attempts to force Ivy CPUs to use XnuCPUPowerManagement\n\n#### DefaultBootVolume and Timeout:\n\nThese are the only other settings I've updated in this section.\n\n* _DefaultBootVolume_ - this uses NVRAM to remember which volume was last booted by Clover, and auto-select that at the next boot.\n* _Timeout_ - this is the number of seconds before the _DefaultBootVolume_ auto-boots.  You can set this to `-1` to avoid all timeout, or to `0` to skip the GUI entirely.  If set to `0`, you can press any keys at boot to get the GUI to show back up in case of issues.\n\n## Boot Graphics\n\nNothing here - just the stock settings. You could adjust this if Clover's scaling needs changes, but I don't mess with it.\n\n## Cpu\n\nAgain, nothing here gets changed in most setups I've worked with.\n\n## Devices\n\nWe'll handle some slick property injection for _WhateverGreen_ here, and do some basic audio setup.\n\n### Raw XML\n\n```markup\n    <key>Devices</key>\n    <dict>\n        <key>Audio</key>\n        <dict>\n            <key>Inject</key>\n            <integer>1</integer>\n            <key>ResetHDA</key>\n            <true/>\n        </dict>\n        <key>Properties</key>\n        <dict>\n            <key>PciRoot(0x0)/Pci(0x2,0x0)</key>\n            <dict>\n                <key>AAPL,ig-platform-id</key>\n                <data>\n                CgBmAQ==\n                </data>\n            </dict>\n        </dict>\n        <key>USB</key>\n        <dict>\n            <key>FixOwnership</key>\n            <true/>\n        </dict>\n    </dict>\n```\n\n### Clover Configurator Screenshots\n\n### Explanation\n\n#### Fake ID:\n\nThis section remains empty for our example setup, however, if you run an Ivy CPU with a 6-series board, you will need to have your IMEI faked as follows:\n\n```markup\n        <key>FakeID</key>\n        <dict>\n            <key>IMEI</key>\n            <string>0x1e3a8086</string>\n        </dict>\n```\n\n![Ivy Devices CC Section](../.gitbook/assets/image%20%281%29.png)\n\n#### USB:\n\nUnder this section, we ensure that _Inject_ and _FixOwnership_ are selected to avoid issues with hanging at a half-printed line somewhere around the `Enabling Legacy Matching` verbose line. You can also get past that by enabling _XHCI Hand Off_ in BIOS.\n\n#### Audio:\n\nHere we set our audio to inject _Layout 1_ - this may or may not be compatible with your codec, but you can check on [_AppleALC's Supported Codec Page_](https://github.com/acidanthera/AppleALC/wiki/Supported-codecs).\n\nWe also enabled _ResetHDA_ which puts the codec back in a neutral state between OS reboots. This prevents some issues with no audio after booting to another OS and then back.\n\n#### Properties:\n\nThis section is setup via Headkaze's [_Intel Framebuffer Patching Guide_](https://www.insanelymac.com/forum/topic/334899-intel-framebuffer-patching-using-whatevergreen/?tab=comments#comment-2626271) and applies only one actual property to begin, which is the _ig-platform-id_. The way we get the proper value for this is to look at the ig-platform-id we intend to use, then swap the pairs of hex bytes. For this, we assume the user has an HD 4000 - HD 2000 and 2500 are _not_ supported in macOS, and if you have them, you can ignore the following iGPU-related info.\n\nIf we think of our ig-plat as `0xAABBCCDD`, our swapped version would look like `0xDDCCBBAA`.\n\nThe ig-platform-id we use is as follows:\n\n* `0x0166000A` - this is the standard hex for the ig-plat\n  * `0A006601` when hex-swapped\n  * `CgBmAQ==` when the hex-swapped version is converted to base64\n\n## Disable Drivers\n\nWe have nothing to do here.\n\n## Gui\n\n### Raw XML\n\n```markup\n    <key>GUI</key>\n    <dict>\n        <key>Scan</key>\n        <dict>\n            <key>Entries</key>\n            <true/>\n            <key>Tool</key>\n            <true/>\n        </dict>\n    </dict>\n```\n\n### Clover Configurator Screenshots\n\n![Ivy Gui CC Section](../.gitbook/assets/image%20%2867%29.png)\n\n### Explanation\n\n#### Scan:\n\nThe only settings I've tweaked on this page are the _Scan_ settings. I've selected _Custom_, then checked everything except _Legacy_ and _Kernel_. This just omits some of the unbootable entries in Clover to clean up the menu.\n\n#### Hide Volumes:\n\nI haven't added anything here, but you _can_ hide unwanted volumes here. You can do so by either adding the volume's name, or UUID.\n\nTo hide extra APFS entries, add the following to this list:\n\n* `Preboot`\n* `VM`\n\nTo hide all Recovery partitions, add `Recovery` to the list.\n\nTo get the UUID of a drive to hide, you can use the following terminal command:\n\n```text\ndiskutil info diskXsY | grep -i \"Partition UUID\" | rev | cut -d' ' -f 1 | rev\n```\n\nMake sure to replace `diskXsY` with the actual disk number of the volume you'd like to hide.\n\n#### Theme:\n\nIf you want to test out a new theme \\(and I suggest you look at [_clover-next-black_](https://github.com/al3xtjames/clover-theme-next-black)\\), you can add the unzipped theme folder to the _/Volumes/EFI/EFI/CLOVER/themes_ directory, then type the name of the folder in the _Theme_ text field to apply it.\n\n## Graphics\n\nIn the past, we'd setup the iGPU here, but since we already did that via Properties in the _Devices_ section, we have nothing to really configure here. **NOTE**: When Clover detects an Intel iGPU, it _automatically_ enables Intel Injection if the Graphics section doesn't exist in the config.plist. To bypass this, you can explicitly disable injection using the raw XML below, or by clicking the \"Inject Intel\" button once to check it, and once to uncheck it in CC.\n\n### Raw XML\n\n```markup\n    <key>Graphics</key>\n    <dict>\n        <key>Inject</key>\n        <false/>\n    </dict>\n```\n\n## Kernel And Kext Patches\n\n### Raw XML\n\n```markup\n    <key>KernelAndKextPatches</key>\n    <dict>\n        <key>AppleIntelCPUPM</key>\n        <true/>\n        <key>KernelPm</key>\n        <true/>\n        <key>KextsToPatch</key>\n        <array>\n            <dict>\n                <key>Comment</key>\n                <string>Port limit increase</string>\n                <key>Disabled</key>\n                <false/>\n                <key>Find</key>\n                <data>\n                g710////EA==\n                </data>\n                <key>InfoPlistPatch</key>\n                <false/>\n                <key>MatchOS</key>\n                <string>10.12.x</string>\n                <key>Name</key>\n                <string>com.apple.driver.usb.AppleUSBXHCI</string>\n                <key>Replace</key>\n                <data>\n                g710////Gw==\n                </data>\n            </dict>\n            <dict>\n                <key>Comment</key>\n                <string>Port limit increase (RehabMan)</string>\n                <key>Disabled</key>\n                <false/>\n                <key>Find</key>\n                <data>\n                g32IDw+DpwQAAA==\n                </data>\n                <key>InfoPlistPatch</key>\n                <false/>\n                <key>MatchOS</key>\n                <string>10.13.x</string>\n                <key>Name</key>\n                <string>com.apple.driver.usb.AppleUSBXHCI</string>\n                <key>Replace</key>\n                <data>\n                g32ID5CQkJCQkA==\n                </data>\n            </dict>\n            <dict>\n                <key>Comment</key>\n                <string>Port limit increase (Ricky)</string>\n                <key>Disabled</key>\n                <false/>\n                <key>Find</key>\n                <data>\n                g/sPD4OPBAAA\n                </data>\n                <key>InfoPlistPatch</key>\n                <false/>\n                <key>MatchOS</key>\n                <string>10.14.x</string>\n                <key>Name</key>\n                <string>com.apple.driver.usb.AppleUSBXHCI</string>\n                <key>Replace</key>\n                <data>\n                g/sPkJCQkJCQ\n                </data>\n            </dict>\n            <dict>\n                <key>Comment</key>\n                <string>External Icons Patch</string>\n                <key>Disabled</key>\n                <false/>\n                <key>Find</key>\n                <data>\n                RXh0ZXJuYWw=\n                </data>\n                <key>InfoPlistPatch</key>\n                <false/>\n                <key>Name</key>\n                <string>AppleAHCIPort</string>\n                <key>Replace</key>\n                <data>\n                SW50ZXJuYWw=\n                </data>\n            </dict>\n        </array>\n    </dict>\n```\n\n### Clover Configurator Screenshots\n\n### Explanation\n\nIn this section, we've enabled a few settings and added some kext patches.\n\n#### Checkboxes:\n\nWe have a couple checkboxes selected here:\n\n* _Apple RTC_ - this ensures that we don't have a BIOS reset on reboot.\n* _KernelPM_ - this setting prevents writing to MSR 0xe2 which can prevent a kernel panic at boot when using XCPM.\n* _AppleIntelCPUPM_ - this does the same as _KernelPM_, but when using AppleIntelCPUPowerManagement instead.\n\n![Ivy KernelAndKextPatches CC Section](../.gitbook/assets/ivykakp.png)\n\n#### KextsToPatch:\n\nWe added 5 different kexts to patch here. Four of them are for USB port limit increases, and the last acts as an _orange icons fix_ - when internal drives are hotpluggable, and treated as external drives.\n\nYou'll notice that there are MatchOS values set for each of the USB port limit patches. You can remove any of the entries for OS versions you don't intend to run. They won't do any harm being there, but if you want a clean, minimal plist, there's no sense in having them.\n\n## RtVariables And SMBIOS\n\n### Raw XML\n\n```markup\n    <key>RtVariables</key>\n    <dict>\n        <key>BooterConfig</key>\n        <string>0x28</string>\n        <key>CsrActiveConfig</key>\n        <string>0x3E7</string>\n        <key>MLB</key>\n        <string>C02253902J9F2FRCB</string>\n        <key>ROM</key>\n        <string>UseMacAddr0</string>\n    </dict>\n    <key>SMBIOS</key>\n    <dict>\n        <key>BoardSerialNumber</key>\n        <string>C02253902J9F2FRCB</string>\n        <key>ProductName</key>\n        <string>iMac13,2</string>\n        <key>SerialNumber</key>\n        <string>C02JX0KSDNCW</string>\n        <key>SmUUID</key>\n        <string>FDDCE665-D5C0-4738-8F80-77380686E42B</string>\n    </dict>\n```\n\n### Clover Configurator Screenshots\n\n### Explanation\n\nFor setting up the SMBIOS info, I use acidanthera's [_macserial_](https://github.com/acidanthera/macserial) application. I wrote a [_python script_](https://github.com/corpnewt/GenSMBIOS) that can leverage it as well \\(and auto-saves to the config.plist when selected\\). There's plenty of info that's left blank to allow Clover to fill in the blanks; this means that updating Clover will update the info passed, and not require you to also update your config.plist.\n\nFor this Ivy Bridge example, I chose the _iMac13,2_ SMBIOS.\n\nTo get the SMBIOS info generated with _macserial_, you can run it with the `-a` argument \\(which generates serials and board serials for all supported platforms\\). You can also parse it with `grep` to limit your search to one SMBIOS type.\n\nWith our _iMac13,2_ example, we would run _macserial_ like so via the terminal:\n\n```text\nmacserial -a | grep -i iMac13,2\n```\n\nWhich would give us output similar to the following:\n\n![Ivy Rt Variables CC Section](../.gitbook/assets/image%20%2813%29.png)\n\n![Ivy SMBIOS CC Section](../.gitbook/assets/image%20%2859%29.png)\n\n```text\n      iMac13,2 | C02JX0KSDNCW | C02253902J9F2FRCB\n      iMac13,2 | C02KC3Y9DNCW | C02309401GUF2FR1M\n      iMac13,2 | C02KPYYDDNCW | C02319902J9F2FRJA\n      iMac13,2 | C02LLSYJDNCW | C02343301J9F2FR1F\n      iMac13,2 | C02JF0N3DNCW | C02238404GUF2FR1M\n      iMac13,2 | C02JT6ZFDNCW | C02250104QXF2FRFB\n      iMac13,2 | C02LT0GDDNCW | C02350130J9F2FR1H\n      iMac13,2 | C02J1069DNCW | C02227310J9F2FRAD\n      iMac13,2 | C02JN0Y4DNCW | C02245902CDF2FRFB\n      iMac13,2 | C02JWJZSDNCW | C02252100GUF2FRCB\n```\n\nThe order is `Product | Serial | Board Serial (MLB)`\n\nThe `iMac13,2` part gets copied to _SMBIOS -&gt; Product Name_.\n\nThe `Serial` part gets copied to _SMBIOS -&gt; Serial Number._\n\nThe `Board Serial` part gets copied to _SMBIOS -&gt; Board Serial Number_ as well as _Rt Variables -&gt; MLB._\n\nWe can create an SmUUID by running `uuidgen` in the terminal \\(or it's auto-generated via my _GenSMBIOS_ script\\) - and that gets copied to _SMBIOS -&gt; SmUUID_.\n\nWe set _Rt Variables -&gt; ROM_ to `UseMacAddr0` which just utilizes our onboard Mac address - this should be unique enough to not conflict with any others.\n\n_BooterConfig_ gets set to `0x28`, and _CsrActiveConfig_ is set to `0x3e7` which effectively disables SIP. You can choose a number of other options to enable/disable sections of SIP. Some common ones are as follows:\n\n* `0x0` - SIP completely enabled\n* `0x3` - Allow unsigned kexts and writing to protected fs locations\n* `0x3e7` - SIP completely disabled\n\n## System Parameters\n\n### Raw XML\n\n```markup\n    <key>SystemParameters</key>\n    <dict>\n        <key>InjectKexts</key>\n        <string>Yes</string>\n        <key>InjectSystemID</key>\n        <true/>\n    </dict>\n```\n\n### Clover Configurator Screenshots\n\n![System Parameters CC Section](../.gitbook/assets/image%20%2843%29.png)\n\n### Explanation\n\n#### Inject Kexts:\n\nThis setting has 3 modes:\n\n* `Yes` - this tells Clover to inject kexts from the EFI regardless.\n* `No` - this tells Clover not to inject kexts from the EFI.\n* `Detect` - this has Clover inject kexts only if _FakeSMC.kext_ or _VirtualSMC.kext_ are not in the kext cache.\n\nWe set it to `Yes` to make sure that all the kexts we added before get injected properly.\n\n#### InjectSystemID\n\nThis setting tells clover to set the SmUUID as the `system-id` at boot - which is important for iMessage and such.\n\n## Saving\n\nAt this point, you can do _File -&gt; Save_ to save the config.plist. If you have issues saving directly to the EFI, you can save it on the Desktop, then just copy it over. I'll leave the [sample config.plist here](https://github.com/corpnewt/Hackintosh-Guide/blob/master/Configs/Ivy%20Bridge/config.plist) too.\n\n"
  },
  {
    "path": "config.plist-per-hardware/kaby-lake.md",
    "content": "---\ndescription: >-\n  We'll go through the config.plist sections, one at a time for a Kaby Lake\n  desktop setup.\n---\n\n# Kaby Lake\n\n## Starting Points\n\nI like to start with either the stock _config.plist_ that Clover gives you, or with just a blank canvas. In the next examples, I'll show you how I set things up from scratch; if you start from somewhere else, you may have more things checked/set than I do - but you'll want to follow along with what I do.\n\nI'll also include the raw xml examples too in order to show those that work with a text editor (as I prefer to).\n\n## ACPI\n\nThe default Clover settings are pretty overdone and can cause some issues. We'll keep this section fairly minimal, and I'll go through a bit of _why we do that_ for each part as well.\n\n### Raw XML\n\n```markup\n    <key>ACPI</key>\n    <dict>\n        <key>DSDT</key>\n        <dict>\n            <key>Fixes</key>\n            <dict>\n                <key>AddMCHC</key>\n                <true/>\n                <key>FixHPET</key>\n                <true/>\n                <key>FixIPIC</key>\n                <true/>\n                <key>FixRTC</key>\n                <true/>\n                <key>FixShutdown</key>\n                <true/>\n                <key>FixTMR</key>\n                <true/>\n            </dict>\n            <key>Patches</key>\n            <array>\n                <dict>\n                    <key>Comment</key>\n                    <string>change XHCI to XHC</string>\n                    <key>Disabled</key>\n                    <false/>\n                    <key>Find</key>\n                    <data>\n                    WEhDSQ==\n                    </data>\n                    <key>Replace</key>\n                    <data>\n                    WEhDXw==\n                    </data>\n                </dict>\n                <dict>\n                    <key>Comment</key>\n                    <string>change XHC1 to XHC</string>\n                    <key>Disabled</key>\n                    <false/>\n                    <key>Find</key>\n                    <data>\n                    WEhDMQ==\n                    </data>\n                    <key>Replace</key>\n                    <data>\n                    WEhDXw==\n                    </data>\n                </dict>\n                <dict>\n                    <key>Comment</key>\n                    <string>change SAT0 to SATA</string>\n                    <key>Disabled</key>\n                    <false/>\n                    <key>Find</key>\n                    <data>\n                    U0FUMA==\n                    </data>\n                    <key>Replace</key>\n                    <data>\n                    U0FUQQ==\n                    </data>\n                </dict>\n            </array>\n        </dict>\n        <key>DropTables</key>\n        <array>\n            <dict>\n                <key>Signature</key>\n                <string>DMAR</string>\n            </dict>\n            <dict>\n                <key>Signature</key>\n                <string>MATS</string>\n            </dict>\n        </array>\n        <key>FixHeaders</key>\n        <true/>\n        <key>SSDT</key>\n        <dict>\n            <key>Generate</key>\n            <dict>\n                <key>PluginType</key>\n                <true/>\n            </dict>\n        </dict>\n    </dict>\n```\n\n### Clover Configurator Screenshots\n\n![Kaby Lake Acpi CC Section 1](<../.gitbook/assets/image (32) (1).png>)\n\n![Kaby Lake Acpi CC Section 2](<../.gitbook/assets/image (64).png>)\n\n### Explanation\n\n#### Patches:\n\nThe first thing we'll go over is the _Patches_ section. This section allows us to dynamically rename parts of the DSDT via Clover. Since we're not running a real mac, and macOS is pretty particular with how things are named, we can make non-destructive changes to keep things mac-friendly. We have three entries here:\n\n* _change XHCI to XHC -_ helps avoid a conflict with built-in USB injectors\n* _change XHC1 to XHC_ - helps avoid a conflict with built-in USB injectors\n* _change SAT0 to SATA_ - for potential SATA compatibility\n\n#### Fixes:\n\nIf we look then at the _Fixes_ section, we'll see that we have a few things checked (there are 2 pages, so I included 2 screenshots):\n\n* _FixShutdown_ - this can help with some boards that prefer to restart instead of shutdown. Sometimes it can cause shutdown issues on other boards (ironic, right?), so if you have issues shutting down with this enabled, look at disabling it.\n* The remaining fixes help avoid IRQ conflicts and etc, and are not known to cause issues. They may not be necessary for all hardware, but do not negatively impact anything if applied.\n\n#### Drop Tables:\n\nWe touched in gently on DSDT with our _Patches_ section - and this is a a bit of an extension of that. SSDT is like a sub-section of DSDT. The _Drop Tables_ section allows us to omit certain SSDT tables from loading (as I mentioned before, mac and PC DSDT is different, and macOS can be rather picky). The two that I've added are as follows:\n\n* _DMAR_ - this prevents some issues with Vt-d; which is PCI passthrough for VMs, and not very functional (if at all?) on Hackintoshes.\n* _MATS_ - with High Sierra on up this table is parsed, and can sometimes contain unprintable characters that can lead to a kernel panic.\n\n#### FixHeaders and PluginType:\n\nThe only other things we've done on this page are enable these two checkboxes.\n\n* _FixHeaders_ - this is just a double-up of our _MATS_ table dropping. This checkbox tells Clover to sanitize headers to avoid kernel panics related to unprintable characters.\n* _PluginType_ - this injects some DSDT data to get _X86PlatformPlugin_ to load - giving us a leg-up on native CPU power management. This setting only works on Haswell and newer CPUs though.\n\n## Boot\n\nWe don't need to do _too much_ here, but we'll tweak a few things.\n\n### Raw XML\n\n```markup\n    <key>Boot</key>\n    <dict>\n        <key>Arguments</key>\n        <string>keepsyms=1 dart=0 debug=0x100 -v</string>\n        <key>DefaultVolume</key>\n        <string>LastBootedVolume</string>\n        <key>Timeout</key>\n        <integer>5</integer>\n    </dict>\n```\n\n### Clover Configurator Screenshots\n\n![Kaby Lake Boot CC Section](<../.gitbook/assets/image (22).png>)\n\n### Explanation\n\n#### Arguments:\n\nWe have a few boot args set here:\n\n* `-v` - this enables verbose mode, which shows all the _behind-the-scenes_ text that scrolls by as you're booting instead of the Apple logo and progress bar. It's invaluable to any Hackintosher, as it gives you an inside look at the boot process, and can help you identify issues, problem kexts, etc.\n* `dart=0` - this is just an extra layer of protection against Vt-d issues.\n* `debug=0x100` - this prevents a reboot on a kernel panic. That way you can (hopefully) glean some useful info and follow the breadcrumbs to get past the issues.\n* `keepsyms=1` - this is a companion setting to `debug=0x100` that tells the OS to also print the symbols on a kernel panic. That can give some more helpful insight as to what's causing the panic itself.\n\n#### DefaultBootVolume and Timeout:\n\nThese are the only other settings I've updated in this section.\n\n* _DefaultBootVolume_ - this uses NVRAM to remember which volume was last booted by Clover, and auto-select that at the next boot.\n* _Timeout_ - this is the number of seconds before the _DefaultBootVolume_ auto-boots. You can set this to `-1` to avoid all timeout, or to `0` to skip the GUI entirely. If set to `0`, you can press any keys at boot to get the GUI to show back up in case of issues.\n\n## Boot Graphics\n\nNothing here - just the stock settings. You could adjust this if Clover's scaling needs changes, but I don't mess with it.\n\n## Cpu\n\nAgain, nothing here gets changed in most setups I've worked with.\n\n## Devices\n\nWe'll handle some slick property injection for _WhateverGreen_ here, and do some basic audio setup.\n\n### Raw XML\n\n```markup\n    <key>Devices</key>\n    <dict>\n        <key>Audio</key>\n        <dict>\n            <key>Inject</key>\n            <integer>1</integer>\n            <key>ResetHDA</key>\n            <true/>\n        </dict>\n        <key>Properties</key>\n        <dict>\n            <key>PciRoot(0x0)/Pci(0x2,0x0)</key>\n            <dict>\n                <key>AAPL,ig-platform-id</key>\n                <data>\n                AAASWQ==\n                </data>\n                <key>framebuffer-patch-enable</key>\n                <data>\n                AQAAAA==\n                </data>\n                <key>framebuffer-stolenmem</key>\n                <data>\n                AAAwAQ==\n                </data>\n            </dict>\n        </dict>\n        <key>USB</key>\n        <dict>\n            <key>FixOwnership</key>\n            <true/>\n        </dict>\n    </dict>\n```\n\n### Clover Configurator Screenshots\n\n![Kaby Lake Devices CC Section - iGPU](<../.gitbook/assets/image (2).png>)\n\n![Kaby Lake Devices CC Section - iGPU Connectorless](<../.gitbook/assets/image (60).png>)\n\n### Explanation\n\n#### Fake ID:\n\nThis section remains empty for our example setup. In the past, almost-supported iGPUs (like the HD 4400) would get faked to a supported iGPU here, but we'll be using the cleaner Properties section for this.\n\n#### USB:\n\nUnder this section, we ensure that _Inject_ and _FixOwnership_ are selected to avoid issues with hanging at a half-printed line somewhere around the `Enabling Legacy Matching` verbose line. You can also get past that by enabling _XHCI Hand Off_ in BIOS.\n\n#### Audio:\n\nHere we set our audio to inject _Layout 1_ - this may or may not be compatible with your codec, but you can check on [_AppleALC's Supported Codec Page_](https://github.com/acidanthera/AppleALC/wiki/Supported-codecs).\n\nWe also enabled _ResetHDA_ which puts the codec back in a neutral state between OS reboots. This prevents some issues with no audio after booting to another OS and then back.\n\n#### Properties:\n\nThis section is setup via Headkaze's [_Intel Framebuffer Patching Guide_](https://www.insanelymac.com/forum/topic/334899-intel-framebuffer-patching-using-whatevergreen/?tab=comments#comment-2626271) and applies only one actual property to begin, which is the _ig-platform-id_. The way we get the proper value for this is to look at the ig-platform-id we intend to use, then swap the pairs of hex bytes.\n\nIf we think of our ig-plat as `0xAABBCCDD`, our swapped version would look like `0xDDCCBBAA`.\n\nThe two ig-platform-id's we use are as follows:\n\n* `0x59120000` - this is used when the iGPU is used to drive a display\n  * `00001259` when hex-swapped\n  * `AAASWQ==` when the hex-swapped version is converted to base64\n* `0x59120003` - this is used when the iGPU is only used for compute tasks, and doesn't drive a display\n  * `03001259` when hex-swapped\n  * `AwASWQ==` when the hex-swapped version is converted to base64\n\nWe also add 2 more properties, _framebuffer-patch-enable_ and _framebuffer-stolenmem_. The first enables patching via _WhateverGreen.kext,_ and the second sets the min stolen memory to 19MB.\n\n## Disable Drivers\n\nWe have nothing to do here.\n\n## Gui\n\n### Raw XML\n\n```markup\n    <key>GUI</key>\n    <dict>\n        <key>Scan</key>\n        <dict>\n            <key>Entries</key>\n            <true/>\n            <key>Tool</key>\n            <true/>\n        </dict>\n    </dict>\n```\n\n### Clover Configurator Screenshots\n\n![Kaby Lake Gui CC Section](<../.gitbook/assets/image (67).png>)\n\n### Explanation\n\n#### Scan:\n\nThe only settings I've tweaked on this page are the _Scan_ settings. I've selected _Custom_, then checked everything except _Legacy_ and _Kernel_. This just omits some of the unbootable entries in Clover to clean up the menu.\n\n#### Hide Volumes:\n\nI haven't added anything here, but you _can_ hide unwanted volumes here. You can do so by either adding the volume's name, or UUID.\n\nTo hide extra APFS entries, add the following to this list:\n\n* `Preboot`\n* `VM`\n\nTo hide all Recovery partitions, add `Recovery` to the list.\n\nTo get the UUID of a drive to hide, you can use the following terminal command:\n\n```\ndiskutil info diskXsY | grep -i \"Partition UUID\" | rev | cut -d' ' -f 1 | rev\n```\n\nMake sure to replace `diskXsY` with the actual disk number of the volume you'd like to hide.\n\n#### Theme:\n\nIf you want to test out a new theme (and I suggest you look at [_clover-next-black_](https://github.com/al3xtjames/clover-theme-next-black)), you can add the unzipped theme folder to the _/Volumes/EFI/EFI/CLOVER/themes_ directory, then type the name of the folder in the _Theme_ text field to apply it.\n\n## Graphics\n\nIn the past, we'd setup the iGPU here, but since we already did that via Properties in the _Devices_ section, we have nothing to really configure here. **NOTE**: When Clover detects an Intel iGPU, it _automatically_ enables Intel Injection if the Graphics section doesn't exist in the config.plist. To bypass this, you can explicitly disable injection using the raw XML below, or by clicking the \"Inject Intel\" button once to check it, and once to uncheck it in CC.\n\n### Raw XML\n\n```markup\n    <key>Graphics</key>\n    <dict>\n        <key>Inject</key>\n        <false/>\n    </dict>\n```\n\n## Kernel And Kext Patches\n\n### Raw XML\n\n```markup\n    <key>KernelAndKextPatches</key>\n    <dict>\n        <key>KernelPm</key>\n        <true/>\n        <key>KextsToPatch</key>\n        <array>\n            <dict>\n                <key>Comment</key>\n                <string>Port limit increase</string>\n                <key>Disabled</key>\n                <false/>\n                <key>Find</key>\n                <data>\n                g710////EA==\n                </data>\n                <key>InfoPlistPatch</key>\n                <false/>\n                <key>MatchOS</key>\n                <string>10.12.x</string>\n                <key>Name</key>\n                <string>com.apple.driver.usb.AppleUSBXHCI</string>\n                <key>Replace</key>\n                <data>\n                g710////Gw==\n                </data>\n            </dict>\n            <dict>\n                <key>Comment</key>\n                <string>Port limit increase (RehabMan)</string>\n                <key>Disabled</key>\n                <false/>\n                <key>Find</key>\n                <data>\n                g32IDw+DpwQAAA==\n                </data>\n                <key>InfoPlistPatch</key>\n                <false/>\n                <key>MatchOS</key>\n                <string>10.13.x</string>\n                <key>Name</key>\n                <string>com.apple.driver.usb.AppleUSBXHCI</string>\n                <key>Replace</key>\n                <data>\n                g32ID5CQkJCQkA==\n                </data>\n            </dict>\n            <dict>\n                <key>Comment</key>\n                <string>Port limit increase (PMHeart)</string>\n                <key>Disabled</key>\n                <true/>\n                <key>Find</key>\n                <data>\n                g/sPD4MDBQAA\n                </data>\n                <key>InfoPlistPatch</key>\n                <false/>\n                <key>MatchOS</key>\n                <string>10.14.0</string>\n                <key>Name</key>\n                <string>com.apple.driver.usb.AppleUSBXHCI</string>\n                <key>Replace</key>\n                <data>\n                g/sPkJCQkJCQ\n                </data>\n            </dict>\n            <dict>\n                <key>Comment</key>\n                <string>Port limit increase (Ricky)</string>\n                <key>Disabled</key>\n                <false/>\n                <key>Find</key>\n                <data>\n                g/sPD4OPBAAA\n                </data>\n                <key>InfoPlistPatch</key>\n                <false/>\n                <key>MatchOS</key>\n                <string>10.14.x</string>\n                <key>Name</key>\n                <string>com.apple.driver.usb.AppleUSBXHCI</string>\n                <key>Replace</key>\n                <data>\n                g/sPkJCQkJCQ\n                </data>\n            </dict>\n            <dict>\n                <key>Comment</key>\n                <string>External Icons Patch</string>\n                <key>Disabled</key>\n                <false/>\n                <key>Find</key>\n                <data>\n                RXh0ZXJuYWw=\n                </data>\n                <key>InfoPlistPatch</key>\n                <false/>\n                <key>Name</key>\n                <string>AppleAHCIPort</string>\n                <key>Replace</key>\n                <data>\n                SW50ZXJuYWw=\n                </data>\n            </dict>\n        </array>\n    </dict>\n```\n\n### Clover Configurator Screenshots\n\n![Kaby Lake KernelAndKextPatches CC Section](<../.gitbook/assets/image (55).png>)\n\n### Explanation\n\nIn this section, we've enabled a few settings and added some kext patches.\n\n#### Checkboxes:\n\nWe have a couple checkboxes selected here:\n\n* _Apple RTC_ - this ensures that we don't have a BIOS reset on reboot.\n* _KernelPM_ - this setting prevents writing to MSR 0xe2 which can prevent a kernel panic at boot.\n\n#### KextsToPatch:\n\nWe added 4 different kexts to patch here. Three of them are for USB port limit increases, and the last acts as an _orange icons fix_ - when internal drives are hotpluggable, and treated as external drives.\n\nYou'll notice that there are MatchOS values set for each of the USB port limit patches. You can remove any of the entries for OS versions you don't intend to run. They won't do any harm being there, but if you want a clean, minimal plist, there's no sense in having them.\n\n## RtVariables And SMBIOS\n\n### Raw XML\n\n```markup\n    <key>RtVariables</key>\n    <dict>\n        <key>BooterConfig</key>\n        <string>0x28</string>\n        <key>CsrActiveConfig</key>\n        <string>0x3E7</string>\n        <key>MLB</key>\n        <string>C02726902CDH69F1M</string>\n        <key>ROM</key>\n        <string>UseMacAddr0</string>\n    </dict>\n    <key>SMBIOS</key>\n    <dict>\n        <key>BoardSerialNumber</key>\n        <string>C02726902CDH69F1M</string>\n        <key>ProductName</key>\n        <string>iMac18,1</string>\n        <key>SerialNumber</key>\n        <string>C02TX0VDH7JY</string>\n        <key>SmUUID</key>\n        <string>91492A73-595C-4D97-A6FC-2B5D3ED1B54D</string>\n    </dict>\n```\n\n### Clover Configurator Screenshots\n\n![Kaby Lake RtVariables CC Section](<../.gitbook/assets/image (28).png>)\n\n![Kaby Lake SMBIOS CC Section](<../.gitbook/assets/image (52).png>)\n\n### Explanation\n\nFor setting up the SMBIOS info, I use acidanthera's [_macserial_](https://github.com/acidanthera/macserial) application. I wrote a [_python script_](https://github.com/corpnewt/GenSMBIOS) that can leverage it as well (and auto-saves to the config.plist when selected). There's plenty of info that's left blank to allow Clover to fill in the blanks; this means that updating Clover will update the info passed, and not require you to also update your config.plist.\n\nFor this Kaby Lake example, I chose the _iMac18,1_ SMBIOS - this is done intentionally for compatibility's sake. There are two main SMBIOS used for Kaby Lake:\n\n* _iMac18,1_ - this is used for computers utilizing the iGPU for displaying.\n* _iMac18,3_ - this is used for computers using a dGPU for displaying, and an iGPU for compute tasks only.\n\nTo get the SMBIOS info generated with _macserial_, you can run it with the `-a` argument (which generates serials and board serials for all supported platforms). You can also parse it with `grep` to limit your search to one SMBIOS type.\n\nWith our _iMac18,1_ example, we would run _macserial_ like so via the terminal:\n\n```\nmacserial -a | grep -i iMac18,1\n```\n\nWhich would give us output similar to the following:\n\n```\n      iMac18,1 | C02T8SZNH7JY | C02707101J9H69F1F\n      iMac18,1 | C02VXBYDH7JY | C02753100GUH69FCB\n      iMac18,1 | C02T7RY6H7JY | C02706310GUH69FA8\n      iMac18,1 | C02VD07ZH7JY | C02737301J9H69FCB\n      iMac18,1 | C02TQPYPH7JY | C02720802CDH69FAD\n      iMac18,1 | C02VXYYVH7JY | C02753207CDH69FJC\n      iMac18,1 | C02VDBZ0H7JY | C02737700QXH69FA8\n      iMac18,1 | C02VP0H6H7JY | C02746300CDH69FJA\n      iMac18,1 | C02VL0W9H7JY | C02743303CDH69F8C\n      iMac18,1 | C02V2NYMH7JY | C02728600J9H69FAD\n```\n\nThe order is `Product | Serial | Board Serial (MLB)`\n\nThe `iMac18,1` part gets copied to _SMBIOS -> Product Name_.\n\nThe `Serial` part gets copied to _SMBIOS -> Serial Number._\n\nThe `Board Serial` part gets copied to _SMBIOS -> Board Serial Number_ as well as _Rt Variables -> MLB._\n\nWe can create an SmUUID by running `uuidgen` in the terminal (or it's auto-generated via my _GenSMBIOS_ script) - and that gets copied to _SMBIOS -> SmUUID_.\n\nWe set _Rt Variables -> ROM_ to `UseMacAddr0` which just utilizes our onboard Mac address - this should be unique enough to not conflict with any others.\n\n_BooterConfig_ gets set to `0x28`, and _CsrActiveConfig_ is set to `0x3e7` which effectively disables SIP. You can choose a number of other options to enable/disable sections of SIP. Some common ones are as follows:\n\n* `0x0` - SIP completely enabled\n* `0x3` - Allow unsigned kexts and writing to protected fs locations\n* `0x3e7` - SIP completely disabled\n\n## System Parameters\n\n### Raw XML\n\n```markup\n    <key>SystemParameters</key>\n    <dict>\n        <key>InjectKexts</key>\n        <string>Yes</string>\n        <key>InjectSystemID</key>\n        <true/>\n    </dict>\n```\n\n### Clover Configurator Screenshots\n\n![System Parameters CC Section](<../.gitbook/assets/image (58).png>)\n\n### Explanation\n\n#### Inject Kexts:\n\nThis setting has 3 modes:\n\n* `Yes` - this tells Clover to inject kexts from the EFI regardless.\n* `No` - this tells Clover not to inject kexts from the EFI.\n* `Detect` - this has Clover inject kexts only if _FakeSMC.kext_ is not in the kext cache.\n\nWe set it to `Yes` to make sure that all the kexts we added before get injected properly.\n\n#### InjectSystemID\n\nThis setting tells clover to set the SmUUID as the `system-id` at boot - which is important for iMessage and such.\n\n## Saving\n\nAt this point, you can do _File -> Save_ to save the config.plist. If you have issues saving directly to the EFI, you can save it on the Desktop, then just copy it over. I'll leave the [sample config.plist here](../Configs/KabyLake/config.plist) too.\n"
  },
  {
    "path": "config.plist-per-hardware/skylake.md",
    "content": "---\ndescription: >-\n  We'll go through the config.plist sections, one at a time for a Skylake\n  desktop setup.\n---\n\n# Skylake\n\n## Starting Points\n\nI like to start with either the stock _config.plist_ that Clover gives you, or with just a blank canvas. In the next examples, I'll show you how I set things up from scratch; if you start from somewhere else, you may have more things checked/set than I do - but you'll want to follow along with what I do.\n\nI'll also include the raw xml examples too in order to show those that work with a text editor (as I prefer to).\n\n## ACPI\n\nThe default Clover settings are pretty overdone and can cause some issues. We'll keep this section fairly minimal, and I'll go through a bit of _why we do that_ for each part as well.\n\n### Raw XML\n\n```markup\n    <key>ACPI</key>\n    <dict>\n        <key>DSDT</key>\n        <dict>\n            <key>Fixes</key>\n            <dict>\n                <key>AddMCHC</key>\n                <true/>\n                <key>FixHPET</key>\n                <true/>\n                <key>FixIPIC</key>\n                <true/>\n                <key>FixRTC</key>\n                <true/>\n                <key>FixShutdown</key>\n                <true/>\n                <key>FixTMR</key>\n                <true/>\n            </dict>\n            <key>Patches</key>\n            <array>\n                <dict>\n                    <key>Comment</key>\n                    <string>change XHCI to XHC</string>\n                    <key>Disabled</key>\n                    <false/>\n                    <key>Find</key>\n                    <data>\n                    WEhDSQ==\n                    </data>\n                    <key>Replace</key>\n                    <data>\n                    WEhDXw==\n                    </data>\n                </dict>\n                <dict>\n                    <key>Comment</key>\n                    <string>change XHC1 to XHC</string>\n                    <key>Disabled</key>\n                    <false/>\n                    <key>Find</key>\n                    <data>\n                    WEhDMQ==\n                    </data>\n                    <key>Replace</key>\n                    <data>\n                    WEhDXw==\n                    </data>\n                </dict>\n                <dict>\n                    <key>Comment</key>\n                    <string>change SAT0 to SATA</string>\n                    <key>Disabled</key>\n                    <false/>\n                    <key>Find</key>\n                    <data>\n                    U0FUMA==\n                    </data>\n                    <key>Replace</key>\n                    <data>\n                    U0FUQQ==\n                    </data>\n                </dict>\n            </array>\n        </dict>\n        <key>DropTables</key>\n        <array>\n            <dict>\n                <key>Signature</key>\n                <string>DMAR</string>\n            </dict>\n            <dict>\n                <key>Signature</key>\n                <string>MATS</string>\n            </dict>\n        </array>\n        <key>FixHeaders</key>\n        <true/>\n        <key>SSDT</key>\n        <dict>\n            <key>Generate</key>\n            <dict>\n                <key>PluginType</key>\n                <true/>\n            </dict>\n        </dict>\n    </dict>\n```\n\n### Clover Configurator Screenshots\n\n![Skylake Acpi CC Section 1](<../.gitbook/assets/image (51).png>)\n\n![Skylake Acpi CC Section 2](<../.gitbook/assets/image (64).png>)\n\n### Explanation\n\n#### Patches:\n\nThe first thing we'll go over is the _Patches_ section. This section allows us to dynamically rename parts of the DSDT via Clover. Since we're not running a real mac, and macOS is pretty particular with how things are named, we can make non-destructive changes to keep things mac-friendly. We have three entries here:\n\n* _change XHCI to XHC -_ helps avoid a conflict with built-in USB injectors\n* _change XHC1 to XHC_ - helps avoid a conflict with built-in USB injectors\n* _change SAT0 to SATA_ - for potential SATA compatibility\n\n#### Fixes:\n\nIf we look then at the _Fixes_ section, we'll see that we have a few things checked (there are 2 pages, so I included 2 screenshots):\n\n* _FixShutdown_ - this can help with some boards that prefer to restart instead of shutdown. Sometimes it can cause shutdown issues on other boards (ironic, right?), so if you have issues shutting down with this enabled, look at disabling it.\n* The remaining fixes help avoid IRQ conflicts and etc, and are not known to cause issues. They may not be necessary for all hardware, but do not negatively impact anything if applied.\n\n#### Drop Tables:\n\nWe touched in gently on DSDT with our _Patches_ section - and this is a a bit of an extension of that. SSDT is like a sub-section of DSDT. The _Drop Tables_ section allows us to omit certain SSDT tables from loading (as I mentioned before, mac and PC DSDT is different, and macOS can be rather picky). The two that I've added are as follows:\n\n* _DMAR_ - this prevents some issues with Vt-d; which is PCI passthrough for VMs, and not very functional (if at all?) on Hackintoshes.\n* _MATS_ - with High Sierra on up this table is parsed, and can sometimes contain unprintable characters that can lead to a kernel panic.\n\n#### FixHeaders and PluginType:\n\nThe only other things we've done on this page are enable these two checkboxes.\n\n* _FixHeaders_ - this is just a double-up of our _MATS_ table dropping. This checkbox tells Clover to sanitize headers to avoid kernel panics related to unprintable characters.\n* _PluginType_ - this injects some DSDT data to get _X86PlatformPlugin_ to load - giving us a leg-up on native CPU power management. This setting only works on Haswell and newer CPUs though.\n\n## Boot\n\nWe don't need to do _too much_ here, but we'll tweak a few things.\n\n### Raw XML\n\n```markup\n    <key>Boot</key>\n    <dict>\n        <key>Arguments</key>\n        <string>keepsyms=1 dart=0 debug=0x100 -v</string>\n        <key>DefaultVolume</key>\n        <string>LastBootedVolume</string>\n        <key>Timeout</key>\n        <integer>5</integer>\n    </dict>\n```\n\n### Clover Configurator Screenshots\n\n![Skylake Boot CC Section](<../.gitbook/assets/image (69).png>)\n\n### Explanation\n\n#### Arguments:\n\nWe have a few boot args set here:\n\n* `-v` - this enables verbose mode, which shows all the _behind-the-scenes_ text that scrolls by as you're booting instead of the Apple logo and progress bar. It's invaluable to any Hackintosher, as it gives you an inside look at the boot process, and can help you identify issues, problem kexts, etc.\n* `dart=0` - this is just an extra layer of protection against Vt-d issues.\n* `debug=0x100` - this prevents a reboot on a kernel panic. That way you can (hopefully) glean some useful info and follow the breadcrumbs to get past the issues.\n* `keepsyms=1` - this is a companion setting to `debug=0x100` that tells the OS to also print the symbols on a kernel panic. That can give some more helpful insight as to what's causing the panic itself.\n\n#### DefaultBootVolume and Timeout:\n\nThese are the only other settings I've updated in this section.\n\n* _DefaultBootVolume_ - this uses NVRAM to remember which volume was last booted by Clover, and auto-select that at the next boot.\n* _Timeout_ - this is the number of seconds before the _DefaultBootVolume_ auto-boots. You can set this to `-1` to avoid all timeout, or to `0` to skip the GUI entirely. If set to `0`, you can press any keys at boot to get the GUI to show back up in case of issues.\n\n## Boot Graphics\n\nNothing here - just the stock settings. You could adjust this if Clover's scaling needs changes, but I don't mess with it.\n\n## Cpu\n\nAgain, nothing here gets changed in most setups I've worked with.\n\n## Devices\n\nWe'll handle some slick property injection for _WhateverGreen_ here, and do some basic audio setup.\n\n### Raw XML\n\n```markup\n    <key>Devices</key>\n    <dict>\n        <key>Audio</key>\n        <dict>\n            <key>Inject</key>\n            <integer>1</integer>\n            <key>ResetHDA</key>\n            <true/>\n        </dict>\n        <key>Properties</key>\n        <dict>\n            <key>PciRoot(0x0)/Pci(0x2,0x0)</key>\n            <dict>\n                <key>AAPL,ig-platform-id</key>\n                <data>\n                AAASGQ==\n                </data>\n                <key>framebuffer-patch-enable</key>\n                <data>\n                AQAAAA==\n                </data>\n                <key>framebuffer-stolenmem</key>\n                <data>\n                AAAwAQ==\n                </data>\n            </dict>\n        </dict>\n        <key>USB</key>\n        <dict>\n            <key>FixOwnership</key>\n            <true/>\n        </dict>\n    </dict>\n```\n\n### Clover Configurator Screenshots\n\n![Skylake Devices CC Section - iGPU](<../.gitbook/assets/image (72).png>)\n\n![Skylake Devices CC Section - iGPU Connectorless](../.gitbook/assets/image.png)\n\n### Explanation\n\n#### Fake ID:\n\nThis section remains empty for our example setup. In the past, almost-supported iGPUs (like the HD 4400) would get faked to a supported iGPU here, but we'll be using the cleaner Properties section for this.\n\n#### USB:\n\nUnder this section, we ensure that _Inject_ and _FixOwnership_ are selected to avoid issues with hanging at a half-printed line somewhere around the `Enabling Legacy Matching` verbose line. You can also get past that by enabling _XHCI Hand Off_ in BIOS.\n\n#### Audio:\n\nHere we set our audio to inject _Layout 1_ - this may or may not be compatible with your codec, but you can check on [_AppleALC's Supported Codec Page_](https://github.com/acidanthera/AppleALC/wiki/Supported-codecs).\n\nWe also enabled _ResetHDA_ which puts the codec back in a neutral state between OS reboots. This prevents some issues with no audio after booting to another OS and then back.\n\n#### Properties:\n\nThis section is setup via Headkaze's [_Intel Framebuffer Patching Guide_](https://www.insanelymac.com/forum/topic/334899-intel-framebuffer-patching-using-whatevergreen/?tab=comments#comment-2626271) and applies only one actual property to begin, which is the _ig-platform-id_. The way we get the proper value for this is to look at the ig-platform-id we intend to use, then swap the pairs of hex bytes.\n\nIf we think of our ig-plat as `0xAABBCCDD`, our swapped version would look like `0xDDCCBBAA`.\n\nThe two ig-platform-id's we use are as follows:\n\n* `0x19120000` - this is used when the iGPU is used to drive a display\n  * `00001219` when hex-swapped\n  * `AAASGQ==` when the hex-swapped version is converted to base64\n* `0x19120001` - this is used when the iGPU is only used for compute tasks, and doesn't drive a display\n  * `01001219` when hex-swapped\n  * `AQASGQ==` when the hex-swapped version is converted to base64\n\nWe also add 2 more properties, _framebuffer-patch-enable_ and _framebuffer-stolenmem_. The first enables patching via _WhateverGreen.kext,_ and the second sets the min stolen memory to 19MB.\n\n## Disable Drivers\n\nWe have nothing to do here.\n\n## Gui\n\n### Raw XML\n\n```markup\n    <key>GUI</key>\n    <dict>\n        <key>Scan</key>\n        <dict>\n            <key>Entries</key>\n            <true/>\n            <key>Tool</key>\n            <true/>\n        </dict>\n    </dict>\n```\n\n### Clover Configurator Screenshots\n\n![Skylake Gui CC Section](<../.gitbook/assets/image (67).png>)\n\n### Explanation\n\n#### Scan:\n\nThe only settings I've tweaked on this page are the _Scan_ settings. I've selected _Custom_, then checked everything except _Legacy_ and _Kernel_. This just omits some of the unbootable entries in Clover to clean up the menu.\n\n#### Hide Volumes:\n\nI haven't added anything here, but you _can_ hide unwanted volumes here. You can do so by either adding the volume's name, or UUID.\n\nTo hide extra APFS entries, add the following to this list:\n\n* `Preboot`\n* `VM`\n\nTo hide all Recovery partitions, add `Recovery` to the list.\n\nTo get the UUID of a drive to hide, you can use the following terminal command:\n\n```\ndiskutil info diskXsY | grep -i \"Partition UUID\" | rev | cut -d' ' -f 1 | rev\n```\n\nMake sure to replace `diskXsY` with the actual disk number of the volume you'd like to hide.\n\n#### Theme:\n\nIf you want to test out a new theme (and I suggest you look at [_clover-next-black_](https://github.com/al3xtjames/clover-theme-next-black)), you can add the unzipped theme folder to the _/Volumes/EFI/EFI/CLOVER/themes_ directory, then type the name of the folder in the _Theme_ text field to apply it.\n\n## Graphics\n\nIn the past, we'd setup the iGPU here, but since we already did that via Properties in the _Devices_ section, we have nothing to really configure here. **NOTE**: When Clover detects an Intel iGPU, it _automatically_ enables Intel Injection if the Graphics section doesn't exist in the config.plist. To bypass this, you can explicitly disable injection using the raw XML below, or by clicking the \"Inject Intel\" button once to check it, and once to uncheck it in CC.\n\n### Raw XML\n\n```markup\n    <key>Graphics</key>\n    <dict>\n        <key>Inject</key>\n        <false/>\n    </dict>\n```\n\n## Kernel And Kext Patches\n\n### Raw XML\n\n```markup\n    <key>KernelAndKextPatches</key>\n    <dict>\n        <key>KernelPm</key>\n        <true/>\n        <key>KextsToPatch</key>\n        <array>\n            <dict>\n                <key>Comment</key>\n                <string>Port limit increase</string>\n                <key>Disabled</key>\n                <false/>\n                <key>Find</key>\n                <data>\n                g710////EA==\n                </data>\n                <key>InfoPlistPatch</key>\n                <false/>\n                <key>MatchOS</key>\n                <string>10.12.x</string>\n                <key>Name</key>\n                <string>com.apple.driver.usb.AppleUSBXHCI</string>\n                <key>Replace</key>\n                <data>\n                g710////Gw==\n                </data>\n            </dict>\n            <dict>\n                <key>Comment</key>\n                <string>Port limit increase (RehabMan)</string>\n                <key>Disabled</key>\n                <false/>\n                <key>Find</key>\n                <data>\n                g32IDw+DpwQAAA==\n                </data>\n                <key>InfoPlistPatch</key>\n                <false/>\n                <key>MatchOS</key>\n                <string>10.13.x</string>\n                <key>Name</key>\n                <string>com.apple.driver.usb.AppleUSBXHCI</string>\n                <key>Replace</key>\n                <data>\n                g32ID5CQkJCQkA==\n                </data>\n            </dict>\n            <dict>\n                <key>Comment</key>\n                <string>Port limit increase (PMHeart)</string>\n                <key>Disabled</key>\n                <true/>\n                <key>Find</key>\n                <data>\n                g/sPD4MDBQAA\n                </data>\n                <key>InfoPlistPatch</key>\n                <false/>\n                <key>MatchOS</key>\n                <string>10.14.0</string>\n                <key>Name</key>\n                <string>com.apple.driver.usb.AppleUSBXHCI</string>\n                <key>Replace</key>\n                <data>\n                g/sPkJCQkJCQ\n                </data>\n            </dict>\n            <dict>\n                <key>Comment</key>\n                <string>Port limit increase (Ricky)</string>\n                <key>Disabled</key>\n                <false/>\n                <key>Find</key>\n                <data>\n                g/sPD4OPBAAA\n                </data>\n                <key>InfoPlistPatch</key>\n                <false/>\n                <key>MatchOS</key>\n                <string>10.14.x</string>\n                <key>Name</key>\n                <string>com.apple.driver.usb.AppleUSBXHCI</string>\n                <key>Replace</key>\n                <data>\n                g/sPkJCQkJCQ\n                </data>\n            </dict>\n            <dict>\n                <key>Comment</key>\n                <string>External Icons Patch</string>\n                <key>Disabled</key>\n                <false/>\n                <key>Find</key>\n                <data>\n                RXh0ZXJuYWw=\n                </data>\n                <key>InfoPlistPatch</key>\n                <false/>\n                <key>Name</key>\n                <string>AppleAHCIPort</string>\n                <key>Replace</key>\n                <data>\n                SW50ZXJuYWw=\n                </data>\n            </dict>\n        </array>\n    </dict>\n```\n\n### Clover Configurator Screenshots\n\n![Skylake KernelAndKextPatches CC Section](<../.gitbook/assets/image (20) (2).png>)\n\n### Explanation\n\nIn this section, we've enabled a few settings and added some kext patches.\n\n#### Checkboxes:\n\nWe have a couple checkboxes selected here:\n\n* _Apple RTC_ - this ensures that we don't have a BIOS reset on reboot.\n* _KernelPM_ - this setting prevents writing to MSR 0xe2 which can prevent a kernel panic at boot.\n\n#### KextsToPatch:\n\nWe added 4 different kexts to patch here. Three of them are for USB port limit increases, and the last acts as an _orange icons fix_ - when internal drives are hotpluggable, and treated as external drives.\n\nYou'll notice that there are MatchOS values set for each of the USB port limit patches. You can remove any of the entries for OS versions you don't intend to run. They won't do any harm being there, but if you want a clean, minimal plist, there's no sense in having them.\n\n## RtVariables And SMBIOS\n\n### Raw XML\n\n```markup\n    <key>RtVariables</key>\n    <dict>\n        <key>BooterConfig</key>\n        <string>0x28</string>\n        <key>CsrActiveConfig</key>\n        <string>0x3E7</string>\n        <key>MLB</key>\n        <string>C02634902QXGPF7FB</string>\n        <key>ROM</key>\n        <string>UseMacAddr0</string>\n    </dict>\n    <key>SMBIOS</key>\n    <dict>\n        <key>BoardSerialNumber</key>\n        <string>C02634902QXGPF7FB</string>\n        <key>ProductName</key>\n        <string>iMac17,1</string>\n        <key>SerialNumber</key>\n        <string>C02S8DY7GG7L</string>\n        <key>SmUUID</key>\n        <string>DD574F3E-5774-414A-8FF9-5B0089B09480</string>\n    </dict>\n```\n\n### Clover Configurator Screenshots\n\n![Skylake RtVariables CC Section](<../.gitbook/assets/image (41).png>)\n\n![Skylake SMBIOS CC Section](<../.gitbook/assets/image (12).png>)\n\n### Explanation\n\nFor setting up the SMBIOS info, I use acidanthera's [_macserial_](https://github.com/acidanthera/macserial) application. I wrote a [_python script_](https://github.com/corpnewt/GenSMBIOS) that can leverage it as well (and auto-saves to the config.plist when selected). There's plenty of info that's left blank to allow Clover to fill in the blanks; this means that updating Clover will update the info passed, and not require you to also update your config.plist.\n\nFor this Skylake example, I chose the _iMac17,1_ SMBIOS.\n\nTo get the SMBIOS info generated with _macserial_, you can run it with the `-a` argument (which generates serials and board serials for all supported platforms). You can also parse it with `grep` to limit your search to one SMBIOS type.\n\nWith our _iMac17,1_ example, we would run _macserial_ like so via the terminal:\n\n```\nmacserial -a | grep -i iMac17,1\n```\n\nWhich would give us output similar to the following:\n\n```\n      iMac17,1 | C02S8DY7GG7L | C02634902QXGPF7FB\n      iMac17,1 | C02T4WZSGG7L | C02703104GUGPF71M\n      iMac17,1 | C02QQAYPGG7L | C025474014NGPF7FB\n      iMac17,1 | C02SNLZ3GG7L | C02645501CDGPF7AD\n      iMac17,1 | C02QQRY8GG7L | C025474054NGPF71F\n      iMac17,1 | C02QK1ZXGG7L | C02542200GUGPF7JC\n      iMac17,1 | C02SL0YXGG7L | C026436004NGPF7JA\n      iMac17,1 | C02QW0J5GG7L | C02552130QXGPF7JA\n      iMac17,1 | C02RXDZYGG7L | C02626100GUGPF71H\n      iMac17,1 | C02R4MYRGG7L | C02603200GUGPF7JA\n```\n\nThe order is `Product | Serial | Board Serial (MLB)`\n\nThe `iMac17,1` part gets copied to _SMBIOS -> Product Name_.\n\nThe `Serial` part gets copied to _SMBIOS -> Serial Number._\n\nThe `Board Serial` part gets copied to _SMBIOS -> Board Serial Number_ as well as _Rt Variables -> MLB._\n\nWe can create an SmUUID by running `uuidgen` in the terminal (or it's auto-generated via my _GenSMBIOS_ script) - and that gets copied to _SMBIOS -> SmUUID_.\n\nWe set _Rt Variables -> ROM_ to `UseMacAddr0` which just utilizes our onboard Mac address - this should be unique enough to not conflict with any others.\n\n_BooterConfig_ gets set to `0x28`, and _CsrActiveConfig_ is set to `0x3e7` which effectively disables SIP. You can choose a number of other options to enable/disable sections of SIP. Some common ones are as follows:\n\n* `0x0` - SIP completely enabled\n* `0x3` - Allow unsigned kexts and writing to protected fs locations\n* `0x3e7` - SIP completely disabled\n\n## System Parameters\n\n### Raw XML\n\n```markup\n    <key>SystemParameters</key>\n    <dict>\n        <key>InjectKexts</key>\n        <string>Yes</string>\n        <key>InjectSystemID</key>\n        <true/>\n    </dict>\n```\n\n### Clover Configurator Screenshots\n\n![System Parameters CC Section](<../.gitbook/assets/image (65).png>)\n\n### Explanation\n\n#### Inject Kexts:\n\nThis setting has 3 modes:\n\n* `Yes` - this tells Clover to inject kexts from the EFI regardless.\n* `No` - this tells Clover not to inject kexts from the EFI.\n* `Detect` - this has Clover inject kexts only if _FakeSMC.kext_ is not in the kext cache.\n\nWe set it to `Yes` to make sure that all the kexts we added before get injected properly.\n\n#### InjectSystemID\n\nThis setting tells clover to set the SmUUID as the `system-id` at boot - which is important for iMessage and such.\n\n## Saving\n\nAt this point, you can do _File -> Save_ to save the config.plist. If you have issues saving directly to the EFI, you can save it on the Desktop, then just copy it over. I'll leave the [sample config.plist here](../Configs/Skylake/config.plist) too.\n"
  },
  {
    "path": "gathering-kexts.md",
    "content": "# Gathering Kexts\n\n## What Kexts Do I Need?\n\n_VirtualSMC.kext_ is a requirement - it emulates the SMC chip found on real macs, and convinces the OS that _yes, this is a real Mac_. Without it, no Hackintosh :\\(\n\nAll of the following kexts are available on [_this repo_ ](https://1drv.ms/f/s!AiP7m5LaOED-m-J8-MLJGnOgAqnjGw)courtesy of Goldfish64. Each kext is auto-built whenever a new commit is made. If you prefer to build them yourself, you can utilize my [_Lilu And Friends_ ](https://github.com/corpnewt/Lilu-and-Friends)script.\n\n### Ethernet\n\n* [_IntelMausiEthernet.kext_ ](https://github.com/Mieze/IntelMausiEthernet)- this works with most newer Intel LAN chipsets\n* _AppleIntelE1000e.kext_ - this works with older Intel LAN chipsets - but can cause KPs on newer chipsets\n* [_AtherosE2200Ethernet.kext_ ](https://github.com/Mieze/AtherosE2200Ethernet)- this works for most Atheros or Killer networking chipsets\n* [_RealtekRTL8111.kext_](https://github.com/Mieze/RTL8111_driver_for_OS_X) - this works with most gigabit Realtek LAN chipsets\n* [_RealtekRTL8100.kext_ ](https://github.com/Mieze/RealtekRTL8100)- for 10/100 Realtek LAN chipsets\n\n### USB\n\nYou'll want to grab [_USBInjectAll.kext_](https://bitbucket.org/RehabMan/os-x-usb-inject-all/downloads/). If you're on an H370, B360, and H310 Coffee Lake system, or an X79/X99/X299 you'll likely want to make sure to include the _XHCI-unsupported.kext_ as well. As of 10.11, Apple has imposed a 15 port limit on each USB controller. This doesn't sound like a terribly imposing issue until you realize that each USB 3 port counts as 2 - one for USB 2, one for USB 3. On Skylake and newer builds where USB 2 and 3 are handled only on XHCI, and each USB 3 port counts as 2, this limit can be reached quickly. There is a way to route all USB 2 through EHCI though - utilizing RehabMan's [_FakePCIID.kext + FakePCIID\\_XHCIMux.kext_](https://github.com/RehabMan/OS-X-Fake-PCI-ID) \\(it only works on some chipsets though\\) which can take some of the pressure off the XHCI controller.\n\n### Audio\n\nFor Audio - you'll want to grab /u/vit9696's [_AppleALC.kext_](https://github.com/vit9696/AppleALC/releases) and the companion [_Lilu.kext_](https://github.com/vit9696/Lilu/releases) - providing you have [a supported codec](https://github.com/vit9696/AppleALC/wiki/Supported-codecs). _AppleALC_ is capable of patching _AppleHDA.kext_ on the fly to allow for native audio with unsupported codecs. It also has a number of codec verbs built in to help with audio-after-sleep.\n\n### Graphics\n\nFor GPUs - you should grab [_WhateverGreen.kext_](https://github.com/acidanthera/WhateverGreen/releases) and the companion [_Lilu.kext_](https://github.com/vit9696/Lilu/releases) - this has the functionality of _IntelGraphicsFixup_, _NvidiaGraphicsFixup_, _CoreDisplayFixup_, and _Shiki_ all rolled into it. Prior, all of these kexts were separate - but since many of them share resources, they've been combined.\n\n### WiFi and Bluetooth\n\nApple is pretty minimal with their WiFi support, so I'll only cover the two main chipsets I'm familiar with. I've used a BCM94360CD + PCIe adapter, and BCM94352HMB/BCM94352Z in my Hackintoshes. The BCM94360CD worked OOB with no extras as it's a native card. For the BCM94352 flavors, I've been using [_AirportBrcmFixup.kext_ ](https://github.com/acidanthera/AirportBrcmFixup)and the companion [_Lilu.kext_](https://github.com/vit9696/Lilu/releases) for WiFi setup and _BrcmBluetoothInjector.kext_ \\(on 10.13.6+\\) or _BrcmPatchRAM2.kext_ alongside _BrcmFirmwareData.kext_ - all of the Brcm\\* kexts are from RehabMan's [_OS-X-BrcmPatchRAM_](https://github.com/RehabMan/OS-X-BrcmPatchRAM) repo.\n\n### Extras\n\nDepending on the rest of your hardware - you _may_ need more kexts as well, but this guide is designed to be a general foundation, so you'll have to rely on your google-fu for that.\n\n"
  }
]