Jump to content

[SOLVED] Resolution Hack for 1st Gen Intel HD Graphics

Intel GMA HD Arrandale Clarkdale

  • Please log in to reply
36 replies to this topic

#1
GhostRaider

GhostRaider

    InsanelyMac Sage

  • Members
  • PipPipPipPipPipPip
  • 383 posts
  • Gender:Male
:excl: Update: Custom resolution for 1st Generation Intel Core Processors (Arrandale/Clarkdale) with Intel HD Graphics is now possible. Please read this thread to get your hackintosh working with a better screen resolution http://www.insanelym...6-and-00468086/

Just remember that Quartz Extreme and Core Image however are not working at the moment (maybe in the future). You can still do a lot without it though, such as use Microsoft Office or making music in GarageBand but now with crisp resolution. :)

I don't know if there are still users with the 1st Generation Intel HD Graphics (Arrandale/Ironlake) but I would like to experiment on a resolution hack called "915 Resolution".

I kind of want to focus on getting native resolution for OS X first. Some users are able to get native resolution because their VBIOS has the resolution listed in VESA. Other computers don't and this is what I want to focus on. For example, a laptop that I have can use a resolution up to 1366x768, but this is not listed in the VESA table. I don't want to focus on getting Quartz Extreme or Core Image right now.

915 Resolution is hack that works with a bootloader called Grub2. If your familiar with Linux, this shouldn't be new. What this does is it replaces one of the VESA resolutions to a customized resolution. For example, with this hack, I would be able to replace the stupid 1024x768x32 line to 1366x768x32. Once Grub2 is configured to this hacked resolution, we would have to add a boot entry for OS X. Since Grub2 is using a hacked resolution, if you boot OS X, it will also be using that hacked resolution as well.

Why would you want to do this? So you can be able to hack OS X with a decent resolution to work with. :P

Anyways, this was the first thing that x4500 users did to get native resolution. They were successful. Of course now they used a hacked Intel x3100 kext but that doesn't matter. Read this post from the x4500 thread:

To be true, VESA doesn't even support 1280x800... Thats where 915 resolution (more here) steps in. With this program on linux you can modify the video bios of your integrated intel gma to have non standard vesa modes (basically it replaces the selected video mode with a new one you specified). I used it to achieve 1440x900 on linux, so I think it will support higher resolutions than 1280x800. (one more thing: 915resolution doesn't support x4500! I had to create a new entry for it in the program, but you basically just need your pci id and have to copy the 96GM codes)

My train of thougth was:If I can use 915resolution to have vesa modes for my lcdm than maybe OSX will use these vesa modes,too. But 915 resolution is a linux utility, how can I start this at boot time? Its' GRUB2
(here) time! Because grub2 has 915resolution module which patches the video bios at boot time! But you need a linux distribution with grub2-915resolutin, thats why I choose archlinux. I installed it on a separate partition (after the osx install), downloaded the package (from here:http://aur.archlinux.org/packages.php?ID=22927), compilled, fiddled with the config file, installed, tried to boot OSX with it (info here:http://www.insanelymac.com/forum/index.php?showtopic=150004&pid=1063106&mode=threaded&start=#entry1063106) and when it worked I modified the 915resolution modul, recompilled it,replaced the original with it and now I can set my 1280x800 from the bootloader and If I boot osx from here then I can see my resolution when I type in ?video at boot, and can use "Graphics Mode" = "1280x800x32"

Hope this helps, but if not I try to help.


Thread link: http://www.insanelym...00/page__st__40

I'm looking for help on patching the 915 resolution hack to work with 1st Gen Intel Core processors with Intel HD Graphics. Any guys from the x4500 thread want to give me a step by step guide on how to accomplish this? Any Linux users here know how to do this?

#2
iWin32

iWin32

    InsanelyMac Geek

  • Members
  • PipPipPip
  • 101 posts
  • Gender:Male
From my own experimentation, running 915resolution's code natively will not work. What I mean by that is if you add the device ID to the source code (0044:8086, more on this distinction later), compile it, and try to run it, 915resolution will error saying "Unable to Determine BIOS Type", prompting users with the instructions on how to dump their VBIOS and send it to the developer of the Linux Program. At first, I thought that 915resolution was just old code and would not be of any assistance to us, but a new insight showed quite the opposite.

To understand this better, first you have to understand how 915resolution came to be, and how it works. A Linux program called 855resolution was designed to patch the VBIOS on-the-fly allowing Linux users to use a widescreen resolution when it wasn't supported. Basically, the Linux User just had to tweek his configuration to allow the program to patch the VBIOS before loading the GUI. 915resolution was derrived from this program, allowing the similar 915 chipset to use 855resolution's code to patch the VBIOS. However, 915resolution was still a Linux program. In other words, it was not anything Grub-based that could be used to patch the VBIOS and load an OS other than Linux. Also different was that users could add chipset-specific instructions to the source code. If the chipset was similar, they could simply tell it to use the same code as another. If, however, the code was extremely different, 915resolution's code would allow the addition of chipset-specific instructions. (I am not a developer, but I can understand simple C code and could figure out how to patch it easily using the first idea.)

The Grub2 module that you described is something I am also familiar with. Basically, the developer of the 915resolution port first tried the 915resolution linux program as-is for his compatible system. However, it still booted at a 4:3 resolution instead of a 16:9 resolution like he wanted. He soon discovered the problem: His flavor of Linux required the VBIOS to support the desired resolution at boot. Therefore, the only logical idea was to run 915resolution before loading Linux. He established that by creating the 915resolution port that you discussed.

I'm not sure if you're aware of this, but from this 915resolution Grub2 module, a Chameleon version was created, and instead of requiring a key-in at boot, it read the desired resolution from com.apple.Boot.plist. First, it would check to make sure it was supported by the VBIOS. If it wasn't, it would then read the EDID of the monitor to ensure the resolution was supported. If it was supported, it would then use 915resolution's code base to try and patch it on-the-fly like before. Regardless of what happened, Chameleon would still load to the GUI. This variant of Chameleon is called ChameleonMR2, but I don't think there is one that can support Lion or Mountain Lion as this version was created during the reign of Snow Leopard.

I had actually contacted the developer of the Grub2 port to see if he could help me with my Intel HD Graphics Hackintosh endevor. He said that while he didn't understand how the code worked, but said that if I had a patch for the Linux utility that would support my graphics card, he would be able to add it to his Grub2 patch, no questions asked. So I had joined a Linux forum who told me to run 915resolution as-is to get the device ID. It actually said "448086", which means 0044:8086. It's important to note that the device ID for the graphics card is 0046:8086. With that being said, I sent him the 448086, thinking that it was right for the program! However, the forum person said that he had created a patch, but also warned me that the 915resolution program was old, and if it didn't work, I needed to upgrade my X Window or some Linux GUI that I can't remember. (A lot of good that does for us Hackintosh people, LOL!!) I tried it, and got the error message above.

At first, I thought it was back to the drawing board, someone on the Dutch Forums OSx86.net who was trying to get resolution support for his Graphics Card happened to have the same one as ours. Someone told him to take a screenshot of the hackintosh utility System Info. Here is the screenshot:
Posted Image
As you can see, the DRAM Controller, not the Graphics Controller. The DRAM Controller used to be implemented in the Northbridge, and when this was the case, Intel Integrated Graphics would be controlled by the northbridge as well. However, beginning with the first generation Intel HD Graphics, the motherboard design was reconfigured, integrating both memory control and Graphics Processing into the CPU. Because 915resolution was created in the earlier design, it must be detecting the memory control device ID as it was the same Device ID as the GPU. However, now that it's integrated into the CPU, it is picking up the wrong device ID, and therefore, trying to patch the wrong part of the BIOS. It is possible that 915resolution's codebase may support Intel HD Graphics, but until we first have to get around this bug. This would require a re-write of 915resolution's code.

If any developer would want to try this, here is what I would suggest:
  • Develop a Linux patch for this "bug".
  • Port this patched 915resolution to Grub2 (perhaps call it "915resolution HD" as it would, in theory, also support other new Intel HD Graphics Cards, like the Intel HD Graphics 3000).
  • Integrate this module into Chameleon.
If we can do that, Intel HD Graphics may come to support our resolutions once and for all! Who's with me?

P.S. Sorry for that long post! :P

#3
gatyo

gatyo

    InsanelyMac Protégé

  • Members
  • Pip
  • 1 posts
I'm very interested in this project. I tried every possible switchres, kext and bopotloader solution out there, but couldn't get 1366x768 on my Lion (1st gen Intel HD Graphics). I'll only use it for bash so if I can get my display res working and maybe even backlight control, that would mean the world to me. Thank you for your continual interested in figuring this out.

#4
oki270

oki270

    InsanelyMac Protégé

  • Members
  • PipPip
  • 66 posts
915resolutions uses PAM registers to remap read-only VBIOS memory to read-write area where resolutions table can be re-written. Unfortunately (or fortunately - depending on use) PAM registers on i-version of intel cpu's "moved" to CPU itself. (you can see my stackoverflow thread here: http://stackoverflow...pam-on-intel-i5). As I answered myself on the same page (last answer) - VBIOS memory area (and others, of course) are handled by MTRR CPU registers on i-series and later which makes 915resolutions totally useless on i-series.

I tried working with MTRR but after a lot of issues I abandoned idea. I think somewhere on github should still be my code.If I were you, I would dismiss this idea :-).

#5
dmazar

dmazar

    InsanelyMac Sage

  • Coders
  • 268 posts
  • Gender:Male
What a coincidence - I was just checking that code for unlocking video bios because I want to do some video bios patching in Clover.

Regarding PAM registers: yes, they are moved to processor, and they are still accessible from the same PCI bus 0, device 0, function 0 (DRAM controller), but registers are at different addresses: PAM0-PAM6 = 90h - 96h instead of 80h - 86 on older chipsets (or 59h - 5fh on even older ones). They work the same as before, same format, same values.

#6
iWin32

iWin32

    InsanelyMac Geek

  • Members
  • PipPipPip
  • 101 posts
  • Gender:Male

What a coincidence - I was just checking that code for unlocking video bios because I want to do some video bios patching in Clover.

Regarding PAM registers: yes, they are moved to processor, and they are still accessible from the same PCI bus 0, device 0, function 0 (DRAM controller), but registers are at different addresses: PAM0-PAM6 = 90h - 96h instead of 80h - 86 on older chipsets (or 59h - 5fh on even older ones). They work the same as before, same format, same values.


So, are you saying that the only reason 915resolution isn't working for our code is because it is trying to use the wrong address?

Also, how easy would it be to change that part of the code in 915resolution to support our Graphics Card? Do you think you could help us with re-coding 915resolution?

#7
dmazar

dmazar

    InsanelyMac Sage

  • Coders
  • 268 posts
  • Gender:Male
There are two things here:
1. support for your DRAM controller (in chipset or in processor) to be able to unlock video bios area for writing
2. support for your video card - knowing how to patch modes table

The first thing - support for your DRAM controller (0044:8086) is easy to add, but the second thing is not easy. And if you managed to get "Unable to Determine BIOS Type, dump your video bios ..." then it looks like your video card is not supported. Meaning: no help for that.

Which source code are you using? Because I saw some variants of this thing around.

#8
iWin32

iWin32

    InsanelyMac Geek

  • Members
  • PipPipPip
  • 101 posts
  • Gender:Male

There are two things here:
1. support for your DRAM controller (in chipset or in processor) to be able to unlock video bios area for writing
2. support for your video card - knowing how to patch modes table

The first thing - support for your DRAM controller (0044:8086) is easy to add, but the second thing is not easy. And if you managed to get "Unable to Determine BIOS Type, dump your video bios ..." then it looks like your video card is not supported. Meaning: no help for that.

Which source code are you using? Because I saw some variants of this thing around.

Correct me if I'm wrong, but it seems that 915resolution came from a time when the integrated video cards from Intel and the DRAM controller were one and the same. In other words, the device ID did not differ for them. Now, however, they do because the DRAM Controller and video card is integrated into the CPU. The DRAM Conrtoller is 0044:8086 (like you said), but the Graphics Card is 0046:8086. Therefore, in order for 915resolution to work, the code has to be re-written.
And, as far as the version I'm using, I tried a customized patch, first with 0046:8086 (got "Intel chipset detected. However, 915resolution could not determine the chipset type."), and then with it's device ID 0044:8086 (got "Unable to determine BIOS Type."). However, the difference I noted above may shed light into what's going on with the code. It's not that it's code can't support our graphics, but rather that it doesn't know the updates to the design of integrated Intel graphics, and doesn't know what to patch. I hope this helps.

#9
dmazar

dmazar

    InsanelyMac Sage

  • Coders
  • 268 posts
  • Gender:Male
You are wrong. Integrated video cards from Intel and the DRAM controller are two different devices and were never the same. Previously, DRAM controller was not in processor, but was part of chipset. In core processors, it is moved to processor. But that does not matter. Still different devices even if they are inside the same processor.

915 res always needed and still need to have:
1. support for DRAM controller to be able to unlock shadow video bios region for writing, to be able to patch modes table
2. support for particular video bios, in the sense to know how to find modes table and their format in there

I have added patch for Chameleon's Resolution module here: http://forum.voodoop...pic,2754.0.html
But this just adds support for lock/unlock of shadow vbios on Core processors (support for DRAM controllers, including your 0044:8086). Nothing is changed regarding support for video bioses - it's the same as before.

#10
beta992

beta992

    InsanelyMac Sage

  • Members
  • PipPipPipPipPip
  • 338 posts
  • Gender:Male
I'm really hope you guys could solve some things. :)

But their are still some problems:
- On laptops you can't set the GPU memory (64M default) with Optimus (Most ASUS laptops)
- No QE = you can't use most applications because they require QE.

I have an ASUS K52Jc laptop (i5-520M/GeForce 310M) but no luck for me, because my Intel HD 2000 is unsupported anyway. :(

#11
mehdymehdy

mehdymehdy

    InsanelyMac Geek

  • Members
  • PipPipPip
  • 149 posts

You are wrong. Integrated video cards from Intel and the DRAM controller are two different devices and were never the same. Previously, DRAM controller was not in processor, but was part of chipset. In core processors, it is moved to processor. But that does not matter. Still different devices even if they are inside the same processor.

915 res always needed and still need to have:
1. support for DRAM controller to be able to unlock shadow video bios region for writing, to be able to patch modes table
2. support for particular video bios, in the sense to know how to find modes table and their format in there

I have added patch for Chameleon's Resolution module here: http://forum.voodoop...pic,2754.0.html
But this just adds support for lock/unlock of shadow vbios on Core processors (support for DRAM controllers, including your 0044:8086). Nothing is changed regarding support for video bioses - it's the same as before.


Hi man can you explain how i can use ur files. i mean i replaced the boot and it is showing me my mac drive but when i try to boot into mac it gets stuck. second is what do i do with the .diff file?

#12
Krazubu

Krazubu

    InsanelyMac Legend

  • Retired
  • 874 posts

I kind of want to focus on getting native resolution for OS X first. Some users are able to get native resolution because their VBIOS has the resolution listed in VESA. Other computers don't and this is what I want to focus on. For example, a laptop that I have can use a resolution up to 1366x768, but this is not listed in the VESA table. I don't want to focus on getting Quartz Extreme or Core Image right now.

What's the point of doing this if you can have it working fully with the appropriate driver (with older OSX though) ?

#13
iWin32

iWin32

    InsanelyMac Geek

  • Members
  • PipPipPip
  • 101 posts
  • Gender:Male

What's the point of doing this if you can have it working fully with the appropriate driver (with older OSX though) ?

Only the acceleration is working. If resolution is supported, it's because the VBIOS has the resolution supported in the VESA Tables. If it doesn't have the desired resolution in the VESA tables, you are stuck at 1024x768 (like me). And the framebuffer Kext written by Apple is buggy and never works for our PCs (results in either a blank screen, or the screen is frozen from the time the Kext is loaded.)

#14
GhostRaider

GhostRaider

    InsanelyMac Sage

  • Members
  • PipPipPipPipPipPip
  • 383 posts
  • Gender:Male

What's the point of doing this if you can have it working fully with the appropriate driver (with older OSX though) ?


Yes, it is true that we do have the drivers, however they need to be seriously hacked. The problem is that once the framebuffer is loaded, the main display gets disconnected and is rerouted to either the gmux (most likely) or to the nvidia graphics card. Our laptops do not have these parts and the only way to access the desktop is through VNC.

#15
mehdymehdy

mehdymehdy

    InsanelyMac Geek

  • Members
  • PipPipPip
  • 149 posts

Yes, it is true that we do have the drivers, however they need to be seriously hacked. The problem is that once the framebuffer is loaded, the main display gets disconnected and is rerouted to either the gmux (most likely) or to the nvidia graphics card. Our laptops do not have these parts and the only way to access the desktop is through VNC.

it's not only NVidia's fault because even the laptops who don't have 2 graphic cards don't have any luck with the framebuffer. and I from my experience and trying to make my graphic card to work 00468086, I don't think appleacpi or graphicfamily or iopcifamily have or graphic controller is the blame, they do their job properly, everything is exactly inside the driver, there are some information which needs to be injected inside these drivers to make intelhdgraphic work. for example I have an appleintelhdgraphic.kext from mountain lion developer which works in my ML 10.8.2 and gives some acceleration and even some gl. but when I use the appleintelhdgraphic.kext from 10.8.2 it'll load with lots of lines you can't see anything. so it's finding the information from our graphic cards and injecting them to the framebuffer that is the issue. because I think the appleintelhdgraphic card from our laptop is a little different from the one that was used in macbookpro. and I don't think this has anything to do with optimus system looking at how appleintelhdgraphic3000 works even for those with optimuse. but I'm ofcourse not 100 percent sure. and I also believe that if it's impossible to correct the appleintelhdfb than then maybe some how we can patch the chameleon boot loader to give correct resolution I mean that's the least we can hope for. because we don't have the correct resolution coming from our vesa. and some laptops do get the correct resolution from vesa so they can just have minor acceleration by playing around with NVidia drive like manor did. but that's really hopeless.

#16
dmazar

dmazar

    InsanelyMac Sage

  • Coders
  • 268 posts
  • Gender:Male

Hi man can you explain how i can use ur files. i mean i replaced the boot and it is showing me my mac drive but when i try to boot into mac it gets stuck. second is what do i do with the .diff file?

Sorry, missed your post - you just have to put Resolution.dylib into /Extra/Modules/ folder and then check if it makes any difference in your resolutions.
Added info here: http://forum.voodoop...2.html#msg12452

#17
mehdymehdy

mehdymehdy

    InsanelyMac Geek

  • Members
  • PipPipPip
  • 149 posts

Sorry, missed your post - you just have to put Resolution.dylib into /Extra/Modules/ folder and then check if it makes any difference in your resolutions.
Added info here: http://forum.voodoop...2.html#msg12452


it does feel like it's ganna do something but stays the same stuck with 1024x786. vesa is at 31mb. it's not getting correct information to obtain more memory and give correct resolution. it needs a driver even if it's in a form of a patch it's gotta play a bigger rule. my intelhdgraphics does load and i do get some acceleration for example my screensaver works but as soon as i view the screen saver it gives kp. we are having problem patching these drivers. thank you for your help.

#18
mehdymehdy

mehdymehdy

    InsanelyMac Geek

  • Members
  • PipPipPip
  • 149 posts
I think i'm going to buy a motherboard for my laptop. there is a mother which is exactly the same design from just one model higher than the one I have. and that one has NVIDIA G450 as it's graphic card. and intel i5 processor. so I guess buy this mother board for 150 from ebay will solve this unsolvable problem with my mountain lion hakintosh :D . you guys can look for a higher model of the same laptop that you have and buy the motherboard with better graphic card support. otherwise it's been more than 2 years and no developer really put time in this so I guess it's over for intelhdgraphics. good luck.

#19
GhostRaider

GhostRaider

    InsanelyMac Sage

  • Members
  • PipPipPipPipPipPip
  • 383 posts
  • Gender:Male

I think i'm going to buy a motherboard for my laptop. there is a mother which is exactly the same design from just one model higher than the one I have. and that one has NVIDIA G450 as it's graphic card. and intel i5 processor. so I guess buy this mother board for 150 from ebay will solve this unsolvable problem with my mountain lion hakintosh :D . you guys can look for a higher model of the same laptop that you have and buy the motherboard with better graphic card support. otherwise it's been more than 2 years and no developer really put time in this so I guess it's over for intelhdgraphics. good luck.


As long as the motherboard supports Sandy Bridge or higher it will most likely work. I don't really need OS X on my laptop, but its pretty cool to mess around with it. My laptop is capable of running OS X in a virtual enviornmnet or if I want I can just connect an external monitor and I'll have native resolution for OS X but of course with no QE/CI. Currently I'm more interested in a custom Mac Mini.

#20
GhostRaider

GhostRaider

    InsanelyMac Sage

  • Members
  • PipPipPipPipPipPip
  • 383 posts
  • Gender:Male
Friends, for those of you that still follow this thread, for those that own computers with 1st Generation Intel Core Processors with Intel HD Graphics, there is finally some good news. :smoke:

Our friends iWin32 and RemC have successfully given us our much needed custom resolution. But of course behind it all we should thank Orlian, dmazar, Slice, as well as the InsanelyMac and VoodooLabs community.

Following iWin32's tutorial will give your native resolution, but you must also have some sort of knowledge of what you are doing.

I was thinking of maybe creating a new thread with pictures and maybe having an easy guide for others to obtain custom resolution, but iWin32 has already given us a guide and I want people to discover his findings.

I will link you to his thread here:

http://www.insanelym...6-and-00468086/

I guess this thread is solved now. B)

Attached Files







Also tagged with one or more of these keywords: Intel GMA HD, Arrandale, Clarkdale


0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

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