Jump to content

pentothal

Members
  • Content Count

    69
  • Joined

  • Last visited


Reputation Activity

  1. Like
    pentothal reacted to iWin32 in [GUIDE] How to enable custom resolution for first-gen Intel HD Graphics (0042:8086 and 0046:8086)   
    How to Enable Resolution on Intel HD Graphics (0046:8086 and 0042:8086)


     
    Background Info:
    It has been said since the dawn of time: “Ye who build a Hackintosh must select a Graphics Card that ye can find in a real Mac to ensure 100% compatibility.” However, it appears a very rare exception is ye…I mean the infamous Intel HD Graphics. These first-gen integrated Graphics Cards found on Core iXXX processors are the first to use the new I/O design, integrating the Northbridge into the CPU itself. The Intel HD Graphics chips have been used in real Macs before, like the Mid-2010 MacBook Pro. The problem: Every Mac that has the integrated Graphics chip also has a dedicated Graphics Card, like the NVIDIA GeForce GT 330M on the same MacBook Pro model. Therefore, it’s not that Apple didn’t write drivers for the Intel HD Graphics, but their drivers are, well, buggy on PCs, resulting in either a frozen or blank screen once the framebuffer Kext loads.
     
    People have worked out a way to enable partial Quartz Extreme in Snow Leopard 10.6.7, but even that is very buggy. Try to launch anything Full Screen, get greeted with a surprise Kernel Panic. There was no hope as to how to get full resolution…until now!
     
    Manor had thought he had found a way to enable full resolution on Intel HD Graphics, but what he didn’t realize was that his VESA mode tables in his Video BIOS supported his resolution. Everyone that his “fix” worked for them also had it supported in their Video BIOS. Everyone else likely had the maximum of 1024x768 in their mode tables, and therefore couldn’t work.
     
    Since then, people had suggested patching the Video BIOS on the fly with the Resolution module… a module based off of the 915resolution Linux hack that also patches NVIDIA and some ATI cards. However, by itself, it doesn’t do a thing. Yet, a recent patch to the module enables support for the Intel HD Graphics! This isn’t a simple one-for-all compile, however. Why? The patch is full of hacks, and it requires you to insert your DTD, an 18-byte sequence extracted from your EDID, into the source code directly. You need a little bit of programming knowledge, but it’s so trivial that just about anyone with little to no programming knowledge (like me) could patch.
     
    So, what do you need to get this patch to work?
     
    Requirements:
    Access to Mountain Lion with XCode installed and network access (to compile Chameleon)
    Access to Windows
    Extracted EDID of the computer in question UPDATE: If you want, you can try RemC's module in this post; it should be universal and not require any source code patching on your part. Look at the second post: http://www.insanelym...6/#entry1877529
    A flash drive (optional, even an old 256MB flash drive would do)

    You’ll also need to download these tools:
    DTD Calculator – http://www.clevertec...roductsfree.htm
    Attached Resolution source code IMPORTANT UPDATE (4/4/2013): If you plan on enabling QE/CI (see below), don't bother with any form of the resolution module. The patched framebuffer will allow custom resolution without the resolution module. The Resolution module is only needed if you want custom resolution on your boot screen. Otherwise, don't mess with it as it may cause distortions. The guide is below is kept for legacy purposes/for those who want to create their own Resolution Module.

    How to Extract your EDID:
    This is pretty self-explanatory in another thread: http://www.insanelym...s/#entry1392033
     
    Go to Solution B. I prefer using the Windows way, but the link to the utility there is dead. Go here: http://www.eldim.fr/...lite-free-tools and click the link that reads “EDID Viewer utility”. Please note, though, and I cannot stress this enough: THIS NEEDS TO BE RUN ON THE COMPUTER WITH INTEL HD GRAPHICS INSIDE. THIS WILL EXTRACT THE EDID VALUE FROM YOUR MONITOR, SO YOU NEED TO RUN IT ON THAT COMPUTER ONLY! (Sorry for shouting, but EDID varies from monitor to monitor, even LCD monitors from the same laptop model with the same max resolution. Using someone else’s EDID is like using someone else’s DSDT.aml file. Thus, run only on your computer with Intel HD Graphics on it.)
     
    Save your EDID raw data somewhere, or copy your EDID to your clipboard if you’re using the same computer. Now that you’ve got that saved, you’re ready to go to step 1.
     
    Step 1 – “Convert” EDID to DTD:
    I put the word convert in quotation marks because we really aren’t converting it. All we’re doing is extracting specific 18 bytes from the EDID raw data. Launch DTD Calculator and a text editor. For our purposes, Notepad will do. When you copy the raw data from ELDIM, it’ll look something like this:

    0x00 00 FF FF FF FF FF FF 00 30 E4 AC 02 00 00 00 00 0x10 00 14 01 03 80 22 13 78 0A C1 25 9D 5F 5B 9B 27 0x20 19 50 54 00 00 00 01 01 01 01 01 01 01 01 01 01 0x30 01 01 01 01 01 01 12 1B 56 78 50 00 0E 30 20 20 0x40 24 00 58 C2 10 00 00 19 00 00 00 00 00 00 00 00 0x50 00 00 00 00 00 00 00 00 00 00 00 00 00 FE 00 4C 0x60 47 20 44 69 73 70 6C 61 79 0A 20 20 00 00 00 FE 0x70 00 4C 50 31 35 36 57 48 32 2D 54 4C 51 42 00 C1
     
    You need to have the raw hex data in a single line with only a space to separate them. Using mine, it then should read like this:
     

    00 FF FF FF FF FF FF 00 30 E4 AC 02 00 00 00 00 00 14 01 03 80 22 13 78 0A C1 25 9D 5F 5B 9B 27 19 50 54 00 00 00 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 12 1B 56 78 50 00 0E 30 20 20 24 00 58 C2 10 00 00 19 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FE 00 4C 47 20 44 69 73 70 6C 61 79 0A 20 20 00 00 00 FE 00 4C 50 31 35 36 57 48 32 2D 54 4C 51 42 00 C1
     
    In DTD calculator, click the Interpret EDID tab, and paste the resulting string in there. And then click Interpret EDID.
     
    It should say the DTD on the bottom right. Double click it. You may get a warning that reads “Entered DTD and Generated DTD don’t match”. Ignore it. To make sure you’ve got it right, or if there is more than one, the right should have a value under H Active Pixels and V Active Lines. These values should be your resolution.
     
    Now click the Calculation tab. On the bottom you’ll see the calculated DTD. Click in the text box. Press Ctrl+A to select the text and Ctrl+C to copy it to the clipboard. This is the DTD. Here is my DTD as an example:
    12 1B 56 78 50 00 0E 30 20 20 24 00 58 C2 10 00 00 18
     
    Paste it into a notepad window and save it as a text document. Make sure you’ll be able to access this on the machine where you’ll be compiling Chameleon.
     
    Speaking of which, we now need to move onto the next step, which happens to be compiling Chameleon.
     
    Step 2: Compile Chameleon with Modified Resolution Code
     
    Just like its mother, 915resolution, the Resolution module will modify our VBIOS on the fly to allow us to select a different resolution from the VESA tables. Therefore, before we compile, we need to modify the code. Thankfully (with many thanks to InsanelyMac User and Chameleon developer orlian, as well as Chameleon developer dmazar), we can patch use already modified code. However, we still need to replace the present DTD with ours. Remember, as this is from EDID, it will vary from monitor to monitor. But first, we need to download and clean up Chameleon’s source code. To do so, download XCode on Mountain Lion, and install command line tools. You can use an already existing hackintosh with internet, a real Mac, or, like me, use a VMware virtual machine.
     
    Once you have XCode installed, open a terminal window (don’t freak out if you’ve never used command line before; these commands are safe) and type the following commands:

    mkdir chameleon-imod cd chameleon-imod svn co http://forge.voodooprojects.org/svn/chameleon/trunk/ cd trunk make clean
     
    If all goes well, there should be a folder called “chameleon-imod” in your home folder. In there, should be only one folder called trunk. Inside that folder should be all sorts of file, including an XCode project called Chameleon. Navigate further into i386 > modules. This contains the source code for the individual Chameleon modules. Delete the folder called Resolution and empty the trash. Then, replace it with the attached Resolution source code.
     
    Resolution.zip
     
    Now, in the Resolution folder, open the file called 915resolution.c. This will open an XCode Window and navigate to line 32. The code should be:

    map = open_vbios(CT_UNKNOWN); // if(map) { unlock_vbios(map); char* bytes = (char *)VBIOS_START; int patchlocation = 0x0254; verbose("Addr: %X Before patch: %x - ", patchlocation, bytes[patchlocation] ); bytes[patchlocation] = 0x8A; verbose("after patch: %x \n", bytes[patchlocation++] ); bytes[patchlocation++] = 0x25; bytes[patchlocation++] = 0xA0; bytes[patchlocation++] = 0x20; bytes[patchlocation++] = 0x51; bytes[patchlocation++] = 0x84; bytes[patchlocation++] = 0x1A; bytes[patchlocation++] = 0x30; bytes[patchlocation++] = 0x30; bytes[patchlocation++] = 0x40; bytes[patchlocation++] = 0x36; bytes[patchlocation++] = 0x00; bytes[patchlocation++] = 0x30; bytes[patchlocation++] = 0xBE; bytes[patchlocation++] = 0x10; bytes[patchlocation++] = 0x00; bytes[patchlocation++] = 0x00; bytes[patchlocation++] = 0x1E;
     
    This is the portion we need to modify to match our DTD. Every byte XX in our DTD is read by the source code as bytes[patchlocation++] = 0xXX;
     
    Therefore, in my DTD code, 0x8A becomes 0x12, 0x25 becomes 0x1B, 0xA0 becomes 0x56, etc.
     
    Once that’s modified, save it and exit XCode. We’re now ready to compile Chameleon. Navigate back to the terminal window and type:
     

    make
     
    I know it’s a pain we have to compile all of Chameleon when we only need to compile the resolution module, but we can’t just type make in the directory of the resolution module source code; I’ve tried it and it doesn’t do anything.
     
    Once that’s taken care of, navigate back up to the trunk directory, and in the sym folder, should be the i386 folder of Chameleon binaries. If you’re going to do step three, copy this back to a Windows computer. I recommend compressing it into a zip file first if you do that. If not, go straight to step 4.
     
    Why am I suggesting you don’t have to do step 3?
     
    Step 3: Install Chameleon to a test flash drive (optional)
    This is not required, but I do recommend you do this. Why? There isn’t any reason to believe you can’t simply copy the resulting Resolution.dylib to /Extra/modules/ folder. However, if something went wrong and the computer can’t boot due to wrong resolution/poor timings, the resolution module is only present on the Flash Drive and you can simply reboot off of the hard drive without issues and try compiling again. If you skip step 3, though, you’re stuck until you boot without the module. Therefore, I recommend you install Chameleon to the flash drive for testing purposes. Once you go into Windows, I’ll be showing you a somewhat new way to install Chameleon using Clover’s Win32 tools.
     
    Download the package called Win_USBTools-Fat32_Clover_v2_rL954.zip from here: http://www.osx86.net..._efi_tools.html
     
    Extract the archive inside there called USBTools-Boot1f32.zip. Be sure to back up everything on your flash drive that you need. We’re going to format it with the tool HPUSBFW.EXE. Run it as administrator, select your flash drive, and tick quick format. Make sure it’s set to format it to FAT32. Click start. Confirm you want to continue and let it do its thing.
     
    Once that’s done, and this is important, unplug it (don’t use safely remove hardware), and plug it back in.
     
    Next, open a command prompt in the extracted directory as administrator, and type:
     

    BootUSB.bat X:
     
    Where X is the drive letter of your flash drive. If it completes without errors, do the same replug method as before.
     
    Finally, extract our compiled binaries. Copy the file “boot” to the root directory of the flash drive and create an Extra folder. If you need to copy any contents from your own Extra folder (especially true if FakeSMC.kext is inside /Extra/Extensions and not /System/Library/Extensions), do so now. However, be sure to run create a modules folder inside the Extra folder and copy “Resolution.dylib” in that modules folder.
     
    Step 3a: Testing
    Once that’s done, reboot off of the flash drive. If there was a theme inside your Extra folder, the VBIOS patch should be noticeable from the GUI. If there isn’t a theme installed, or the resolution still appears form the GUI as 1024x768, type at the boot prompt “?video” (without quotes) to make sure that the resolution is listed in the VBIOS. If it isn’t listed there, something went wrong. It should patch an already present resolution. In my case, it was 800x600.
     
    If your resolution is listed, try typing “Graphics Mode”=”XxYx32” (WITH Quotes, where X and Y are your resolution values, i.e. 1366x768x32) with any other boot flags you need to successfully boot OS X. If all goes well, you should see full resolution. If something looks funny, but the resolution is correct, then the timings are wrong. Make sure that the DTD was copied correctly in step 2 and try compiling again.
     
    If, however, it isn’t listed, boot using the flags “-v Wait=Yes” (without quotes), and before it loads OS X, you’ll see a screen with all startup logs by Chameleon. Scroll down (With theme/GUI, use arrow keys, without theme, space bar to go to next page, p to go to previous page) to where it says “Resolution.dylib by Unknown loaded”. This is the log of Chameleon loading the resolution module. If it shows any errors, take a screenshot of the log and feel free to upload an image here.
     
    If you’ve got your full resolution within Mac OS X, you’re ready to install the Resolution module to your Chameleon installation.
     
    Step 4: Install the Resolution Module to your existing Chameleon/OS X installation
    Copy the file Resolution.dylib from your flash drive (or your compiled binary extracted from the zip folder) to /Extra/modules. If there isn’t a “modules” folder in the /Extra folder, create it.
     
    Also, be sure to modify org.chameleon.Boot.plist to have these lines in:
     
     

    <key>Graphics Mode</key> <string>1366x768x32</string>
     
     
    Of course, be sure to change the resolution to match your own if it’s different.
     
    Once that’s done, reboot and you’ll have your resolution in OS X. If something goes wrong, use the same steps in step 3a to debug the error.
     
    Step 5: Enabling Acceleration in Mac OS X
    Mountain Lion TBD. UPDATE (2/5/2013): Mountain Lion now is capable of enabling Core Image on our Graphics Card. Still no Quartz Extreme, but if you try it out, check out Part 2 in this post: http://www.insanelym...s/#entry1885544 Thanks goes to GhostRaider for the guide, and Mehdymehdy for his discovery!
    MAJOR UPDATE (3/10/2013): We have made history: a patch for the Mountain Lion Framebuffer was made, and it works now on our machine. Look at this thread: http://www.insanelym...-fixed-sl-1068/ and this post: http://www.insanelym...20#entry1895588 Special thanks to verteks and warraisraw for their discoveries!!
     
    However, if you don’t have a problem using an older version of OS X, follow these guides to enable partial QE/CI in Snow Leopard:
     
    http://www.insanelym...0/#entry1504066
     
    http://www.insanelym...d/#entry1827443
     
    And that’s it! I hope this guide has been of use to you, and that you’ll be able to use your Intel HD Graphics once and for all!
     
    Special Thanks To:
    orlian
    dmazar
    slice
    and last, but certianly not least, everyone who helped contribute to this VoodooLabs thread: http://forum.voodoop...4.msg13045.html

  2. Like
    pentothal reacted to GhostRaider in AppleIntelHDGraphicsFB fixed (SL 10.6.8)   
    Do you have access to another computer? I was thinking that you should connect your hackintosh using VNC. That way you can analyze what IORegistry and the Intel HD Graphics is outputting. The good thing is that the framebuffer does not freeze your computer. I want to see if your display is being detected at all. If it is detected, then yes it will most likely be a EDID issue or you must enable duallink somehow. If its not detected, then the connection might not be LVDS.
     
    I used to be in a situation like this before. I remembered that if I didn't have Natit loaded, the screen will show the spinning wheel spinning forever, yet my desktop displays in VNC. In other words when all of the kexts got loaded, my screen was lost. I fixed this issue though by adding os-info on my DSDT.
  3. Like
    pentothal reacted to kozlek in HWSensors   
    I want to introduce new "old" opensource fakemsc project with hardware monitoring plugins with new GUI utility - HWMonitor.
     

     
    Please, leave requests and issues on project's home on GitHub: https://github.com/kozlek/HWSensors
     
    Use GitHab utility or other git tool to clone repository on your computer. Project includes sources, installer and compiled binaries. If you want manually install kexts they are located in "Binaries" folder. Installer package located in "Installer" folder.
     
    Project will not be in existence without revolutional SMC emulator (fakesmc) by netkas. Special thanks to slice and user-sse2 for plugins. Big part of this project based on OpenHardwareMonitor opensource project by Michael Möller.
     
    About values modifiers in SuperIOSensors (work for all inputs, not only voltages): http://www.insanelym...dpost&p=1808223

    Short description how to get gain values for different voltages (post 264):
    http://www.insanelym...dpost&p=1809869

     

  4. Like
    pentothal reacted to ebmesnow in AppleIntelHDGraphicsFB fixed (SL 10.6.8)   
    I have a Toshiba M11 with exactly the same problem as Pentothal. The screen is LVDS but is not sending an EDID out, if you look under the frame buffer in ioreg with IntelHDGraphicsFB loaded no displays are present. I have tried injecting the EDID through DSDT, Natit and monitor overrides, nothing works. Some of the other Intel framebuffers have EDID override code in them, unfortunately although IntelHDGraphicsFB does have the code it is not used, did try to call it by manually altering the code but that just caused a kernel panic.
     
    I think Pentothal is correct, for us because EDID is not being sent the Framebuffer can't determine the correct timing and ignores the screen
  5. Like
    pentothal reacted to ErmaC in Clover v.2 Instructions   
    CustomEDID



    It is needed in two cases


    1. There is non-DDC monitor.
    2. This is DDC_monitor, but Apple's driver can't get EDID from them. While BIOS - yes.
    For the second case we just set InjectEDID = yes
    For the first case we should also write CustomEDID obtained from anywere into config.plist.

    You may create your best custom EDID by ViewSonic EDID editor
    just port it into OSX by Wineskin
    This is my result (a file from lvs1974)

    EDID sample to load by the program

    128 BYTES OF EDID CODE: 0 1 2 3 4 5 6 7 8 9 ________________________________________ 0 | 00 FF FF FF FF FF FF 00 0D AF 10 | 26 15 00 00 00 00 09 10 01 03 20 | 80 21 15 78 0A C6 A9 9A 57 4E 30 | 85 26 1E 50 52 00 00 00 01 01 40 | 01 01 01 01 01 01 01 01 01 01 50 | 01 01 01 01 BC 1B 00 A0 50 20 60 | 17 30 30 20 36 00 4B CF 10 00 70 | 00 18 00 00 00 FE 00 4E 31 35 80 | 34 49 32 2D 4C 30 32 0A 20 20 90 | 00 00 00 FE 00 43 4D 4F 0A 20 100 | 20 20 20 20 20 20 20 20 00 00 110 | 00 FE 00 4E 31 35 34 49 32 2D 120 | 4C 30 32 0A 20 20 00 88
  6. Like
    pentothal reacted to CharredPC in Fixing Scrambled,Stretched, or Wrong Resolution Laptop Display Problems   
    Most of this information I have previously posted, but was scattered throughout multiple threads. I've gathered it all here to provide a comprehensive solution in one place. I've also given the option of skipping use of SwitchResX altogether, as it's not freeware, and some people were confused about the continued need for it once the fix was in place. If you have anything you think needs adding or clarifying, please don't hesitate to reply or message me directly.
     
    Does your laptop have a 'messed up' display part or all the time? Are you missing some or all proper resolutions? Is everything stretched out, or maybe your screen is even blank*? Here's your likely solution! OSX has a horrible time trying to pick up EDID information from our LCD screens. That's the information it needs to know what timings to use, what resolutions are available, etc. Without it, a lot of us are stuck at the wrong resolution... or worse! Often the problem can be intermittent- for example, the display doesn't work right, but then does after a reboot or two, or randomly.
     
    Most people incorrectly diagnose this as needing different display drivers, and try every strange concoction they can find. Sometimes the alternate / older drivers even seem to work, as they improve the chances of your EDID being picked up. However, this is the wrong solution. If the latest stock drivers give you QE, but the display is weird, stretched, or you're at 1024 x 768... DON'T CHANGE THEM! The issue is NOT actually a driver problem, but an EDID issue. The screen looks wrong simply because OSX doesn't know how to talk to it correctly.
     
    To start off with, we need to acquire your screen's EDID. There's several ways to do it; just choose the one that's easiest for you, or fits your situation best.
     
     
    Solution A; IF YOUR DISPLAY WORKS PROPERLY SOMETIMES (FLAKY EDID PICKUP):
     
    Often when I start OSX, my laptop doesn't show anything on the screen unless I reboot multiple times. In the past, I described it as a "cold boot" problem. With my previous LCD screen, it would boot to a blue screen (or gray in SL). Some others need to reboot once (or more times) to get the correct resolutions listed. If your problem is sporadic, you're in luck; this fix can be completely done within OSX. It can still be confusing, though, so follow closely. The good thing is, you only have to do it once!
     
    1. Reboot, cross your fingers, wiggle your mouse, or do whatever it takes to get your display to show up properly. Again, this only works if resolution and picture are occasionally perfect. We need to be in that mode to continue!
     
    2. Open Terminal, and stretch it as wide as possible. It sounds strange, but I make it about twice as wide as the actual screen. This works around Terminal's truncation limit, so our data isn't cut off. Alternatively, you can use IORegExplorer. Either way will work fine, though the rest of this guide assumes you are using Terminal.
     
    3. Enter ioreg -l and hit enter. This should fill the window will lots and lots of data about your machine.
     
    4. Use Edit -> Find -> Find... to locate IODisplayEDID. If you do not have this listed, STOP HERE. this solution will not work; sorry, your EDID is not being picked up at all, go to Solution B. If this value IS present, continue on.
     
    5. We need the value of IODisplayEDID (will have a long hex data string, like 00ffffffffffff00320c00df0...3A). Select the entire thing, and save it to a text file. Make sure it does not have a $ at the end! If it does, make the Terminal window wider and run ioreg -l again.
     
    6. Reboot, wait a while, or do whatever it takes to boot so the display is NOT right (stretched, wrong resolution, whatever). If your 'bad' display is so bad you cannot use it, first go to System Preferences -> Sharing, checkmark Screen Sharing, and enable a password under Computer Settings. Note the vnc:// address. Using a second computer, connect to the vnc:// address and continue the instructions remotely. If you're using Windows, use TightVNC.
     
    7. Run ioreg -l in Terminal again. If you cannot find IODisplayEDID, or it has a different value, then we're on the right track! This time, locate the DisplayProductID, DisplayVendorID, and IODisplayPrefsKey values. That last one should end in something like AppleBacklightDisplay-756e6b6e-717. Take note of all these. Leave this Terminal window open, so you can grab these values as needed as we continue.
     
    8. Now in Finder, navigate to /System/Library/Displays/Overrides. See if there is a match between a folder name there, and the green part of the IODisplayPrefsKey value. Chances are (unless you've been previously fiddling with SwitchResX) there won't be, so create one on your desktop (you cannot make a new folder in the Overrides directory). For instance, with the above example, the folder we would make would be named DisplayVendorID-756e6b6e.
     
    9. Now open Plist Editor Pro, and paste the following into the lower half of it:
     

    <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>DisplayProductID</key> <integer>1815</integer> <key>DisplayProductName</key> <string>Internal LCD Forced EDID</string> <key>DisplayVendorID</key> <integer>1970170734</integer> <key>IODisplayEDID</key> <data> AP///////wAGEF+cAAAAAAgRAQOAIRV4CunVmVlTjigmUFQAAAABAQEBAQEBAQEBAQEB AQEB3iGgcFCEHzAgIFYAS88QAAAYAAAADwAGECAKCgoKCgoKCgoKAAAA/gBLUzUxNQAx NTRXUDEKAAAA/gBDb2xvciBMQ0QKCgoKAI8= </data> </dict> </plist>
     
    10. After clicking Sync Outline, you should now be able to edit the DisplayProductID, DisplayVendorID, and IODisplayEDID values in the upper window. Don't use the bottom code window, as we need Plist Editor to convert the data strings for us. The IODisplayEDID value is the long hex string we grabbed earlier. The DisplayProductID and DisplayVendorID values are in the ioreg Terminal window we left open.
     
    11. Once done, save the Plist file as anything you like in the DisplayVendorID folder we created on the desktop, and close Plist Editor Pro. Now rename the Plist file using the purple part of the IODisplayPrefsKey, like so: DisplayProductID-717. Make sure there is NO extension, .plist or anything else! Verify and/or correct this by right-clicking on the file and choosing Get Info.
     
    12. Now all that's left is to drag the folder to /System/Library/Displays/Overrides. It should require the Administrator password to proceed. This should create a directory something like /System/Library/Displays/Overrides/DisplayVendorID-756e6b6e/DisplayProductID-717. Reboot, and see if it worked! To verify that the Override loaded, just open Displays in System Preferences. It should say "Internal LCD Forced EDID" whenever the EDID is not found. If your pickup is sporadic, you may have to reboot a few times to make sure it works. Congratulations, your internal display is now 100% functional!
     
     
    Solution B; IF YOUR DISPLAY NEVER WORKS PROPERLY (NO EDID PICKUP):
     
    The challenge here is that OSX refuses to pick up your EDID at all, forcing us to boot to a different operating system altogether to acquire the data we need. This could be easy (if you have a dual boot system) or a bit of a challenge, if you don't. I'll try and cover every possibility here.
     
    The Windows Way:
    Boot to Windows and retrieve your EDID using this. Once you have the EDID saved somewhere you can access (online, text file, USB key, whatever), reboot to OSX. You should now be able to pick up the instructions in Solution A, starting with step 6.
     
    The Linux Way:
    I have not personally tested this yet, but it should work. Boot Ubuntu Linux (a live cd is fine). Open Terminal, make sure you have a working internet connection, and enter sudo apt-get install read-edid. You can now try entering sudo get-edid | sudo parse-edid. If that doesn't show the full EDID hex string, try just sudo get-edid. Once you have the EDID saved somewhere you can access (online, text file, USB key, whatever), reboot to OSX. You should now be able to pick up the instructions in Solution A, starting with step 6.
     
    The DOS Way:
    I've tried this, and it works, though is currently not the most ideal solution. Create a bootable DOS USB key using the instructions here. Once that is done, extract this file and add it to the USB drive. Reboot, and boot off the DOS USB drive. You might have to change the boot order in your bios. Once you're at the command prompt, enter GET-EDID.EXE EDID-OUT. This will create a new file (edid-out, no extension) on your USB drive. Unfortunately, the only way I have found to access the EDID from it is using a hex editor, as it saves it as raw data, not a text file. I have yet to find a simple DOS hex-dump-to-text utility, but if anyone can supply one, I'll create a single *.bat file to do all the work. Once you have the EDID retrieved from the hex editor, you should now be able to pick up the instructions in Solution A, starting with step 6.
     
     
    Solution C; USING SWITCHRESX INSTEAD OF IOREG / TERMINAL:
     
    This could be easier for some people. Once you have your EDID using one of the above methods, boot OSX (using screen sharing, if the screen is unusable) and open SwitchResX. Find the fake display and vendor id's it is using (as in the example above, mine is using /System/Library/Displays/Overrides/DisplayVendorID-756e6b6e/DisplayProductID-717, which seems to be a sort of universal default). Copy that file to your desktop, and rename it to *.plist. Open it with Plist Editor Pro, and add your EDID. If that file isn't there, create it using the directions in Method A. Once done, remove the .plist extension, overwrite the default Override, and reboot.
     
    After you verify the Override is working properly, you CAN get rid of SwitchResX (open Applications, right-click the icon and choose "Move to trash"). It isn't needed anymore. It's a useful tool for setting up an Override, reading your EDID (if OSX has it), or seeing what DisplayVendorID / DisplayProductID path is being used... but once a fix is in place, it's no longer useful. Removing SwitchResX, at least for me, did not affect any of my custom Overrides.
     
     
    Some comments and warnings:
     
    Using someone else's unedited Display Override is a bad idea, just like using someone else's DSDT.aml or toothbrush! Even the same make and model laptops have different LCD screens, so the EDID could be drastically different. At best, you end up with a (more) scrambled screen. At worst, there's a chance you could damage your display.
     
    If your EDID pickup is flaky like mine, OSX will use the created Override only when it can't find the EDID. The down side to this is OSX sees this situation as having two completely separate displays; settings like wallpaper and Color Calibration will be different for each. As long as you have both settings the same, you'll never notice the difference. However, if for example you change your wallpaper while not using the Override, then on next reboot the Override is used, you'll see the older wallpaper. I consider it a small price to pay for a 100% working display, and as far as I know there's no way around it. I personally have my Wallpaper set to rotate, so never notice
     
    Once your Override is created, I recommend backing it up for future use. That way all these steps are not needed the next time you install OSX on the same machine. Think of it as a custom driver; you can just drag and drop the folder into /Overrides/. The Overrides are also version-agnostic, so once created, should be able to be used in 10.5.x and 10.6.x interchangeably. I wish there was a way to have it on /EFI/Extra/, but oh well. OSX updates won't overwrite the Override, so it's only annoying for the first bootup, or for people like me who want every fix completely separate from the OS.
     
    Display Overrides are the only 100% solution I have found for EDID detection problems. There are theoretical ways to add EDID to the Boot.plist or DSDT (AAPL01, EDID) but it seems at least some of the OSX Intel drivers (if not all) ignore this data. It's been theorized that this is due to the display device being 'created' when the GMA video drivers load, thus the early-loading Boot.plist and DSDT data is erroneous at the time they are loaded. Another thought is that since the GMA drivers 'create' their own display device, they don't access or use the DSDT LCD entry / information. Regardless of the reason, I can personally attest to Overrides being the only real working X3100 EDID solution. Of course, if anyone has a proven alternate method, please share.
     
    *For Intel chipsets, if your screen is blank, there's other possibilities besides EDID issues. If your LCD is 1440x900 or higher, you might need the Dual Link DSDT patch. Some people report that removing all video devices but the LCD forces it to be used. Sometimes the LCD is actually working fine, but a backlight issue keeps anything from being seen. And as with my laptop, sometimes it's a combination of any one of these, plus needing a Display Override.
  7. Like
    pentothal reacted to verteks in AppleIntelHDGraphicsFB fixed (SL 10.6.8)   
    alexanderq: HDMI is not supported, the only supported ports are LVDS, VGA and DisplayPort.
     
    GhostRaider: Does it freeze with a spinning wheel? I don't think it has anything to do with os-info, because it does work without AppleIntelHDGraphics.kext. Try this instead: In the Info.pllist of the FB kext, there are properties like FBCompression, Watermarks, etc... Set them all to 0. If it doesn't work, please do a reg dump from Linux.
     
    pentothal: Do what GhostRaider did, try removing AppleIntelHDGraphics.kext.
     
    iWin32: Don't use the Resolution module.
     
    fmac: It won't work for you, your laptop is connected through eDP.
     
    PEOPLE WHO GET A BLACK SCREEN: This means that your laptop is connected through eDP, which is not supported. There is no fix for this.
     
    I'll update my first post once I figure out the freezing problem.
  8. Like
    pentothal reacted to verteks in AppleIntelHDGraphicsFB fixed (SL 10.6.8)   
    alexanderq: You need to edit the os-info.
     
    Editing os-info:
     
    If you are using MBP6,1 smbios the offset is 0x00012644, otherwise it is 0x000126B4. Set the byte at that offset to: 0x01 for LVDS, 0x04 for VGA, 0x10 for DisplayPort. These values can be ORed to get multiple outputs.
  9. Like
    pentothal reacted to GhostRaider in [GUIDE] 1st Generation Intel HD Graphics QE/CI   
    Welcome to the Intel® HD Graphics guide for computers with 1st Generation Intel® Core™ or 2010 Intel® Arrandale processors! Before you begin, you will need to have OS X working properly on your computer before you attempt to enable graphics acceleration. This is to ensure that everything will work out as smoothly as possible. If you do not have OS X on your computer, you can find more information about how to install OS X on your computer by searching around the InsanelyMac forums. Please keep in mind that every computer will be different. In other words, your computer's performance will vary and not all computers will have graphics acceleration due to the OEM's hardware configuration. OS X was never designed for PCs, but you can make it work like a Mac! Don't expect everything to be working though. In the case of your Intel® HD Graphics IGPU, your mileage may vary (YMMV). More information about this will be presented as you read along.
     
    Before we begin, with the help of the community, this guide was made possible. I want to give all credit to iWin32, RemC, Mehdymehdy, Verteks, Giofrida, mnorthern, and voidRunner from the InsanelyMac community, and Orlian, dmazar, Slice for their discoveries as well as all of the InsanelyMac community members who continue to tinker around and helping the community out to enhance our Intel® HD Graphics experience!

    If this guide has helped you, be sure to press the like button.

    Now, let's begin!
     

     
    Hardware is what basically makes a computer work. For this guide, you need to have an Intel® processor. These processors were released in 2010 which means that if you bought a laptop that was made in 2010, then most likely it will have an Intel Arrandale processor. Inside this processor, there is a integrated graphics processing unit, or IGPU for short. This IGPU is known as simply Intel® HD Graphics. 
     
    Note: Intel also uses the name "Intel® HD Graphics" for the IGPU inside Sandy Bridge, Ivy Bridge, Haswell, Broadwell, and etc on Celeron and Pentium processors. This guide is only for the Arrandale processor family only.
     
    In short, your computer must have one of these processors for this guide:
     

    Note: If your i3-3xxM, i5-5xxM or i7-7xxM model is not listed, do not panic! It's only a sample list.
     
    All of these processors include the Intel® HD Graphics IGPU. They also have Device ID as 0042 or 0046 and Vendor ID as 8086.
    If your computer has one of these processors, you are good to go and you can continue to read the other sections!
     
    But wait, what if your computer has a dedicated graphics GPU such as NVIDIA or ATI? Here are the choices you can do if you have either of these:
     
    ATI:
     
    1) Disable your ATI GPU from BIOS and enable the Intel® HD Graphics IGPU.
    2) Disable your Intel® HD Graphics IGPU and enable graphics acceleration for your ATI GPU. Some ATI GPUs will work on OS X while others won't. Check if your ATI GPU is compatible with OS X.
     
    NVIDIA:
     
    1) Disable your NVIDIA GPU from BIOS and enable the Intel® HD Graphics IGPU.
     
    Note: Graphics switching is not supported on hackintoshes. Either you use the Intel® HD Graphics IGPU or you use the dedicated GPU.
     

     
    OS X is the world's most advanced desktop operating system that runs on all of Apple's Mac products such as the iMac, Mac Mini, Mac Pro, MacBook Pro and MacBook Air. It is designed and built by Apple in California. PCs normally run Windows, an operating system designed and built by Microsoft. 
     

     
    Since you are here, you are probably interested in making OS X work on your PC. I will only explain the installation processes briefly for computers with a 2010 Intel® Arrandale Processor with Intel® HD Graphics. For more in depth help, you will need to look around the InsanelyMac forums.
     
    Installation:
     
    The problem with 2010 Intel® Arrandale Processors with Intel® HD Graphics is that the Intel® HD Graphics kexts inside the OS X installer are not patched. They will prevent you from seeing the installation screen. However, there is a solution. We need to create an OS X USB installer that gives us the ability to access /System/Library/Extensions. From here, we can delete those kexts so that we are able to see the installation screen. Choose your path:
     
    I. Create an OS X USB Installer with Clover (OS X 10.10 Yosemite)

    Before you begin, you will need to create an OS X USB installer with Clover.
     
    1) The easiest way that you can create an OS X USB installer with Clover is by using Chris111's Clover 2.3K Special Edition Installer (http://www.insanelymac.com/forum/files/file/403-clover-v23k-special-edition/).
     
    2) Make sure your USB drive has at least 8GB of free storage. Open Disk Utility and format the USB Drive as Mac OS Extended (Journaled) using the GUID partition scheme.
     
    3) Download the OS X Yosemite Installer from the App Store and make sure it is saved in the Applications folder.
     
    4) Open Clover 2.3K Special Edition Installer. Click Yes to continue.

    Click continue and continue.
     
    5) You need to change the Install destination to your USB drive by clicking on Change Install Location.

     6) Click on Customize and select these options:
    Installer OS X Yosemite Install Clover in the ESP (Optional. However if enabled, you will need to mount the EFI partition of the OS X USB installer to gain access to Clover files.) Install boot0af in MBR (This ensures that the OS X USB installer actually boots up.)
    Leave everything else unchecked and click Install to start the installation.
     
    7) The Installer will detect your OS X Install app in the Applications folder and create a USB installer out of it. It will also install Clover Bootloader files so that you can boot to it using the USB stick. The installer can take up to 25 minutes to create the USB installer so do not quit the installer until it is finished.
     
    I. Create an OS X USB Installer with Clover (OS X 10.11 El Capitan)
     
    Before you begin, you will need to create an OS X USB installer with Clover.
     
    1) The easiest way that you can create an OS X USB installer with Clover is by using Chris111's Clover 2.3K Special Edition V2 Installer (http://www.insanelymac.com/forum/files/file/471-clover-v23k-special-edition-v2/).
     
    2) Make sure your USB drive has at least 8GB of free storage. Open Disk Utility and format the USB Drive as Mac OS Extended (Journaled) using the GUID partition scheme.
     
    3) Download the OS X El Capitan Installer from the App Store and make sure it is saved in the Applications folder.
     
    4) Open Clover 2.3K Special Edition V2 Installer. Click Yes to continue.

    Click continue and continue.
     
    5) You need to change the Install destination to your USB drive by clicking on Change Install Location.

     6) Click on Customize and select these options:
    Installer OS X El Capitan Install Clover in the ESP (Optional. However if enabled, you will need to mount the EFI partition of the OS X USB installer to gain access to Clover files.) Install boot0af in MBR (This ensures that the OS X USB installer actually boots up.)
    Leave everything else unchecked and click Install to start the installation.
     
     
    7) The Installer will detect your OS X Install app in the Applications folder and create a USB installer out of it. It will also install Clover Bootloader files so that you can boot to it using the USB stick. The installer can take up to 25 minutes to create the USB installer so do not quit the installer until it is finished.
     
    II. Remove Intel® HD Graphics kext from USB Installer (OS X 10.10 Yosemite)
     
    To do this, click on your OS X Yosemite USB Installer drive and go to System/Library/Extensions and delete:
    AppleIntelHDGraphics.kext AppleIntelHDGraphicsFB.kext Note: If you can't see these folders, they may be hidden so you may have to show all hidden files using terminal.
     
    II. Remove Intel® HD Graphics kext from USB Installer (OS X 10.11 El Capitan)
     
    To do this, click on your OS X El Capitan USB Installer drive and go to System/Library/Extensions and delete:
    AppleIntelHDGraphicsFB.kext Note: If you can't see these folders, they may be hidden so you may have to show all hidden files using terminal.
     
    III. Install OS X
     
    You should now be able to see the OS X installation screen. Follow the onscreen instructions to install OS X on your PC. After installation, boot to the partition where you installed OS X. Follow the onscreen instructions to finish the installation. 
     
    After completing the initial setup instructions, your desktop should now appear. Welcome to OS X!
     
    Note: You may notice that the resolution is stretched. This is normal because graphics acceleration is not working.
     
    Post Installation:
     
    Now that you have OS X installed and booting, you need to know if you want to dual boot Windows on your PC. If you want to dual boot Windows, you must install Windows now. The reason why is because Windows will install its own bootloader and will overwrite Chameleon or Clover. 
     
    After you install Windows and boots properly, boot to your OS X partition using your bootable USB drive.
     
    If you are not planning to dual boot Windows, don't worry about anything said previously. 
     
    Post Installation: Clover Bootloader
     
    The Clover bootloader is new bootloader and is constantly being worked on, supports legacy BIOS, and supports newer computers that use UEFI. The downside of Clover is that it is not user friendly in terms of configuration compared to Chameleon. However, this is the default bootloader you will be using from now on. In general:
     
    1) Install Clover bootloader.
    2) Configure Clover bootloader and configure it to use the ​MacBookPro 6,1 or MacBookPro 6,2 SMBIOS. 
     
    Tip: You can use Clover Configurator to configure Clover. Get it here! (http://www.hackintoshosx.com/files/file/49-clover-configurator/)
     
    Post Installation: Install Other Kexts
     
    Before you enable graphics acceleration for the Intel® HD Graphics IGPU, install any other kexts you need such as FakeSMC, audio, ethernet, keyboard, touchpad, etc. 
     
    After Post Installation:
     
    After you installed the other kexts you need, its time to work on fixing the Intel® HD Graphics IGPU.
     

     
    A laptop has two types of display connectors, LVDS and eDP. Each computer manufacturer chooses the type of display connector for their products. For example, Apple uses the LVDS display connector for all of their MacBook laptops. For comparison:
     
    LVDS (Low Voltage Differential Signaling):
    Older technology Limitations in display bandwidth and resolutions Used in the 2010 MacBook Pro (Also known as MacBookPro6,1 and MacBookPro6,2) eDP (Embedded DisplayPort):
    Newer technology Higher display bandwidth, compact, and supports higher resolution While eDP is better in a lot of ways, Apple did not use this connector for their 2010 MacBook Pro laptops. What this means is that the framebuffer kext (a kext that detects your display and sets the proper configurations for that specific display) for the Intel® HD Graphics IGPU is programmed to use the LVDS connector.
     
    Before we continue, we must determine the display connector used in your PC. To do this, you will need to boot to a Linux distro. You can create a live USB Linux distro to quickly determine your display connector. For this guide, I will be using the Linux distro known as Ubuntu.
     
    Check Display Connector:
     
    1) Boot up Ubuntu using the live USB.
    2) Open Terminal and type:
    sudo intel_reg_dumper
     
    3) Press Enter and you will see all of this information on the Terminal window. 
     

     
    4) Copy the information on the Terminal window. Open gEdit and paste the information inside the text file. Save the text file somewhere. You may want to use this text file later for automatic framebuffer patching. 
     

     
    5) Inside the text file, search for a line similar to this. It will either have Enabled or Disabled on it:
    PCH_LVDS: 0x80308302 (enabled, pipe A, 18 bit, 1 channel) or
    PCH_LVDS: 0x80308302 (disabled, pipe A, 18 bit, 1 channel) Now that you found this line and it says either Enabled or Disabled, take the appropriate actions below:
     
    Enabled:
     
    Congratulations! Your computer is using the LVDS display connector! Your PC can enable full graphics acceleration. You can go to the Enable Quartz Extreme with Core Image (QE/CI) section to finish fixing your Intel® HD Graphics IGPU.
     
    Disabled: 
     
    Your PC is using the eDP display connector. Your computer does not qualify for full graphics acceleration using the built-in eDP display. Go to the eDP Users Only section for more information on what you can do to improve your OS X experience using the Intel® HD Graphics IGPU.
     

     
    These are the known PCs that can enable native resolution and full graphics acceleration (QE/CI) for 1st Generation Intel® HD Graphics on OS X. If you see your manufacturer's name and PC model here, you do not have to check to see if your computer has an eDP or LVDS display connector.
     
    Note: THIS LIST IS NOT COMPLETE! 
     
    HP
    630 DM4-1160US DV6-3057TX G42-230BR G42-356TU G42-453TU ProBook 4520s ProBook 6450b ProBook 6550b COMPAQ
    Compaq CQ41-210TU ASUS
    K42F ACER
    Aspire 5740 Aspire 5742 Aspire 5745 Aspire 4740 Aspire 4741G Aspire 4747G Aspire 4738 DELL
    N5010 N5040 GATEWAY
    ID49C04h NV5932u (I own this one!   ) LENOVO
    B560 IdeaPad U450 IdeaPad U460 ThinkPad T410s TOSHIBA
    Satellite L700 Satellite L750 FUJITSU
    LifeBook SH560 VIT
    M2400-2 SAMSUNG
    R540
     
    Now that you know that your PC uses an eDP display, what can you do?
     
    Fix Incorrect Screen Resolution: 
     
    The problem for eDP users is that you cannot load the Intel® HD Graphics framebuffer because it does not support the eDP display connector. The framebuffer was necessary to enable full acceleration (QE/CI) as well as native resolution. However, there are workarounds that can solve this problem.
     
    The way to fix the incorrect screen resolution is by modifying the bootloader and hoping that it will patch the Intel® vBIOS and give you a native resolution when you boot up OS X. 
     
    As said earlier, there are two bootloaders, Chameleon and Clover. 
     
    Fix Incorrect Screen Resolution: Chameleon Bootloader
     
    For Chameleon bootloader, there is a module that can patch the Intel® vBIOS and force a screen resolution. What this will do is it will overwrite one the VESA resolutions to the custom resolution chosen in the org.chameleon.Boot.plist file. 
     
    1) Open Finder and go to your Extra folder. Open the org.Chameleon.Boot.plist with TextEdit. Add the following code:




    <key>Graphics Mode</key> <string>1366x768x32</string> (EDIT THIS STRING TO YOUR NATIVE RESOLUTION)  Note: Remember to change the string to your display's native resolution. For example, if the display's native resolution was 1280x720, then you would replace the above string as "1280x720x32". Always include the "x32" suffix as it represents 32 bit colors.
     
    2) In the Extra folder, create a folder called "Modules".

    3) Download the attached Resolution Module ZIP file below. Next, extract the ZIP file and inside the folder there should be a "Resolution.dylib" file. Drag that file to the Modules folder you created in the Extra folder.

    4) Now, restart your computer. When the Chameleon bootloader screen appears, it should now be at the resolution you set in the plist file. Continue to boot to OS X and now your desktop should no longer be stretched anymore!
     
    Note: If for some reason your screen still looks stretched, make sure that your display can handle the resolution you set on the plist file. If this still doesn't work, you may want to switch to using the Clover bootloader.
     
    Fix Incorrect Screen Resolution: Clover Bootloader
     
    On my current laptop, I use the Clover bootloader because it emulates a UEFI system and because of the extra features that are available compared to Chameleon. One of the nice features that Clover has is automatic vBIOS patching, the option to enter a custom EDID, and also to automatically inject your display's EDID to Clover.
     
    Assuming that you already have Clover bootloader working on your computer:
     
    1) Download Clover Configurator. (This will allow to edit Clover settings using a graphical user interface.) 
    2) Open Clover Configurator and open up the config.plist. (Usually located in Clover's EFI folder.)
    3) Go to the "Graphics" tab. You should see this:

    4) Make sure "Patch VBios" is checked. Anything else should be unchecked and blank, exactly like the screenshot above.
    5) Save the file and restart your PC. When the Clover bootloader screen appears, it should now automatically set Clover to your display's native resolution. Continue to boot to OS X and now your desktop should no longer be stretched anymore!
     
    Note: If for some reason your screen still looks stretched, you may have to play around with the EDID settings in Clover Configurator. I have not tested these settings so I'm not sure if this will work.
     
    Enable Partial Acceleration by Enabling Core Image Only:
     
    If you have successfully enabled native resolution on your eDP display, it is now time to enable partial acceleration. In OS X, full acceleration requires that both Quartz Extreme and Core Image (QE/CI) to work together. Since your display uses the eDP connector, you will not be able to enable Quartz Extreme (QE) as this technology requires the Intel® HD Graphics framebuffer to work correctly. You can however enable Core Image (CI).
     
    In short, Core Image (CI) is a technology that enhances image processing effects by utilizing the graphics processing unit (GPU). Luckly, all eDP users can enable Core Image (CI) to make their Intel® HD Graphics IGPU partially work.
     
    Now, Let's begin!
     
    PC Requirements:
     
    1. OS X Mountain Lion 10.8.5 or OS X Mavericks 10.9.x
    2. 1st Generation Intel® HD Graphics IGPU (Already integrated with 2010 Intel® Arrandale CPUs)
    3. Internal LCD display uses the eDP connector
    4. Intel® HD Graphics CI ZIP file (Click on the image below to download.)
     

     
    Note: My packages are available exclusively on InsanelyMac and HackintoshOSX. You can find them in the InsanelyMac Downloads section or in the HackintoshOSX Downloads section. For InsanelyMac members, the above link will take you to the InsanelyMac Downloads section.
     
    Note 2: If you are using Clover Bootloader, you may end up with distorted screen once Core Image is enabled. If you are having this problem, a workaround for this is to use Chameleon Bootloader.

    Steps:
    1) Open Finder and go to System/Library/Extensions. Inside the folder find these kexts:

    AppleIntelHDGraphics.kext
    AppleIntelHDGraphicsFB.kext
    AppleIntelHDGraphicsGA.plugin
    AppleIntelHDGraphicsGLDriver.bundle
    AppleIntelHDGraphicsVADriver.bundle

    Delete all of these kexts from the Extensions folder. Rebuild cache and restart your computer.

    2) Download the Intel® HD Graphics CI ZIP file above if you haven't yet. Remember to choose the ZIP file that corresponds to your version of OS X. Extract the ZIP file. Inside the extracted ZIP file you should see this:

    3) Install these kexts with Kext Utility or some other kext installer. Rebuild cache and restart your computer.

    4) Open up System Preferences > Desktop & Screensaver > Screen Saver. Click on one of the slideshows. If you see the preview of the slideshow, Core Image is now enabled!


     
    OS X uses technologies like Quartz Extreme and Core Image to utilize the GPU to perform various graphical elements such as animations, image processing, rendering, OpenGL and the overall window compositing environment. In order to enable these technologies for your Intel® HD Graphics IGPU, you must use a patched Intel® HD Graphics framebuffer kext. 
     
    The Intel® HD Graphics framebuffer kext is essential in order to enable detection of the built-in LCD display, native resolution, and to enable technologies like Quartz Extreme and Core Image (QE/CI) to provide graphics acceleration. 
     
    With a graphics accelerated desktop, you can:
    Watch YouTube videos smoothly Use iPhoto, iMovie, and GarageBand Play games Native display resolution Use other applications that require graphics acceleration Now, let's begin!
     
    PC Requirements:

    1. OS X Mountain Lion 10.8.5 or OS X Mavericks 10.9.x or OS X Yosemite 10.10.x or OS X El Capitan 10.11.x
    2. 1st Generation Intel® HD Graphics (Already integrated with 2010 Intel® Arrandale CPUs)
    3. Internal LCD display uses the LVDS connector
    4. Intel® HD Graphics QE/CI ZIP file (Click on the image below to download.)
     

     
    Note: My packages are available exclusively on InsanelyMac and HackintoshOSX. You can find them in the InsanelyMac Downloads section or in the HackintoshOSX Downloads section. For InsanelyMac members, the above link will take you to the InsanelyMac Downloads section.
     
    Note 2: You also have the option to patch the Intel® HD Graphics framebuffer yourself and customize certain framebuffer features using Giofrida's Intel® HD Graphics Patcher. You can find it in the InsanelyMac Downloads section or by clicking here.
     
    Steps:
    1) You must do this step if you are using Chameleon Bootloader. If you are using Clover Bootloader, skip to Step 2. Open Finder and go to your Extra folder. Open the org.Chameleon.Boot.plist with TextEdit. Add the following code:
    <key>GraphicsEnabler</key> <string>Yes</string>
    Note: If you are using OS X Yosemite, you must also add the following code to your org.Chameleon.Boot.plist:




    <key>Kernel Flags</key> <string>kext-dev-mode=1</string> 2) You must do this step if you are using Clover Bootloader. If you are using Chameleon Bootloader, skip to Step 3. Check your Clover Bootloader settings and make sure everything is checked off except for "Patch vBIOS" in the Graphics tab section. Make sure "Inject Intel" is checked off or you will have a distorted screen.

    Note: If you are using OS X Yosemite, you must enable "kext-dev-mode=1" in Clover. 

    3) Open Finder and go to System/Library/Extensions. Inside the Extensions folder, find these kexts:
    AppleIntelHDGraphics.kext AppleIntelHDGraphicsFB.kext AppleIntelHDGraphicsGA.plugin AppleIntelHDGraphicsGLDriver.bundle AppleIntelHDGraphicsVADriver.bundle Delete all of them from the Extensions folder. Rebuild kext cache and restart your computer.

    4) Download the Intel® HD Graphics QE/CI ZIP file above if you haven't yet. Remember to download the QE/CI ZIP file that corresponds to your version of OS X (for example, if you are running OS X Yosemite 10.10, then you would download the 10.10 QE/CI ZIP folder). Extract the ZIP file. Inside the extracted ZIP file you should see this:
     
    Note: The images shown here might look different than the one on your computer.

    If you notice, there is a folder called "Choose Framebuffer". In here, you will need to select the type of framebuffer kext to install for your computer. I have prepatched these for you so all you have to do is install it with the other Intel® HD Graphics kexts.

    So, how do you choose with framebuffer to install? There are two types of framebuffers:
    SingleLink DualLink  Choose a SingleLink framebuffer if your PC's internal LCD display has a native resolution of 1366x768 or lower. Choose a DualLink framebuffer if your PC's internal LCD display has a native resolution higher than 1366x768. 

    Once you know what type of framebuffer to install, there are 3 categories to choose from:
    Normal Alternate Alternate 2 If you are new to this, you may want to start by selecting a Normal framebuffer. A Normal framebuffer has default plist features enabled. You will have to retry and experiment with these 3 categories if one of them doesn't work. The reason is because each computer is different and not all computers will be able to boot using a specific category.
     
    Let me explain these three categories:
     
    Choose a Normal framebuffer if your PC has no problem booting and successfully shows the desktop with the default plist features enabled.
     
    If your PC freezes during boot (spinning wheel or progress bar on the Apple boot screen freezes) when you use the Normal framebuffer, you may have to use the Alternate framebuffer. The Alternative framebuffer has all the plist features set to zero. 
     
    If your PC freezes during boot (spinning wheel or progress bar on the Apple boot screen freezes) when you use the Alternative framebuffer, you may have to use the Alternate 2 framebuffer. The Alternate 2 framebuffer has all the plist features set to zero and a slightly modified IOPCIClassMatch code.
     
    No matter which of the 3 framebuffer categories you choose, you will now have to select the output. Inside the folder, there is only 1 output to choose from:
    LCD + VGA For most users, LCD + VGA is recommended. This option will give you output to your computer's internal LCD display.
     
    Note: Remember, this guide is for laptops only. Desktops are not supported.

    Inside the LCD + VGA output folder, there are 4 types of LW:
    LW1 LW2 LW3 LW4 LW stands for Link Width. For most users, LW1 will work. If for some reason you see a distorted display, you may need to test out LW2-LW4.
     
    Note: Again, if this your first time choosing, pick the LW1 framebuffer and go to step 5. If you see a distorted display when you boot to the desktop, you may need to use a higher LW framebuffer. If it doesn't boot at all, you may need to choose another framebuffer category.
     
    Before you continue: Because this is a trial and error situation, you may have to delete the framebuffer and install another framebuffer if it doesn't work. If you are still having issues and tried all framebuffers, check the troubleshooting information section after the steps for help.
     
    5) Install the chosen Intel® HD Graphics framebuffer with the other Intel® HD Graphics kexts with Kext Utility or some other kext installer. Rebuild cache and restart your computer.

    6) When you log into the desktop, you will see that your computer's native resolution is already working. You will also see a transparent menubar.
     

     

     
     

    If you still want to confirm that you officially have QE/CI working, open DVD Player, click on the "Help" menu and click on "Show Supported Features".
     

     
    Enjoy OS X on your PC!
     
    Troubleshooting Information:
     
    Some users may have trouble finding which framebuffer works on their computer. I have listed a few common problems that users encounter.
     
    Problem 1: When you installed the Intel® HD Graphics framebuffer, the spinning wheel on the Apple boot screen freezes. 
     
    When the spinning wheel freezes on the Apple boot screen, this means that you chose the wrong framebuffer category. For example, if you installed the Normal framebuffer and the spinning wheel freezes, you will have to install either the Alternate or Alternate 2 framebuffer.
     
    Problem 2: When you installed the Intel® HD Graphics framebuffer, the spinning wheel on the Apple boot screen spins forever and the desktop never appears. 
     
    When the spinning wheel on the Apple boot screen spins forever and never shows the desktop, it means that OS X failed to recognize your Intel® HD Graphics IGPU. Some PCs suffer from this problem and the only way to fix this is by injecting the information of your Intel® HD Graphics IGPU manually using a DSDT (Differentiated System Description Table) or using the Natit kext.
     
    In order to inject this information onto the DSDT, your DSDT must be patched so that it compiles correctly. The information that you have to inject to the DSDT is the model, OS-Info, and VRAM. Go to the DSDT section for more information. (This method is recommended).
     
    The other way to fix this is by installing the Natit kext. This kext will inject the information of your Intel® HD Graphics IGPU automatically. While this may solve the problem on some computers, I don't recommended it. The reason is because this kext also sets values that are useless and can cause conflict. On some computers, Natit injects the wrong information and corrupts the display. You can try it, but it is only a temporary solution. When you have time, I highly recommend you patch your DSDT so that you never have to install Natit.
     
    TIP: If your computer has an dedicated NVIDIA Optimus or AMD Radeon GPU, you need to disable all types of graphics acceleration in Chameleon or Clover Bootloaders if your going to use the Intel® HD Graphics IGPU.
     
    TIP: Make sure that you are using the correct type of framebuffer. Do not use a DualLink framebuffer on a computer that uses SingleLink and do not use a SingleLink framebuffer on a computer that uses DualLink.
     
    TIP: Remember, this guide is only for laptop computers. Desktop computers are not supported by the Intel® HD Graphics kexts.


    The question that many users ask is can they connect an external display to their laptop while running OS X? The answer is yes and no. Let me explain.
     
    There are usually 3 different kind of display ports that a laptop may have:
    VGA (Video Graphics Array) HDMI (High Definition Multimedia Interface) DP (DisplayPort) The only port that currently works, and is also experimental, is the VGA port. HDMI and DP ports are not supported. Although the VGA port works, its functionality is very limited. You cannot mirror displays and you cannot extend displays.
     
    If the VGA port cannot extend displays and you cannot mirror displays, what can it actually do? One functionality that it can do, and is experimental, is clamshell mode.
     
    Clamshell mode is when you use your laptop like a Mac Mini. In other words, you connect an external monitor to the laptop's VGA port and close the lid. You will see your desktop on the external monitor. Because you will use the external monitor and the laptop lid is closed, you may want to have an external mouse and keyboard.
     
    Note: While this may be possible, I am no longer going to explain how to do it in my guide. Enabling the external VGA monitor is very experimental and most of the time the display looks scrambled and unusable. It becomes more of a hassle. I will give you the tools you need if you want to try this out for yourself. Also for future releases, I am no longer including the Intel® HD Graphics patched VGA framebuffers in my Intel® HD Graphics kexts packages. I believe users don't use these framebuffers. If you need to patch the framebuffer for VGA, use Giofrida's Intel® HD Graphics Patcher.
     
    AAPL, OS-Info:
    The AAPL, OS-Info code is the code than enables the display. This code comes from the Intel® HD Graphics framebuffer itself and can be seen using a utility called IORegistryExplorer. 
     
    This AAPL, OS-Info code enables the internal LCD display:
     
    30 49 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
     
    If you notice, the blue number (01) in this part of the code is responsible for enabling the internal LCD display. Now let's look at the AAPL, OS-Info code that enables VGA output:
     
    30 49 00 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
     
    Similarly, the blue number (04) in this part of the code is responsible for enabling the VGA port. What this means is that you can only enable 1 display at a time. Either you enable the internal LCD display or you enable the VGA port. You cannot have both working together which explains why mirroring and extend displays doesn't work. 
     
    In order to modify this code, you have to inject it to your DSDT. Assuming that you already patched your DSDT (if not, read the DSDT preparation and Hacks section), this code is added in the GFX0 (or IGPU or VID, depending on your computer manufacturer) section in your DSDT.
    "AAPL,os-info", Buffer (0x14) { 0x30, 0x49, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, *This code enables the VGA port. You can copy this code onto your DSDT to save time.
     
    This is what your GFX0 (or IGPU or VID, etc) section should look like with the added code:

    Once this code has been added, your internal LCD display will become disabled and the VGA port will now output your desktop once you reboot.
     
    Patch Intel® HD Graphics Framebuffer for VGA:
    Another thing that you need to have in order to use an external VGA display is a patched framebuffer that enables VGA output. You can patch the framebuffer using Giofrida's Intel® HD Graphics Patcher. 

    To patch the framebuffer for VGA output, check the VGA box. If you like, you can patch LVDS (Internal LCD Display) and VGA at the same time. After patching the framebuffer, use Kext Utility or another kext installer to install it. 
     
    From here, you're on your own to experiment. If you discover anything interesting, feel free to share!
     

     
    1. Natit
     
    Sometimes, if a computer does not have Natit installed, the framebuffer will make OS X not boot to the desktop. In other words, the spinning wheel will spin forever and you will be stuck in the boot screen forever. This usually happens when the OS-Info from the framebuffer fails to inject itself.

    Natit will also add Intel® HD Graphics information to your System Infomation>Graphics/Display section. This is useful for users that still have an "Unknown" graphics name in About This Mac and System Information.
     
    You can download the attached Natit kext at the bottom of this guide.

    Install this kext with Kext Utility or some other kext installer. Rebuild cache and restart your computer.

    Note: This fix requires a kext, but you can permanently fix this problem by patching your DSDT. More information in the DSDT Preparation and Patching section.
     
    2. Backlight and Brightness
    (Guide written by mnorthern)

    Please read and follow mnorthern's thread for his work as well as any questions regarding the backlight and brightness fix for 1st Generation Intel® HD Graphics.
    http://www.insanelym...hd-gma-5700mhd/

    3. Power Management
     
    Chameleon Bootloader Power Management
     
    Note: This applies to users that use Chameleon Bootloader. If you are using Clover Bootloader, read the Clover Bootloader Power Management section.

    If you have enabled partial graphics acceleration (only Core Image) or if you enabled full graphics acceleration (Quartz Extreme with Core Image), it is important to have power management working correctly. If you don't, then the computer will overheat and possibly turn off without warning.

    Computers with 1st Generation Intel® Core™ or 2010 Intel® Arrandale processors are able to natively use the AppleIntelCPUPowerManagement.kext without any problem.

    Before proceeding, make sure you are not using NullCPUPowerManagement.kext. If you are using it, delete it and rebuild cache.

    Steps:

    1. Open Finder and go to your Extra folder. Open the org.Chameleon.Boot.plist with TextEdit. Add the following code:
    <key>GenerateCStates</key> <string>Yes</string> <key>GeneratePStates</key> <string>Yes</string>
    2. Restart your computer. Boot into OS X and native power management should now start working. You can check CPU temperature and SpeedStep processor speeds using HWMonitor.
     
    Clover Bootloader Power Managment
     
    Note: This applies to users that use Clover Bootloader. If you are using Chameleon Bootloader, read the Chameleon Bootloader Power Management section.
     
    1. Open Clover Configurator and go to the ACPI menu. Check both Generate PStates and Generate CStates.

    2. Restart your computer. Boot into OS X and native power management should now start working. You can check CPU temperature and SpeedStep processor speeds using HWMonitor.
     
    4. Giofrida's Intel® HD Graphics Patcher

    Our InsanelyMac friend Giofrida has made a framebuffer patcher that is easy to use. You can find it exclusively at InsanelyMac Downloads or by clicking here.

    Giofrida's Intel® HD Graphics Patcher allows you to patch AppleIntelHDGraphicsFB.kext on your own. You can customize which ports to patch, enable DualLink, choose which Link Width to enable as well as which OS X version to patch for. Currently, the patcher fully supports OS X Mountain Lion (10.8), OS X Mavericks (10.9), and OS X Yosemite (10.10).

    When you launch the Intel® HD Graphics Patcher, you will see the main menu. There are 5 tab options to choose from:
    Main Menu​ Manual Patch Linux Dump Analyzer Extras Support
    The "Main Menu" tab opens the main menu. The "Manual Patch" tab allows you to drag in the AppleIntelHDGraphicsFB.kext you want to patch and customize certain patching options. The "Linux Dump Analyzer" tab allows you to copy and paste the sudo intel_reg_dumper information into a text box and the patcher will automatically select the appropriate options to patch automatically. The "Extras" tab includes extras such as the Resolution Module for Chameleon Bootloader (more information about it in eDP Users Only section) and links to download Natit.kext as well as fixing brightness.
     
    To patch your own framebuffer, select the "Manual Patch" tab. You will see this:

    Drag the AppleIntelHDGraphicsFB.kext into the blue highlighted box and press "Check". The patcher will verify if the framebuffer kext is compatible and valid. After verification, all of the patching options will now enable and the white oval box should say "Binary Found".

    The patching options are self explanatory. Select the options that you like and once you are ready, click the "Patch" button. You will need to enter your password and once that is done, you will see a new folder called "Patched Framebuffer" on your desktop. Inside the folder you will see this:

    This is your patched framebuffer. Install this kext with Kext Utility or some other kext installer. Rebuild kext cache and restart your computer. That's it!

    If you prefer to patch your framebuffer automatically, make sure you have already dragged in the AppleIntelHDGraphicsFB.kext in the "Manual Patch" tab and then select "Linux Dump Analyzer". You will see this:

    You will need to run sudo intel_reg_dumper in Ubuntu or some other Linux distro and copy all of the information into a text file. Bring that text file to OS X and copy and paste all of the content inside the text file into the text box.

    Press the "Analyze" button and the white oval box should say "Parameters set! Now go to Manual Patch".

    Go to the "Manual Patch" tab and press "Check". The patcher will verify if the framebuffer kext is compatible and valid. After verification, make sure to select the OS X version of the AppleIntelHDGraphicsFB.kext that your patching and press the "Patch" button. You will need to enter your password and once that is done, you will see a new folder called "Patched Framebuffer" on your desktop. Inside the folder you will see your patched framebuffer. Install this kext with Kext Utility or some other kext installer. Rebuild kext cache and restart your computer.
     
    5. On-the-fly Framebuffer Patch using Clover
     
    The team behind Clover Bootloader have created a way to patch kexts inside the kernel cache on-the-fly, meaning that you don't have to modify the kexts manually inside System/Library/Extensions. Using this method allows the user to install OS X without removing the Intel® HD Graphics kexts, and it also allows the user to update their OS X installation without losing native resolution and graphics acceleration (QE/CI). 
     
    Who qualifies to use this method of patching? For example, if you download my Intel® HD Graphics QE/CI package, what framebuffer do you install? 
     
    First, your computer must be using Clover Bootloader.
     
    If your computer uses the Normal framebuffer, you qualify!
    If your computer uses the Alternate or Alternate 2 framebuffer, you do not qualify.
     
    Computers using the Normal framebuffer do not use a modified plist file. For Alternate and Alternate 2 framebuffers, they have a modified plist file where PowerSates = 0. Currently, Clover does not have the ability to patch the info.plist file correctly. Although it says its been patched in debug mode, it doesn't work. If patching the info.plist file works for some of you using Alternate or Alternate 2 framebuffers, please let me know.
     
    I will be going over on how to do this in OS X Yosemite and OS X El Capitan. The process is similar for other versions of OS X but you have to find the correct values to patch. 
     
    1. Open Clover Configurator and go to the Kernel and Kext Patches section. In here, you will add the necessary patches to fix the framebuffer. 

    2. As an example, these are the patches that you will need to add to Clover for SingleLink LCD+VGA LW1 (OS X Yosemite / OS X El Capitan):
     
    General Patch
    Find: 0F45C842898C33F00100 Replace: 90909042898C33F00100 Yosemite Patch (Note: You need to add this as well if you are using OS X El Capitan)
    Find: FFB800600009BE006000040F44F009D6 Replace: FFB800600008BE006000040F44F009D6 El Capitan Patch (Note: Not needed if using OS X Yosemite)
    Find: C7030100000048B80A Replace: C7030000000048B80A  LVDS + VGA Patch 1
    Find: 3049011101100800 Replace: 3049011105100800 LVDS + VGA Patch 2
    Find: 3049010101000800 Replace: 3049010105000800 SingleLink Patch 1
    Find: C7070100000041C74720 Replace: C7070000000041C74720 SingleLink Patch 2
    Find: 3C033080 Replace: 00033080 LinkWidth LW 1
    Find: 498B8424980600000FB64018C1E013410B466C4189466C498B8C249800000089810C000F00498B8424980600000FB64018C1E013410B4668 Replace: 418B466C25FFFFC7FF0D0000000090909090904189466C498B8C249800000089810C000F00418B466825FFFFC7FF0D000000009090909090 3. This is how it works:
    In the KextsToPatch section, press the add button "+". The first line should now be highlighted and you can start editing it. In the Name column, since we are patching the framebuffer kext, it must have the name "AppleIntelHDGraphicsFB" without the quotation marks.  In the Find column, you are going to copy and paste one of these patches "Find" hexadecimal code. In the Replace column you are going to copy and paste one these patches "Replace" hexadecimal code. The Comment column contains a description of the patch. You can type in something that helps you remember what patch is being added. The InfoPlistPatch column should be empty unless it is a plist file patch. The Type/Key column tells Clover whether the patch is a STRING or DATA. In this case these patches represent a String.  This is how it looks like when you have finished adding the patches:

    Note: While it is optional, you should check the "Debug" option to make sure that the patches are being patched correctly. This will cause OS X to boot in verbose mode and show you the patching process. If all the patches say "Successful", then everything is working correctly and you can uncheck the "Debug" option.
     
    Note 2: Kext patching using Clover causes OS X to boot a bit slower because it has to patch the kext every time the computer boots.
     
    Note 3: In some cases, Clover will not detect the framebuffer kext. This usually happens when you have installed the framebuffer incorrectly and you need to rebuild the cache and repair permissions. Clover can only patch the kext if it is stored in the cache. 
     

     
    So what is the DSDT? The DSDT (Differentiated System Description Table) is a table that is part of the ACPI (Advanced Configuration Power Interface) specification. Basically it contains information about hardware and power events. The problem with DSDTs is that they are either incomplete or problematic for OS X. Those are the reasons why many people patch their DSDTs so that OS X can function properly with their PC hardware.

    For this guide, I will be talking about how to patch your DSDT so that you no longer need to use the Natit kext and to inject information about your Intel® HD Graphics IGPU. For any other hardware, you will need to search the InsanelyMac forums for more information.
     
    ​Extracting Your PC's DSDT Table:
    There are many ways to extract your PC's DSDT table, but the best way to get an unmodified copy of your DSDT is by booting to a Linux distro. You can use the same live USB Linux distro that you used to determine your PC's display connector. For this example, I will be using Ubuntu.
     
    1) Boot up Ubuntu using the live USB.
    2) Open Terminal and type:
    sudo cat /sys/firmware/acpi/tables/DSDT >dsdt.aml 3) Press Enter.
    4) The dsdt.aml file will be saved in the Home folder. Copy the dsdt.aml file somewhere so that you can edit it in OS X.
     
    Open Your PC's dsdt.aml file on OS X:
    So now that you have your DSDT file extracted, it is time to open it up. In order to open and edit your DSDT, you need an application called MaciASL. 
     
    http://sourceforge.net/projects/maciasl/
     
    Download MaciASL and install it in your Applications folder. Now that you have MaciASL installed:
     
    1) Launch MaciASL.
    2) Go to File > Open and find and open your dsdt.aml file.
     
    Repairing the DSDT:
    We have to repair the DSDT before we apply any patches. Since the DSDT is most likely incomplete, if you compile it now, there will be errors and we need a DSDT that compiles successfully. 

    The screenshot above is MaciASL and I have opened up my extracted Gateway NV5932u dsdt.aml file. Take a look around the application so that you can feel comfortable using it. 
     
    Once you have your PC's dsdt.aml file open, click on "Compile". 
     

     
    Look at all these errors! On my extracted DSDT, there are 6 errors, 14 warnings, 41 remarks and 3 optimizations. 
     
    Note: Your DSDT may have more errors or less errors depending on your computer manufacturer. Some DSDTs may have different errors as shown here. However, you can search on Google and see if someone else has fixed that particular error. This portion of the guide is to give you an idea of how DSDT patching works.
     
    These are the errors that the compiler throws out. They repeat multiple times:
    Code 5111 - Use of compiler reserved name (_T_#) (# can mean 0, 1, 2, 3, 4, etc.) Code 1088 - Not all control paths return a value () Code 1099 - Unknown reserved name () Code 1081 - Reserved method must return a value (Package required for _DOD) Code 4080 - Invalid object type for reserved name (found BUFFER, requires Package) Let's fix these problems one by one. The first one:
    Code 5111 - Use of compiler reserved name (_T_#) (# can mean 0, 1, 2, 3, 4, etc.) There are 41 remarks of these which means I have to fix 41 lines of code that contain this remark. This is easy to fix. All you have to do is this:
    Remove the beginning _ from (_T_#) so it looks like (T_#).  Let's take a look at this. For example, according to the compiler on lines 6764 and 6765 this problem appears. 
     

     
    Lets edit the DSDT by applying this fix:
     

     
    By applying this fix to all of the 41 remarks, I have reduced my remarks to 0. 
     

     
    Now, let's fix the second problem:
    Code 1088 - Not all control paths return a value () There are about 8 lines of code that have this problem. How do you fix this problem? Very simple. The reason you get this problem is because one of the control paths does not return anything. To fix this we need this:
    Return (Zero)  We need to add this code at the end of the method box. Let's look at an example. We have this problem on line 12267.
     

     
    Add the code "Return (Zero)" in the middle of the last 2 brackets.
     

     
    By applying this fix to all of the lines that have this warning, I have reduced my warnings to 9.
     

     
    You may be wondering why I chose not to fix 2 lines of code that have the 1088 problem. The reason is because these same lines also have the 1081 code. By fixing the lines of codes that have the 1081 problem, you also eliminate the 1088 problem as well. 
     
    So let's fix the 1081 problem:
    Code 1081 - Reserved method must return a value (Package required for _DOD) According to the compiler, this problem exists on line 14427. If you notice from the screenshot above, 14427 also has the 1088 problem. To eliminate problem 1081, you have to add this code at the end of the method box:
    Return (Package (0x02) { Zero, Zero }) Let's look at the code on line 14427.
     

     
    To fix this, let's add the code above to this line. 
     

     
    By adding this fix to the 2 warnings that have this problem, we have also automatically eliminated 1088. Now there are 6 errors and 5 warnings. Almost there!
     

     
    Let's fix the 1099 problem:
    Code 1099 - Unknown reserved name () This is an easy problem to fix. If you notice, the reserved name (_WDG) and (_WED) have an underscore "_" in front. In the DSDT however, these names are defined as (WDG) and (WED) with no underscore. Let's look at line 12268:
     

     
    All you have to do to fix this problem is delete the underscore "_".
     

     
    Almost done, now we only have 6 errors with problem code 4080.
     

     
    Let's look at problem 4080:
    Code 4080 - Invalid object type for reserved name (found BUFFER, requires Package) This error means that the code is suppose to have the name "Package" instead of "Buffer". Let's look at line 16051 .
     

     
    As you can see, the object type name is "Buffer" but this is wrong. It is suppose to be "Package". For the error code 4080, all you have to do is rename the part that says "Buffer" to "Package".
     

     
    After applying this fix to the remaining errors, the DSDT is fixed, cleaned, and ready for patching!
     

     
    Note: Before you begin to modify the DSDT and add patches to it, you must add the DTGP method to your DSDT. There are many guides out there on how to do this. It should be easy to add. I will assume that you have this method added already in the sections below.
     
    1.1 Finding the DSDT Integrated Graphics Section
     
    So what is this DSDT Integrated Graphics section? Finding this section will be useful if you plan to run OS X without the Natit kext or if you need to inject IGPU properties such as model, OS-Info, vram, etc. In general, this section is where OS X detects any information about the IGPU from the DSDT and injects it to the operating system. 
     
    Let's take a look at this DSDT:

    It looks overwhelming doesn't it? The important thing to understand here is that by finding the correct section to edit in the DSDT, it will allow you to fix any issues your facing with your PC when running OS X. 
     
    Since this guide relates to the Intel HD Graphics IGPU, I will only focus on patches for the IGPU. So how do you find the integrated graphics section on the DSDT? 
     
    You will need to obtain a copy of IORegistryExplorer or IOJones (http://sourceforge.net/projects/iojones/). Open either application and on the left side look for a name mentioning IGPU or VID or GFX. These names define the graphics section in your DSDT and depending on your computer manufacturer, they can choose either of those 3 names. In this example, I found that my computer manufacturer used the GFX name. 

    If you noticed, the official name given here is GFX0 (highlighted in blue) but this does not matter. The @2 means its located under the 20000 address. On the right side there is a grey highlight mentioning acpi-path.
     
    The acpi-path contains a string (or a sentence made up of words) and contains IOACPIane:/_SB/PCI0@0/GFX0@20000. This is the location where GFX0 is located on my DSDT. Let's break up this location.
     
    IOACPIPlane: - This is the starting folder of the DSDT. 
    /_SB - SB Folder.
    /PCI0@0 - PCI0 Folder at address 0.
    /GFX0@20000 - GFX0 Folder at address 20000.
     
    Let's look at the MaciASL sidebar.
     

     
    By looking at the sidebar, we can automatically assume that "IOACPIPlane:" is the "DSDT" folder with the home icon. Next, we know that "/_SB" is a folder with the name "_SB", but there's a problem. There are multiple folders with the "_SB" name. How do you know which one is the one your looking for? If we look back at the location, the next folder inside "/_SB" is "/PCI0". Click on each of those "_SB" folders until you find one that has a "PCI0" folder. 
     

     
    One you find the correct "_SB" folder with the "PCI0" folder inside it, we are now able to easily locate the "/GFX0" folder. 
     

     
    By looking inside the "/PCI0" folder, we have found the "/GFX0". Now, we are ready to patch the DSDT! For those curious about the "@20000", this comes from the Name(_ADR, 0x00020000) on line 4399 as seen on the screenshot.
     
    1.2 Patching the DSDT Integrated Graphics Section
     
    Suppose that you are one of the users who needs Natit.kext installed in order to boot to the desktop. The main reason why some users need this kext is because it injects OS-Info, VRAM, and the model name of the IGPU. The Intel® HD Graphics framebuffer automatically injects this information but for some unknown reason, some computers with OS X do not recognize this information and causes it to freeze during boot.
     
    Note: Before you begin to modify the DSDT and add patches to it, you must add the DTGP method to your DSDT. There are many guides out there on how to do this. It should be easy to add. I will assume that you have added the DTGP method already in your DSDT. 
     
    We will need to add three things:
     
    1) OS-Info
    2) VRAM
    3) Model
     
    This will be added to the integrated graphics section of the DSDT. From the previous example, the name turned out to be GFX0. Your DSDT might have a different name for this section such as VID or IGPU. They are the same thing only with a different name. Once you know the location of this information, you should see something like this:
     

     
    Your integrated graphics section might look longer or shorter, depending on the computer manufacturer. Inside this portion of the DSDT, we will add the DSM method. This is what the DSM method looks like:
     

     
    You can copy and paste this code onto your DSDT. Place the DSM method underneath Name(_ADR, 0x00020000).
    Method (_DSM, 4, NotSerialized) { Store (Package (0x02) { // Hacks are placed here // }, Local0) DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0)) Return (Local0) } Your GFX0 (or VID or IGPU) method should now look something like this:
     

     
    Now you are ready to inject OS-Info, VRAM, and model information to this section!
     
    1) OS-Info
     
    AAPL, OS-Info is the information that the Intel® HD Graphics framebuffer uses to enable or disable display ports.
     
    For this particular example, we will inject the default OS-Info code that the Intel® HD Graphics framebuffer uses. This is the OS-Info code that it uses:
    30 49 01 11 01 10 08 00 00 01 00 00 00 00 00 00 FF FF FF FF This particular OS-Info code enables the LVDS display port on your laptop. In the DSDT, it must be written in hexadecimal form. This is the format to inject AAPL,OS-Info code in the DSM method. You can copy and paste this code onto your DSDT:
     
    "AAPL,os-info", Buffer () { 0x30, 0x49, 0x01, 0x11, 0x01, 0x10, 0x08, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF }, You should now have something like this:
     

     
    2) VRAM
     
    This the amount of video ram that will appear in the About This Mac information. This is only cosmetic so this won't change the actual VRAM that OS X is allowed to use. VRAM,totalsize is written in hexadecimal format and the value that it represents is 288MB. You can copy and paste this code onto your DSDT: 
    "VRAM,totalsize", Buffer () { 0x00, 0x00, 0x00, 0x12 }, You should now have something like this:
     

     
    3) Model
     
    This is the name of the IGPU that will be displayed in the About This Mac information. Apple simply defines 1st Generation Intel® HD Graphics IGPU as "Intel HD Graphics". You can copy and paste this code onto your DSDT:
    "model", Buffer () { "Intel HD Graphics" }, You should now have something like this:
     

     
    That's it, you are now finished! All you need to do is compile the DSDT and configure your bootloader to use it. You can now delete Natit.kext since this information is now patched onto the DSDT. 
     
    Note: After you compile the DSDT, the compiler will fill in numbers inside the package() parentheses and buffer() parenthesis. If you need to edit these codes, you need to delete those numbers inside the parenthesis or you will get a compilation error.
     

     
    1.3 DSDT - Brightness Values for Internal LCD

    Note: Before you continue, your must have already followed mnorthern's guide to enable brightness functionality on your computer. If you have not read his thread and followed his instructions, then this will not work.

    Remember when you had to add the PNLF section into your DSDT? This method allows OS X to recognize your internal LCD and enable brightness functionality. This is also the place where all your brightness levels are located. Let's take a look at this PNLF section:
     

     
    If you don't remember where it is, it is suppose to be located in the Scope_SB folder. It is the same folder where PCI0 is also located at. For this section we will be focusing only on this part of the code:
     

     
    Let's look at the code in detail:
     
    Method (_BCL, 0, NotSerialized) is the name of the method that holds all of the brightness values. Return (Package (0x13) tells us how many things there are inside this method in hexadecimal format. For this BCL method, you cannot change this. I will explain why in a bit. Let's continue to look at the code further:
     

     
    What you see here are numbers in hexadecimal format. Look at this diagram to understand why they are arranged like this:


     
    There are 19 values total but the top 2 values belong to the preset brightness values and the other 17 values belong to the brightness slider in OS X. You cannot change the order of these values.

    So what do the hexadecimal numbers stand for? Here are the hexadecimal numbers converted to decimal (normal) numbers:
     
    Preset Brightness values:
     
    0x0384 means the number 900.
    0x0384 means the number 900.
     
    Brightness Values: 
     
    Zero means the number 0.
    0x012C means the number 300.
    0x0258 means the number 600.
    0x0384 means the number 900.
    0x04B0 means the number 1200.
    0x05DC means the number 1500.
    0x0708 means the number 1800.
    0x0834 means the number 2100.
    0x0960 means the number 2400.
    0x0AC8 means the number 2700.
    0x0BB8 means the number 3000.
    0x0CE4 means the number 3300.
    0x0E10 means the number 3600.
    0x0F3C means the number 3900.
    0x010CC means the number 4200.
    0x01194 means the number 4500.
    0x012C0 means the number 4800.

    Note: Remember, the brightness values must be converted to hexadecimal format or they will not work. That is how OS X reads them.

    Now that you know what the numbers stand for, lets look at first part. These are the Preset Brightness Values:
    0x0384, 0x0384, Although these numbers are the same, their order is not.
     
    The 1st top code changes the brightness level to 900 when the computer boots up with the AC power connected to the computer or when you connect the AC power cable to charge the battery. The 2nd bottom code changes the brightness level to 900 when the computer boots up using the battery or when you disconnect the AC power cable.
    0x0384, (Brightness value when AC is connected) 0x0384, (Brightness value when Battery is being used) Now lets look at the second part. These are the 17 brightness levels that OS X can access in System Preferences or when pressing the brightness control buttons on your keyboard.
    Zero, 0x012C, 0x0258, 0x0384, 0x04B0, 0x05DC, 0x0708, 0x0834, 0x0960, 0x0AC8, 0x0BB8, 0x0CE4, 0x0E10, 0x0F3C, 0x10CC, 0x1194, 0x12C0 The order is simple. The lowest brightness value is 0 (Zero), meaning that if I go to System Preferences and move the brightness slider all the way to the left, the screen will go black. The highest brightness value is 4800 (0x12C0), meaning that if I go to System Preferences and move the brightness slider all the way to the right, the screen will be at its maximum brightness level.
     
    To make things easier to read:
    Zero, (Lowest brightness level, black screen) 0x012C, 0x0258, 0x0384, 0x04B0, 0x05DC, 0x0708, 0x0834, 0x0960, 0x0AC8, 0x0BB8, 0x0CE4, 0x0E10, 0x0F3C, 0x10CC, 0x1194, 0x12C0 (Highest brightness level, maximum brightness) ​The reason why there are 17 levels of brightness is because that is the maximum amount of levels that the slider can change to. If there are less than 17 or more than 17, it will not work. You must come up with 17 values. You can repeat values if you want as long as there are 17. 
     
    So how do you come up with these values? How did I come up with these values? Unfortunately this is a trial and error situation. You are going to have to test various numbers to see which numbers your internal LCD display accepts. On some computers, the numbers 0-16 in hexadecimal format will work. On other computers you may have to use 0 and then 100-116 in hexadecimal. In my situation, I had to start from 0 and then use the numbers 300-4800 in hexadecimal. Once you find the numbers that work for your display, you can add them to the DSDT.
    Resolution Module.zip
    Natit.zip
  10. Like
    pentothal reacted to verteks in AppleIntelHDGraphicsFB fixed (SL 10.6.8)   
    It didn't get attached! I've uploaded both here: http://www.fileconvoy.com/dfl.php?id=g2a922fb2d672c917999239550b57025242d1a01d2
     
    pentothal: Well, I can't guarantee it working on ML, I only have SL.
  11. Like
    pentothal reacted to verteks in AppleIntelHDGraphicsFB fixed (SL 10.6.8)   
    Using a resolution higher than 1024x768 produces artifacts, so I have to look into it a bit more. Also, shutdown/reboot using a higher resolution causes a kernel panic.
     
    Use the DualLink version if your monitor supports a resolution higher than 1366x768. I have only tested it on a laptop, so I don't know if it works on an external monitor.
     
    UPDATE:
    I've made a commandline tool for patching, so you can try different options, you can also choose the output (LVDS, VGA, DP). Please, carefully read the included README file before using.
     
    THE FOLLOWING ARE NOT NECESSARY:
    - "GraphicsEnabler" boot option
    - "Graphics Mode" boot option
    - Natit.kext
    - Resolution.dylib
     
    Also, it does not matter which smbios.plist you are using.
     
    DO NOT MIX DIFFERENT KEXTS FROM DIFFERENT VERSIONS OF OS X!
     
    AppleIntelHDGraphicsFB is responsible for setting up the framebuffer, thus providing the ability to switch resolutions. The other AppleIntelHDGraphics* kexts provide hardware acceleration (QE/CI/OpenGL/Video playback). So, if using the FB kext on it's own works (switching resolutions but no QE/CI), while using it with the others does not, means there's an incompatibility between the kexts you are using.
     
    Please use this tool instead of the kexts I've uploaded here.
    AppleIntelHDGraphicsFB_SingleLink.zip
    hdgraphics_patcher.zip
  12. Like
    pentothal reacted to GhostRaider in AppleIntelHDGraphicsFB fixed (SL 10.6.8)   
    It would be great if you explained a bit more about this fix. Does this actually remove distortions for resolutions 1366x768 and higher? Does it enable Quartz Extreme? Does it fix the black screen problem?
     
    ...and would it work on mountain lion?
     
    I don't have snow leopard at the moment, but hopefully someone else here can take a look at it. It could be the breakthough that we all been searching for...
  13. Like
    pentothal reacted to warraisraw in AppleIntelHDGraphicsFB fixed (SL 10.6.8)   
    Hello, I tried this on my installation ML 10.8.2 and this is the result. In the screenshot does not show a small distortion that can be seen through the internal monitor (a bit pixelated image). But now we have the image in our internal monitor. It is a good step forward.
     
    Regards.

  14. Like
    pentothal reacted to alexanderq in AppleIntelHDGraphicsFB fixed (SL 10.6.8)   
    Black screen in Mountain Lion for me.
  15. Like
    pentothal reacted to sartemd174 in AppleIntelHDGraphicsFB fixed (SL 10.6.8)   
    Gray screen ML 10.8.2, HD Graphics 1st Gen.
  16. Like
    pentothal reacted to verteks in AppleIntelHDGraphicsFB fixed (SL 10.6.8)   
    I have fixed the artifacts now, it works perfectly now.
     
    People who got a black screen: If you have Linux, I want you to do a register dump using 'intel_reg_dumper' command.
     
    The problem was in the TrainFDI function. It sets the FDI_RXA_CTL and FDI_TXA_CTL registers using link width X4, but doing a reg dump from Linux, I found out that it should be X1. Now, I don't know if X1 works for DualLink, this might explain why some people got a black screen.
     
    For some reason, I can't attach two files. WTF?EDIT: WTF? I tried editing and attaching but it didn't work.
    AppleIntelHDGraphicsFB_SingleLink.zip
  17. Like
    pentothal reacted to verteks in AppleIntelHDGraphicsFB fixed (SL 10.6.8)   
    pentothal: Are you using Mountain Lion? Are you sure it is Intel HD Graphics 1st gen (Ironlake)? Do you have anything in your kernel log?
    Your registers look fine (link width X1), but you have some additional registers that don't exist on Ironlake.
     
    I have attached the DualLink version here, I hope this works.
  18. Like
    pentothal got a reaction from lance76 in [SOLVED] Resolution Hack for 1st Gen Intel HD Graphics   
    I confirm I have native resolution (1366x768x32) + Core Image enabled following this tutorial:
    http://www.insanelymac.com/forum/topic/286092-guide-1st-generation-intel-hd-graphics/
     
    Many thanks iWin32, RemC, Orlian, dmazar, Slice, Mehdymehdy and the VoodooLabs community for the brilliant work.
    Now let's hope for Quartz Extreme.
     
    Thanks again
    Pentothal
  19. Like
    pentothal reacted to RemC in [GUIDE] How to enable custom resolution for first-gen Intel HD Graphics (0042:8086 and 0046:8086)   
    Thanks for that! All the zero's confirm that the EDID is not being read. The question now is why? Your systems might not support VBE/DDC, I will have to put some checks in place to determine that and once done ask you one more time (hopefully...) to test something for me. For now could you please answer the following:
     
    - When choosing Mac OS X in the bootloader and pressing the arrow down key, a menu pops up...if you choose Video Info, what does the first line say (VBE...?).
    - How did you manage to get your EDID?
    - You said you're using Win 7, do you have linux as well by any chance or a bootable DVD/USB with Ubuntu or something. If so would you mind running the following and posting the output:
    $> sudo apt-get update && sudo apt-get install read-edid
    $> sudo get-edid | parse-edid
     
    Thanks a lot!
  20. Like
    pentothal reacted to RemC in [GUIDE] How to enable custom resolution for first-gen Intel HD Graphics (0042:8086 and 0046:8086)   
    Hi Pentothal,
     
    Your EDID checksum is fine. It looks like the code that retrieves your EDID is not working in your case and as a result continues with an empty EDID, which is of course is not working. I've added another Resolution.dylib, I'd appreciate it if you could try it and post me the debug info (should still give you full resolution, but additional verbosity should help me pinpoint the problem).
     
    Thanks, RemC
    Resolution_1.tar.gz
  21. Like
    pentothal reacted to RemC in [GUIDE] How to enable custom resolution for first-gen Intel HD Graphics (0042:8086 and 0046:8086)   
    I could see from your DTD that is is indeed 1366x768. I think I know where the problem must be so I've added some debug information to the attached Resolution.dylib.
    I also hardcoded the 1366x768x32, so it should also give you full resolution (still does for me)! Please try and paste the bdmesg part from Resolution.dylib that can help me fix it.
     
    Others: Don't try this...
    Resolution.tar.gz
×