OverviewThe XPS 15 9500 is a Skylake Laptop with decent Hardware for running a Hackintosh without too much fiddling.
Details of the system: http://www.dell.com/us/p/xps-15-9550-laptop/pd?oc=dncwx1631h&model_id=xps-15-9550-laptop

All of the info here is based on the brains of
- rehabman
- tdmsn
- reece394
- pikeralpha
and all the others getting Skylake to fly.

The Dell Notebooks works nicely out-of-the-box:

  • WiFi
  • Touchscreen (so cool)
  • Keyboard
Changes to the guide
  1. 10.11.5 update & alternative IOKIT patching
  2. More info on injecting the ID for the Intel IGPU based in i5 or i7 & added minimal install Clover example folder
  3. Fixed my iMessage problems with a proper MLB value and added warning about NVMeGeneric Kernel Panics
  4. Added warning about DMVT memory pre-alloc and noted patch required
  5. Added tdmsn's edits to SMBIOS MacBook9,1 and Nvidia GPU turn off, some snippet for Audio
  6. Initial writeup of guide for 10.11.4
Status of the system

Working
  • 95% of the system
Not working
  • Reboots sometimes hang at the "DELL" screen
  • Still too much fan noise, but this is a BIOS problem
  • SD card reader
  • Internal camera

1. Prerequisites:
Please read and follow the FAQ by rehabman. Also the SSDT/DSDT patching guide. Read carefully, most of my problems came from me not reading thoroughly.
After that we can continue.

1.1. Bios
The BIOS should be set according to rehabman's Clover install guide:


In my case I left VT-d and Fastboot as they were. Also, update your 9550 to the latest BIOS. As of writing this, that is 1.02 - The BIOS of this Dell is still a work in progress and the fans run too often, Windows 10 suffers from BSODs when browsing etc.

So, prepare to update your BIOS during the run time of your hack. This will also mean that you might need to re-extract and patch DSDTs and SSDTs, which is a pain.

Don't forget to set mode to "AHCI" in the sub-menu "SATA Operation" of "System Configuration". It's mandatory.

There's a setting for auto power-on once AC is plugged in. I turned that off, too. I think it makes no sense to wake-up or power on a Laptop just because I plug it in

Warning for 4k / UHD screen owners:
Do not use the EFI shell to to edit the DVMT Pre-allocation for getting your screen to work. This bricked a user's machine already. Instead, make use of a patch explained in a lower section of this guide


1.2 Prepare the USB
Simply follow rehabman's install guide referenced earlier for a USB install. For this you need a real Mac or a Hack with access to the Apple Store for downloading 10.11.4 or newer - >= .4 is necessary for initial Skylake Support. If you download freshly from the Apple Store, you'll get 10.11.5 or newer

During the preparation of the USB install it's best to go for a fail-safe clover configuration. A streamlined, all patches active configuration comes after your system said Hello world and is ready for usage.

In short, please use this plist by rehabman for the initial setup on your USB stick. This plist includes important patches, some of which we'll activate after the initial installation.

In this plist you need to adjust a couple of things:

Into "Devices" section:
Code (Text):
<key>FakeID</key>
        <dict>
            <key>IntelGFX</key>
            <string>0x12345678</string>
        </dict>
This will turn off the acceleration and thus the full driver, but it's enough to install and a safe bet. For the 4k screen to work, you'll also need to make a patch post-install, see below. Only post install! Only after making the patch should continue to enable QE/CI

Into "Graphics" section:
For injecting the Intel IGPU into OS X, you need to give Clover the correct ID. This is still a WIP, two working IDs for i5 and i7 have been identified:

For i7 based systems
Code (Text):
    <key>ig-platform-id</key>
        <string>0x191b0000</string>
For i5 based systems
Code (Text):
    <key>ig-platform-id</key>
        <string>0x19160000</string>
The rest of the config.plist can stay as rehabman pre-configured it. Please don't make too many edits to your config.plist before finalising your install.

Kernel Extensions for Install
You may need extra kexts, apart from the mandatory FakeSMC and VoodooPS2 (as per rehabman's install guide):
  • NVMeGeneric - for seeing and installing on a stock SSD, only use if you have a M2 NVMe SDD!
Please refrain from using other kexts during install. Go with a bare minimum. All you want is to get the system on your Laptop and boot.

A word of warning about NVMeGeneric: This kext produces Kernel panics. They may appear on boot, shutdown, restart, wake-up. Waking up might be delayed. All in all, it's not optimal. The only fixes right now is a new, non-NVM SSD.

2. Installation
Installation is pretty much 100% in alignment with rehabman's guide

Just make sure, again, to follow the installation guide

I split up the drive into two partitions to prepare the second one for Windows later. So I left the second one just untouched by formatting it HFS+ which was later overwritten by the Windows 10 install routines. But that is just if you also want to use the silenced beast that is the GTX 960M for gaming outside of serious Mac business.

3. Post install
After your install went smooth and you installed Clover to your SSD as per guide, it's time for the real work.

It's also a good idea to keep the USB stick handy and not fiddle with it's config. It was good enough for a install, it's good enough to start your machine with and fix the errors your *.dsl patching and config.plist adjustments brought along.

When booting up, press F4 to extra DSDT and SSDTs from the system and have them in your Clover folder

3.1 DSDT/SSDT Patching
You need to patch DSDTs and SSDTs for making the system work as you want it to.
In short, the patches will enable the following:
  1. Turn off the NVIDIA GPU for OS X - this is a must - it saves so much battery
  2. Backlight control, also important for sleep
  3. Fn keys for Backlight control via Fn keys
  4. More to come
Again, rehabman provides all info needed for patching these files. I have no idea about APCI patching or APCI in general, so I did follow him blindly and my system did not burn down. So far.
The master guide is a "must be open at all time"

For all DSDTs and SSDTs please remove or rename _DSM methods via rehabman's patch repo, which is now neatly waiting in your MacIASL if you read the guide by rehabman

After you extracted your DSDT and SSDTs you need to descramble them as guided.
Important is to use a refs.txt such as this:
Code (Text):
External(MDBG, MethodObj, 1)
External(_GPE.MMTB, MethodObj, 0)
External(_SB_.PCI0.LPCB.H_EC.ECWT, MethodObj, 2)
External(_SB_.PCI0.LPCB.H_EC.ECRD, MethodObj, 1)
External(_SB_.PCI0.PEG0.PEGP.SGPO, MethodObj, 2)
External(_SB.PCI0.GFX0.DD02._BCM, MethodObj, 1)
External(_SB.PCI0.SAT0.SDSM, MethodObj, 4)
External(_SB.PCI0.SAT1.SDSM, MethodObj, 4)
External(_GPE.VHOV, MethodObj, 3)
And the following command:
Code (Text):
 iasl -da -dl -fe refs.txt *.aml
Now you have a set of descrambled *.dsl files and you do want to make a backup of them.

When using patched DSDT and SSDTs it's necessary to add the following to your config.plist in "SSDT"
Code (Text):
<key>DropOem</key>
            <true/>
3.1.1 Backlight control
Patching guide for backlight control. All you need is the "Brightness Fix", "OS Check Fix (Windows 8)" and a kext, see below.
In addition to this, you need to follow @tdmsn's findings for adjusting the DSDT:

Find
Code (Text):
Name (W98S, "Microsoft Windows")
so that the method looks like this:

Code (Text):
Name (W98S, "Microsoft Windows")
    Name (NT5S, "Microsoft Windows NT")
    Name (WINM, "Microsoft WindowsME: Millennium Edition")
    Name (WXP, "Windows 2001")
    Name (WLG, "Windows 2006")
    Name (WIN7, "Windows 2009")
    Name (WIN8, "Windows 2012")
    Name (WN81, "Windows 2013")
    Name (LINX, "Linux")
and add
Code (Text):
Name (OSX, "Darwin")
change
Code (Text):
 If (_OSI (WN81))
to
Code (Text):
If (LOr (_OSI (OSX), _OSI (WN81)))
If you opt for the ApplePS2SmartTouchPad driver instead of rehabman's voodoops2 for driving your Touchpad, you should also edit in the last edit to BRT6 by @tdmsn:
Code (Text):

        Method (BRT6, 2, NotSerialized)
        {
            If (LEqual (Arg0, One))
            {
                Notify (^^LPCB.PS2K, 0x10)
            }


            If (And (Arg0, 0x02))
            {
                Notify (^^LPCB.PS2K, 0x20)
            }
        }

3.1.2 Turn off NVIDIA
This video plus rehabman's guide helped me.


I patched most of the SSDTs and the DSDT, but this may not be necessary:

@tdmsn patched mostly the DSDT only and turnf the discrete GPU off as well. His method is in this post

3.1.3 Rename iGPU
There are patches and a guide by rehabman

Most essential for me to get it working were:
  • "Rename _DSM methods to XDSM"
  • "Rename GFX0 to IGPU"
  • "Cleanup/Fix Errors (SSDT)"
But it always depends on your SSDTs. Just be sure to follow the guide, especially making sure you treat every SSDT with the rename.

I would do all these edits, because then your system also sleeps well.

For starters, you can check the DSDT and SSDTs attached in the archive. But you should extract yourself and patch yourself. Who knows what Firmware and Bios is driving your 9550.

3.2. More kexts
Besides the kexts you already had during install, you could install a couple of more into the "Other" folder of Clover:
  • BrcmFirmwareData
  • BrcmPatchRAM2
  • VoodooHDA - this is temporary until someone figures out native AppleHDA patching for this system
  • ACPIBatteryManager - this is also temp, I was too lazy to patch my DSDT to do it without the kext
  • FakePCIID - for enabling the kext injector below
  • FakePCIID_Intel_HD_Graphics - for the Intel iGPU

Into S/L/E you should install, according to rehabman they can't go into Clover's kext folders:
  • IntelBacklight - needs DSDT patching, see above
  • ApplePS2SmartTouchPad
3.3 config.plist additions
To make it simple and for starters, you can use the config.plist from the Archive attached.
Edits to this file will yield the following:
  • Full QE/CI by removing the FakeID from the install
  • Fully activating the internal GPU
  • Adding an SMBIOS definition closer to the real system
  • BT handsoff / 5Ghz
  • Drop SSDT Oem - see section above
Please note: This is not finished, there are patches missing from my plist. For example, I patched Wifi and BT kexts, but there are config.plist patches available.

3.3.1 Full QE/CI, 4k and fix memory allocation
Thanks to 10.11.4+ this is super simple. Just take out the Fake-ID and ensure you kept the InjectedID as in the beginning of the guide. If you employ the Backlight Fix and IntelBacklight.kext - which you should - you'll have a super smooth boot-up experience, too.

Additional steps for 4k / UHD screens:
If you have a 4k screen, you must make two additional changes, courtesy of the guide by "the-darkvoid" for the Dell 9350 and rehabman:

First run this command in a terminal session:
Code (Text):

git clone https://github.com/the-darkvoid/XPS9530-OSX.git
Then run the following command in the extracted files location:
Code (Text):
./XPS9530.sh --patch-iokit
Alternatively, you can patch IOKIT directly yourself in the terminal with these commands:
Code (Text):
# Run the following command in order to patch IOKit in order to disable CheckTimingWithRange
sudo perl -i.bak -pe 's|\xB8\x01\x00\x00\x00\xF6\xC1\x01\x0F\x85|\x33\xC0\x90\x90\x90\x90\x90\x90\x90\xE9|sg' /System/Library/Frameworks/IOKit.framework/Versions/Current/IOKit
sudo codesign -f -s - /System/Library/Frameworks/IOKit.framework/Versions/Current/IOKit
The following patch is currently under evaluation, it might not be needed after all. Try without first

Only after these changes will 4k work. Which you want, if you paid $$$ for 100% AdobeRGB


3.3.3 5ghz patch
Enter this into your config.plist

Code (Text):
<dict>
                <key>Comment</key>
                <string>10.11-BCM94352-5GHz-US-FCC-dv</string>
                <key>Disabled</key>
                <false/>
                <key>Find</key>
                <data>
                QYP8/3QsSA==
                </data>
                <key>Name</key>
                <string>AirPortBrcm4360</string>
                <key>Replace</key>
                <data>
                ZscGVVPrKw==
                </data>
            </dict>
3.3.4 handoff patch
soon

3.3.5 Fix Shutdown
The system will reboot when you tell it to shutdown. To fix this, add this to your config.plist in "Fixes"
Code (Text):
<key>FixShutdown_0004</key>
                <true/>
3.3.6 SMBIOS
Not yet sure about this one. The closest systems by Apple as of know are MacBook9,1 with a low-power sixth generation Core-i CPU line and the iMac17,1 with a Skylake CPU. I opted for an iMac17,1 definition:

Code (Text):
<key>SMBIOS</key>
    <dict>
        <key>BiosReleaseDate</key>
        <string>09/22/2015</string>
        <key>BiosVendor</key>
        <string>Apple Inc.</string>
        <key>BiosVersion</key>
        <string>IM171.88Z.0105.B00.1509221819</string>
        <key>Board-ID</key>
        <string>Mac-DB15BD556843C820</string>
        <key>BoardManufacturer</key>
        <string>Apple Inc.</string>
        <key>BoardSerialNumber</key>
        <string>C02Q****FG7G****</string>
        <key>BoardType</key>
        <integer>10</integer>
        <key>ChassisManufacturer</key>
        <string>Apple Inc.</string>
        <key>ChassisType</key>
        <string>13</string>
        <key>Family</key>
        <string>iMac</string>
        <key>LocationInChassis</key>
        <string>Part Component</string>
        <key>Manufacturer</key>
        <string>Apple Inc.</string>
        <key>Mobile</key>
        <true/>
        <key>ProductName</key>
        <string>iMac17,1</string>
        <key>SerialNumber</key>
        <string>C02Q****GG7L</string>
        <key>SmUUID</key>
        <string>****</string>
        <key>Trust</key>
        <true/>
        <key>Version</key>
        <string>1.0</string>
@tdmsn is using an MacBook9,1 SMBIOS and has no problem with iCloud, App Store etc.:

Code (Text):
<key>SMBIOS</key>
    <dict>
        <key>BiosReleaseDate</key>
        <string>01/18/16</string>
        <key>BiosVendor</key>
        <string>Apple Inc.</string>
        <key>BiosVersion</key>
        <string>MB91.88Z.0154.B00.1603041656</string>
        <key>Board-ID</key>
        <string>Mac-9AE82516C7C6B903</string>
        <key>BoardManufacturer</key>
        <string>Apple Inc.</string>
        <key>BoardType</key>
        <integer>10</integer>
        <key>ChassisAssetTag</key>
        <string>MacBook-Aluminum</string>
        <key>ChassisManufacturer</key>
        <string>Apple Inc.</string>
        <key>ChassisType</key>
        <string>08</string>
        <key>Family</key>
        <string>MacBook Pro</string>
        <key>Manufacturer</key>
        <string>Apple Inc.</string>
        <key>Memory</key>
        <dict>
            <key>Channels</key>
            <integer>2</integer>
            <key>Modules</key>
            <array>
                <dict>
                    <key>Frequency</key>
                    <string>2133</string>
                    <key>Part</key>
                    <string>M471A1G4EB0-CPB</string>
                    <key>Serial</key>
                    <string>1200B13D</string>
                    <key>Size</key>
                    <string>8192</string>
                    <key>Slot</key>
                    <string>2</string>
                    <key>Type</key>
                    <string>DDR4</string>
                    <key>Vendor</key>
                    <string>Samsung</string>
                </dict>
                <dict>
                    <key>Frequency</key>
                    <string>2133</string>
                    <key>Part</key>
                    <string>M471A2T3DB0-CPB</string>
                    <key>Serial</key>
                    <string>1200B1B4</string>
                    <key>Size</key>
                    <string>8192</string>
                    <key>Slot</key>
                    <string>0</string>
                    <key>Type</key>
                    <string>DDR4</string>
                    <key>Vendor</key>
                    <string>Samsung</string>
                </dict>
            </array>
            <key>SlotCount</key>
            <integer>4</integer>
        </dict>
        <key>Mobile</key>
        <true/>
        <key>ProductName</key>
        <string>MacBook9,1</string>
        <key>SerialNumber</key>
        <string>C02K***FD56</string>
        <key>Trust</key>
        <true/>
        <key>Version</key>
        <string>1.0</string>
    </dict>
Obviously, you must find your own Serial No. - If you take the SMBIOS posted here and simply copy and paste them, they WILL not work

iMessage, App Store, iCloud etc.
For proper functionality you need to generate MLB and SMUUID. As usually, the guide from rehabman covers that in depth. I was successful with the following steps:
  1. Generate a proper Serial No not in use yet by others. Either through Clover configurator for supported System and its SMBIOS generator, or by hand
  2. Make sure you don't have a MLB or SmUUID value set
  3. You can take the Board-ID and Bios from the examples in this guide for the system definitions provided
  4. Reboot after setting Serial number, Board-ID and Bios
  5. Use Clover Configurator's Rt variable generator for getting the MLB, SmUUID value. ROM is usually set correctly automatically.
  6. Save the details given by the configurator into SMBIOS fields
  7. Reboot and try iCloud, Message etc.
For advanced help, please see this thread

3.4 SSDT.aml via pikeralpha
A no brainer and needed for native Power Management. Please refer, to once again, a great guide by rehabman:

3.5 Audio
Audio is not fully fixed yet using native AppleHDA patching.
Putting VoodooHDA into S/L/E or Clover kexts will get your Audio working, but some may not like VoodooHDA.

4. Updating

4.1 10.11.5

Updating to 10.11.5 worked for me via the App Store (see 3.3.6 for getting the App Store to work). Here's the steps I took:
  1. Make sure that the App Store is working by providing a proper SMBIOS
  2. Download the Update and let it install itself, it will reboot when it's done to the Clover boot menu
  3. With FHD, you're done at this point, apart from re-patching or re-installing kexts in S/L/E
Additional steps for 4k/UHD
  1. After the initial installation reboot, don't directly boot OS X
  2. In the Clover boot menu, go to "Graphics injector menu" and inject a fake ID for the Intel IGPU, much like during install, for example 0x12345678 - this edit is non-permanent and just valid for the coming start of OS X
  3. Now start OS X and re-patch IOKIT - the .sh script by Rob van Oostenrijk for the 9350 didn't work for me, showing an error about an unknown IOKIT version, so I patched IOKIT directly:
    Code (Text):
    # Run the following command in order to patch IOKit in order to disable CheckTimingWithRange
    sudo perl -i.bak -pe 's|\xB8\x01\x00\x00\x00\xF6\xC1\x01\x0F\x85|\x33\xC0\x90\x90\x90\x90\x90\x90\x90\xE9|sg' /System/Library/Frameworks/IOKit.framework/Versions/Current/IOKit
    sudo codesign -f -s - /System/Library/Frameworks/IOKit.framework/Versions/Current/IOKit
  4. After patching, simply reboot and you're golden - you may need to reinstall .kexts or kext patches depending on your setup

ToDo
I probably forgot important things, so this guide will be updated accordingly.
  • AppleHDA patching instead of Voodoo Audio
  • Hopefully better palm rejection for the Touchpad
  • Replacing NVMeGeneric with a more stable method
Files attached
All the files attached are tuned to i7 systems. You need to adjust the injected ID pertaining your CPU (see above for details) as well as decide on using NVMeGeneric.

Clover.zip: This zip file provided should only be a starting point to discover how a complete system is configured. It's based on my running i7 setup

minimal_for_install_example.zip: This is the actually setup I used when installing the system. It's minimal, without many kexts and config.plist edits

Please take care when using files contained, especially ACPI related ones.
ice21, flynn123, Deniryer and 2 others like this.

Attached Files:

I am so lost on how do to it? I have followed these guides and read them over but after getting the .dsl files I have no idea what to do with them with MaciASL. I have an i5 model with an HDD and SSD if that matters



Post a Comment