Jump to content

[GUIDE] 1st Generation Intel HD Graphics QE/CI


GhostRaider
 Share

2,093 posts in this topic

Recommended Posts

GhostRaider,

please confirm,

you can play this game with your intelHDGraphics

 

from MacGameStore

 

League of LightL Dark Omens

 

 

Chess game is very light-weighted,

Does not make sense, anyone has problem playing this.

One more thing,

rizki_alkaf 's english is much better than average Asian, like me.

I don't play games on this computer, but it runs fine.

post-620531-0-86415800-1420690354_thumb.png

Link to comment
Share on other sites

i think, we have too much,Jesus of Nazareth,.

I am sorry again.


GhostRaider,

 this App with source, is my way of saying sorry!

 

 


This first and only openGL App, i wrote.

I lost  interest on it afterward.

 

Still have some bugs,

 

It Loads time-lapse photos, from a folder, and render as video.

 

good for test memory too. (use a lot memory)

OpenGLVIEW.zip

Link to comment
Share on other sites

rizki_alkaf

 

 

Download this demo:

from MacGameStore

League of LightL Dark Omens

tell me if this is playable on your side.

 

This is OK on my gateway.

I did recompile, sceneKit with 10.10 sdk Target 10.8 (most common on new games)

and passed 2 test.

 

Did Apply some crazy theory of mine.

It's an 850 MB trial game. Quite large download file for just a test. Sorry, i'm a cheap guy, with a slow, non-unlimited internet here

 

GhostRaider,

please confirm,

you can play this game with your intelHDGraphics

from MacGameStore

League of LightL Dark Omens

 

 

Chess game is very light-weighted,

Does not make sense, anyone has problem playing this.

 

One more thing,

rizki_alkaf 's english is much better than average Asian, like me.

Very slow performance for just a chess game here on my acer 1830T.

By the way, what's your gateway hardware specs? And how's the sleep and wake going?

 

i think, we have too much,Jesus of Nazareth,.

I am sorry again.

 

GhostRaider,

this App with source, is my way of saying sorry!

 

 

 

This first and only openGL App, i wrote.

I lost interest on it afterward.

 

Still have some bugs,

 

It Loads time-lapse photos, from a folder, and render as video.

 

good for test memory too. (use a lot memory)

I will try this later

Link to comment
Share on other sites

I believe that this has been tried before but it doesn't work for framebuffer kexts. I'm not sure if it works now, but you are welcome to try and test it. Only the framebuffer needs patching, everything else is native.

Can I ask you once more for binary patterns to test?

Link to comment
Share on other sites

Can I ask you once more for binary patterns to test?

 

Now that I think about it, maybe I will look into Clover's kext patching abilities. I've seen the AppleHDA Clover patch and it seems simple to implement. You only need to find the hexadecimal strings and replace them with the patched strings.

 

I don't have the actual patterns to give you to test for Clover, but I will have to look them up manually using HexFiend. I will need to patch the FB kext manually to make sure that the values I give you are correct.

 

Hopefully it works because if this fails, its a pain in the a** to revert back to the previous framebuffer. You would have to delete both AppleIntelHDGraphics.kext and AppleIntelHDGraphicsFB.kext through single user mode, and then you have to boot without graphics acceleration and then reinstall the previous kexts using Kext Utility. 

 

I'll try do this first but If I run into trouble or it doesn't work, then I'll ask you to test it or anybody else that wants to participate. 

 

EDIT: There is one problem to this. The fact that the framebuffer's plist file also has to be modified. Does Clover have the ability to patch an info.plist file?

EDIT2: Nevermind it can.

  • Like 1
Link to comment
Share on other sites

Hopefully it works because if this fails, its a pain in the a** to revert back to the previous framebuffer. You would have to delete both AppleIntelHDGraphics.kext and AppleIntelHDGraphicsFB.kext through single user mode, and then you have to boot without graphics acceleration and then reinstall the previous kexts using Kext Utility. 

If it fails, no problem to kextload in -s prepatched (working, previous) kexts from USB stick. Though to boot w/o need booting w/o acceleration.

Link to comment
Share on other sites

If it fails, no problem to kextload in -s prepatched (working, previous) kexts from USB stick. Though to boot w/o need booting w/o acceleration.

Because Clover failed to patch the info.plist file and had to remove the graphics kext manually using single user mode, my osx installation became corrupted for no reason. Disk utility says the partition can't be repaired and I'm forced to reinstall. Idk if this feature is buggy.

Link to comment
Share on other sites

Because Clover failed to patch the info.plist file and had to remove the graphics kext manually using single user mode, my osx installation became corrupted for no reason. Disk utility says the partition can't be repaired and I'm forced to reinstall. Idk if this feature is buggy.

Very strange or I cannot understand what you're doing.

Link to comment
Share on other sites

Very strange or I cannot understand what you're doing.

Do you happen to know how to patch an info.plist file using Clover? Without this there's no point in patching the framebuffer using Clover. For many users here, this code must be modified:

<string>PowerStates</string>
<integer>1</integer>

This has to be set to 0. As far as I know, Clover does have the ability to replace values within the plist file, but in our case there are many "1" located inside the plist file. So if you just put "0" in Clover configurator, all instances of 1 will be replaced to 0, which is not what we want. 

 

I tried adding the whole thing to see if Clover changes this portion of the code but it says that InfoPlist Patch failed. 

 

This person here asked this same question but for another reason and Apianti said to search for a longer string. 

 

http://sourceforge.net/p/cloverefiboot/tickets/47/

 

So how does one convert that code above into a string? 

  • Like 1
Link to comment
Share on other sites

It is very hard for author of the tutorial?

			<dict>
				<key>Comment</key>
				<string>Power states 1-> 0</string>
				<key>Name</key>
				<string>Some_kext</string>
				<key>Find</key>
				<data>PHN0cmluZz5Qb3dlclN0YXRlczwvc3RyaW5nPgo8aW50ZWdlcj4xPC9pbnRlZ2VyPg==</data>
				<key>InfoPlistPatch</key>
				<true/>
				<key>Replace</key>
				<data>PHN0cmluZz5Qb3dlclN0YXRlczwvc3RyaW5nPgo8aW50ZWdlcj4wPC9pbnRlZ2VyPg==</data>
			</dict>

  • Like 1
Link to comment
Share on other sites

 

It is very hard for author of the tutorial?

			<dict>
				<key>Comment</key>
				<string>Power states 1-> 0</string>
				<key>Name</key>
				<string>Some_kext</string>
				<key>Find</key>
				<data>PHN0cmluZz5Qb3dlclN0YXRlczwvc3RyaW5nPgo8aW50ZWdlcj4xPC9pbnRlZ2VyPg==</data>
				<key>InfoPlistPatch</key>
				<true/>
				<key>Replace</key>
				<data>PHN0cmluZz5Qb3dlclN0YXRlczwvc3RyaW5nPgo8aW50ZWdlcj4wPC9pbnRlZ2VyPg==</data>
			</dict>

 

Thanks Slice, I really appreciate the help. This is great stuff here. Its not that it was hard, I just didn't know that for the InfoPlistPatch to work in a situation like this, the string must be converted to Base64. I've only seen people replace like 0x0000 to 0x0001 and stuff. This was the last piece I needed to finally test Clover's ability to patch AppleIntelHDGraphicsFB.kext on the fly!  :)

 

Still nobody answered how conversion iy is done.

 

You can use Plist Editor as Slice mentioned, or there is an online Base64 converter, like this one:

 

https://www.base64encode.org

 

Just get the code, for example the PowerStates code, and paste it in the box and it will convert all of that to base64.

 

So now I just need to reinstall the native frame buffer kext and add this final code to Clover. If it works, then I have to put this up in the guide so everyone can see. 

  • Like 1
Link to comment
Share on other sites

Thanks for the information, Slice.

Just in case, for PowerStates (key), this is the exactly code to patch the "Info.plist" inside the "AppleIntelHDGraphicsFB.kext":

<key>Find</key>
<data>PGtleT5Qb3dlclN0YXRlczwva2V5Pgo8aW50ZWdlcj4xPC9pbnRlZ2VyPg==</data>
<key>Replace</key>
<data>PGtleT5Qb3dlclN0YXRlczwva2V5Pgo8aW50ZWdlcj4wPC9pbnRlZ2VyPg==</data>

Good Luck.

Link to comment
Share on other sites

Thanks for the information, Slice.

Just in case, for PowerStates (key), this is the exactly code to patch the "Info.plist" inside the "AppleIntelHDGraphicsFB.kext":

<key>Find</key>
<data>PGtleT5Qb3dlclN0YXRlczwva2V5Pgo8aW50ZWdlcj4xPC9pbnRlZ2VyPg==</data>
<key>Replace</key>
<data>PGtleT5Qb3dlclN0YXRlczwva2V5Pgo8aW50ZWdlcj4wPC9pbnRlZ2VyPg==</data>

Good Luck.

 

What program are you using to encode that? It seems that the online Base64 encoder code looks different from the one you show here, or does it not matter?

Link to comment
Share on other sites

I used PlistEdit Pro, please take a look inside the vanilla "Info.plist" that "PowerStates" is a KEY not a STRING. This is the difference, right?

 

Edited: Yeah, online encoder looks different. I don't know why.

 

Edited 2: looking the entire code posted by Slice, same way the one I posted, it just has one change by 4W (for 0) instead of 4X (for 1). 

Link to comment
Share on other sites

Do you know what's the best way to make sure that all of the kexts installed in S/L/E are actually inside the kernel cache? I've been noticing that Clover does not pick up the kexts which causes Clover to skip kext patching. Kext Utility doesn't seem to fix the kernel cache which concerns me. 

 

I've tried the booting without cache and then booting normally but it doesn't seem to work. Even in verbose mode there is a mention of Error 107 rebuild cache, something like that.

 

Edit: I fixed the Error 107 message using these commands:

sudo touch /System/Library/Extensions
sudo kextcache -update-volume /

But Clover refuses to recognize the AppleIntelHDGraphicsFB kext in the kernel cache. I know the kext is loading but I don't know what's going on here.

 

Edit2: So I decided to boot using the prepatched kext and selected "Boot without Caches". It booted right to the desktop and in Terminal I typed :

sudo touch /System/Library/Extensions/

The second I rebooted with Clover, the framebuffer kext was successfully detected but this worries me since I want the original kext to be detected, not a patched one. 

 

This may work on a USB installer though since the cache already includes the framebuffer kext. It may also work after an update since the kext gets replaced with an original one. Currently I'm trying to find a way to trick Clover into thinking that the prepatched kext was never removed but it detects the original framebuffer instead so that it patches it successfully.

 

Edit3: I succesfully tricked clover into patching the original framebuffer by removing the patched framebuffer and installing the original framebuffer manually and using a script to repair permissions and cache.

Link to comment
Share on other sites

I used PlistEdit Pro, please take a look inside the vanilla "Info.plist" that "PowerStates" is a KEY not a STRING. This is the difference, right?

 

Edited: Yeah, online encoder looks different. I don't know why.

 

Edited 2: looking the entire code posted by Slice, same way the one I posted, it just has one change by 4W (for 0) instead of 4X (for 1). 

May be invisible symbols like LineFeed and Tab?

I will check Clover codes to skip non-ascii in this case.

Link to comment
Share on other sites

I used PlistEdit Pro, please take a look inside the vanilla "Info.plist" that "PowerStates" is a KEY not a STRING. This is the difference, right?

 

Edited: Yeah, online encoder looks different. I don't know why.

 

Edited 2: looking the entire code posted by Slice, same way the one I posted, it just has one change by 4W (for 0) instead of 4X (for 1). 

 

Hey juanerson, I ran into a problem with the format you gave me:

 

2Ekgt06.jpg

 

The plist patch didn't work for some reason. Everything else patches fine.

Link to comment
Share on other sites

Hey juanerson, I ran into a problem with the format you gave me:

 

 

 

The plist patch didn't work for some reason. Everything else patches fine.

Looks like you write while should be

Link to comment
Share on other sites

Looks like you write <string> while should be <data>

 

JRR4En9.png

 

I think this is right. It's already set to data. I'm sure that's how its suppose to look like right? The only problem that I can think of is that the code that is being used in the <data></data> is incorrect. I see that Clover converts Hex to Base64, or does the code need to be in Hex for plistpatch?

 

MMmHrPN.png

 

That's how the code looks like in the info.plist file.

Link to comment
Share on other sites

I am very sorry. I am wrong and Clover is wrong (it's not my piece of codes).

          // Info.plist
          // Find and Replace should be in <string>...</string>
 

I will correct this when I understand how to do this.

 

 

EDITED.

The problem is a presence of invisible symbols. I look into this part

				<key>PowerStates</key>
				<integer>1</integer>

in hex and see

09 09 09 09 3C 6B 65 79 3E 50 6F 77 65 72 53 74
61 74 65 73 3C 2F 6B 65 79 3E 0A 09 09 09 09 3C
69 6E 74 65 67 65 72 3E 31 3C 2F 69 6E 74 65 67
65 72 3E 0A 

There are 0x0A and 0x09 that will not be reproduced in Find and Replace patterns. But symbols compare are binary. All invisible symbols must be exactly as they are.

But Copy-Paste into PlistEditor makes as

	<key>Find</key>
	<string>				<key>PowerStates</key>
				<integer>1</integer>
</string>

that differs.

OK, I understand what is the problem.

  • Like 1
Link to comment
Share on other sites

Test, please

		<key>KextsToPatch</key>
		<array>
			<dict>
				<key>Comment</key>
				<string>Power state 1 - 0</string>
				<key>Name</key>
				<string>AppleIntelHDGraphicsFB</string>
				<key>InfoPlistPatch</key>
				<true/>
				<key>Find</key>
				<string><key>PowerStates</key>
				<integer>1</integer></string>
				<key>Replace</key>
				<string><key>PowerStates</key>
				<integer>0</integer></string>
			</dict>
		</array>

Screen Shot 2015-01-13 at 15.12.50.png

 

CLOVERX64.efi-3127.zip

Link to comment
Share on other sites

dAKnT9O.jpg

 

Hey Slice, so I noticed that the infoplist patch code you posted only works on this Clover X64 (3127) release. I tried it on an older version of Clover and it doesn't work. Its no problem.

 

The good news is that it appears that Clover has found the string and then it successfully patches it. But there is a problem. 

 

Sadly, the infoplist patch doesn't actually patch it. My computer freezes during boot when PowerStates is set to 1, so either the infoplist patch isn't working or the code being written to memory is not correct. I did notice that it adds a space when it patches it as seen in the screenshot. I'm not sure if thats a problem. 

 

If I modify the kext to have power states = 0, the computer boots correctly with the other kext patches.

 

Is there a way to check if the infoplist patch is actually working in this type of situation? For example, I can change "Watermarks" from 1 to 0 and it won't affect my computer when it boots. But once I boot into the desktop, I would like to see if this value actually changed correctly. Not sure if its possible.

  • Like 1
Link to comment
Share on other sites

 Share

×
×
  • Create New...