Changelog:
- Update 11/1/2019 Provided plist is for Opencore now
- Update 11/22/2019 Added additional Configs for Clover, Intel, and Nvidia setups
Releasing this to help others with Dell Precision M4700s.
I would recommend reading this guide and this first contact page before proceeding. While these guides use clover, it still much needed info to begin understanding what's going on in opencore. Go here for an opencore guide which explains the settings needed for Ivy Bridge systems
Laptop 1 | Laptop 2 | |
---|---|---|
CPU | I7-3740QM | I7-3940XM |
RAM | 4 x 4GB 1600Mhz DDR3 | 16GB DDR3 |
GPU | AMD Firepro Mobility M4000 | NVidia Quadro K1000M |
Screen | 1080p IPS 30 bit depth | 1080p TN 24 bit depth |
Wifi | Broadcom BCM94352Z | Dell DW1510 |
Trackpad | Alphs Dual Point - V3 Rushmore | |
BIOS | A17 | A19 |
- Do not use provided SSDT-CPUPM - install macOS first then create your own. Do not drop MCFG until you provide your own SSDT-CPUPM.
- You most likely should make your own USBMap.kext as well - I don't know how this differs across similar laptops, or if it's the same. If your USB ports do not work in macOS (get a "waiting for root device" error), then you may need to remove it and use USBInjectAll.kext until you get into macOS and can map them properly.
You can get more information about these by clicking on the links, which leads to their respective github repo.
- Lilu - Needed for kexts such as AirportBrcmFixup and WhateverGreen to function.
- AirportBrcmFixup.kext - Allows 94352Z to work even though it's not native to MacOS.
- WhateverGreen - Allows us to put in the iGPU platform id and M4000 framebuffer
- VirtualSMC - Emulates the SMC and provides sensor information for Battery and CPU.
- Includes SMCBatteryManager, SMCProcessor, and SMCLightSensor as well, which I use as well.
- USBMap - Injects all the USB ports defined within info.plist as macOS does not pick up all the USB Ports by itself.
- VoodooPS2Controller - Fixes PS2 Trackpad and Keyboard (Not linked yet, I compiled my own based off of Dr. Hurtz and Rehabman's repo)
- BrcmFirmwareRepo/BrcmPatchRAM3 (Acidanthera) - Allows the Bluetooth part of the 94352Z to work with macOS.
- You need BrcmPatchRAM3, BrcmFirmwareData, and BrcmBluetoothInject for Catalina
- IntelMausiEthernet - Fixes ethernet port.
- AppleALC - Fixes speakers and 3.5mm ports
- _OSI to XOSI - Redirects OSI calls to the one in the SSDT_XOSI file. When _OSI checks Windows 7 or Windows 8, it'll also check if it's Darwin as well.
- EHC1 to EH01/EHC2 to EH02 - Expected DSDT name for USBInjectAll
- ECDV to EC - Embedded Controller rename to allow the laptop to boot into MacOS ๐ฑ-alina
- HPET _CRS to XCRS/IRQ 8 /IRQ 0 Patch - Generated by this script, used with SSDT-HPET
- EC5_ to ECB_ - Intercepts calls to change screen brightness from brightness keys to the method in SSDT-BRTK
- MCFG - Causes crashes with SSDT-CPUPM
- Pci(0x1b,0x0) - Set audio layout for AppleALC.kext to fix interal speakers and ports
- Pci(0x1c,0x7) - Fixes SD Card slot by allowing it to use the apple SD card kext within MacOS.
For whatever GPU is driving the internal display, add the below device properties to get a full range of backlight values. If you would like to edit the curve, convert applbkl-data from base64 to hex. The values are sets of 2 bytes. Ignore the first two bytes (0x00, 0x11) and edit the rest of the curve. It is currently set to 0x0000 - 0x00ff as that gives the full range for the IPS, 30bit depth, screen.
<key>applbkl</key>
<data>AQAAAA==</data>
<key>applbkl-name</key>
<data>RjE0VHh4eHgA</data>
<key>applbkl-data</key>
<data>ABEAAAAEAAsAEAAUABoAIwArADQAPwBOAGIAeQCUALUA2gD/</data>
This tells applbkl to force backlight injection, and to pass in a set of hex values from 0x0 to 0xff for the "F14Txxxx" display. Without these properties, the backlight still works, but you don't get the full range of brightness.
If you have an NVidia GPU, and Optimus is enabled, then the iGPU is running the main display, and you want to input the Intel graphics properties. If you have Optimus disabled, then go to the Nvidia section.
These properties below are needed for the gpu to work at all.
<key>@0,display-dual-link</key>
<data>AQAAAA==</data>
<key>CAIL,CAIL_DisableDrmdmaPowerGating</key>
<data>AQAAAA==</data>
<key>CAIL,CAIL_DisableGfxCGPowerGating</key>
<data>AQAAAA==</data>
<key>CAIL,CAIL_DisableUVDPowerGating</key>
<data>AQAAAA==</data>
<key>CAIL,CAIL_DisableVCEPowerGating</key>
<data>AQAAAA==</data>
If you would like the iGPU to be used for video encoding/airplay, then use the below
<key>shikigva</key>
<data>KAAAAA==</data>
<key>shiki-id</key>
<data>TWFjLUZDMDJFOTFEREQzRkE2QTQA</data>
Use the below device properties as well if the panel has a 30 bit depth, or connects over eDP
<key>connectors</key>
<data>AgAAAEAAAAAJCQEAAAAAABAAAAUAAAAAAAQAAAQDAAAACQIAAAAAABECAQEAAAAAAAQAAAQDAAAACQMAAAAAACEDAgIAAAAAAAgAAAQCAAAAAQQAAAAAABIEAwMAAAAA</data>
<key>@0,display-link-component-bits</key>
<data>CgAAAA==</data>
<key>@0,display-link-pixel-bits</key>
<data>CgAAAA==</data>
Nothing needed - though backlight does not work.
Below device properties are needed in order for the iGPU to drive the main display.
<key>AAPL,ig-platform-id</key>
<data>BABmAQ==</data>
<key>framebuffer-con1-alldata</key>
<data>AgUAAAAEAAAHBAAAAwQAAAAEAACBAAAABAYAAAAEAACBAAAA</data>
<key>framebuffer-con1-enable</key>
<integer>1</integer>
<key>framebuffer-memorycount</key>
<integer>2</integer>
<key>framebuffer-patch-enable</key>
<integer>1</integer>
<key>framebuffer-pipecount</key>
<integer>2</integer>
<key>framebuffer-portcount</key>
<integer>4</integer>
<key>framebuffer-stolenmem</key>
<data>AAAABA==</data>
If Optimus is set to "Disabled" or you are otherwise forced to use the dGPU - it is possible to enable the iGPU to use headless for airPlay and h.264 encoding using the below instructions:
// TODO: General idea below, flesh out below and add screenshots possibly?
- Download the exe to update the BIOS from Dell's website
- Extract bios with binwalker
binwalk -e whatever.exe
- Use pfsextractor on the uncompressed output
- Use UEFITools to find the Setup section and extract the body of that Image.
- Use IFRExtractor on the extracted image. You should get a text file output.
- Look for settings to enable the iGPU.
- Use setup_var to change
- SSDT-CPUPM - Generated by this script. Allows the CPU to turbo and lower it's clock speed.
- SSDT-HPET - Generated by this script, fixes duplicate IRQs and fixes RTC
- SSDT-PNLF - From WhateverGreen, fixes backlight control
- SSDT-ALS0 - From OpenCorePkg Creates a fake Ambient Light Sensor, which is needed for the screen to dim when disconnected from the battery.
- SSDT-SDMMC - Adds the missing SD card device in the DSDT
- SSDT-XOSI - If checking Windows 7 or 8, check if it's Darwin as well.
- SSDT-BRTK - Sends PS2 Commands when brightness keys are pressed.
- Broken w/ Clover as OSID gets mangled with _OSI to XOSI.
- Thanks to everyone in r/Hackintosh's Discord Server. They helped out a ton.
- Authors of the Kexts, drivers, and scripts used.
- Dhinak
- Landonh12