All Projects → bavariancake → Xps9570 Macos

bavariancake / Xps9570 Macos

macOS Mojave/Catalina on Dell XPS 9570.

Projects that are alternatives of or similar to Xps9570 Macos

EFI-ASUS-B250M
ASUS B250M EFI,including Clover and OpenCore, supports HighSierra / Mojave / Catalina / BigSur ...
Stars: ✭ 49 (-81.01%)
Mutual labels:  hackintosh
hackintosh-opencore-z390-aorus-pro-wifi
Personal Hackintosh (OpenCore) configuration for Gigabyte Z390 Aorus Pro WiFi, Intel Core i7-9700K & Intel UHD Graphics 630
Stars: ✭ 20 (-92.25%)
Mutual labels:  hackintosh
hackintosh ASUS ROG Z390
hackintosh-ASUS-ROG-STRIX-Z390-E-GAMING
Stars: ✭ 41 (-84.11%)
Mutual labels:  hackintosh
Asus-ROG-Strix-G15-G512LV-OpenCore
OpenCore EFI for Asus ROG Strix G512LI/LV/LW, G712LI/LV/LW. Compatible with Monterey & Big Sur.
Stars: ✭ 17 (-93.41%)
Mutual labels:  hackintosh
asus-n550jk-hackintosh
A collection of all resources needed to run macOS on an Asus N550JK
Stars: ✭ 14 (-94.57%)
Mutual labels:  hackintosh
GA-Z490M-Gaming-X
MacOS Monterey, Big Sur on GA Z490M Gaming X
Stars: ✭ 35 (-86.43%)
Mutual labels:  hackintosh
HP-ProDesk-600G2-DM-Hackintosh
HP ProDesk 600 G2 DM Hackintosh EFI(OpenCore)
Stars: ✭ 21 (-91.86%)
Mutual labels:  hackintosh
tongfang-macos
🍏Bring the latest macOS for 💻Tongfang laptops!
Stars: ✭ 408 (+58.14%)
Mutual labels:  hackintosh
H81M-DS2-Hackintosh
Thís repository contain files needed for GA-H81M-DS2 Hackintosh. Only OpenCore supported
Stars: ✭ 12 (-95.35%)
Mutual labels:  hackintosh
Opencore-Gigabyte-Z390M-Gaming-Hackintosh
Opencore-Gigabyte-Z390M-Gaming-Hackintosh
Stars: ✭ 27 (-89.53%)
Mutual labels:  hackintosh
KVM-Opencore
OpenCore disk image for running macOS VMs on Proxmox/QEMU
Stars: ✭ 529 (+105.04%)
Mutual labels:  hackintosh
AzulPatcher4600
Lilu plugin which applies common patches for the mobile HD4600 iGPU
Stars: ✭ 17 (-93.41%)
Mutual labels:  hackintosh
X99-Deluxe-II
Files for Asus X99 Deluxe II hackintosh.
Stars: ✭ 17 (-93.41%)
Mutual labels:  hackintosh
rba-hackintosh
Razer Blade Advanced 15" 2018 Hackintosh OpenCore
Stars: ✭ 22 (-91.47%)
Mutual labels:  hackintosh
AsusSMC
A VirtualSMC plugin provides native macOS support for ALS, keyboard backlight and Fn keys on Asus laptops
Stars: ✭ 151 (-41.47%)
Mutual labels:  hackintosh
EFI-ASRock-X570-ITX-TB3
OpenCore EFI for build using ASRock X570 ITX board, Ryzen 9 5900X
Stars: ✭ 43 (-83.33%)
Mutual labels:  hackintosh
Dell-Exx50-Hackintosh
Fully working Hackintosh for all Latitude 2015 models
Stars: ✭ 25 (-90.31%)
Mutual labels:  hackintosh
Matebookxpro Hackintosh
Hackintosh Solution for the Huawei Matebook X Pro
Stars: ✭ 257 (-0.39%)
Mutual labels:  hackintosh
opencore-7080-mff
OpenCore on Dell OptiPlex 7080 MFF
Stars: ✭ 17 (-93.41%)
Mutual labels:  hackintosh
Dell-E7250-Hackintosh
Fully working Hackintosh on E7250
Stars: ✭ 51 (-80.23%)
Mutual labels:  hackintosh

#+STARTUP: indent

  • Overview Run macOS Mojave (10.14) or Catalina (10.15) on a Dell XPS 9570.

Most pieces are fully supported, and this setup can be used as your main machine. A few pieces are missing (and some will probably never be supported); see Known Problems/Caveats in the Hardware section.

The EFI folder can be used to boot into a USB installer, or for regular booting. ** Tested hardware configuration

  • Dell XPS 9570
    • CPU: Intel i9-8950HK
    • Memory: 32GB 2x SK Hynix HMA82GS6CJR8N-VK
    • Display: 4k Sharp
    • SSD: Toshiba 2TB KXG50PNV2T04
    • Trackpad: Synaptics SYNA2393
    • Touchscreen: Wacom WCOM488F
    • Sound: Realtek ALC3266 (similar to ALC298)
    • Goodix fingerprint reader
    • Dell 6GTPY battery (11.4V, 8083mAh, 97Wh stated capacity, reports as 7488mAh)
  • Software environment
    • Dual-booting Windows 10 ** Tested software configurations
  • macOS Mojave: 10.14.0 - 10.14.6 (builds 18G84, 18G87, 18G95, 18G103, 18G1012)
  • macOS Catalina: 10.15 - 10.15.3
  • BIOS: 1.5.0 - 1.15.0
  • Hardware ** Graphics Integrated Intel UHD Graphics 630 support is handled by [[https://github.com/acidanthera/WhateverGreen][WhateverGreen]], and configured in the =PciRoot(0x0)/Pci(0x2,0x0)= section of config.plist. The Nvidia GPU is not supported due to hardware differences and lack of driver support in macOS. It is disabled to save power.

Choose a DPCD maximum link rate for your display, where 4K=0x14 (default) or 1080p=0x0a.

To determine if Intel GPU (IGPU) acceleration is working, check: =About This Mac -> Intel UHD Graphics 630 1536 MB=. A value less than 1536MB indicates a problem (e.g. 7MB or 31MB are common).

The default BIOS DVMT pre-alloc value of 64MB is sufficient and does not need to be changed.

The IGPU supports [[https://www.intel.com/content/www/us/en/support/articles/000025672/graphics-drivers.html][up to 3 displays]] simultaneously, including the internal LCD. The type C port supports up to two DisplayPort connections with an adapter. Even though you could connect three external displays (HDMI + 2 DisplayPort via type C), one of these displays would remain powered off. This is a limitation of IGPU, which has 3 pipelines for driving displays, one per display. *** Enabling acceleration

  • [[file:EFI/CLOVER/config.plist][config.plist]]
    • =Graphics/Inject/Intel=no=
    • =Devices/Properties/PciRoot(0x0)/Pci(0x2,0x0)=
      • =AAPL,ig-platform-id = <00009b3e>=
      • =device-id =<9b3e0000>=
      • =dpcd-max-link-rate =<14000000>= (or =<0a000000>= for 1080p)
      • =enable-dpcd-max-link-rate-fix =<01000000>=
      • =framebuffer-patch-enable =<01000000>=
  • Install [[https://github.com/acidanthera/Lilu][Lilu]] [[file:EFI/CLOVER/kexts/Other/Lilu.kext][kext]]
  • Install [[https://github.com/acidanthera/WhateverGreen][WhateverGreen]] [[file:EFI/CLOVER/kexts/Other/WhateverGreen.kext][kext]] *** Enabling backlight control via slider in Sys. Prefs. -> Displays
  • [[file:EFI/CLOVER/config.plist][config.plist]]
    • =Devices/Properties/PciRoot(0x0)/Pci(0x2,0x0)=
      • =enable-cfl-backlight-fix = <01000000>=
  • Include [[file:EFI/CLOVER/ACPI/patched/SSDT-PNLFCFL.aml][SSDT-PNLFCFL.aml]] ([[file:EFI/CLOVER/ACPI/patched/SSDT-PNLFCFL.dsl][SSDT-PNLFCFL.dsl]]) (sourced from [[https://github.com/RehabMan/OS-X-Clover-Laptop-Config][OS-X-Clover-Laptop-Config]]'s [[https://github.com/RehabMan/OS-X-Clover-Laptop-Config/blob/master/hotpatch/SSDT-PNLFCFL.dsl][SSDT-PNLFCFL.dsl]]) *** Enabling external display support Without any options passed to WhateverGreen, a KP will occur whenever an HDMI device is attached. @0xFireWolf provided HDMI output support (HDMI 1.4 and 2.0) by adding LSPCON support to WhateverGreen.

Up to two [email protected] DisplayPort connections are supported via type C with adapter, and HDMI can also be connected. However, the internal display will turn off if three external displays are connected (see Intel GPU limitation above).

Connector 0 is the internal LCD, connectors 1 and 2 are DisplayPort via type C, and connector 3 is HDMI. The boot argument =agdpmod=vit9696= is required to disable board checks, since the =MacBookPro15,1= doesn't have an HDMI output, and would be ignored by the OS by default. **** Enabling HDMI 1.4/2.0 and DisplayPort via type C connector

  • [[file:EFI/CLOVER/config.plist][config.plist]]
    • Boot/Arguments
      • =agdpmod=vit9696=
    • Devices/Properties/PciRoot(0x0)/Pci(0x2,0x0)
      • =framebuffer-portcount= = =<04000000>=
      • =framebuffer-con1-enable= = =<01000000>=
      • =framebuffer-con1-alldata= = =<01050900 00040000 87010000>=
      • =framebuffer-con2-enable= = =<01000000>=
      • =framebuffer-con2-alldata= = =<02060900 00040000 87010000>=
      • =framebuffer-con3-enable= = =<01000000>=
      • =framebuffer-con3-alldata= = =<03040a00 00080000 87010000>=
      • =enable-hdmi20= = =<01000000>=
      • =enable-lspcon-support= = =<01000000>=
      • =framebuffer-con3-has-lspcon= = =<01000000>=
      • =framebuffer-con3-preferred-lspcon-mode= = =<01000000>= *** Known problems/caveats
  • IGPU graphics can be slightly choppy on a scaled external 4k monitor ** PS/2 Keyboard The internal keyboard is a PS/2 device, but macOS does not support PS/2. This can be implemented with VoodooPS2Controller. *** Installation
  • Include [[https://github.com/RehabMan/OS-X-Voodoo-PS2-Controller][VoodooPS2Controller]] [[file:EFI/CLOVER/kexts/Other/VoodooPS2Controller.kext][kext]]
  • Enabling brightness keys
    • Include [[file:EFI/CLOVER/ACPI/patched/SSDT-BRT6.aml][SSDT-BRT6.aml]] ([[file:EFI/CLOVER/ACPI/patched/SSDT-BRT6.dsl][SSDT-BRT6.dsl]])
    • [[file:EFI/CLOVER/config.plist][config.plist]] changes to rename BRT6 to BRTX in DSDT so we can replace it with our function
      • =ACPI/DSDT/Patches/Item n=
        • =Key=Find, Type=Data, Value=<14204252 543602>=
        • =Key=Replace, Type=Data, Value=<14204252 545802>=
  • Include [[file:EFI/CLOVER/ACPI/patched/SSDT-PS2-Keymap.aml][SSDT-PS2-Keymap.aml]] ([[file:EFI/CLOVER/ACPI/patched/SSDT-PS2-Keymap.dsl][SSDT-PS2-Keymap.dsl]]) to remap keys (optional)
    • See list of [[https://wiki.osdev.org/PS/2_Keyboard][PS/2 scan codes (scan code set 1)]] for codes generated by keyboard, and [[file:/System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox.framework/Versions/A/Headers/Events.h][ADB key codes]] for codes recognized by macOS. *** Debugging key codes
  • Install debug version of VoodooPS2Controller
  • Log key codes captured #+BEGIN_SRC sh log stream | sed -n 's/.*(ApplePS2Keyboard: sending key)/\1/p' #+END_SRC *** Known problems/caveats
  • Can cause reboot on startup (intermittent)
  • Keyboard options like modifier key settings cause an erratic/disabled keyboard For key remapping, see SSDT-PS2-Keymap.dsl above. Key repeat speed and delay are ok to change.
  • Can't wake up from sleep with internal keyboard
  • Enables poor quality trackpad by default ** Wi-Fi/Bluetooth Based on [[https://www.tonymacx86.com/threads/broadcom-wifi-bluetooth-guide.242423/][Broadcom Wi-Fi Bluetooth Guide]], and see threads [[https://www.tonymacx86.com/threads/wip-guide-hp-envy-x360-13-y013cl-i7-7500u-kaby-lake.213327/page-17][one]] and [[https://www.tonymacx86.com/threads/solved-handoff-continuity-auto-unlock-not-working-bcm94360cd-asrock-fatal1ty-z97x-killer.239277/][two]].

One possible replacement card is the Dell DW1830, based on the Broadcom BCM943602BAED. I've used this card here (purchased on EBay), although it's currently a bit expensive at around $50. Dell no longer offers this card directly.

This card has three antennas, while the XPS 9570 has only two antennas in the display. To get full Wi-Fi speed, a third antenna with a +U.FL+ MHF4 (thanks romton843!) connector must be added. This antenna can be placed in a small gap next to the battery. It's OK to leave J2 unconnected, however - modern network cards should recognize this and disable the 3rd port. Without the 3rd antenna, I'm able to get speeds up to about 800Mbps.

Connectors J0, J1, J2 should be connected as follows (see [[file:images/3rd_antenna.jpg][installation example]]):

  • J0: white antenna cable to display (primary)
  • J1: black antenna cable to display (Bluetooth/secondary)
  • J2: extra retrofitted antenna next to battery

The DW1830 Wi-Fi card is based on the Broadcom BCM943602BAED, using BCM43602 for Wi-Fi and BCM20703 for Bluetooth. While Wi-Fi works by default, it shows up as a "Third-Party Wireless Card" in System Information unless AirportBrcmFixup is installed, and Bluetooth requires kexts from OS-X-BrcmPatchRAM.

Side note: romton843 explains that U.FL connectors are 2mm and white, while MHF4 are 1.5mm and black. *** Installation

  • Include [[https://github.com/acidanthera/AirportBrcmFixup][AirportBrcmFixup]] [[file:EFI/CLOVER/kexts/Other/AirportBrcmFixup.kext][AirportBrcmFixup.kext]] for Wi-Fi
  • Include [[https://github.com/acidanthera/BrcmPatchRAM][BrcmPatchRAM]] [[file:EFI/CLOVER/kexts/Other/BrcmBluetoothInjector.kext][BrcmBluetoothInjector.kext]], [[file:EFI/CLOVER/kexts/Other/BrcmPatchRAM3.kext][BrcmPatchRAM3.kext]], and [[file:EFI/CLOVER/kexts/Other/BrcmFirmwareData.kext][BrcmFirmwareData.kext]] for Bluetooth (for installation to CLOVER/kexts/Other)
  • After swapping out Wi-Fi card, reset Bluetooth info (e.g. to fix AirDrop)
    • Turn off Bluetooth
    • =sudo rm -f /Library/Preferences/com.apple.Bluetooth.plist*=
    • Reboot and turn on Bluetooth
  • Ensure that Wi-Fi adapter's BSD name is =en0=
    • SysPrefs -> Click on Network dropdown -> BSD Device Name for Wi-Fi not =en0=? Continue below, otherwise skip.
    • =sudo rm -f /Library/Preferences/SystemConfiguration/NetworkInterfaces.plist=
    • =sudo rm -f /Library/Preferences/SystemConfiguration/preferences.plist=
    • Reboot *** Testing Wi-Fi speed By default, AirportBrcmFixup seems to limit Wi-Fi channel width for 802.11ac to 40MHz instead of 80MHz, even though the country code defaults to US. The workaround is to disable the country code setting with the boot flag =brcmfx-country=#a= ([[file:EFI/CLOVER/config.plist][config.plist]]).

If you have an 802.11ac capable access point, place the XPS 9570 next to it and option-click on the Wi-Fi icon. After a few minutes, you should see a line like =Channel: 165 (5 GHz, 80 MHz)= with =Tx Rate= below it of 800 Mbps or higher. A congested Wi-Fi environment in an apartment building could reduce this rate. *** Messages and FaceTime setup The above installation steps prepare the way for Messages and FaceTime to work as well, but there are more in-depth guides to Messages [[https://www.tonymacx86.com/threads/an-idiots-guide-to-imessage.196827/][here]] and [[https://www.tonymacx86.com/threads/how-to-fix-imessage.110471/][here]] if needed.

If there are issues with continuity (switching calls between macOS and iPhone for example), BT4LEContiunityFixup.kext may help fix those, but seems to not be needed for the DW1830.

Remove stale Messages and FaceTime data: #+BEGIN_SRC sh rm -rf ~/Library/Caches/com.apple.Messages rm -rf ~/Library/Caches/com.apple.imfoundation.IMRemoteURLConnectionAgent rm -rf ~/Library/Caches/com.apple.iCloudHelper rm -rf ~/Library/Preferences/com.apple.iChat* rm -rf ~/Library/Preferences/com.apple.icloud* rm -rf ~/Library/Preferences/com.apple.ids.service* rm -rf ~/Library/Preferences/com.apple.imagent.plist rm -rf ~/Library/Preferences/com.apple.imessage* rm -rf ~/Library/Preferences/com.apple.imservice* #+END_SRC *** Known problems/caveats

  • Unlock with Apple Watch only works once after actviation, or only sporadically ** Battery status Install [[file:EFI/CLOVER/kexts/Other/SMCBatteryManager.kext][SMCBatteryManager.kext]] that comes with [[https://github.com/acidanthera/VirtualSMC][VirtualSMC]] to get battery status. Ensure that you have removed ACPIBatteryManager if you've installed it previously. ** Audio Audio on the XPS 9570 is based on the Realtek ALC298 audio codec, referred to by Dell as "ALC3266-CG with Waves MaxxAudio Pro". The ALC298 is not supported on macOS by default, so we use AppleALC to enable it. Audio pipelines on laptops appear to have unique amplifier and gain setups, so we need to pass a =layout-id= to AppleALC compatible with the XPS 9570. The only ID that works well is =layout-id=30=.

HDMI audio output probably requires SSDT-HDEF and FakePCIID_Intel_HDMI_Audio.kext, but is not implemented yet since it depends on a graphics fix. *** Installation

  • [[file:EFI/CLOVER/config.plist][config.plist]]
    • =Devices/Properties/PciRoot(0)/Pci(0x1f,3)=
      • =Comment: AppleALC layout-id for ALC298 on XPS 9570=
      • =layout=id=30=
  • Install [[https://github.com/acidanthera/AppleALC][AppleALC]] [[file:EFI/CLOVER/kexts/Other/AppleALC.kext][kext]] *** Known problems/caveats
  • A bad =layout-id= causes constant CPU activity in a =kernel_task= process (30 should be ok)
  • Lack of an audio output device causes video playback problems, i.e. stalling when seeking
  • HDMI audio out not configured properly yet ** USB The XPS 9570 DSDT table has a few incorrect USB properties, but we can inject the correct properties via [[https://github.com/RehabMan/OS-X-USB-Inject-All][USBInjectAll]] with [[file:EFI/CLOVER/ACPI/patched/SSDT-UIAC.dsl][SSDT-UIAC.dsl]].

The DSDT patch corresponds to the actual hardware config of the XPS 9570, which is as follows:

| Name | Port | Type | User Visible* | Description | |------------+-------+-------------+---------------+---------------------------| | HS01, SS01 | 1, 17 | Type A | Yes | Right side | | HS02, SS02 | 2, 18 | Type A | Yes | Left side | | HS03 | 4 | Proprietary | No | Bluetooth | | HS04 | 5 | Type C | Yes | Left side | | HS05 | 7 | Proprietary | No | Goodix fingerprint reader | | HS06 | 12 | Proprietary | No | Webcam |

(*) "Set if the device connection point can be seen by the user without disassembly" according to ACPI 6.2 A, 6.1.8, _PLD (Physical Location of Device)

Based on [[https://www.tonymacx86.com/threads/guide-10-11-usb-changes-and-solutions.173616/][USB guide]] and [[https://www.tonymacx86.com/threads/guide-creating-a-custom-ssdt-for-usbinjectall-kext.211311/][companion guide.]] *** Implementing USB port fixes and removing unused ports

  • Include [[https://github.com/RehabMan/OS-X-USB-Inject-All][USBInjectAll]] [[file:EFI/CLOVER/kexts/Other/USBInjectAll.kext][kext]]
  • Include [[file:EFI/CLOVER/ACPI/patched/SSDT-UIAC.aml][SSDT-UIAC.aml]] ([[file:EFI/CLOVER/ACPI/patched/SSDT-UIAC.dsl][SSDT-UIAC.dsl]]) - based on [[https://github.com/RehabMan/OS-X-USB-Inject-All/blob/master/SSDT-UIAC-ALL.dsl][SSDT-UIAC-ALL.dsl]] and customized for XPS 9570 *** Known issue: left side type C port only works in HS mode, not SS Will likely work when USB type C and/or Thunderbolt fixes are added. *** To-Do: Add [[https://www.tonymacx86.com/threads/guide-usb-power-property-injection-for-sierra-and-later.222266/][USB power property injection]] ** Thunderbolt 3 Thunderbolt 3 can be made to work if "BIOS assist enumeration" is enabled for Thunderbolt in the BIOS. Install the latest Thunderbolt firmware update from Dell, then boot into Windows with TB peripheral attached. Set device to "always allow". TB device will work in macOS when attached prior to boot, but will lose functionality when hotplugged. ** Touch ID / Goodix fingerprint sensor It's [[https://www.tonymacx86.com/threads/solved-asus-ux430ua-fingerprint-trackpad-touch-id.230671/#post-1572495][not possible]] to use fingerprint sensor for Touch ID according to RehabMan. Perhaps the integrated Goodix fingerprint sensor can be used, and enabled with PAM (TBD).

Since we're using the =MacBookPro15,1= SMBIOS, macOS is expecting Touch ID to be available, causing lag on password prompts. This can be disabled for now with the NoTouchID kext.

  • Install [[https://github.com/al3xtjames/NoTouchID][NoTouchID]] [[file:EFI/CLOVER/kexts/Other/NoTouchID.kext][kext]] ** Trackpad and touchscreen Both the Synaptics trackpad and Wacom touchscreen are I2C devices that can be driven with [[https://github.com/alexandred/VoodooI2C][VoodooI2C]]. [[https://github.com/RehabMan/OS-X-Voodoo-PS2-Controller][VoodooPS2Controller]] also provides basic trackpad support, but the quality is not as good. *** Installation
  • Include [[https://github.com/alexandred/VoodooI2C][VoodooI2C]]'s [[file:EFI/CLOVER/kexts/Other/VoodooI2C.kext][VoodooI2c.kext]] and [[file:EFI/CLOVER/kexts/Other/VoodooI2CHID.kext][VoodooI2CHID.kext]]
  • Include [[file:EFI/CLOVER/ACPI/patched/SSDT-I2C.aml][SSDT-I2C.aml]] ([[file:EFI/CLOVER/ACPI/patched/SSDT-I2C.dsl][SSDT-I2C.dsl]])
  • [[file:EFI/CLOVER/config.plist][config.plist]]
    • =ACPI/DSDT/Patches/Item n=
      • =Comment: Rename _CRS to XCRS, pair with SSDT-I2C.aml=
      • =Key=Find, Type=Data, Value=<144c045f 43525300 a00e954f 5359530b dc07a453 424649>=
      • =Key=Replace, Type=Data, Value=<144c0458 43525300 a00e954f 5359530b dc07a453 424649>=
  • +[[file:EFI/CLOVER/kexts/Other/VoodooI2CHID.kext/Contents/Info.plist][VoodooI2CHID.kext/Contents/Info.plist]]+ (no longer necessary with VoodooI2C 2.3)
    • +=IOKitPersonalities/VoodooI2CHIDDevice Precision Touchpad HID Event Driver=+
      • +=QuietTimeAfterTyping=0= (so trackpad isn't disabled by keystroke for 500ms)+ ** Power management Note: There is some information in power management guides that only applies pre-Coffee Lake. See section below to avoid unnecessary changes.

Based on the [[https://www.tonymacx86.com/threads/guide-native-power-management-for-laptops.175801/][laptop power management guide]] by RehabMan, as well as [[https://www.tonymacx86.com/threads/macos-native-cpu-igpu-power-management.222982/][macOS native power management]] by toleda. *** Set up power managemnt

  • Disable hibernation (suspend to disk or S4 sleep) macOS combines sleep and hibernation into one feature, where closing the lid initially sleeps the laptop, and eventually hibernates it. In any event, hibernation is not supported on hackintosh, and should be disabled/checked after updates.

    #+BEGIN_SRC sh sudo pmset -a hibernatemode 0 sudo rm -f /var/vm/sleepimage sudo mkdir /var/vm/sleepimage # try to prevent update from re-enabling sudo pmset -a standby 0 sudo pmset -a autopoweroff 0 #+END_SRC

  • config.plist/ACPI/SSDT/Generate/PluginType=YES

  • Verify that X86PlatformPlugin is loaded (see testing section)

  • config.plist/KernelAndKextPatches/KernelPm=YES

  • Enable xcpm_idle patch to prevent reboot with HWP (hardare P-state coordination)

    • config.plist/KernelAndKextPatches/KernelToPatch/Item n
      • Key=Find, Type=Data, Value=<20b9e200 00000f30>
      • Key=Replace, Type=Data, Value=<20b9e200 00009090> *** Items that are no longer relevant to Coffee Lake (DO NOT USE)
  • config.plist/KernelAndKextPatches/AppleIntelCPUPM=YES

  • =ssdtPRgen.sh=

  • =HWPEnabler= *** Testing power management (WIP)

  • Use [[https://software.intel.com/en-us/articles/intel-power-gadget-20][Intel Power Gadget]] to graph CPU power/frequency/temp over time

  • Verify X86PlatformPlugin is loading under PR00 in IORegistryExplorer

    • Root -> MacBookPro15,1 -> AppleACPIPlatformExpert -> [email protected] -> AppleACPICPU -> X86PlatformPlugin
  • Testing Power Management Load [[file:tools/AppleIntelInfo.kext][AppleIntelInfo.kext]] (but don't install it):

    #+BEGIN_SRC sh sudo chown -R root:wheel AppleIntelInfo.kext sudo kextload AppleIntelInfo.kext #+END_SRC

    Then use the system for a few minutes, perform some work, let it idle, etc. Finally, copy results file to where you want to save it:

    #+BEGIN_SRC sh sudo kextunload AppleIntelInfo.kext sudo cp /tmp/AppleIntelInfo.dat ~/AppleIntelInfo.txt sudo chmod g+rw ~/AppleIntelInfo.txt #+END_SRC ** VirtualSMC/FakeSMC Either [[https://github.com/acidanthera/VirtualSMC][VirtualSMC]] or [[https://github.com/RehabMan/OS-X-FakeSMC-kozlek][FakeSMC]] is required to boot macOS, since PCs don't have Apple SMC hardware. VirtualSMC is newer and actively maintained. *** Installation

  • Include [[file:EFI/CLOVER/kexts/Other/VirtualSMC.kext][VirtualSMC.kext]]

  • Include [[file:EFI/CLOVER/kexts/Other/SMCBatteryManager.kext][SMCBatteryManager.kext]]

  • Include [[file:EFI/CLOVER/kexts/Other/SMCLightSensor.kext][SMCLightSensor.kext]]

  • Include [[file:EFI/CLOVER/kexts/Other/SMCProcessor.kext][SMCProcessor.kext]]

  • Include [[file:EFI/CLOVER/kexts/Other/SMCSuperIO.kext][SMCSuperIO.kext]]

  • Include [[file:EFI/CLOVER/drivers/UEFI/VirtualSmc.efi][VirtualSmc.efi]] (found [[https://github.com/acidanthera/VirtualSMC/blob/master/EfiDriver/VirtualSmc.efi][here]]), and remove SMCHelper-64.efi if it was installed before ** Windows compatibility *** Real-time clock macOS sets BIOS clock to UTC, but Windows sets clock to local time. The solution is to set Windows to use UTC as well, with =regedit=:

  • regedit -> =HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation=

  • create new DWORD (32-bit) =RealTimeIsUniversal= with value '1' *** Sharing Bluetooth devices You may have noticed you need to re-pair a Bluetooth devices when booting between macOS <-> Windows, because the 128 bit device link key changes. This can be fixed by exporting macOS's BT keys, and importing them in Windows. See [[https://github.com/digitalbirdo/BT-LinkkeySync][BT-LinkkeySync]] for instructions, and [[file:tools/BT-LinkkeySync.py][BT-LinkkeySync.py]] in this repo (updated for Mojave). ** Known problems/caveats

  • FileVault is disabled - unable to boot encrypted volume (stuck on black screen)

  • Thunderbolt 3 requires Windows configuration (one time), no hotplug support

  • USB3 on type-C port not working? Maybe requires cold booting?

  • Suspend and resume not implemented properly - power button should wake however

  • Internal keyboard behaves strangely when Keyboard SysPrefs are changed - must use SSDT to configure VoodooPS2Controller

  • Wi-Fi and Bluetooth require card swap, since there are no macOS drivers for OEM Killer Qualcomm card

  • Fingerprint reader does not work (see Touch ID / fingerprint reader section)

  • SD card reader not present

  • ACPI DSDT/SSDT patching Most of the ACPI patching info is based on the [[https://www.tonymacx86.com/threads/guide-patching-laptop-dsdt-ssdts.152573/][laptop DSDT/SSDT guide]] and [[https://www.tonymacx86.com/threads/guide-using-clover-to-hotpatch-acpi.200137/][hotpatching guide]].

The ACPIBatteryManager (no longer used) [[https://www.tonymacx86.com/threads/guide-how-to-patch-dsdt-for-working-battery-status.116102/][guide]] includes good step-by-step tutorial on how to make DSDT edits with [[https://bitbucket.org/RehabMan/os-x-maciasl-patchmatic/downloads/][MaciASL]].

Many ACPI patches depend on starting out with a working set of ACPI tables (accomplished via patching if needed), so it's useful to test if this is the case and fix any errors before attempting further changes.

To do this, we can look through the macOS boot logs for ACPI errors, dump the unmodified ACPI tables, and dump the ACPI tables as modified by Clover. Making changes as needed, rebooting, and re-inspecting system logs, we can iterate until there are no more ACPI problems as seen by macOS.

Note: this process wasn't clear to me from reading the patching guides initially, but it may not be the best way to do it - caveat emptor.

  1. Inspect system logs for errors Immediately after bootup, dump system log for the last 10 minutes (adjust as needed): #+BEGIN_SRC sh log show --predicate 'process == "kernel"' --style syslog --source --debug --last 10m > sys_log.txt #+END_SRC Then search =sys_log.txt= for "ACPI Error" or "ACPI Exception".
  2. Dump unmodified ACPI tables Press F4 on Clover boot screen (no output will show), then mount EFI partition and look for ACPI tables in =CLOVER/ACPI/origin=.
  3. Check unmodified tables for errors with iasl Disassembling all tables from a single namespace with the =-da= option should yield no errors: =iasl -da -dl DSDT.aml SSDT-*.aml= Although, some duplicate definitions with the error AE_ALREADY_EXISTS may not be a problem (TBD). If an error occurs, check the file =DSDT.dsl= for possible error output.
  4. Check modified tables as injected by Clover with patchmatic and iasl #+BEGIN_SRC sh patchmatic -extract iasl -da -dl DSDT.aml SSDT-.aml #+END_SRC Again, this should yield no errors. If a duplicate definition is found with AE_ALREADY_EXISTS, try disassembling the tables without the =-da= option: =iasl -dl DSDT.aml SSDT-.aml= If this still fails, there is likely a problem that needs to be fixed via Clover patching first.
  • Installation and system updates ** Installation from scratch *** Preparing the XPS 9570 This setup dual-boots Windows 10, which is nice to have for games, since we can actually use the Nvidia GTX 1050, unlike in macOS.

Begin with the default Windows 10 installation (or install Windows 10 if using a new drive).

  • Create a Windows USB installer using the media creation tool (not in a VM) The installed copy of Windows will be wiped when switching to 4k sectors or AHCI mode below.

  • Update BIOS and other firmware using Dell SupportAssist in Windows

  • Toshiba SSD only

    • Update [[https://www.dell.com/support/home/us/en/04/product-support/product/xps-15-9570-laptop/drivers][Toshiba SSD firmware]] (search for "toshiba") Needed to fix 4k sector bug. Dell SupportAssist does not do this automatically!
    • Set SSD to [[https://github.com/wmchris/DellXPS15-9550-OSX/blob/master/4k_sector.md][use 4k sectors]] - this will WIPE the drive!
  • Enable Intel SpeedShift in BIOS

  • Ensure SSD mode is set to AHCI mode instead of RAID in BIOS This will make an existing installation of Windows unbootable. *** Creating USB installation media (see [[https://www.tonymacx86.com/threads/guide-booting-the-os-x-installer-on-laptops-with-clover.148093/][guide]] for more details)

  • Download macOS install from App Store

  • Format USB drive and write installer to drive (assuming drive is =/dev/disk100=) #+BEGIN_SRC sh diskutil partitionDisk /dev/disk100 1 GPT HFS+J "install_osx" R

    Choose either Mojave:

    sudo "/Applications/Install macOS Mojave.app/Contents/Resources/createinstallmedia" --volume /Volumes/install_osx --nointeraction diskutil rename "Install macOS Mojave" install_osx

    Or Catalina:

    sudo "/Applications/Install macOS Catalina.app/Contents/Resources/createinstallmedia" --volume /Volumes/install_osx --nointeraction diskutil rename "Install macOS Catalina" install_osx #+END_SRC

  • Install Clover on USB drive

    • Using [[https://github.com/Dids/clover-builder][Dids clover build]]: [[https://github.com/Dids/clover-builder/releases][binaries]]
    • Run installer
      • 'Change Install Location' -> Select =install_osx= volume
      • 'Customize', then ensure the following are checked:
        • [X] Clover for UEFI booting only
        • [X] ApfsDriverLoader
        • [X] AptioMemoryFix.efi
        • [X] HFSPlus
        • Copy [[file:EFI/CLOVER/drivers/UEFI/VirtualSmc.efi][VirtualSmc.efi]] to [[file:EFI/CLOVER/drivers/UEFI][EFI/CLOVER/drivers/UEFI]]
        • +[X] FSInject-64+ (not needed)
        • +[X] SMCHelper-64+ (do not install - replaced by [[file:EFI/CLOVER/drivers/UEFI/VirtualSmc.efi][VirtualSmc.efi]])
        • +[X] DataHubDxe-64+ (not needed)
    • Mount USB drive's EFI partition
      • =sudo diskutil unmount /Volumes/ESP=
      • =sudo diskutil mount /dev/disk100s1= -> should be mounted to =/Volumes/EFI=
    • Add config.plist for XPS 9570
    • Add kexts to [[file:EFI/CLOVER/kexts/Other][EFI/CLOVER/kexts/Other]]
    • Add DSDT patches to [[file:EFI/CLOVER/ACPI/patched][EFI/CLOVER/ACPI/patched]] ** System updates Several changes or fixes can stop working after an update, but often only a few steps are required to fix or re-enable them. Try these steps before debugging issues after updates:
  • Update the kext cache (boot with minimal config if necessary)

  • Check/re-run power management hibernation changes

  • Miscellaneous Notes ** Installing kexts +Kexts should be installed in =/Library/Extensions=.+ Kexts should be installed only in CLOVER/kexts/Other, and not in /Library/Extensions.

Using both CLOVER/kexts/Other and /Library/Extensions for some kexts and not others is not recommended. It looks like Clover can get confused if it needs to load a kext when doing this.

This seems to work well and provides more flexibility, but if you run into any issues doing this, please report it.

To update the kext cache in /Library/Extensions after making changes there, do: #+BEGIN_SRC sh sudo kextcache -i / #+END_SRC

Be sure to check output for errors! Every custom kext should be listed with the line =Kext with invalid signatured (-67062) allowed= ** Kext patching Kexts can be patched on boot by Clover (see =KernelAndKextPatches/KextsToPatch= section in [[file:EFI/CLOVER/config.plist][config.plist]]), but Clover has some limitations, e.g. it can only patch kexts that are in the kext cache. More complex cases can be handled by [[https://github.com/acidanthera/Lilu][Lilu]], used for "arbitrary kext and process patching", which is itself installed as a [[file:EFI/CLOVER/kexts/Other/Lilu.kext][kext]]. Excellent [[https://www.tonymacx86.com/threads/an-idiots-guide-to-lilu-and-its-plug-ins.260063/][guide]] to using Lilu and commonly used plugins.

See also guide to [[https://www.tonymacx86.com/threads/guide-installing-3rd-party-kexts-el-capitan-sierra-high-sierra-mojave.268964/][installing 3rd party kexts]]. ** System Integrity Protection (SIP) We want to disable SIP to allow loading unapproved kexts and allow other system features that are normally restricted. This is accomplished by setting =CsrActiveConfig= in config.plist:

  • [[file:EFI/CLOVER/config.plist][config.plist]]
    • =RtVariables/CsrActiveConfig=0x3E7=

The bitmask and settings defined by 0x3E7 are [[https://www.reddit.com/r/hackintosh/comments/bt17xk/differences_between_0x67_and_0x3e7/][explained in more detail]] by [[https://www.reddit.com/user/dracoflar][dracoflar]]. ** Hackintool https://www.tonymacx86.com/threads/release-hackintool-v2-3-8.254559/ A full-featured utility to fix various issues, including graphics, USB, audio, etc. Requires a fair bit of reading, but is useful to verify an installed config or hardware. ** ACPI debugging The [[https://github.com/RehabMan/OS-X-ACPI-Debug][OS-X-ACPI-Debug]] repo allows for "debug tracing from ACPI code (DSDT) to system.log". Not currently installed and not tested, but should be useful if ACPI problems come up. ** Boot arguments These are the boot arguments currently used:

  • =slide=0 npci=0x2000=

    These come from LuletterSoul's [[https://github.com/LuletterSoul/Dell-XPS-15-9570-macOS-Mojave][repo]], and seem to have a positive effect on boot stability. For example, =slide=0= appears to [[https://github.com/wmchris/DellXPS15-9550-OSX/blob/master/Additional/slide_calc.md][control ASLR]] during the boot process, and if an EFI or kext depends on a particular address layout, fixing this value could improve system boot stability. In my experience, this has reduced the number of random hangs on boot to zero (open an issue if you see problems with these flags).

  • =dart=0=

    This value has been inherited from [[https://github.com/RehabMan][RehabMan]]'s [[https://github.com/RehabMan/OS-X-Clover-Laptop-Config/blob/master/config_UHD630.plist][config_UHD630.plist]], to disable an older virtualization feature that's not generally used. TBD if this is needed, but it seems to cause no issues.

  • =darkwake=1=

    The =darkwake= flag has to do with sleep, and what it does can only be discerned from Apple's [[https://opensource.apple.com][Darwin source]] once it's posted, but there is a delay between the latest update and the source they post. The best resource I was able to find is a [[https://www.tonymacx86.com/threads/important-darkwake-0-flag-can-break-auto-sleep-in-10-8-1.69714/#post-447117][thread here]].

  • =agdpmod=vit9696=

    Enables HDMI output by disabling a check for =board-id=, since the XPS 9570 does have an HDMI output, unlike the =MacBookPro15,1= we're pretending to be. See graphics section.

  • =brcmfx-country=#a=

    Enables 80MHz wide channels on the 5GHz spectrum. See Wi-Fi/Bluetooth section for more info.

  • =-v=

    Show verbose logs during boot. Not necessary, but can be helpful for debugging issues, which.. I mean.. you signed up for issues with a hackintosh. So you probably want this. ** Editing .plist files The easiest way to edit .plist files is using Xcode. Do not use Clover Configurator, since it will re-indent and re-order items in your .plist file, making it harder to manage changes with git.

Xcode 11.3 and newer has a quirk when editing binary data. Data must be entered in the format == with hex input between brackets, but the editor will show ={length = 4, bytes = 0xdeadbeef}=. To make changes to the data, you have to enter it again in the =<...>= format.

You can edit .plist files on the command line with PlistBuddy: =/usr/libexec/PlistBuddy -c "Add :SomeData data echo 0xDEADBEEF | xxd -r -p" test.plist= Or you can print .plist contents with plutil: =plutil -p test.plist= Which would show the output: #+BEGIN_SRC { "SomeData" => {length = 4, bytes = 0xdeadbeef} } #+END_SRC

  • Change history *** 2020-02-07: Update AppleALC to 1.4.6 *** 2020-02-05: Use WhateverGreen to disable discrete GPU Remove Clover SSDT renames and SSDT patches in favor of having WhateverGreen disable the discrete Nvidia GPU. Shouldn't have any visible impact, but more simple, more better. *** 2020-01-30: Update VoodooI2C to 2.3 The trackpad driver seems to have improved and has other stability fixes. *** 2020-01-29: Change recommended kext directory to CLOVER/kexts/Other Previously, I would install kexts to both /Library/Extensions and CLOVER/kexts/Other, but many users prefer installing only to CLOVER/kexts/Other. After testing kexts installed via Clover for a while, everything seems to be stable, so I'm changing the recommended location. If you run into issues doing this, please open an issue. *** 2020-01-29: Update WhateverGreen to 1.3.6 *** 2020-01-29: Update NoTouchID to 1.0.3 *** 2020-01-28: +Use [[https://github.com/acidanthera][acidanthera]]'s VoodooPS2Controller 2.1.0 and VoodooInput 1.0.2+ This overrides the VoodooI2C trackpad driver and seems to have other keyboard glitches. Reverting for now since it provides no additional value. *** 2020-01-26: Update AirportBrcmFixup to 2.0.5 *** 2020-01-25: Update VirtualSMC to 1.1.0 *** 2020-01-25: Update Lilu to 1.4.1 *** 2020-01-25: Update BrcmPatchRAM kexts to 2.5.1 This uses BrcmFirmwareData in favor of BrcmFirmwareRepo to work with Clover injection per issue [[https://github.com/bavariancake/XPS9570-macOS/issues/51][#51]]. Oddly, this also seems to work with /L/E injection (at least in Catalina). *** 2020-01-25: Update AppleALC to to 1.4.5 *** 2019-10-14: Update Bluetooth to work with Mojave and Catalina The same kexts should work for both Mojave and Catalina, at least for the DW1830. Catalina now requires BrcmBluetoothInjector.kext. *** 2019-09-13: Enable HDMI 2.0 support via LSPCON thanks to @0xFireWolf This one was a bit overdue, but I didn't have a 4k monitor that required HDMI 2.0 for testing. *** 2019-09-04: Clean up USB config *** 2019-08-19: Update Clover to v2.5k_r5050 *** 2019-08-11: Update kexts
  • AirportBrcmFixup: 1.1.9 -> 2.0.3
  • AppleALC: 1.3.4 -> 1.4.0
  • Lilu: 1.3.5 -> 1.3.8
  • NoTouchID: 1.0.1 -> 1.0.2
  • VirtualSMC: 1.0.3 -> 1.0.7
  • WhateverGreen: 1.2.8 dev. commit ab43814f45 -> 1.3.1 *** 2019-08-05: Use VoodooI2C for trackpad and touchscreen Previously VoodooI2C was too unstable, but its reliability seems to have improved and [[https://github.com/LuletterSoul][LuletterSoul]] provided a patch for GPIO interrupts in [[https://github.com/LuletterSoul/Dell-XPS-15-9570-macOS-Mojave][his repo]]. *** 2019-07-26: Upgrade to 10.14.6 No issues. *** 2019-05-30: Update CsrActiveConfig bitmask to 0x3E7 This new value seems to be a better choice for 10.14.5 as recommended by dracoflar, who also gave several other very helpful tips for this repo. *** 2019-05-26: Remove unnecessary SMBIOS entries and clover UEFI drivers *** 2019-05-23: Clean up ACPI renaming/patches with WhateverGreen WhateverGreen now handles ACPI renames and backlight fixes, so unnecessary ACPI patches and AppleBacklightFixup are removed. *** 2019-05-21: Use VirtualSMC instead of FakeSMC Currently provides no new features, but VirtualSMC is more actively maintained than FakeSMC. Do open an issue if you run into problems with VirtualSMC however. *** 2019-05-19: Update clover and use single EFI folder *** 2019-05-17: Upgrade to 10.14.5 Noticed a few kextd stalls with the message: #+BEGIN_SRC sh busy timeout[0], (240s) kextd wait(0): 'AppleACPICPU' #+END_SRC

Update completes after waiting a while. *** 2019-05-13: Add support for dual DisplayPort via type C The type C connector supports up to two [email protected] DisplayPort outputs with an adapter. The HDMI output can be used simultaneously, for up to three displays (including the LCD). A Thunderbolt 3 adapter is recommended to get 60Hz and other benefits. *** 2019-04-29: Add initial HDMI support @0xFireWolf created patches to enable Type C and HDMI connected output. This will likely require more changes to support HDMI 2.0 fully. *** 2019-04-01: Use WhateverGreen for DPCD link rate patching @0xFireWolf has added DPCD link rate patching to WhateverGreen, which is available with commit ab43814f45, or with the next release (1.2.8 probably). A WhateverGreen kext with these changes is also included with this repo. *** 2019-03-26: Upgrade to 10.14.4 This update takes quite some time on initial install, so it may be necessary to wait more than 20 minutes before seeing a progress bar.

AppleIntelCFLGraphicsFramebuffer changed again, and this time the DPCD link rate patch needs to be updated. See changes in the Intel UHD 630 "enabling acceleration section".

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].