MokkaSchnalle / macOS-Dell-5411-5511

OpenCore EFI files to boot macOS on a Dell Latitude 5411 or 5511
39 stars 3 forks source link

Dell Latitude 5411 or 5511 with macOS Monterey

A collection of all files needed to run Monterey on a Dell 5411 or 5511. It will also work with Catalina or Big Sur (checkout older releases)

Screenshot

πŸ” Overview

This is more of a compilation of information and configs from various repositories and forums than a place where real development happens. This repository should contain everything needed to get Monterey up and running on your Dell Latitude 5411 or 5511 laptop.

βœ”οΈ Status

Hardware Model Status Comments
CPU Intel Core i7-10850H βœ… Working Power Management fully working. Goes down to 800MHz and boosts to 5.1GHz. 2-3W power consumption in idle stage.
iGPU Intel UHD Graphics 630 βœ… Working Fully supported including Turbo, QE/CI acceleration, Metal and 2GiB of VRAM but no DRM in Safari
Internal Display 1920x1080@60Hz βœ… Working Internal eDP display fully working including Backlight control.
External Display(s) DP 1.4, HDMI 2.0 via LSPCON βœ… Working 3840x1600@85Hz via Thunderbolt/DP and 3840x2160@60Hz via HDMI tested. 4 displays (Internal + 3 external, 2 via Thunderbolt and 1 HDMI) simultaneously working fine. If using a Thunderbolt dock for multiple displays, you can only connect one display to the dock connectors. For the second display, you have to use an additional USB-C display adapter connected to the "Passthrough"/Daisy Chain Thunderbolt port of your dock because macOS does not support MST.
SSD Micron 2300 NVMe 512GB βœ… Working
Trackpad I2C ALPS ???? (Named Dell09C0) βœ… Working Working with full gesture support (5 fingers) but the hardware buttons are not working. You can use left/right click with touch tap (change in settings).
Wi-Fi/ BT Dell DW1560 βœ… Working The stock Intel AX Wi-Fi 6 card needs to be swapped out to a compatible card.
LAN Intel I219-LM βœ… Working
Thunderbolt/ USB-C Intel JHL7540 / Titan Ridge 2C 2018 βœ… Working USB-C charging works. Thunderbolt and USB-C devices are working. Tested with a Dell WD19TB Thunderbolt Dock and an USB-C iPad. Hotplugging of USB-C displays or USB-C docks with a display attached to it, is buggy sometimes. But USB-C to HDMI or (m)DP adapters are working fine.
USB βœ… Working All Ports fully working with USB 2.0, 3.0 and 3.1/3.2 speed
Internal Speakers Realtek ALC3204 βœ… Working Fully working including Mac boot chime
Internal Microphone array βœ… Working
Headphone Jack βœ… Working Works, including automatic switch to headphone if plugged in.
Webcam βœ… Working
SDXC reader Realtek RTS525A βœ… Working
Fingerprint reader ❌ Not working Will never work, because of MacBooks with TouchID and T2 chip and proprietary Windows drivers for Dell.
Features Status Comments
Sleep βœ… Working
Lid Open/Close βœ… Working Goes to Sleep when no external display connected and wakes up.
Sidecar βœ… Working
iMessage and App Store βœ… Working Just use a valid SMBIOS, S/N, MLB and MAC-Address. Do not use the random data in my repo as these may be used by others!
Handoff βœ… Working Tested with iPhone 12 Pro Max, iPhone 13 Pro Max, iPad Pro 12,9" and second Hackintosh
Sidecar βœ… Working Tested with iPad Pro 12,9"
Watch Unlock βœ… Working ...most of the time. Tested with Apple Watch series 3
FileVault 2 πŸ”Ά Partially Encryption itself is working fine but generates a huge boot delay (30-60 seconds) until asking for the FileVault password. I think this is an OpenCore bug. This occurred already on the macOS Catalina Beta and was fixed later.

πŸ—’οΈ To-Do

Features Comments Done
HDMI black screen after wakeup No output on the HDMI port after sleep. Works fine again after replugging any display cable. ❌ No
Battery reading Buggy or not updating from time to time when external displays connected ❌ No
Random Kernel Panics Kernel panics around once a month after waking from sleep ❌ No
Trackpad GPIO fix The trackpad is currently configured to work in polling mode because the GPIO Interrupt mode generates very high CPU load (Not needed because of latest VoodooI2C supporting hardware buttons βœ… Yes
Ghost display on HDMI HDMI display stays online after disconnection. Gone after updating the display configuration (e.g. connecting new display or change resolution) Fixed with latest WhateverGreen.kext βœ… Yes
Multiple displays via Thunderbolt Dock Not done yet because of missing Thunderbolt Dock Tested with a Dell WD19TB Thunderbolt Dock. I made some adjustments to the WEG framebuffer patches to enable two displays via Thunderbolt. βœ… Yes
Disable CFG Lock Flashing a modded UEFI/BIOS because this option is not listed in the Dell Utility and changes via GRUB setup-var are not working because the EFI writable flag is not set (see section Adjust UEFI variables) βœ… Yes

πŸ–₯ Installation

BIOS/UEFI settings

Adjust UEFI variables to enable 4K@60Hz and disable CFG lock

Needed tools: grub-mod-setup_var on a FAT32 USB-Stick or on the OpenCore EFI
Dell_PFS_Extract, UEFITool_NE_A58, Ifrextractor (They are all available for both macOS and Windows).

You can adjust all UEFI settings even if the BIOS is password protected as long as booting from external media is allowed and/or SecureBoot is disabled to load the .efi.

My Dell BIOS is version 1.2.15. Always dump the correct files for your own BIOS version!

  1. Download your BIOS flash program via Dell (search for your model, then click Drivers and Downloads and filter for BIOS)
  2. Dell_PFS_Extract: Select folder containing your Dell .exe file (This will extract the raw BIOS .bin file)
  3. UEFITool_NE_A58: Open 1 System BIOS with BIOS Guard vx.x.x.bin and export the Setup IFR section
  4. Ifrextractor: Use Section_PE32_image_Setup.sct as input file and write output to Section_PE32_image_Setup IFR.txt
  5. Find variables by their name in the .txt file via Ctrl + F (e.g. DVMT or CFG or Thunderbolt)

The line should be something like this: One Of: DVMT Pre-Allocated, VarStoreInfo (VarOffset/VarName): 0xF5, VarStore: 0x16 For some BIOS versions (including mine) the variable is not in VarStore: 0x1 (Setup). If so, find your correct VarStore at the beginning of the .txt file.

For me it's VarStore: VarStoreId: 0x16 [72C5E28C-7783-43A1-8767-FAD73FCCAFA4], Size: 0x318, Name: SaSetup (SaSetup instead of Setup).

We do the same for the CFG lock: One Of: CFG Lock, VarStoreInfo (VarOffset/VarName): 0x3E, VarStore: 0x11
VarStore 0x11 is CpuSetup.

With the new information we are able to build our commands to adjust these variables:
setup_var_cv SaSetup 0xF5 0x2 (0x2 = 64M, default = 32M)
setup_var_cv CpuSetup 0x3E 0x0 (0x0 = off, default = on)
Boot your computer and start a UEFI shell via OpenCore. Then start grub-mod-setup_var and run your commands.

Reboot your computer and check.

Create a bootable installer

Grab a free USB stick with at least 16GiB and format it with HFS+ file system and GUID table.

Download a legal copy of macOS from the App Store using a real Mac and create a bootable installation stick: sudo /Applications/Install\ macOS\ Monterey.app/Contents/Resources/createinstallmedia --volume /Volumes/MyVolume Rename MyVolume to your USB stick name or drag the Volume into the Terminal window.

Now use the tool MountEFI to mount the EFI volume on the USB stick.

Configuring EFI

Clone this repository to get the base EFI folder. Copy the folder into the EFI partition you have mounted in the previous step.

πŸ›  Configuration

This section talks about configuring the EFI folder for your exact hardware. Almost all changes are done inside the OpenCore configuration file. Use the provided version of ProperTree to edit EFI/OC/config.plist.

🌐 Wi-Fi/Bluetooth

The stock Intel Wi-Fi cards are still unstable in macOS. So to use Wi-Fi with "AirPort feeling", you will have to replace it for a supported card. This repo is configured to work out-of-the-box with many Dell Broadcom adapters (cheap on Ebay).

πŸ–₯️ Display

You should enable subpixel antialiasing for non-retina screens with this command: defaults write -g CGFontRenderingFontSmoothingDisabled -bool NO In addition, 5411 (14") users can use SwitchResX to create a custom HiDPI resolution to get greater screen rendering. FHD with 14" is quite small.

πŸŒ™ Sleep

If you are facing random wakeups while the lid is closed, apply the following settings:

sudo pmset -a hibernatemode 0
sudo pmset -a standby 0
sudo pmset -a autopoweroff 0
sudo pmset -a powernap 0

⚑️ Performance

CPU power management is done by CPUFriend.kext while CPUFriendDataProvider.kext defines how it should be done. CPUFriendDataProvider.kext is generated for a specific CPU and power setting. The one supplied in this repository was made for the Intel Core i7-10850H and is optimized for optimized performance (like on normal MacBook Pro's). In case you have another CPU or would rather sacrifice some performance in trade for more battery life, you can use the script in the Tools folder to generate your own CPUFriendDataProvider.kext.

Keep in mind that the fan used in the Latitude 5411 and 5511 is really bad. I used the tool "Macs Fan Control" to muzzle this turbine.

⚽ Conclusion

I am using this computer for my everyday work without any issues, crashes etc. For me it is the best Hackintosh experience so far on a laptop. Feel free to add improvements via PR and report issues πŸ™‚

Happy hacking!

πŸ–ŠοΈ Credits