Jump to content

Leopard Laptops with NON-working GMA X3100


  • Please log in to reply
845 replies to this topic

#721
krazyken

krazyken

    InsanelyMac Protégé

  • Just Joined
  • Pip
  • 4 posts
Is there a way to pull off getting the DSDT with vanilla kexts loaded from a command line and then edit it afterwards? I cannot get the USB wifi to fireup and connect while the x3100 kexts are there.

I've gotten natit to work, but cant seem to pull a 1366 resolution, so I'm hoping your guide can work Flame. I've heard that DSDT work can often open a card up completely.

Any advice Flame or others? Seems like we've got some heavy weights for the x3100 in here :wacko:

In Vesa, I can screenshare. But after restoring vanilla kexts and rebooting, wifi just can't connect (and of course I can't see {censored} with those kexts loaded haha).

Thanks! Would love to get this Lenovo U110 working, it'd be such a macbook nano haha!

#722
CharredPC

CharredPC

    InsanelyMac Sage

  • Members
  • PipPipPipPipPip
  • 302 posts
Mine's fixed. Finally.

The solution ended up being:

1. Using flame's DSDT edit
2. Editing the Boot.plist to include the same info
3. Identifying the EDID under @0, AAPL, and AAPL01 in Boot.plist

It's the messiest fix I've ever seen, but it gives me 100% functionality using stock drivers. Best of all, the fixes reside on the EFI partition, so if I ever have to reinstall OSX, they aren't touched!

I've attached my Boot.plist and DSDT below so the fixes can be seen.

Edit: The Boot.plist was NOT being used. The other half of the DSDT equation was a Display Override I'd previously created. Further explanations below, just didn't want false information here ;)

Attached Files



#723
flames

flames

    InsanelyMac Protégé

  • Members
  • Pip
  • 34 posts

Mine's fixed. Finally.

The solution ended up being:

1. Using flame's DSDT edit
2. Editing the Boot.plist to include the same info
3. Identifying the EDID under @0, AAPL, and AAPL01 in Boot.plist

It's the messiest fix I've ever seen, but it gives me 100% functionality using stock drivers. Best of all, the fixes reside on the EFI partition, so if I ever have to reinstall OSX, they aren't touched!

I've attached my Boot.plist and DSDT below so the fixes can be seen.


thanks for reporting back and congratulations to your success!
the edid injection in dsdt should work fine, i dont know, why you needed to put it in com.apple.boot.plist. but anyway, the success is more important.
you are right, this whole topic is the darkest hack i have ever seen, and your edid mod is the top of that xD

offtopic: i like your isight mod, plan to do the same to my toshiba, will report in your isight topic.

#724
CharredPC

CharredPC

    InsanelyMac Sage

  • Members
  • PipPipPipPipPip
  • 302 posts
Just to make my hack even uglier, it turns out some previous work I did using some Display Overrides are helping as well! Since my system has a 50% chance of booting up without an EDID being detected, I added the EDID data to the unknown display override. So half the time (when it can't autodetect the EDID) it uses that Override to successfully show a picture :P

I've tried removing the overrides, tried removing the DSDT edits, but touching either one thing kills the fix. Pretty confusing, but true. Definitely a cludgy, ugly rig-job. Not sure why any one bit of it doesn't do all the work. Near as I can tell, here's how it's working:

There was absolutely no picture until the DSDT edit. Once that was in place, there was at least a chance of using the display- whenever the EDID was detected. The Overrides made it 100%. I've successfully removed all Boot.plist edits with no change, so they weren't doing a thing. DSDT + Overrides is the key here. Not sure why just the overrides won't work... the ioreg output is nearly exact, with the DSDT mod only (somehow) changing the "IOFBI2CInterfaceIDs" and "IOFBDependentID" values listed under AppleIntelFramebuffer. This is very likely the key, since the blank screen is indicative of a misloading framebuffer! Wonder if there's any way to inject those values? Will keep trying for a 100% EFI (hopefully DSDT) solution. If anyone has any suggestions, please share.

flames: Good luck on the iSight mod, let me know if you need any help. The tiny wires can be annoying, but the results are awesome once it's done ;) Kind of like this display hack!

PS. Made the IOFBI2CInterfaceIDs match by adding a line to the Override- no change. Can't seem to affect IOFBDepenentID the same way, though.

#725
Vampirexx

Vampirexx

    Cyborg Ninja

  • Members
  • PipPipPipPipPipPipPip
  • 643 posts
  • Gender:Male
  • Location:Italy
  • Interests:Aikido, Ninpo/Ninjutsu, Rock n roll, Mac OS X
Please I hope you will find a universal solution for this f@@@ graphic card :(

#726
Vampirexx

Vampirexx

    Cyborg Ninja

  • Members
  • PipPipPipPipPipPipPip
  • 643 posts
  • Gender:Male
  • Location:Italy
  • Interests:Aikido, Ninpo/Ninjutsu, Rock n roll, Mac OS X
Please how do I find my EDID??

#727
CharredPC

CharredPC

    InsanelyMac Sage

  • Members
  • PipPipPipPipPip
  • 302 posts
Pulled the following from my Acer mod thread, as it's relevant here and I hope to get some input:

I've completely reorganized my Acer's DSDT to better match a Macbook Pro 4,1's layout. Mostly a cosmetic change, but it really helps me compare the two. They are surprisingly similar. I'm also still working on coming up with a DSDT-only display fix. I think I can actually explain WHY some laptops require a AAPL "dual-link" line in the DSDT in order to use the internal LCD:

See, in a normal Macbook, the address for both the X3100 videocard (GFX) and the display devices are the same (0x00100000). But in some laptops, like my Acer, the displays (PEGP) are at 0x00100000, while the videocard (GFX0) is over at 0x00200000. The "dual-link" term is likely enabling or telling OSX to look for that secondary hardware address so the internal LCD can be used. I've noticed that the entire PEGP display section of the ACER DSDT can be removed, without making any difference. It's simply not using the LCD or VGA data there. Including that display data under the GFX0/0x0020000 section seems useless as well... probably because THEY aren't at that address. Also, GFX0 can be trimmed down to only that single method of "dual-link", and it works fine. Anything display-related (such as trying to inject AAPL01, EDID data) is ignored, again possibly because the display isn't at that hardware address.

It's an interesting trial and error, but having the actual Macbook4,1 DSDT has helped a bit. I'm using that as it's the closest Macbook to this Acer (same cpu family, X3100 video). I'll review some others, though, and make sure that the double addressing isn't used in any Macbook. I doubt it is, but if so, perhaps I can imitate how it is handled. My biggest challenge now is the EDID issue. Sometimes OSX sees it fine, sometimes not. When it does- full video, with "DisplayVendorID" = 12812 and "DisplayProductID" = 57088. When it doesn't, I get a black screen, because without my EDID it uses default (unknown display values, I believe) "DisplayVendorID" = 1970170734 and "DisplayProductID" = 1815. Yes, I can pop a Display Override in place so the latter Vendor/Product ID's translates to the correct settings, but that's an unclean solution. The biggest challenge I'm facing is forcing an EDID onto a display which is autodetected, so not referenced in the DSDT at all. The LCD ends up being "display0" (AppleBacklightDisplay), located at GFX0@2. There's also simply "display@2,1" , likely because of the double addressing I mentioned previously. That has no display device attached to it.

As if that wasn't hard enough, I've found that what things are called in the DSDT rarely match up to what OSX calls it. A good example is when I spent an hour trying to enable sleep capability on EHC1 (where the iSight is located) within the DSDT. No matter what I did, the laptop instantly woke from sleep due to a HDEF EHC1 plugged or unplugged error. I finally figured out that OSX's EHC1 is the DSDT's EHC2 :blink: The USB (UHC) numbering is also just as wacky. I'll continue to work on this, though. The good news is that the "dual-link" line should fix everyone's double addressing issue. The bad news is, when combined with spotty or nonexistent EDID detection, it's an incomplete solution. For now, all I can recommend for those who have done the DSDT mod and still have a black screen, is to post here so we can try troubleshooting.

Please how do I find my EDID??


Firstly, we should look at your DSDT and verify that the dual-link line was added successfully to the proper place. If you post it here, I'll check that for you (or add it in myself if you like).

Once we've verified that, we can go on to more troubleshooting steps- ie, enabling screen sharing, checking resolution / Product/Vendor ID's / EDID detection, etc. If you have the same issue as mine (requiring both a dual-link and EDID fix) we can get it solved :D

#728
Vampirexx

Vampirexx

    Cyborg Ninja

  • Members
  • PipPipPipPipPipPipPip
  • 643 posts
  • Gender:Male
  • Location:Italy
  • Interests:Aikido, Ninpo/Ninjutsu, Rock n roll, Mac OS X
Thank you for answering Charred!
I tried all tahta is in my power, natit injection dsdt, different kext, even 10.5.8 x3100Fb.kext it doesnt work. In this link there is my original DSDT (KarasuTengu) http://www.insanelym...p...t&p=1342535

I hope you can have a look, I dont know how to solve this problem, I tried all suggestions I've read surfing the web.
Thank you for your time and patience

#729
CharredPC

CharredPC

    InsanelyMac Sage

  • Members
  • PipPipPipPipPip
  • 302 posts

Thank you for answering Charred!
I tried all tahta is in my power, natit injection dsdt, different kext, even 10.5.8 x3100Fb.kext it doesnt work. In this link there is my original DSDT (KarasuTengu) http://www.insanelym...p...t&p=1342535


Your DSDT is pretty different, but I took a stab at it. I added the DGTP method, added the AAPL lines under your graphics device, and removed references to the other output headers (CRT, DVI, TVO). After putting it in place, make sure you reboot with -v so you can watch the output as it loads; I renamed your display from VGA to GFX, so we'll know it's loading the new DSDT if you see references to it (ie, GFX: Match found). Let me know how it goes! I know we're probably repeating what flames has done here, but we have to start with the basics :)

Attached Files



#730
Vampirexx

Vampirexx

    Cyborg Ninja

  • Members
  • PipPipPipPipPipPipPip
  • 643 posts
  • Gender:Male
  • Location:Italy
  • Interests:Aikido, Ninpo/Ninjutsu, Rock n roll, Mac OS X
Thank you very much my friend I try it right now and let you know! Thank you :help:


EDIT: The injection didn't went fine.... I'm stuck at the same point it makes me cry... :help:
what can we try now?

#731
CharredPC

CharredPC

    InsanelyMac Sage

  • Members
  • PipPipPipPipPip
  • 302 posts

Thank you very much my friend I try it right now and let you know! Thank you ;)


EDIT: The injection didn't went fine.... I'm stuck at the same point it makes me cry... :(
what can we try now?


Did you see VGA or GFX identified when you booted with -v? Before going any further, I want to make sure it's actually picking up the DSDT. If not, all the changes we do won't make a bit of difference ;)

#732
Vampirexx

Vampirexx

    Cyborg Ninja

  • Members
  • PipPipPipPipPipPipPip
  • 643 posts
  • Gender:Male
  • Location:Italy
  • Interests:Aikido, Ninpo/Ninjutsu, Rock n roll, Mac OS X
Actually can't see any vga or gfx calling when booting in verbose mode.
I try posting here some old kext for leopard that worked for me in 10.5.6.
Maybe you could help me solve the problem? Thank you!

I tried put your dsdt into extra folder and into osx root (/). here are my kext that worked in leopard 10.5.6

http://rapidshare.co....5_okk.zip.html

Did you see VGA or GFX identified when you booted with -v? Before going any further, I want to make sure it's actually picking up the DSDT. If not, all the changes we do won't make a bit of difference :)



#733
CharredPC

CharredPC

    InsanelyMac Sage

  • Members
  • PipPipPipPipPip
  • 302 posts

Actually can't see any vga or gfx calling when booting in verbose mode.
I try posting here some old kext for leopard that worked for me in 10.5.6.
Maybe you could help me solve the problem? Thank you!

I tried put your dsdt into extra folder and into osx root (/). here are my kext that worked in leopard 10.5.6

http://rapidshare.co....5_okk.zip.html



If the DSDT is being loaded, it should reference GFX as the video device. Maybe it isn't even being loaded, which explains why editing it doesn't fix things. Are you using the latest Chameleon?

#734
Vampirexx

Vampirexx

    Cyborg Ninja

  • Members
  • PipPipPipPipPipPipPip
  • 643 posts
  • Gender:Male
  • Location:Italy
  • Interests:Aikido, Ninpo/Ninjutsu, Rock n roll, Mac OS X
yes I found a compiled version of RC4. How can I force the dsdt detection?

Thank you


EDIT: I put back boot 10.5 from netkas and now it takes the dsdt I guess
what we should do now?

#735
CharredPC

CharredPC

    InsanelyMac Sage

  • Members
  • PipPipPipPipPip
  • 302 posts

EDIT: I put back boot 10.5 from netkas and now it takes the dsdt I guess
what we should do now?


So, it references GFX during boot now, and shows GFX as the videocard under ioreg?

#736
Vampirexx

Vampirexx

    Cyborg Ninja

  • Members
  • PipPipPipPipPipPipPip
  • 643 posts
  • Gender:Male
  • Location:Italy
  • Interests:Aikido, Ninpo/Ninjutsu, Rock n roll, Mac OS X
Many thanks Mate! I did it! it only works in 32 bit mode but it's better than nothing :) I use your dsdt all the 10.6.2 kext except for natit and gmax3100fb I use the ones from 10.5.6 Thank you for your time, I0m awaits a better method

#737
CharredPC

CharredPC

    InsanelyMac Sage

  • Members
  • PipPipPipPipPip
  • 302 posts

Many thanks Mate! I did it! it only works in 32 bit mode but it's better than nothing :P I use your dsdt all the 10.6.2 kext except for natit and gmax3100fb I use the ones from 10.5.6 Thank you for your time, I0m awaits a better method


That's excellent! Definitely better than nothing.


While working this evening with flames, we had a DUH! moment. After needing to mod my lcd cable to accommodate a higher resolution screen, I of all people should have known why his fix works. Here's the simple truth of it.

If you have an X3100 videocard (or perhaps others) in your laptop, and have an LCD that displays higher resolutions than 1280x800, you'll likely need the Dual link fix. All you need is this:

Name (_ADR, 0x00020000) // <--find in DSDT and add the following after: //
  Method (_DSM, 4, NotSerialized)
				 {
					 Store (Package ()
						 {
							 "AAPL01,DualLink", 
							 Buffer (0x04)
							 {
								 0x01, 0x00, 0x00, 0x00
							 }
						 }, Local0)
					 DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
					 Return (Local0)
				 }

The reason why this works is easy. Higher-resolution LCD's require two data lines to handle the increased information. With my original 1280x800 LCD, OSX worked perfectly. Once I upgraded it to a 1440x900, OSX showed a black screen. Just like in a DVI connector, to get better resolutions you need... you got it- Dual Link capability. Windows and some older OSX drivers + Natit automatically enable Dual link, but the latest Leopard stock kexts do not. Without this flag telling OSX to use Dual Link, your backlight comes on, but the video data isn't getting through. Once this fix is added, OSX knows to send a dual stream of data, and the image comes through.

As flames has said before, this doesn't fix everything for everyone. It's a specific case for those of us with higher-resolution X3100 laptops. For people with EDID issues as well (like myself), it's half the solution. Display Overrides seem to be a working fix in the meantime. If you have a black screen, try this fix, and the results are strange, scrambled, or stretched, you likely have an EDID issue as well. This means your screen has been found, dual link is enabled, but OSX has no idea what kind of display it is so talks to it with incorrect default values. In this case, the following might help-

Boot to Windows and retrieve your EDID using this. I was able to get mine from within OSX because after multiple reboots, it can occasionally read the EDID and displays fine. You may want to try that if you don't have Windows installed. Now boot into OSX and (using screen sharing, if the screen is unusable) open SwitchResX. Find the fake display and vendor id's it is using (mine is using /System/Library/Displays/Overrides/DisplayVendorID-756e6b6e/DisplayProductID-717 ). 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, or you don't have all the data, you can try simply using / editing mine, which I have attached below. Once done, remove the .plist extension, overwrite the default Override, and reboot. If all goes well, when OSX can't read your EDID, it will use the default Display Override again and this time get the proper data from there. If you have a better way to do this, please share.

I'm still researching a way to directly inject EDID data into the DSDT, and will update here when I have news. I believe I'm fairly close, thanks to flames' help. Until then, I'll try and keep my wild speculations and incoherent uneducated ramblings to a minimum ;)

Attached Files



#738
Vampirexx

Vampirexx

    Cyborg Ninja

  • Members
  • PipPipPipPipPipPipPip
  • 643 posts
  • Gender:Male
  • Location:Italy
  • Interests:Aikido, Ninpo/Ninjutsu, Rock n roll, Mac OS X
Great news Mate!!! You and Flames are genius!! :thumbsup_anim:
I'm trying your method thank you again!

EDIT----------

Dear Charred I have to thank you again you and Flames!
I tried your method and this almost works. I explain the situation.
I must have your patched dsdt with injection and the display patch I added (this basically replace the natit needs)
then I tried with stock 10.6.2 snow drivers for gmax3100 but the screen is almost displayed but I vad some artifacts, but is visible only messed up. Then I tried replace the old gmax3100FB from 10.5.6 and now it WORKS in 64 bit mode!!

But I think apple made a bad works while developing 10.6.2 gma drivers they're buggy, do you think you can fix gmax3100fb native kext?

Thanx again for all my friend! :dance_24:

#739
sparrowdclxvi

sparrowdclxvi

    InsanelyMac Protégé

  • Members
  • PipPip
  • 59 posts

That's excellent! Definitely better than nothing.


While working this evening with flames, we had a DUH! moment. After needing to mod my lcd cable to accommodate a higher resolution screen, I of all people should have known why his fix works. Here's the simple truth of it.

If you have an X3100 videocard (or perhaps others) in your laptop, and have an LCD that displays higher resolutions than 1280x800, you'll likely need the Dual link fix. All you need is this:

Name (_ADR, 0x00020000) // <--find in DSDT and add the following after: //
 Method (_DSM, 4, NotSerialized)
				{
					Store (Package ()
						{
							"AAPL01,DualLink", 
							Buffer (0x04)
							{
								0x01, 0x00, 0x00, 0x00
							}
						}, Local0)
					DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
					Return (Local0)
				}

The reason why this works is easy. Higher-resolution LCD's require two data lines to handle the increased information. With my original 1280x800 LCD, OSX worked perfectly. Once I upgraded it to a 1440x900, OSX showed a black screen. Just like in a DVI connector, to get better resolutions you need... you got it- Dual Link capability. Windows and some older OSX drivers + Natit automatically enable Dual link, but the latest Leopard stock kexts do not. Without this flag telling OSX to use Dual Link, your backlight comes on, but the video data isn't getting through. Once this fix is added, OSX knows to send a dual stream of data, and the image comes through.

As flames has said before, this doesn't fix everything for everyone. It's a specific case for those of us with higher-resolution X3100 laptops. For people with EDID issues as well (like myself), it's half the solution. Display Overrides seem to be a working fix in the meantime. If you have a black screen, try this fix, and the results are strange, scrambled, or stretched, you likely have an EDID issue as well. This means your screen has been found, dual link is enabled, but OSX has no idea what kind of display it is so talks to it with incorrect default values. In this case, the following might help-

Boot to Windows and retrieve your EDID using this. I was able to get mine from within OSX because after multiple reboots, it can occasionally read the EDID and displays fine. You may want to try that if you don't have Windows installed. Now boot into OSX and (using screen sharing, if the screen is unusable) open SwitchResX. Find the fake display and vendor id's it is using (mine is using /System/Library/Displays/Overrides/DisplayVendorID-756e6b6e/DisplayProductID-717 ). 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, or you don't have all the data, you can try simply using / editing mine, which I have attached below. Once done, remove the .plist extension, overwrite the default Override, and reboot. If all goes well, when OSX can't read your EDID, it will use the default Display Override again and this time get the proper data from there. If you have a better way to do this, please share.

I'm still researching a way to directly inject EDID data into the DSDT, and will update here when I have news. I believe I'm fairly close, thanks to flames' help. Until then, I'll try and keep my wild speculations and incoherent uneducated ramblings to a minimum ;)


This probably explains why I've never been able to get an external monitor to work on my laptop as it's 1280 x 800.

I used this post by slashack earlier in this thread to modify my DSDT to get my laptop screen working on 10.6.2. Otherwise I just got a backlight and nothing else, and no external monitor either.

Do you know what I would need to modify to get an external monitor working?

DSDT attached in case you need it.

Attached Files



#740
Einstein_ein

Einstein_ein

    InsanelyMac Protégé

  • Members
  • PipPip
  • 95 posts
  • Gender:Male
  • Location:Thessaloniki, Greece

Name (_ADR, 0x00020000) // <--find in DSDT and add the following after: //
 Method (_DSM, 4, NotSerialized)
				{
					Store (Package ()
						{
							"AAPL01,DualLink", 
							Buffer (0x04)
							{
								0x01, 0x00, 0x00, 0x00
							}
						}, Local0)
					DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
					Return (Local0)
				}

Could you possibly check and insert the code in my DSDT? Errors in compiling drives me crazy, thanks in advance for your help

Attached Files







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