Contribute
Register

[Guide] Dell XPS 13 9350 Skylake

Joined
Aug 10, 2016
Messages
37
Motherboard
Dell XPS 13, qHD 9350
CPU
i7-6500u
Graphics
Intel HD 520
Mobile Phone
iOS
I tried to make this guide simple but with a fair amount to make it easy for more people to join in on the hackintosh goodness. If you don’t understand something I encourage you to look up more detailed guides on specific topics in the guide for a better understanding of it or post questions here (it’s also possible I wasn’t clear enough at some points and will try to clarify if someone points out something that wasn’t well worded)

This post should work for both qHD and FHD screen resolution models of the XPS 13 9350. Just make sure you patch your own SSDT/DSDT that you got from your computer as my SSDTs/DSDT may cause a KP for your computer (more on that below)

This guide is for El Capitan 10.11.6 and you’ll want to update to the latest BIOS before continuing (1.4.4 as of this writing).


What works:
samsung 950 pro NVMe SSD (should work for stock SSDs too)
retina display
touchscreen (basically only actions that involve a single tap/dragging files works. can't drag to scroll but that's probably a limitation with OSX)
touchpad gestures*
wifi + bluetooth (I'm using the DW1560 wifi card I ordered on eBay, the stock wifi card sort of works but is a big hassle**)
brightness slider
battery indicator
power management
webcam
sound including microphone+headphones
dual boot with windows

* touchpad sometimes sticks when you try and drag things if you enable tap to touch+drag and you have to tap again to get it to unstick. not a huge deal, I use a bluetooth mouse most of the time anyway
**if you're using the stock wifi card, the bluetooth works but the wifi won't turn off. the workaround found previously in this thread requires a windows installation as dual boot and is as follows: in OSX, go into your wifi preferences and add your network ID/password (wifi isn't working yet so you'll have to add it manually). one that's done, boot into windows (up to the initial lock screen is fine as long as your wifi is on), then restart the computer (restart, don't use shut down) and boot into your OSX installation. about 50%-60% of the time your wifi will be working until you shut it down). In my experience the stock card randomly stopped working as well and you had to click on the wifi and turn it off and on again to get it going again (you can do this without needing to restart).

I highly recommend getting the DW1560 wifi card if you’re not afraid to open up the laptop (it uses pretty sturdy clips so it’s scary opening it for the first time). If you do get one the easiest way to put it in is to attach the antenna’s on the card first and then insert it into the slot on the motherboard


What doesn't work:
brightness keys: I’ve tried everything suggested in the previous XPS 13 thread but had no luck with these so far
facetime+imessage: check this guide to work towards getting these to work as it’s important to find your own unique valid and unused system IDs
USB-C: I don't have any USB-C devices currently so I can't test this out
minor screen garble for the apple logo for the last 2 seconds of startup


Clover:
Here’s a (very) brief overview of the clover file attached to the post so you have a better idea of what we’re editing:
Clover config (config.plist):
This is the general config folder for Clover. There is too much in here to go over and it is worth reading the Clover wikia to understand the things that you can modify here. The config included is already set up for the most part. There will be a couple of things to modify in this guide listed below. I recommend downloading Xcode from the app store (large file as it’s the full iOS/macOS software development app) for viewing the config.plist to make it easier to view and modify with proper formatting.

The Kext folder (clover/Kexts):
Kexts are essentially your drivers for OSX and are required to make certain devices on your computer to work. Kexts place in this folder are loaded to add additional functionality to what OSX offers. Once OSX is installed, these kexts are then placed into the /System/Library/Extensions OSX folder to speed up the boot time. (this will be covered below by using Kext Utility to install them).

Here's a quick breakdown of what each one is for in case you're ever looking for something here:
ACPIBatteryManager provides a battery% indicator
AppleHDA_ALC256 also called a dummy audio kext, this one is set up to work with the XPS 13 sound card. It injects into the AppleHDA kext found in OSX
ApplePS2SmartTouchPad is required for the touchpad
BrcmFirmwareRepo and BrcmPatchRAM2 are required for WiFi
CodecCommander fixes headphone static and sound after wake
FakePCIID_BCM94352Z_as_BCM94360CS2 enables Bluetooth
FakeSMC required for booting hackintosh
HackrNVMeFamily-10_11_6 is a patched NVMe kext required for non-Apple support NVMe SSDs
IntelBacklight provides better range for backlight levels
IONVMeFamily is Apple's native El Capitan NVMe kext. Only required for initial installation
USBInjectAll is for USB functionality

ACPI folder (clover/ACPI):
Files in ACPI/orig are the files generated by my BIOS. To generate your own, delete my files from the provided orig folder and highlight your OSX installation in Clover and press F4 (also press fn+f4 just in case) before you boot into OSX. This is where you’ll get your SSDTs and DSDT files needed for patching to make OSX communicate with your system better and fix most of the problems.

Files in ACPI/patched will have the files you took from your orig folder that you made corrections to.


Installation:
Before you start, go into your BIOS and make sure secure boot is turned off and that your SSD is set to AHCI mode instead of RAID. Also if you're having trouble running any of the applications below, go to system preferences -> security and privacy and make sure all apps are allowed to run.

First you need to obtain a vanilla El Capitan download from the Apple app store, you will need access to an existing OSX installation to do so. Then from the Apple device make USB by following this guide.

Use the CLOVER folder I included (goes in the EFI folder of your OSX installation USB’s EFI partition, you can access this easily from Windows when the USB is plugged in or use EFI mounter on a Mac (Replace the old clover folder if there’s one already). Set aside everything in the Kexts/SLE folder and delete them from the USB. Also delete the files in ACPI/orig and ACPI/patched (these are just there so you know what the folder will look like once you set up your system). Once this is done proceed with the installation. If you are interested in dual booting windows, read the section at the bottom of this guide first.

Once OSX is installed, boot into OSX and use EFI mounter to mount the EFI partition of both your SSD and your installation USB. Delete all the kexts from Kexts/Other folder and select everything from the SLE folder you just set aside and drop them into Kext Utility.

Copy the EFI folder from the USB and transfer it to your SSD so you can boot up your computer without needing the USB. At this point I don’t really use the USB unless I messed something up and can no longer boot into OSX and the Clover folder I refer to for the rest of this guide will be the one on your SSD. Also, in your BIOS check your boot order and make sure your primary boot method is targeted to EFI/CLOVER/CLOVERX64.efi as you’ll be able to boot both windows and OSX from Clover.

NOTE: if you have the stock wifi card I would remove the two Bcrm kexts from the Kexts/Other folder before installing to make it load faster. bcrmpatchram2 hangs for about 30 seconds on a cold boot with the DW1820A, but it loads properly whenever you boot from a restart however. This is another reason why I recommend getting the DW1560 card though to avoid the hassle


SSDTs and DSDT patching:
I've included my SSDTs/DSDT files but I would recommend patching your own, especially if you have a different model than my XPS 13. However, you'll want to keep the SSDT-19 from my clover folder to clear the headphone static with codeccommander.kext. follow Rehabman's patching guide very closely on how to properly patch your files. Make sure you disassemble all your SSDTs and DSDT at the same time using refs.txt in his guide. The list of patches below come from his patch repo found in his guide.

I patched all SSDTs (except for those with an "x" in their file name) with GFX0 -> IGPU
SSDT-1 also requires [gfx0] cleanup/fix errors patch

I added the following DSDT patches so far, I encourage you to read the descriptions provided with each one when applying them to have a basic idea of what these do:
rename _DMS to _XDMS (do this first)
GFX0 -> IGPU
RTC fix
OS check fix WIN8
mutex non-zero sync levels
brightness fix
HDAS -> HDEF (no patch for this on Rehabman's repo, use find+replace to find all instances of HDAS and replace them with HDEF)
layout 3 (can only be applied after HDAS has been replaced to HDEF)
IRQ fix
fix_wak2

these are the base patches I used on my DSDT and work with that file whenever I want to test out other patches.

once SSDTs and DSDT are patched, add them to the ACPI/patched in the clover folder. At this point, make sure you go into your Clover config.plist and set SSDT dropoem to True (or YES if using Xcode). also include SSDT-19. Don't include SSDTs with an x at the end (7 to 13).

Once all that is done, restart your laptop and highlight your OSX installation. Press Space and boot without caches. Once OSX is fully booted, open the OSX Terminal app and type sudo touch /System/Library/Extensions && sudo kextcache -u /

After restart the computer and sound should now be working properly.


Native power management:
Follow Rehabman's guide here using the link for Piker-Alpha’s beta ssdtPRGen and add the generated SSDT to your patched ACPI folder (if you rename it make sure it matches the name in the sortedorder table in config). iMac17,1 seems to be the best SMBIOS choice for this (already set to it in my clover folder).


Extras:
A few settings that may be useful to anyone reading that I preferred to make it behave more like windows:
in system settings->trackpad you can enable tap to touch and drag so you don't have to click mouse
in system settings ->keyboard you can change modifier keys to switch control and command keys so that they work similarly to ctrl and alt windows keys
I also installed paragon 14 to enable NFTS writing on windows partition. I did this so I was able to set my iTunes folder on my windows partition as my OSX folder as well so I don't need to take up twice the space on my SSD if I want access to my music on either OS. Paragon also has a Windows version that allows you to see your OSX partition from Windows
in my config.plist, boot->defaultvolume is set to EFI with a 3 second timeout so it'll automatically boot windows after 3 seconds if nothing has been selected by then (assuming you installed windows like I did). you can change this to match the name of the partition you want as default


for dual booting: download windows using the windows USB tool (download only, don't make a bootable USB from it). Once you have an ISO for windows, use Rufus USB creation tool to make a GTP partition scheme (important) windows boot USB. Install OSX first and during installation use the disk utility to a GTP partition drive with two partitions, both formatted in macOS extended format. the first partition should be your windows installation and the 2nd one should be your mac installation (windows seems pretty picky on order of drives when making an installation). Once OSX is installed, I recommend installing windows now to make sure you did it properly before you full set up your OSX installation. During installation you'll have to delete the mac formatted partition then create a new partition from the unallocated space. you're now free to install windows normally on that partition. you'll have to point your BIOS too boot up from clover once you're done.




I hope this helps everyone, most of this information is a summary from all the great help found throughout this thread and Rehabman's awesome guides. This is my first hackintosh as I wanted to play around with Xcode and learn to use it and I'm pretty happy with the results so far. I'll keep editing this once I or someone else has more to add. Currently, El Capitan is much more stable and complete than Sierra so I will be focusing on this version for a while.
 

Attachments

Last edited:
Joined
May 4, 2014
Messages
68
Mac
Classic Mac
Mobile Phone
Is there any reason you don't inject all the KEXTs? I'd love to keep my macOS partition stock if I can.
Also, any pointers for audio? I cannot get it working for the life of me :(
I see you have Clover AppleHDA KextsToPatch, the patched SSDT, CodecCommander (is this stock or modified?) and of course AppleHDA_ALC256.kext, I'd really appreciate any insight you could shed!

I am on Sierra right now so if there's anything that won't work let me know! I've attached my CLOVER directory :)

Thank you, your posts have been invaluable!
 

Attachments

Joined
Aug 10, 2016
Messages
37
Motherboard
Dell XPS 13, qHD 9350
CPU
i7-6500u
Graphics
Intel HD 520
Mobile Phone
iOS
It just boots quicker when they're installed to SLE vs injecting from clover kext folder and is generally the recommended way to setting it up. installing to SLE generally isn't a problem unless you replaced a stock OS KEXT that is subsequently updated in a future apple update but most solutions avoid that scenario that like using a dummy HDA kext (ALC256 in this case) instead of directly modifying appleHDA.kext

I only tested Sierra once and wasn't up dealing with the current set of issues it had so went back to El Cap until a new version of sierra comes out, so I'm not sure how well sound will work as I didn't bother trying. That being said, my guess is it should work with the method in this guide if you add the extra appleHDA kextstopatch from here in addition to the appleHDA patches in my config folder which seems like you've already included from a quick look at your config.plist. codeccommander was obtained from rehabman's repo and it is not present in macOS's stock kexts (none of the kexts in this post replace any stock kexts). When you run sudo touch /System/Library/Extensions && sudo kextcache -u / after booting without caches, check if all your kexts are in the list of kexts you get. if one of non-stock OS kexts isn't showing up it's most likely a problem with that one. ALC256 sometimes doesn't show up properly for some reason depending on the source I download it from, if it isn't loading try using the one in the clover folder in this thread. That one always works for me.
 
Joined
Jul 31, 2016
Messages
42
Motherboard
Dell XPS 13 9350
CPU
Intel Core i5 6200U
Graphics
Intel HD 520
Mac
MacBook Pro
Mobile Phone
Android, iOS
Joined
Jun 28, 2013
Messages
47
Mac
Classic Mac
Mobile Phone
Thank you for an amazing guide. I followed it and have an awesome hack! My USB-C 'seems' to work, but i'm not 100% sure because i have a USD->Ethernet adapter that doesn't work. USB2.0 device with an adapter to USB-C does work.

I know that audio is probably ongoing issue with this laptop because there is a thread with nearly 1000 posts ~110 pages long about this laptop and audio is mentioned a few times.

I'm having some issues too where if i plug in headphones, somewhere between 0:20 - 1:20 it either flickers in and out, or become loud, solid, static. I'm investigating.

Edit: It's SSDT-19 related. Removing SSDT-19 brings back that static you mentioned, but it doesn't drop out.
 
Last edited:
Joined
Jul 31, 2016
Messages
42
Motherboard
Dell XPS 13 9350
CPU
Intel Core i5 6200U
Graphics
Intel HD 520
Mac
MacBook Pro
Mobile Phone
Android, iOS
I'm having some issues too where if i plug in headphones, somewhere between 0:20 - 1:20 it either flickers in and out, or become loud, solid, static. I'm investigating.
check your CPU usage. if it is maintaining high frequency (the moment you use audio), you better just use voodoohda until you find a working patched HDA. otherwise, you'll fry your shiny new laptop. it was an issue for me, and maybe a couple other guys on the thread.

the one that finally worked for me is the from insanelydeepak. see the link earlier. from what i can observe, he uses different pin configurations, different resources, different layout. i also tried using his data with vbo's (or is its rehabmans') patch_hda script, it works (tested with sierra).
 
Joined
Jul 31, 2016
Messages
42
Motherboard
Dell XPS 13 9350
CPU
Intel Core i5 6200U
Graphics
Intel HD 520
Mac
MacBook Pro
Mobile Phone
Android, iOS
Edit: It's SSDT-19 related. Removing SSDT-19 brings back that static you mentioned, but it doesn't drop out.
SSDT-19 is probably the codeccomander.
 

RehabMan

Moderator
Joined
May 3, 2012
Messages
192,055
Motherboard
Intel DH67BL
CPU
Core i7-2600K
Graphics
Intel HD 3000
Mac
MacBook Air
Mobile Phone
iOS
SSDT-19 is probably the codeccomander.
It is best to give add-on SSDTs real names.
For example, in this case SSDT-19.aml would be better named SSDT-ALC256.aml.

SSDTs with numbers should be reserved for patched SSDTs that correspond to those that originally came from ACPI/origin.

Don't forget to update SortedOrder.
 
Joined
Jun 28, 2013
Messages
47
Mac
Classic Mac
Mobile Phone
This guy has a repository of HDA patches. And has one specifically patched for the XPS 9350:
https://github.com/insanelydeepak/cloverHDA-for-Mac-OS-Sierra-10.12
I found the kext you mentioned. It's HERE and i followed everything the best i think anyone could. I redumped my DSDT/SSDT tables and applied the IGPU fix, then on the DSDT applied the XDSM fix. So on and so forth.

When it came time for audio, I used layout 12. the readme says

Layout_ID/Audio ID description :
. Layout_ID 11 = 3 ports supported (Pink, Green, Blue) (Note : without auto-switch , you have to manually select between output/input device's)
. Layout_ID 12 = 5/6 ports supported (Grey, Black, Laranja, Pink, Green, Blue)
. Layout_ID 13 = 5/6 ports supported (Grey, Black, Laranja, Pink, Green, Blue, CodecAddress: 2)

. Default is Layout_ID: 13.

... I don't have audio, and then there is this:

Method (_DSM, 4, NotSerialized)
{
Store (Package (0x0c)
{
"built-in",
Buffer (One)
{
0x00
},
"layout-id",
Buffer (0x04)
{
0x0D, 0x00, 0x00, 0x00 //change Your Layout_Id Here
},
"PinConfigurations",
Buffer (0x00)
{
0x00
}
}, Local0)
DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
Return (Local0)
}

... I don't know where to put this. Also, the comment "change Your Layout_Id Here" is helpful if i knew exactly what to put do i use 0x0C instead of 0x0D? pretty sure cause if default is 13, then 0x0D is 13, but where does this code go again?
 
Top