Contribute
Register

[Guide] Dell XPS 15 9560: 4K Touch, 1TB SSD, 32GB RAM, 100% AdobeRGB

Joined
Jun 12, 2012
Messages
351
Motherboard
Dell XPS 15 9560
CPU
i7-7700HQ
Graphics
Intel HD 630, 4K Touch
Mac
MacBook Pro
Mobile Phone
iOS
Dell XPS 15 9560: 4K Touch, 1TB SSD, 32GB RAM, 100% AdobeRGB

Current OS: Sierra 10.12.5​


Image Source: Dell

CPU:
Intel Core i7-7700HQ (2.8-3.8 GHz)​
GPU:
Intel HD Graphics 630 (GTX 1050 disabled)​
RAM:
Crucial 32GB DDR4 2400MHz​
Storage:
1TB NVMe Toshiba XG4 THNSN51T02DUK​
Display:
4K Touch, 100% AdobeRGB​
Audio:
Realtek ALC298 (ALC3266 according to Dell)​
Wireless:
Dell Wireless 1830 (DW1830)*​
Battery:
97Wh (8.2Ah @ 12V)​
Thunderbolt 3:
Intel JHL6240​


Image Source: Dell

The laptop I’ve always wished Apple would make
(…and one which totally consumed my life for the past 3 weeks)
Warning:
This setup is not supported on drives that don’t support 4k sector sizes (e.g. Samsungs), which Mac OS uses natively. Do not blame me for data loss/corruption. This install is also not for the faint of heart, since setup requires booting to command-line UEFI tools.

*Wi-Fi on the stock Killer 1535 does not work, even though Bluetooth does. I installed a DW1830 card on eBay and bought an extra antenna for it (https://www.amazon.com/gp/product/B01MAV4Z2O/?tag=tonymacx86com-20). Proper installation of the antenna is required to get 1.3Gbps Wi-Fi—there is room next to the existing antennas, but you will need to perform a little surgery on the antenna cover to get it to fit. Dell’s Service Manual is necessary for the procedure, which does involve removing the display (http://topics-cdn.dell.com/pdf/xps-15-9560-laptop_Setup Guide_en-us.pdf). The prerequisites are mandatory.

Alternatively, the DW1560 is a 2-antenna card like the Killer (max 5GHz wireless-AC speed is 867Mbps). It will need an extra patch. I think it’s this one: https://www.tonymacx86.com/threads/solved-bcm94352z-card-help.224125/

Highlights:
  • Idle power consumption is ~1.6W
    • Battery life’s >6 hrs with "office use" (web/docs)
    • It might actually be more; it feels more like >8 hrs
  • All SSDT DSLs are commented with descriptions of what's going on
  • All 8 EC temp sensors show up in HWMonitor
    • FakeSMC ACPISensors doesn't work the way it's supposed to, so I had to make the EC’s temperature sensors show up as fans. All that really means is the unit is shown as "RPM" instead of "ºC", but in your head just read it as "ºC"
  • The USB part of the Type-C port is perfect
    • Bear in mind there is a natural delay between unplugging/plugging in the device (it's a hardware thing; the controller's a bit slow). Just wait 2 seconds between plugs and all should be fine. Alternatively, watch RP15 in IORegistryExplorer to see what's going on in the background when something gets unplugged.
  • Thunderbolt works reliably if plugged in pre-boot and left plugged in until shutdown.
  • All kexts are loaded through Clover, and SIP is enabled
    • Recovery HD works fine as far as I can tell
  • Brightness is saved between reboots
  • Lid wake works properly
    • I haven't had the "Disk not ejected properly" error in many sleeps now
  • Power Nap works
  • Combo Jack has full in/out/headset support
  • 32GB RAM, a touchscreen, and 100% AdobeRGB
Things that don't work:
1. Hibernate
a. I’m not even going to try with the amount of trial and error it would take, but if you want to take a stab at it, go for it.
b. Contrary to what I’ve stated in the past, sleepimage is actually not all zeroes. I really don't know what's wrong at this point.​

2. GTX 1050
a. This laptop uses Optimus switching, which doesn’t work on Macs.
b. Support for Optimus would require emulating the GMUX, sort of like how FakeSMC emulates the SMC (not something I can do)​

3. Fingerprint sensor
a. It is, however, seen by the OS as a USB device.
b. Touch ID is handled by a proprietary chip similar to GMUX/SMC called ASOC in ACPI. I think this chip is actually connected over UART on Macs, but I’m not 100% sure.​

4. SD Card
a. This just needs a driver actually finished for it, and then it will work.
b. Vendor/Device ID: 10EC 525A (Realtek RTS525A)
5. Proper Thunderbolt hot plug (USB-C is fine)
a. I'm trying to get this to work. It sometimes works after a long sleep (don't try it: device removal will hard-lock and crash, guaranteed).
b. It's not easy, and I could sure use some help. SSDT-TYPC.dsl has my most successful attempt in it.​

Things that work:
1. Pretty much everything else! It's like a MacBook Pro with a touchscreen.​

Notes:
Of all the things that don't work, 4 & 5 have the highest chance of being made to work. 4 just needs this (https://github.com/serg992313/Dell-XPS-9550) or this (http://www.insanelymac.com/forum/topic/321080-sineteks-driver-for-realtek-rtsx-sdhc-card-readers/) to be finished/to add support for the card reader. It would be super awesome if someone who knows C++ & how to code kexts could help those guys...

Useful keys to know: On boot, pressing F2 goes to BIOS setup, while F12 brings up the boot device menu (which also has an option to enter BIOS setup).

The attached Clover folder includes text documents that briefly describe what each kext and SSDT does to the best of my understanding. It also has some snippets like how to convert hex to base64 by hand and what that mysterious "booterconfig" Clover option does (Tip: it's actually a bitmask).



Image Source: Dell


Before you install:
If you were to boot with the included config.plist, the OS will just hang; that makes sense, the serial number, board serial number, and smUUID are obviously junk. A proper set of numbers for a MacBook Pro (13,3) is required.

Install:
1. Update SSD firmware
a. In Windows, the SSD MUST be updated to the latest firmware. This is EXTREMELY important, otherwise it might disappear from the system on step 4 (4k sector patch) due to a nasty bug that is fixed in the latest firmware.
b. Gotten here, in the "Serial ATA" section: http://www.dell.com/support/home/us/en/04/product-support/product/xps-15-9560-laptop/drivers

2. Update BIOS to v1.3.4
a. These SSDTs will work on BIOS v1.3.3, but 1.3.4 fixes a very serious Kaby Lake Hyperthreading bug.
b. Gotten from the same link as step 1, but from the "BIOS" section.​

3. BIOS Settings (only relevant settings listed):
a. General
i. System Information
1. Check that Video Memory is already 64MB (scroll down to the bottom)​
ii. Advanced Boot Options (all off, UEFI Network Stack might be fine either way)​
b. System Configuration
i. SATA Operation (AHCI)
1. Will break Windows boot​
ii. Drives (all on)
iii. SMART Reporting (on)
iv. USB Configuration (all on)
v. Dell Type-C Dock Configuration (on)
vi. Thunderbolt Adapter Configuration (all on, no security)
vii. USB PowerShare (on)
viii. Audio (all on)
ix. Keyboard Illumination (whatever; this gets overridden by the F10 key)
x. Touchscreen (on)
xi. Miscellaneous Devices (all on except SD Card Read-Only Mode)​
c. Security
i. CPU XD (on)​
d. Secure Boot
i. Secure Boot Enable (disabled)​
e. Intel Software Guard Extensions
i. Intel SGX Enable (Software-Controlled)​
f. Performance
i. (Everything on/enabled)​
g. Power Management
i. USB Wake Support
1. (USB Wake Support = off)
2. (Wake on Dell USB-C Dock = on)​
ii. Wake on WLAN (off)
iii. Block Sleep (off)​
h. Virtualization Support
i. (Everything on)​
i. The rest is personal preference.​

4. Apply 4k sector patch
a. Non-Samsungs only!
i. I can only verify the Toshiba XG4.​
b. In order for native NVMe drivers to work, the drive must be set to use 4k/"Advanced Format" sector sizes instead of legacy 512-byte sectors.
c. wmchris made a nice tutorial for this: https://github.com/wmchris/DellXPS15-9550-OSX/blob/master/4k_sector.md
i. It doesn’t have to be pure Ubuntu; I used Linux Mint.​

5. Enable Intel SpeedShift (setup_var 0x4BC 0x1)
a. To enable Kaby Lake hardware P-states, which Dell has decided it wouldn’t add an option to do in the GUI (http://en.community.dell.com/support-forums/laptop/f/3518/t/20007733), requires a command-line setting. It's a setting just like any other, so resetting BIOS to default settings will clear this bit and it would then need to be reapplied.
b. Rockstar75 made a nice tutorial: http://forum.notebookreview.com/threads/dell-xps-speed-shift.796891/page-14#post-10454342
i. Don’t re-enable Secure Boot, obviously.​

6. Clover USB setup
a. Follow RehabMan’s guide to get OS X onto a USB drive: https://www.tonymacx86.com/threads/guide-booting-the-os-x-installer-on-laptops-with-clover.148093/
i. Start at "Installing Clover to USB" and follow "Option 2."
ii. Stop at "Preparing essential kexts" and skip to "Building the OS X installer."
iii. Follow "createinstallmedia method" and stop at "BaseBinaries clone method."
iv. No other way is supported.​

7. Copy attached Clover folder to the USB drive’s EFI partition
a. "diskutil mount EFI" in Terminal should mount it.
b. Delete the default "Clover" folder and just use the attached one instead; it already contains all kexts, SSDTs, and config.plist options needed. That’s basically the whole point of this.​

8. Copy the Clover installer package to "Install OS X" partition
a. Remember: no Wi-Fi without a card swap!
b. This is the only way to install Clover onto the main system if wireless doesn’t work, and it will only work for the DW1830 with the attached folder.​

9. Reboot and boot from the USB drive
a. Until post-install is finished, adding "-v" to the boot arguments is highly recommended. It’s how I keep track of whether I’m booting from USB or the main drive.​

10. Use Disk Utility to format the drive so that the installer can see it
a. Recommended filesystem: Mac OS Extended, Journaled—NOT case-sensitive.
i. The case-sensitive one tends to cause a lot of problems with programs. It’s not worth it.​
b. The partition style of the overall disk should be GPT (GUID Partition Map).​

11. Install normally and, on reboot, boot from the USB drive
a. From the USB drive’s Clover menu, boot to the SSD.​

Post Install:
1. Install Clover to ESP
a. From RehabMan’s install guide, just this part matters (my edits in bold):
b.
RehabMan said:
Installing to the HDD/SSD after installation is very similar to installing to the USB. Refer back to this section when you get to that stage.

Notes on SSD install:
- you might want "EmuVariableUefi-64.efi", but it would depend on whether native NVRAM works for you (most Skylake hardware has non-functional native NVRAM with OS X/macOS)
- select "Install RC scripts on target volume" and/or "Install all RC scripts on all other boot volumes", but not for USB
- selecting "Install Clover Preference Pane" is optional
- there are also some "Optional RC Scripts" you might want to read about
- if you're installing Clover legacy, check "Install Clover in the ESP"

After making your selections you can continue to "Install" the Clover bootloader to your SSD. Make sure the install location is the Mac partition, so that Clover can properly auto-install to the EFI System Partition (ESP) and put its RC scripts on the Mac partition.

2. Copy Clover folder from USB EFI partition to system ESP
a. "diskutil mount EFI" will mount the USB drive’s EFI partition instead of the system partition. "diskutil mount disk0s1" will always mount the EFI partition for disk 0 (as reported by "diskutil list") on a GPT disk.​

3. Unplug the USB drive and reboot to make sure the SSD is bootable
a. If not, start over from "Install" section, step 11.
b. If the obviously junk serial numbers cause a problem, see step 6 below and then come back here.​

4. Run install.sh from within the AudioFix folder
a. Use Terminal to "cd" into the folder, first!
b. This enables audio to persist after sleeping in the few instances where it stops working. More details are included in the "AudioFix" folder.​


5. Run disablehibernate.sh
a. Hibernation doesn’t work, so it must be disabled. Skip this step if you want to try and get hibernation working.​

6. Serial numbers are obviously bunk
a. Get yer own!​

7. [Optional] Flip Alt and CMD in keyboard preferences
a. System Preferences → Keyboard → Modifier Keys → swap Option and Command keys for the keyboard to make more sense.
i. This does break some of the predefined shortcut mappings in VoodooPS2Controller.
ii. It also messes with muscle memory a bit…​

8. [Optional] Customize shortcuts in System Preferences -> Keyboard
a. VoodooPS2Controller (this is syscl’s version) maps these swipes to keyboard combos:
i. 4-finger up/left/right/down
ii. 3-finger up/left/right/down/tap
iii. 2-finger left/right (I recommend remapping these since they tend to cause extraneous 0s and 9s to be pressed if left unmapped)
9. [Recommended, but optional] Install HWMonitor
a. I managed to get all the Embedded Controller-reported sensors to work… As long as they show up as fans. It required modding ACPISensors, as documented in "Kext Descriptions.txt" in the attached archive. Just imagine that "rpm" is actually "ºC" and not "rpm." I haven’t been able to figure out what temperature B0D4 actually measures, though… :/
10. Reboot for good measure
a. If it worked, remove "-v" from config.plist.
11. Kick back, finish reading this post, and then read included text docs and DSL sources to know what's going on behind the scenes. That's It!​

A Few Important Notes:
1. DO NOT HOT PLUG A THUNDERBOLT DEVICE. Though Thunderbolt hot plug sometimes works after a long sleep, removal of the device WILL crash the system. I want this fixed so badly… USB-C, however, works flawlessly.

2. Note that there is a ~2 second delay between when you unplug one USB-C device and when you can plug in another. I usually open IORegistryExplorer and watch RP15 to know when everything's all clear/if the plug-in messed up. This behavior is normal, even under Windows (it’s because the laptop turns off the type-C controller when not in use, which Apple’s current laptops don’t do—the older ones did, e.g. the Late 2013 MBP).

3. Ignore the "Card" icon in the menubar. You won't want to get rid of it in the event that the SD reader or reliable Thunderbolt hot plug can be made working. Without any experimental driver installed, it can also be used to turn off the SD reader from the OS (with an experimental driver it tends to hard-lock and crash the system—which is the same behavior Thunderbolt unplug causes, by the way).​

Known bugs:

1. Audio sometimes disappears after sleep. Sleep again or plug/unplug something into the headphone jack and it'll come back.
a. This just means ALCPlugFix "missed" its patch on wake. Though, ever since I switched to the new audio layout 28 I haven’t run into it. Might just be good luck. Or maybe it’s fixed… o_O

1. seems to be fixed with https://www.tonymacx86.com/threads/guide-dell-xps-15-9560-4k-touch-1tb-ssd-32gb-ram-100-adobergb.224486/page-9#post-1539760
2. Thunderbolt device removal causes a hard-lock and crash​

Miscellaneous Information:
  • Sleeping the laptop will stop powering USB devices.
    • BUT, if you were to, for example, plug a phone in while the laptop is already asleep, the phone will charge. (Enabling Power Nap will interrupt and disconnect the charge, however.)
  • To save brightness between reboots, "Automatically adjust brightness" in System Preferences → Displays MUST be checked (there is no light sensor, so it won't actually automatically change)
For more in-depth details of what was done, see the included text documents. Also, FakeSMC and ACPISensors (one of the FakeSMC modules) were modded for this, and blindly overwriting them might break things.


Image Source: Dell

Credits and Special Thanks:
  • Dell for making this laptop
  • Apple for Mac OS
  • RehabMan for so many detailed posts, enormous collection of SSDT files, kext development, and being overall incredibly helpful throughout this whole process
  • Pike R. Alpha for his in-depth blog and the 0xE2 patch (among being the source of many other developments and patches)
  • The Clover team for the Clover bootloader
  • netkas, kozlek, and Slice for FakeSMC
  • wmchris for his initial XPS 9550 write-up
  • Jonny4911 for posting his 9560 setup and his version of the AudioFix folder
  • syscl for a lot of work into the XPS 9360 and his build of VoodooPS2Controller
  • darkhandz for his XPS 9550 repo
  • toleda and goodwin_c for audio, ALCPlugFix
  • goodwin_c for HWP
  • dpassmor for the Thunderbolt/USB-C ExpressCard trick
  • vit9696 for Lilu and AppleALC
  • PMHeart for CoreDisplayFixup
  • lvs1974 for NvidiaGraphicsFixup
  • darkvoid for Wi-Fi patches
  • filequit for the 5GHz global channel bonding patch
  • denskop for the "Boot Graphics Glitch" patch
  • netkas, kid2010, and syscl for the Thunderbolt 3 blacklist bypass patch
Those whose work I used or modified are mentioned on the specific patches in config.plist, in the corresponding SSDT, or are linked to in "Kext Descriptions.txt." This build would not have been possible without the efforts of every person listed.

Images taken from the Dell XPS 15 9560 product page: http://www.dell.com/en-us/shop/productdetails/xps-15-9560-laptop
 

Attachments

Last edited:
Joined
Jun 12, 2012
Messages
351
Motherboard
Dell XPS 15 9560
CPU
i7-7700HQ
Graphics
Intel HD 630, 4K Touch
Mac
MacBook Pro
Mobile Phone
iOS
For the sake of being complete, here is information on what all the UEFI drivers, SSDTs, and kexts do:
Clover drivers64UEFI Descriptions.txt said:
List of files that should be in CLOVER/drivers64UEFI:

*************************************************************************

AppleImageCodec-64.efi - FileVault 2

AppleKeyAggregator-64.efi - FileVault 2

AppleUITheme-64.efi - FileVault 2

DataHubDxe-64.efi - To implement DataHub protocol support required by Mac OS.

EmuVariableUefi-64.efi - Enables nvram.plist to be used instead of incompatible native system NVRAM.

FSInject-64.efi - Enable Clover to inject kexts.

FirmwareVolume-64.efi - FileVault 2

HFSPlus.efi - HFS filesystem driver for Clover.

OsxAptioFix2Drv-64.efi - Enables Mac OS booting American Megatrends, Inc. (AMI) UEFI.

OsxFatBinaryDrv-64.efi - Enables FAT filesystem support

SMCHelper-64.efi - FileVault 2

*************************************************************************

For an explanation on what some of them do:
https://clover-wiki.zetam.org/What-is-what#EFI-drivers

For some more explanations:
http://www.insanelymac.com/forum/topic/282787-clover-v2-instructions/?p=1910955

For an explanation of the FileVault 2 drivers:
http://www.insanelymac.com/forum/topic/317290-filevault-2/
SSDT Descriptions.txt said:
DELL BIOS 1.3.3 REQUIRED.

DSLs are the source code of the corresponding AMLs. Look at each specific SSDT for much more specific details as to what they do, as well as where the requisite information to make and use them was found.

*************************************************************************
SYSTEM:
*************************************************************************

SSDT-DMAC - Exposes the DMA Controller to the system.

SSDT-LPC - Correctly identifies the LPC bus to the system.

SSDT-MCHC - Exposes the memory controller to the system.

SSDT-SMBUS - Correctly identifies the SMBus to the system.

*************************************************************************
GRAPHICS:
*************************************************************************

SSDT-ALS0 - Adds a fake Ambient Light Sensor to save backlight info between reboots.

SSDT-BRT6 - Maps the keyboard’s ACPI-managed brightness keys to PS2 codes for VoodooPS2Controller.kext.

SSDT-IGPU - Adds properties to the Integrated Graphics device, which enables HDMI audio as well as properly display.

SSDT-PNLF - Configuration for AppleBacklightInjector.kext.

SSDT-RMDGPU - Power off the discrete GPU on boot, since Mac OS can’t use it.

*************************************************************************
AUDIO:
*************************************************************************

SSDT-HDEF - Add properties to the High Definition Audio Controller for audio and HDMI audio.

*************************************************************************
MISCELLANEOUS:
*************************************************************************

SSDT-Config - Provides configuration information for SSDT-HDEF, SSDT-IGPU, SSDT-PNLF, and SSDT-PTSWAK.

SSDT-DeepIdle - Enable Deep Idle support for power savings.

SSDT-HWP - Informs Mac OS that hardware P-states are supported.

SSDT-FANS - Provides sensor information to HWMonitor via FakeSMC ACPISensors.

SSDT-MEM2 - Defines a fixed memory region that gets used for something (hardly any information on it, but PNP0C01 is “System Board” in Windows so it has to do with motherboard resource allocation). Presumably, it’s related to the Integrated Graphics, as that’s the section in which Apple defines the MEM2 device.

SSDT-PMCR - Complements the PPMC (Platform Power Management Controller) with the seemingly useless PMCR device that exists in Mac DSDTs. It doesn’t hurt anything to have this, and it can really only help, so it’s here.

SSDT-PTSWAK - Powers on the discrete GPU before sleep and powers it off after wake to ensure the system can keep track of it.

SSDT-TYPC - Enables Type-C support. USB-C works completely, Thunderbolt hot-plug should be avoided (it WILL crash the system in its current state).

SSDT-UIAC - Defines the active USB ports for USBInjectAll.kext.

SSDT-UPRW - Ensures that USB and LAN devices won’t instantly awaken the laptop when put to sleep.

SSDT-USBX - Provides current delivery limits for USB devices. WARNING: Setting these too high could damage the USB subsystem.

SSDT-XOSI - Informs the rest of the ACPI Tables to expose as much hardware as it would to the laptop’s primary operating system (Windows 10).

SSDT-YTBT - Fixes a DSDT recursion issue that prevents Type-C hot-plug from working.
Kext Descriptions.txt said:
Description of each kext used.

*************************************************************************
SYSTEM:
*************************************************************************

ACPIBatteryManager.kext - RehabMan’s battery status indicator, provides ACPI battery information to OS X. (https://github.com/RehabMan/OS-X-ACPI-Battery-Driver)

**ACPISensors.kext (FakeSMC) - Modified to work with SSDT-FANS and HWMonitor, otherwise it would add extraneous fan entries. Specifically removed FANx entries, where x >=6, in the Info.plist.

CPUSensors.kext (FakeSMC) - Provides HWMonitor with CPU sensors.

**FakeSMC.kext - Provides a Mac-compatible System Management Controller to the system. Modifications include addition of RMde, MSLD, ALV0, ALRV, and AIL0 keys, set FNum to CA== (8) from AA== (0) to enable “fan sensor spoof” for HWMonitor, changed “compatible” to “smc-huronriver”, and changed REV, RVBF, and RVBF from the default MacPro3,1 value (ATAPAAAD = 01 30 0f 00 00 03) to MacBookPro13,3 value (AjgPAAAH = 02 38 0f 00 00 07).

GPUSensors.kext (FakeSMC) - Provides HWMonitor with GPU sensors.

LPCSensors.kext (FakeSMC) - Provides HWMonitor with LPC sensors.

(All FakeSMC stuff from: http://www.hwsensors.com/releases)

*************************************************************************
GRAPHICS:
*************************************************************************

AppleBacklightInjector.kext - Provides proper panel brightness levels to AppleBacklight for native backlighting, the system platform of which is determined by SSDT-PNLF. (https://www.tonymacx86.com/threads/guide-laptop-backlight-control-using-applebacklightinjector-kext.218222/)

CoreDisplayFixup.kext - Enables the Intel graphics to boot with UHD display. Bypasses the artificial pixel clock limit. (https://github.com/PMheart/CoreDisplayFixup)

NvidiaGraphicsFixup.kext - Enables video out on the HDMI port by causing the board-id check in AppleGraphicsDevicePolicy to fail and default to the “none” ConfigMap. (https://sourceforge.net/projects/nvidiagraphicsfixup/)

FakePCIID_Intel_HD_Graphics.kext (FakePCIID) - Enables Intel HD Graphics 630 with SSDT-IGPU.

*************************************************************************
AUDIO:
*************************************************************************

AppleALC.kext - Enables audio output for Realtek ALC298. (https://github.com/vit9696/AppleALC)

CodecCommander.kext - Fixes noise/distortion on the headphone jack. (https://github.com/RehabMan/EAPD-Codec-Commander)

FakePCIID_Intel_HDMI_Audio.kext (FakePCIID) - Enables Intel HDMI audio on the HDMI port with SSDT-HDEF.

*************************************************************************
NETWORKING:
*************************************************************************

BrcmFirmwareData.kext - The reliable version of the Bluetooth firmware data store, used to provide firmware to Broadcom Bluetooth devices such as the chip in the DW1830 (model BCM20703A1).

BrcmPatchRAM2.kext - The firmware uploader required to apply the firmware from BrcmFirmwareData.kext to the Bluetooth card.

(All Bluetooth stuff from: https://github.com/RehabMan/OS-X-BrcmPatchRAM)

*************************************************************************
MISCELLANEOUS:
*************************************************************************

FakePCIID.kext - Enables the other FakePCIID kexts to actually load.

(All FakePCIID stuff from: https://github.com/RehabMan/OS-X-Fake-PCI-ID)

Lilu.kext - Needed to load NvidiaGraphicsFixup.kext, CoreDisplayFixup.kext, and AppleALC.kext. (https://github.com/vit9696/Lilu)

SATA-100-series-unsupported.kext - Enables proper identification of the Intel 10-series SATA controller. (https://www.tonymacx86.com/threads/guide-booting-the-os-x-installer-on-laptops-with-clover.148093/)

USBInjectAll.kext - Enables the USB ports defined in SSDT-UIAC. (https://github.com/RehabMan/OS-X-USB-Inject-All)

VoodooPS2Controller.kext - Enables Trackpad/Keyboard support, edited by Syscl to better match the regions on the XPS trackpad. (https://github.com/syscl/OS-X-Voodoo-PS2-Controller)

**Denotes manually modded.
Reference for config.plist bitmasks

Here's what darkwake bitmasks:

https://opensource.apple.com/source/xnu/xnu-3789.51.2/iokit/Kernel/IOPMrootDomain.cpp.auto.html said:
// gDarkWakeFlags
enum {
kDarkWakeFlagHIDTickleEarly = 0x01, // hid tickle before gfx suppression
kDarkWakeFlagHIDTickleLate = 0x02, // hid tickle after gfx suppression
kDarkWakeFlagHIDTickleNone = 0x03, // hid tickle is not posted
kDarkWakeFlagHIDTickleMask = 0x03,
kDarkWakeFlagAlarmIsDark = 0x0100,
kDarkWakeFlagGraphicsPowerState1 = 0x0200,
kDarkWakeFlagAudioNotSuppressed = 0x0400
};

Here's what CsrActiveConfig bitmasks:

https://opensource.apple.com/source/xnu/xnu-3789.51.2/bsd/sys/csr.h.auto.html said:
/* Rootless configuration flags */
#define CSR_ALLOW_UNTRUSTED_KEXTS (1 << 0)
#define CSR_ALLOW_UNRESTRICTED_FS (1 << 1)
#define CSR_ALLOW_TASK_FOR_PID (1 << 2)
#define CSR_ALLOW_KERNEL_DEBUGGER (1 << 3)
#define CSR_ALLOW_APPLE_INTERNAL (1 << 4)
#define CSR_ALLOW_DESTRUCTIVE_DTRACE (1 << 5) /* name deprecated */
#define CSR_ALLOW_UNRESTRICTED_DTRACE (1 << 5)
#define CSR_ALLOW_UNRESTRICTED_NVRAM (1 << 6)
#define CSR_ALLOW_DEVICE_CONFIGURATION (1 << 7)
#define CSR_ALLOW_ANY_RECOVERY_OS (1 << 8)

Here's what booterconfig bitmasks:

https://opensource.apple.com/source/xnu/xnu-3789.51.2/pexpert/pexpert/i386/boot.h.auto.html said:
/* Bitfields for boot_args->flags */
#define kBootArgsFlagRebootOnPanic (1 << 0)
#define kBootArgsFlagHiDPI (1 << 1)
#define kBootArgsFlagBlack (1 << 2)
#define kBootArgsFlagCSRActiveConfig (1 << 3)
#define kBootArgsFlagCSRConfigMode (1 << 4)
#define kBootArgsFlagCSRBoot (1 << 5)
#define kBootArgsFlagBlackBg (1 << 6)
#define kBootArgsFlagLoginUI (1 << 7)
#define kBootArgsFlagInstallUI (1 << 8)
 
Last edited:
Joined
Oct 23, 2012
Messages
446
Motherboard
Dell XPS 13 9360 (Clover)
CPU
i7-7500U
Graphics
HD 620, 1920x1080
Tip to save 1W of power: completely disable SD card reader in BIOS.
Until a proper driver able to put the device into sleep state is written, it's better to keep it off.
 
Joined
Jun 12, 2012
Messages
351
Motherboard
Dell XPS 15 9560
CPU
i7-7700HQ
Graphics
Intel HD 630, 4K Touch
Mac
MacBook Pro
Mobile Phone
iOS
Actually, you can turn off the SD card from within the operating system in my build (using the ExpressCard icon). This way, Windows and other operating systems can still use the SD card reader.

I just had a huge discussion about this with someone else: The point of my build is to have as much exposed to the OS as possible such that the experience of running OS X does not hamper the experience of running any other OS on the same machine. As it stands right now, with this build, the CPU package uses 1.6W idle. 0.25W, on average, belongs to the CPU cores. The CPU package DRAM uses the other 1.35W. Disabling the SD card nets you basically nothing if you do everything I stated.

This build is not the same as any other for similar models of laptops, and I would really appreciate it if people wouldn't come to try and make my build like theirs. A fair number of things in other builds simply do not apply to this one, for example:

I use dart=0 intentionally to keep vt-d on for Windows.
I'm not using a patched AppleHDA because this audio system with AppleALC has been virtually flawless, and I think the audio issue is basically gone at this point.

That said, suggestions and improvements are otherwise always welcome.

EDIT: Added some useful references to post #2.

EDIT 2: Updated the PDF with some formatting and typo fixes.
 
Last edited:
Joined
Apr 20, 2017
Messages
6
Motherboard
Dell XPS 15 9560 (Clover)
CPU
i5-7300HQ
Graphics
Intel HD 630, GTX 1050, 4K Touch
Mac
MacBook Pro
Mobile Phone
Android
Great work. Thank you. Doing a 'nuke & pave' now.

I replaced 256gb nvme with Samsung EVO960: thus I had to patch config.plist to make the drive visible for the installer (as discussed in http://www.insanelymac.com/forum/topic/312803-patch-for-using-nvme-under-macos-sierra-is-ready/ )

I replaced wifi card with DW1560, kext & patch, per suggestion in KNNSpeed's GUIDE.
** Will not work until 'rebuild kext cache' is done (e.g. with Kext Utility) as in https://www.tonymacx86.com/threads/some-broadcom-mini-pcie-wifi-devices-unsupported-in-macos-sierra.201746/page-10

Notes:
IF Touch pad stops responding // **per KNNspeed - 'Radio on/off' key works as 'Touchpad on/off'
IF Screen brightness control functioning // recall of last position after rebook OK (non-responsive controls from keys fixed itself after a few reboots)
 
Last edited:
Joined
Jun 12, 2012
Messages
351
Motherboard
Dell XPS 15 9560
CPU
i7-7700HQ
Graphics
Intel HD 630, 4K Touch
Mac
MacBook Pro
Mobile Phone
iOS
Sometimes a reboot solves issues and then they don't come back. Likely cache-related.

I don't have a DW1560 myself, so I'm not too sure. All I've seen is that the linked patch is needed plus FakePCIID_Broadcom_WiFi.kext.

Oh! I totally should mention that on Mac OS the "Radio on/off toggle" actually enables/disables the touchpad instead of the WiFI radio. On Windows it doesn't do this.
 
Last edited:
Joined
Apr 20, 2017
Messages
6
Motherboard
Dell XPS 15 9560 (Clover)
CPU
i5-7300HQ
Graphics
Intel HD 630, GTX 1050, 4K Touch
Mac
MacBook Pro
Mobile Phone
Android
Sometimes a reboot solves issues and then they don't come back. Likely cache-related.

I don't have a DW1560 myself, so I'm not too sure. All I've seen is that the linked patch is needed plus FakePCIID_Broadcom_WiFi.kext.

Oh! I totally should mention that on Mac OS the "Radio on/off toggle" actually enables/disables the touchpad instead of the WiFI radio. On Windows it doesn't do this.
Thank you for confirming re 'RADIO on/off'.
Regarding DW1560, Had to rebuild kext cache! Updated my post above to reflect this step.
 
Joined
Jun 12, 2012
Messages
351
Motherboard
Dell XPS 15 9560
CPU
i7-7700HQ
Graphics
Intel HD 630, 4K Touch
Mac
MacBook Pro
Mobile Phone
iOS
Interesting. I thought putting all the kexts in clover/kexts/other bypassed the cache. :/
 
Joined
Apr 20, 2017
Messages
6
Motherboard
Dell XPS 15 9560 (Clover)
CPU
i5-7300HQ
Graphics
Intel HD 630, GTX 1050, 4K Touch
Mac
MacBook Pro
Mobile Phone
Android
Interesting. I thought putting all the kexts in clover/kexts/other bypassed the cache. :/
All my kext are in CLOVER/kexts/Other - as per your guide, but rebuilding after adding the BCM94352Z / DW1560 patch brought wifi to life.
 

Feartech

Moderator
Joined
Aug 3, 2013
Messages
12,993
Motherboard
Asus N752VX-Clover
CPU
i7-6700HQ / HM170
Graphics
HD530 + GTX 950m 1920 x 1080
Mac
iMac
Mobile Phone
iOS
All my kext are in CLOVER/kexts/Other - as per your guide, but rebuilding after adding the BCM94352Z / DW1560 patch brought wifi to life.
non essential kexts should be installed to S/L/E or S/L
 
Top