Jump to content

FixEDID V2.3.2, Application to generate overrides automatically for Apple Displays

FixEDID Display EDID iMac Cinema HD Thunderbolt MacBook MacBook Air HiDPI scale-resolutions

  • Please log in to reply
258 replies to this topic

#1
Andy Vandijck

Andy Vandijck

    InsanelyMac Deity

  • Coders
  • 1,619 posts
  • Gender:Male
  • Location:Tienen
  • Interests:Programming stuff for Mac OS X...
    Hacking...
    Hard rock (also really big Metallica...

*
POPULAR

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.
In DarwinDumper (2.9.1 or better) open EDID.bin, for older 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
EDIT: 1.1b
- Fixed OSBundleLibraries in Info.plist generation
EDIT: 1.2
- 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)
EDIT: 1.3
- Added support for the display classes AppleDisplay and AppleBacklightDisplay (for some notebooks)
EDIT: 1.4
- 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
EDIT: 1.5
- 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
EDIT: 1.5b
- 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
EDIT: 1.6
- 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
EDIT: 1.7
- 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
EDIT: 1.8
- 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
EDIT: 1.9
- 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)
EDIT: 2.0
- Added display class override to kext
- Added display class override to app
=> This means you can make an AppleBacklightDisplay from an AppleDisplay and vice versa
EDIT: 2.1
- Added signed kext
- Added signed app (all now GateKeeper compliant)
- Added scaled resolutions adding for HiDPI support
- More bugfixes
EDIT: 2.2
- Added help function
- Added remove button for resolutions
- Added credits file
- Added color profile only patch
- Added adding / fixing monitor ranges on no patch and color profile only
- Added quick buttons for displays (click menu of display models, type 1 to 7)
- Added quick buttons for Display Class (click menu of class, type A or B)
- Added quick buttons for Display Override Class (click menu, type C or D)
* For using HiDPI resolutions, use RetinaDisplayMenu, attached below...
EDIT: 2.2.1
- Changed synthesized method to direct binding (enables building of 32+64 bit app and adds support for building for versions less than 10.7.X)
- Rebuilt FixEDID with a 32+64 bit universal app
EDIT: 2.3
- Added iMac Retina panel (iMac14,2)
- Added aspect ratio description after panel names (16:10 or 16:9)
- Bugfix related to fixing monitor ranges on "Only Inject EDID Unpatched" and "Only Patch Color Profile"
EDIT: 2.3.1
- Added MacBook Air panel (MacBookAir5,1)
- Added scaleable UI
- Added fullscreen app support
EDIT: 2.3.2
- Added aspect ratio detection based on first detailed descriptor of the EDID on open of the EDID binary (based on detailed resolution)

EDIT: 2.3.2 (2nd build)
- Fixed aspect ratio detection, there was a resolution issue and I reimplemented detection based on GCD value (greatest common divisor)

NOTE: For 32 bit and 64 bit kext it will need to be rebuilt using an older version of Xcode... Xcode 5.X's clang compiler won't build 32 bit kexts

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 :D

Attached Files



#2
artur-pt

artur-pt

    InsanelyMacaholic

  • Local Moderators
  • 4,556 posts
  • Gender:Male
  • Location:Portugal
  • Interests:TechManiaco

hello Andy

 

when i try to open the edid.bin file extracted with darwin dumper

 

it give me incorrect file header

 

Attached File  EDID.bin.zip   267bytes   65 downloads

 

 

thanks



#3
Andy Vandijck

Andy Vandijck

    InsanelyMac Deity

  • Coders
  • 1,619 posts
  • Gender:Male
  • Location:Tienen
  • Interests:Programming stuff for Mac OS X...
    Hacking...
    Hard rock (also really big Metallica...

hello Andy

when i try to open the edid.bin file extracted with darwin dumper

it give me incorrect file header

attachicon.gifEDID.bin.zip


thanks


hello Andy

when i try to open the edid.bin file extracted with darwin dumper

it give me incorrect file header

attachicon.gifEDID.bin.zip


thanks

Take a peek at the screenshot.
It's hex data, not EDID binary
Try the attached one (I used a hex editor to put it right - damn... thought it put it in binary).
So extra step needed... copy in 0xED the right parts to the left parts and save it up... :o
EDIT: This terminal command can be used to convert it:
xxd -r -p EDID.bin > EDID.hex
Then opening the EDID.hex
Didn't know DarwinDumper didn't use flat binary format... doh... lol
EDIT2: DarwinDumper 2.7.6 will also be able to dump EDID in binary format. Thanks Blackosx... :D

Attached Files



#4
manor

manor

    InsanelyMac Sage

  • Members
  • PipPipPipPipPip
  • 318 posts
  • Gender:Male

Ok finally I got in desktop area EDID-4c2d-79d.bin I am using chalomon boot loder how to use it.

thank you.



#5
Andy Vandijck

Andy Vandijck

    InsanelyMac Deity

  • Coders
  • 1,619 posts
  • Gender:Male
  • Location:Tienen
  • Interests:Programming stuff for Mac OS X...
    Hacking...
    Hard rock (also really big Metallica...

ok finally I got in desktop area EDID-4c2d-79d.bin I am using chalomon boot loder how to use it.
thank you.

Install the kext it makes on the desktop (Monitor_Apple.kext) in /S/L/E and clear caches.
After reboot it should work ;)

#6
manor

manor

    InsanelyMac Sage

  • Members
  • PipPipPipPipPip
  • 318 posts
  • Gender:Male

I search google I can't find this Monitor_Apple.kextwhere can I put edid file ?thanks andy.



#7
Andy Vandijck

Andy Vandijck

    InsanelyMac Deity

  • Coders
  • 1,619 posts
  • Gender:Male
  • Location:Tienen
  • Interests:Programming stuff for Mac OS X...
    Hacking...
    Hard rock (also really big Metallica...

I search google I can't find this Monitor_Apple.kextwhere can I put edid file ?thanks andy.

It gets made on the desktop and you should install it in.
/System/Library/Extensions.
After you clicked the make button...

#8
manor

manor

    InsanelyMac Sage

  • Members
  • PipPipPipPipPip
  • 318 posts
  • Gender:Male

ok thankyou.



#9
manor

manor

    InsanelyMac Sage

  • Members
  • PipPipPipPipPip
  • 318 posts
  • Gender:Male

Thanks Andy its worked 4me.

GeForce GTX 480:

 

  Chipset Model: GeForce GTX 480

  Type: GPU

  Bus: PCIe

  Slot: PCIe x16-1

  PCIe Lane Width: x16

  VRAM (Total): 1536 MB

  Vendor: NVIDIA (0x10de)

  Device ID: 0x06c0

  Revision ID: 0x00a3

  ROM Revision: 70.08.29.00.30

  Displays:

Cinema HD:

  Display Type: CRT

  Resolution: 1920 x 1080 @ 60Hz (1080p)

  Pixel Depth: 32-Bit Color (ARGB8888)

  Display Serial Number:

  Main Display: Yes

  Mirror: Off

  Online: Yes

  Rotation: Supported

  Television: Yes

S27A950D:

  Resolution: 1920 x 1080 @ 60Hz (1080p)

  Pixel Depth: 32-Bit Color (ARGB8888)

  Mirror: Off

  Online: Yes

  Rotation: Supported

  Television: Yes

I have to enter one more edid I have 2 display I don't know how to any way thanks its worked.



#10
Andy Vandijck

Andy Vandijck

    InsanelyMac Deity

  • Coders
  • 1,619 posts
  • Gender:Male
  • Location:Tienen
  • Interests:Programming stuff for Mac OS X...
    Hacking...
    Hard rock (also really big Metallica...

Thanks Andy its worked 4me.

575]GeForce GTX 480:


575] Chipset Model: GeForce GTX 480

575] Type: GPU

575] Bus: PCIe

575] Slot: PCIe x16-1

575] PCIe Lane Width: x16

575] VRAM (Total): 1536 MB

575] Vendor: NVIDIA (0x10de)

575] Device ID: 0x06c0

575] Revision ID: 0x00a3

575] ROM Revision: 70.08.29.00.30

575] Displays:

875]Cinema HD:

875] Display Type: CRT

875] Resolution: 1920 x 1080 @ 60Hz (1080p)

875] Pixel Depth: 32-Bit Color (ARGB8888)

875] Display Serial Number: CY6420Z6UG1

875] Main Display: Yes

875] Mirror: Off

875] Online: Yes

875] Rotation: Supported

875] Television: Yes

45]S27A950D:

45] Resolution: 1920 x 1080 @ 60Hz (1080p)

45] Pixel Depth: 32-Bit Color (ARGB8888)

45] Mirror: Off

45] Online: Yes

45] Rotation: Supported

45] Television: Yes


I have to enter one more edid I have 2 display I don't know how to any way thanks its worked.
Copy the driver you made in e.g. documents.
Set the 2nd display. 2 and click set button.
If the values change open the 2nd EDID.
Set the display type.
Click make again.
Open the Info.plist in the kext.
Copy the key under IOKitPersonalities.
Add it as a second key under IOKitPersonities in the Info.plist in e.g. documents folder's Monitor_Apple.kext.
Install the driver and reboot.
In future releases I may make multiple monitors automatic... ;)

#11
Andy Vandijck

Andy Vandijck

    InsanelyMac Deity

  • Coders
  • 1,619 posts
  • Gender:Male
  • Location:Tienen
  • Interests:Programming stuff for Mac OS X...
    Hacking...
    Hard rock (also really big Metallica...
The handy part of the Monitor_Apple.kext is that it can override individual displays.
So you can set a different EDID and even Apple model for each display.
E.G. iMac for the first, Thunderbolt for the second ;)

#12
wastez

wastez

    InsanelyMac Geek

  • Members
  • PipPipPip
  • 159 posts
  • Gender:Male

The kext is not working on my Laptop.

With the displayoverride it works.

 

Can you tell me what happended?

 

Needs the last bin to be copied on a special place or something else?

 

Only the kext is not working.

 

Or do i´ve to inject a special EDID via bootloader?



#13
Andy Vandijck

Andy Vandijck

    InsanelyMac Deity

  • Coders
  • 1,619 posts
  • Gender:Male
  • Location:Tienen
  • Interests:Programming stuff for Mac OS X...
    Hacking...
    Hard rock (also really big Metallica...

The kext is not working on my Laptop.
With the displayoverride it works.

Can you tell me what happended?

Needs the last bin to be copied on a special place or something else?

Only the kext is not working.

Or do i´ve to inject a special EDID via bootloader?

Could you attach .ioreg file from IORegistryExplorer and your Monitor_Apple.kext generated?
I'll take a peek ;)

#14
wastez

wastez

    InsanelyMac Geek

  • Members
  • PipPipPip
  • 159 posts
  • Gender:Male

Here it is



#15
Andy Vandijck

Andy Vandijck

    InsanelyMac Deity

  • Coders
  • 1,619 posts
  • Gender:Male
  • Location:Tienen
  • Interests:Programming stuff for Mac OS X...
    Hacking...
    Hard rock (also really big Metallica...

Here it is

Ok. I'll look at it when I get home.
Probably AppleBacklightDisplay class instead of AppleDisplay.
If this is the case I'll fix your kext and add an option for it in V1.1 of the app ;)

#16
wastez

wastez

    InsanelyMac Geek

  • Members
  • PipPipPip
  • 159 posts
  • Gender:Male

If you mean ioclass it´s AppleDisplay

 

Some things are not integrated in the EDID of this display. (Serialnumber for example)

 

Could this cause the problem?


EDIT: Seems IOClass is wrong in the kext, it is AppleUSBMergeNub



#17
Andy Vandijck

Andy Vandijck

    InsanelyMac Deity

  • Coders
  • 1,619 posts
  • Gender:Male
  • Location:Tienen
  • Interests:Programming stuff for Mac OS X...
    Hacking...
    Hard rock (also really big Metallica...

If you mean ioclass it´s AppleDisplay

 

Some things are not integrated in the EDID of this display. (Serialnumber for example)

 

Could this cause the problem?


EDIT: Seems IOClass is wrong in the kext, it is AppleUSBMergeNub

IOClass is the injector (AppleUSBMergeNub).

IOProviderClass is the class it matches on (AppleDisplay).

 

I fixed up the kext for both your displays.

So other people: Here is an example of 2 displays injection.

I also took the liberty of correcting your internal EDID a bit more (monitor range info for example).
Both are now EDID 1.4

 

Remove the display override and install the kext, correct the ownership and permissions, remove the kernelcache and Extensions.mkext and reboot.

It should work now for both your displays (the Dell one becomes Thunderbolt display and the internal one MacBook Color LCD).

 

Let me know ;)

I manually put the parameters in the app (this is possible too) for adding the Thunderbolt display info... (see screenshot)

Attached Files



#18
wastez

wastez

    InsanelyMac Geek

  • Members
  • PipPipPip
  • 159 posts
  • Gender:Male

Same like before.... Nothing detected.....



#19
Andy Vandijck

Andy Vandijck

    InsanelyMac Deity

  • Coders
  • 1,619 posts
  • Gender:Male
  • Location:Tienen
  • Interests:Programming stuff for Mac OS X...
    Hacking...
    Hard rock (also really big Metallica...

Same like before.... Nothing detected.....

Not even the external display?
That's very odd.
For some reason the kext doesn't seem to load and thus the injection doesn't work.
Did you try booting ignoring caches?
Is it correctly in /System/Library/Extensions?

#20
wastez

wastez

    InsanelyMac Geek

  • Members
  • PipPipPip
  • 159 posts
  • Gender:Male

Also the external display is not detected.

I also tried to load it without kextcache, it´s the same.

The kext is in /S/L/E and i did fix the permissions and rebuild the kextcache...

 

Also the external isn´t detected.....

 

Never had such a thing until now.


Do you have a idea what could be the problem????


I´m using more of your mergers (DVD, Bluetooth) on this machine without problems....







Also tagged with one or more of these keywords: FixEDID, Display, EDID, iMac, Cinema HD, Thunderbolt, MacBook, MacBook Air, HiDPI, scale-resolutions

  Topic Stats Last Post Info

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

© 2014 InsanelyMac  |   News  |   Forum  |   Downloads  |   OSx86 Wiki  |   Mac Netbook  |   PHP hosting by CatN  |   Designed by Ed Gain  |   Logo by irfan  |   Privacy Policy