The app is finished.
After running it automatically get the display data from the first display.
If you want to make a patch for the second, change the number above on 2 instead of 1 and press the set display data button.
If you have a second screen it will now get the required data.
Use DarwinDumper (2.7.6 or better) to get your EDID.
Open the EDID.hex file with the open button.
Select the Apple Display type to emulate.
Press the Make button.
Now on your desktop you will get the following new files:
- A displayoverride for your display which is patched (probably don't want to use this).
- A EDID binary which is patched (handy for 2nd check with edie-decode).
- DisplayMergeNub.kext auto tailored for your config (probably want to install this).
EDIT: New version V1.1
- Modified driver creation to use the new DisplayMergeNub
- Fixed a bug to get 2nd / 3rd / etc display with button (caused crash)
- Added basic params override for display to be set as LCD
- Fixed Info.plist creation code
- Fixed OSBundleLibraries in Info.plist generation
- Fixed driver file copy bug in case of spaces in path
- Added Apple LED Cinema display data and option
- Added option for only EDID injection (unpatched)
- Added support for the display classes AppleDisplay and AppleBacklightDisplay (for some notebooks)
- Added IODisplayPrefs check in DisplayMergeNub.kext
- Added build target for DisplayMergeNub.kext
- Added IODisplayPrefs key in FixEDID for matching on that key
- Added optimization for multiple monitors (identical), now you can override each display, even on multiple GPU's individually
- Fixed a mistake in just edid override
- Added override for IODisplayPrefs (check/don't check)
- Added used display class for the selected monitor auto detection (AppleDisplay/AppleBacklightDisplay)
- Updated DisplayMergeNub.kext for handling boolean for IODisplayPrefs use or not
- Recompiled 32-bit kext binary for 10.5 and above
- Recompiled 64-bit kext binary for 10.6 and above
- Merged both binaries in one universal binary so the kext now works on 10.5 and better
- Added hex2int conversion in ObjC manner (thanks to
Marchrius for the hex2int routine)
- Changed code to only parse vendor and device once and then convert to int and set the decimal value
- So thanks to Marchrius setting the vendor and device values is a lot faster now
- Added version override to EDID V1.4 (fixes some issues)
- Added option for adding / fixing monitor ranges descriptor (missing in some EDID's but required by EDID V1.3 or V1.4)
- Option for adding / fixing monitor ranges is by default enabled but can be disabled by unchecking the checkbox
- Disabled checkbox for monitor range patch by default (patch can be enabled by clicking on the checkbox)
- Rewrote the routine for getting the IODisplayPrefs key and setting the vendor and device id in both decimal and hexadecimal (thanks to Marchrius for supplying the faster routine, I modified it slightly for multiple displays) it now gets the vendor and device id from the IODisplayPrefs key instead of running 2 tasks for getting them. It also is now NSTask and NSPipe based (thanks again to Marchrius). It really is about 4 times faster.
- Made override for monitor ranges more generic, it should now work on any display
- List with all the displays implemented from which you can choose (credits: Marchrius)
- Reads only once the displays unless refresh is clicked (credits: Marchrius)
- Faster setting of display data (credits: Marchrius)
- New UI (credits: Marchrius)
If you have Monitor_Apple.kext or DisplayMergeNub.kext installed and which to patch, remove the kext in /S/L/E and caches, reboot, run DarwinDumper and then run the app, otherwise the display values will be wrong...
Enjoy and please give me feedback
Source is included