Overview The XPS 15 9550 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
Repo for this guide: https://github.com/Gymnae/xps-9550-hackbook-pro
This guide targets 10.11 in specific parts: 4k patching, SMBIOS, 5Ghz patch. The majority of the info gathered here is still applicable to 10.12, though.
If you want a dedicated 10.12 guide, please look at the sibling thread by wmchris: http://www.insanelymac.com/forum/topic/319764-guide-dell-xps-15-9550-sierra-10122-quick-installation/
Thanks to the entire Hackintosh community, in particular to these members: - rehabman - tdmsn - reece394 - pikeralpha - goodwin_c - daved314
Changes to the guide
Upgrading to Sierra, ditchting static patching for hot patching.
Copy and pasta this guide from TMX - some things got lost on the way, hope to fix it up soon
Re-patched for new BIOS by Dell, which changed a lot ACPI wise - changes to be found in repo & Sierra guide linked
Two really nice additions: Refined brightness patch AND retain Speed Shift after resume from sleep
Added DSDT patch for retaining brightness upon resume
Slightly more clarity on the SSDTs needed for usbinjectall and nullethernet
Added Hardware calibrated ICC profile for 4k screen[/size]
Added HDMI output fix and deleted iMac17,1 SMBIOS & added github repo
A solid mix of changes before goodwin_c releases his Sierra guide in the coming days / weeks to get this guide back on par with developments:[/size]
Native AppleHDA patching, good riddance VoodooHDA
NVMe patching to get rid off NVMeGeneric
Enable Speed Shift for fancy Skylake power management
Added USBInjectAll.kext for using the internal Webcam
Access to App Store and iMessage via NullEthernet.kext
Status of the system
97% of the system
SD card reader
TB3 and USB 3.1 due to macOS 10.11 limitation - solved in macOS 10.12
The guide !!11elf
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:
- "VT-d" (virtualization for directed i/o) should be disabled if possible (the config.plist includes dart=0 in case you can't do this) - "DEP" (data execution prevention) should be enabled for OS X - "secure boot " should be disabled - "legacy boot" optional - "CSM" (compatibility support module) enabled or disabled (varies) - "boot from USB" or "boot from external" enabled
Note: If you get a "garbled" screen when booting the installer in UEFI mode, enable legacy boot and/or CSM in BIOS (but still boot UEFI). Enabling legacy boot/CSM generally tends to clear that problem.
In my case I left VT-d and Fastboot as they were. Also, update your 9550 to the latest BIOS.
Don't forget to set mode to "AHCI" in the sub-menu "SATA Operation" of "System Configuration". It's mandatory.
(Old) 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 later section of this guide. All you need to do is follow the instruction in this guide. If you do not know about DVMT Pre-allocation, do not worry. You not need it. So in short: Do not use UEFI shell to edit DVMT allocation.
1.2 Prepare your 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.6 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:
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.
For i7 based systems:
For i5 based systems;
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 finalizing your install.
1.3 Kernel Extensions for the installation process You may need extra kexts, apart from the mandatory FakeSMC and VoodooPS2 (as per rehabman's install guide):
For those with fancy NVMe SSD
Do not attempt to use a NVMe SSD without such a kext, pure injection through clover may result in data loss.
Please see this guide by rehabman for a safe and easy method to use your NVMe during and after the install.
If you have troubles getting an NVMe to install, see this:
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.
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.
How to get MacOS booting again after installing Windows and vice vera When installing Windows after having installed Clover, it will install its own bootloader into your EFI partition. To get back to boot macOS, you need to have the USB key from the install handy, so you can add Clover's UEFI boot entries. So don't panic
rehabman promotes the following methods:
Wow, short install section, eh? It seems so, but please check the installation guide by rehabman to grasp the full scope
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.
3.1 DSDT/SSDT Patching
This is not just needed when initially setting up a new system, after updating firmware or BIOS, re-patching might become necessary. So please try to restrain from updating when your system runs stable and you are happy just for the sake of updating.
Update your BIOS to the newest version and install the newest Firmwares available before continuing! You might need a Windows install to do so.
Patching DSDTs and SSDTs will enable the following:
Turn off the NVIDIA GPU for OS X - this is a must - it saves a lot of battery and the discrete GPU won't be utilized by MacOS anyway
Backlight control, important for proper sleep and resume
Fn keys for Backlight control via Fn keys
Audio, see below for the special section pertaining how to enable our codec
Proper sleep and wakeup
rehabman, again, provides all info needed for patching these files. His master guide is a "must be open at all time"
3.1.1 Extract When in the Clover boot menu, press F4 to extract vanilla DSDT and SSDTs from the system and save them in your Clover ACPI folder. These files shall be the base for all the patching following.
3.1.2 Prepare 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. If I haven't mentioned before, read his guide before continuing to avoid mistakes and unnecessary questions. If at this point you do not know what MacIASL is, read rehabman's guide. Did I mention to read his guide?
After you extracted your DSDT and SSDTs, you need to descramble them as guided: Important is to use a refs.txt such as this:
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 descramble using the following command:
iasl -da -dl -fe refs.txt *.aml
Now you have a set of descrambled *.dsl files and you do want to create a backup of them - so your patching attempts don't have to start from scratch
When using patched DSDT and SSDTs it's necessary to add the following to your config.plist in "SSDT"
The preparation work is done, let's patch!
The first patch you should apply to your DSDT and all necessary SSDTs is
rehabman's guide also gives hints at usually good and unproblematic patches. Try it yourself - rather don't patch too much, try to boot and see if you get the desired effect after every patch.
3.2.1 Backlight control Patching guide for backlight control. All you need is the "OS Check Fix (Windows 8)" and a kext, see below.
In addition to this, you need to follow @tdmsn's findings for adjusting your DSDT for getting our dedicated brightness keys to work. One of the following patches need to be added to your DSDT via MaciASL's patch window:
Name (W98S, "Microsoft Windows")
it should look like this:
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")
Name (OSX, "Darwin")
If (_OSI (WN81))
If (LOr (_OSI (OSX), _OSI (WN81)))
Now it's time to make the keys work
If you opted for the ApplePS2SmartTouchPad kext:
Method (BRT6, 2, NotSerialized)
If (LEqual (Arg0, One))
Notify (^^LPCB.PS2K, 0x10)
If (And (Arg0, 0x02))
Notify (^^LPCB.PS2K, 0x20)
I opted for ApplePS2SmartTouchPad.kext - I found it to offer better Palm rejection while also supporting more gestures. Version 4.x works just fine.
Retain brightness value upon resume from sleep and benefit from super fine brightness steps This tip, SSDT and script is courtesy of TMX user dpassmor:
If installed, remove 'IntelBacklight.kext' from S/L/E If patched, remove brightness fixes from DSDT Remove the existing PNLF device from the DSDT Compile and install the SSDT SSDT-PNLF from my repo, add it to the 'PATCHED' folder of your Clover installation - also add it to your named list of SSDTs in config.plist, if you are using a named list Create a 'AppleBacklightInjector' kext with the tool 'backlight_patch' in my repo and install it in S/L/E Rebuild kextcache
3.2.2 Turn off NVIDIA aka gGPU This video plus rehabman's guide helped me. Why would you do this? Our dGPU is attached via NVIDIA's Optimus technology for switching from iGPU to dGPU. Apple uses their own silicon for this and thus NVIDIA's tech is not supported. You cannot use the dGPU for displaying and I'm not sure if its computing power could be used. Therefore turning it off is great for heat and battery life. If you want to harness your dGPU, you have to use Windows. Hint: For gaming this is the best decision anyway.
3.2.3 Rename iGPU
If you read the guide linked in 3.2.2 and saw the video, this should already be done.
Most essential for me to get it working were:
"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.
3.2.4 Patches I use(d)
I did fiddle a lot with my system and these are the patches I always apply. Some maybe not necessary, some even hinder perfect performance, so rather follow rehabman's guide and use this list for orientation
add Rename _DSM methods to XDSM
usb_prw_0x6d_xhc_skl.txt and usb_prw_0x0d_xhc_skl.txt
If I not disable dGPU by hand per video linked, then these patches help:
graphics_Rename-GFX0.txt for all relevant *.dsl files
graphics_Rename-PCI0_GFX0.txt yes, this is a variant of the above, I used both
If these names don't say anything to you, then you have not read the DSDT patching guide by rehabman and you should catch up on your reading.
3.3 SSDT.aml via pikeralpha Deprecated in my opinion, speed shift (HWP, see below) is superior. If you want, you can still check on it's how-to here
3.4. More kexts
Besides the kexts you already had during install, you could install a couple of more into the "Other" folder of Clover:
BrcmFirmwareData - For Bluetooth
BrcmPatchRAM2 - For Blueetooth
VoodooHDA - Works, but not recommended
ACPIBatteryManager - for displaying the battery and its status correctly
FakePCIID - for enabling the kext injector below
FakePCIID_Intel_HD_Graphics - for the Intel iGPU
NullEthernet & SSDT-renameme - for getting an en0 device recognized as built-in (App Store, iMessage etc)
USBInjectAll - for using the Webcam. Some say using this kext is too much and injecting the needed USB ports via a patch is better, your choice
If using this "hack", you also need the file SSDT-UIC-ALL.ssdt (see my repo for an example)
ApplePS2SmartTouchPad - a good Touchpad and Keyboard driver
As you read above, one injector should be installed to S/L/E by now:
3.5 config.plist additions 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
3.5.1 5ghz patch
3.5.2 Handoff patch
<string>10.11.dp1+ BT4LE-Handoff-Hotspot, credit RehabMan based on Dokterdok original</string>
3.5.3 Fix Shutdown The system will reboot when you tell it to shutdown. To fix this, add this to your config.plist in "Fixes"
3.5.4 Fix HDMI output
<string>Fix HDMI output</string>
I'm using MacBookPro 9,1 - you can see my repo for a de-personalized version. You need to create your own serial number, obviously.
If you take the SMBIOS posted there and simply copy and paste them, IT WILL not work
3.6 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.
<string>Boot graphics glitch, 10.10.x/10.11.x (credit lisai9093, cecekpawon)</string>
Additional steps for 4k / UHD screens: Open a Terminal and run these commands:
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
Only after these changes will 4k work. Which you want, if you paid $$$ for 100% AdobeRGB
3.7 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: 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 Make sure you don't have a MLB or SmUUID value set You can take the Board-ID and Bios from the examples in this guide for the system definitions provided Reboot after setting Serial number, Board-ID and Bios Use Clover Configurator's Rt variable generator for getting the MLB, SmUUID value. ROM is usually set correctly automatically. Save the details given by the configurator into SMBIOS fields Reboot and try iCloud, Message etc.
I also found that the aforementioned NullEthernet.kext enables a reliable connection to these services. Please follow the instructions when installing. As explained by rehabman, you also need to place ssdt-rmne.ssdt with a custom MAC address and edit the ssdt into your config.plist
For advanced help, please see this thread
3.8 Audio Since I last wrote about Audio, things have improved a lot. No more Voodoo, now let's patch native via injection, yeah. You need two kexts and the SSDT-ALC298.aml found in my repo
Place CodecCommander and AppleALC into your Clover kexts folder Place the afromentioned ALC298.aml int your ACPI/patched folder - don't forget to adjust your config.plist if you use a named SSDT list Inject Audio ID 13 via config.plist
If you previously committed Audio patches, like injecting Audio ID through DSDT or even renaming the Audio device (I did that, thus finding the device was a bit harder), then you need to adjust the Audio ID in your DSDT as well
3.9 Speed Shift (HWP) Skylake brings a new, fancy method of managing your C- and P-States of your CPU called Speed Shift. This means quicker throttling up and down, can mean higher power or longer battery, depending on your needs. Bare in Mind, this is a pretty new development in the Hackintosh world, so use this as an alternative to generating states via the guide linked in 3.4. If you are interested (I'm happily using it, it keeps the fan on lower settings), there are two ways:
1. Enable HWP in Clover:
Add the following to the CPU section of config.plist
2. Use the dedicated kext by fellow board member goodwin_c: The kext allows for fine granular control and thus adjusting the power profile to your liking. You can use it alongside the Clover key. In fact, you need this kext to retain Speed Shift after sleep.
2.1 Keep Speed Shift after sleep To retain Speed Shift after resume from sleep, you need to follow a few simple steps. Otherwise, Speed Shift won't work after your system slept. Kinda pointless. Thanks to DELL we don't have Speed Shift enabled in our BIOS, so we need to help ourselves.
Create a file called '.wakeup' and fill it with the following:
kextunload -b good.win.HWPEnabler
kextload -b good.win.HWPEnabler
Issue the following commands in terminal from the location of your .wakeup file
chmod +x .wakeup
sudo cp .wakeup /var/root/
brew install sleepwatcher
sudo brew services start sleepwatcher
Remember: It's either Speed Shift or SSDT.aml patching via Pike R. Alpha for Power Management, not both.
PS: Homebrew is great for a lot of things, so no hurt in having it installed
4. Updating 4.1 10.11.6 & Security updates Updating to 10.11.6 worked for me via the App Store (see 3.3.6 for getting the App Store to work). Here's the steps I took:
Make sure that the App Store is working by providing a proper SMBIOS Download the Update and let it install itself, it will reboot when it's done to the Clover boot menu 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
You may need to reinstall .kexts or kext patches depending on your setup
4.2 10.12 - Sierra
Now this is a bigger task.
Apple changed some things, which made it a bit harder to upgrade.
Since you now have a running, custom patched system, after painfully patching your DSDT and SSDTs and avoiding ANY change to the BIOS since the inception of your Hack, you might be delighted to learn that you can ditch all that. Yes. All of your statically patched files.
When I moved to Sierra, I followed @wmchris's guide and ditched static patching in favour of hot patching. I had to, because otherwise strange things happened. This is now the recommended way of doing things for all but for one case: NVMe
Steps to install Sierra:
Download the installer from the AppStore - since you should have Hack capable of using the AppStore, this should not be a problem
Run the installer, you have two options for preparing the install:
a) Either directly create an install medium on a USB stick OR
First let the installer create an install-partition on your SSD, avoid the automatic reboot and then ALSO create a USB stick as install medium by re-running the installer. This way you use the stick to boot, but install from SSD. Much faster.
An exemplary config.plist and clover folders will be available in my repo
Prepare the USB-Stick with Clover as per @wmchris guide by installing Clover and copying his files on your USB stick Delete ALL IO related "IONVMeFamily" kext patches from the config.plist* Add a spoofed NVMeFamily kext for the point release of Sierra you are going to install - this is an approach enabling use to bypass NVMeFamily.kext even when installing* You might find one on the web. If not, you'll soon can find one at my repo. Make a backup of your /EFI/Clover folder from your SSD - you never know what could go wrong Delete all SSDTs and DSDT from /patched - you should only have the hotpatch SSDTs from wmchris in there now Delete the content of the 10.11 kext folder on your SSD and make sure that all kexts you use in "other" or "10.12" are Sierra ready. Ideally, use only the ones Optional: Overwrite the SMBIOS data with your "old" SMBIOS data on the new clover.config on the USB stick Reboot with the Sierra install stick ready and continue installing Sierra either from USB or SSD, depending on your choice. Follow @wmchris guide to regain full graphics acceleration and finalize your SSD Clover folder for booting 10.12. If you followed 2. and 3. your NVMe part is already good to go In deviation from wmchris, I'm still using AppleALC with codeccommand and not VoodooPS2 - but this a question of taste
* if you feel unsure about this, you can also follow wmchris's guide 100% and use NVMeFamily hotpatching during install. It works.
None - This guide is finalized
Ok, one thing: Push my 10.12 install and running setup to my repo
A git of the current kexts, configs & ACPI files I use can be found here. As always, be careful when using ACPI files from other systems.
7. 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
Display #1 2016-11-13 14-13 2.2 F-S XYZLUT+MTX
ICC profile for 4k screen calibrated with Spyder4Pro colorimeter and DisplayCAL. Every panel is different, so don't expect too much precision, but this profile works great for sRGB and AdobeRGB
An icon to brand your Desktop Apply with LiteIcon or manually
Display #1 2016-11-13 14-13 2.2 F-S XYZLUT+MTX.icc.zip