Jump to content
InsanelyMac Forum


  • Content count

  • Joined

  • Last visited

About lavender.t

  • Rank
    InsanelyMac Protégé
  1. SOLVED: X3100 mouse artifact in full resolutions

    not sure. i never saw this kext loaded in my D830. - lt
  2. VoodooHDA

    hmm ... is there a new version available now ? the current readonly svn revision seems to have a bug ... that after my lappy wake up from sleep, there will be no sounds or flaky (the sound devices are still available). thanks ! - lt
  3. for impatient readers, just download and unzip the attachment, overwrite /System/Library/Extensions/AppleIntelGMAX3100FB.kext/AppleIntelGMAX3100FB with AppleIntelGMAX3100FB.soft-cursor. remove Extensions.mkext and reboot with -f -v and you are done. (better make sure first that the version in Info.plist is ======== if you want to know how i hacked this baby, read on ---- i took some time to track down the scrambled mouse when set to full native LCD resolution with AppleIntelGMAX3100FB in IDA Pro. obviously the code is using X3100's hardware mouse cursor. somewhere it must have put in a bad register parameter and caused the artifact. AppleIntelGMAX3100FB::hwSetCursorState() looks to be slightly different btw .18 and .24, but tracking every detail down would just take too much efforts and even if i nailed it, it would be hard to fix at the binary level. since the screen and window all are perfectly drawn, i believe the software cursor would just work fine. all i need to do is to hack the code telling the system that it doesnt support hardware mouse. sound to be a really promising quick fix. so i took a few glances at the apple developer website for class IOFramebuffer (http://developer.apple.com/documentation/Darwin/Reference/KernelIOKitFramework/IOFramebuffer_h/Classes/IOFramebuffer/index.html). it first appears to me that if getAttribute() method returns FALSE for kIOHardwareCursorAttribute, then the system would use soft cursor. quickly located in IDA pro the instructions to return TRUE for kIOHardwareCursorAttribute. and in HexEdit, search for binary sequence: 31 C9 C7 00 <01> 00 00 00, then replace <01> with <00>. rebooted the system and set my display to max resolution -- voila ! the artifact is gone !! but sadly very soon i found another culprit -- if the LCD went to sleep and woke up, the mouse artifact reappeared. read further down the code, i realized that on wake up the system could've called the override function AppleIntelFramebuffer::setCursorImage() directly without checking the attribute, which triggered the hardware cursor. the IOFramebuffer documents says that setCursorImage() needs to return kIOReturnUnsupported to hide the hardware cursor. using the same approach, i found the starting offset of setCursorImage() was at 0xEECC. so i just went ahead and patched the first 6 bytes of the function to: B8 C7 02 00 E0 C3 (mov eax, 0xe00002c7 retn). and that's it !! the mouse cursor now works perfectly ! - lt x3100.soft_cursor.zip
  4. Working X3100 Latitide D830 1920x1200

    X3100 in Latitude D830 with 1920 x 1200 built-in LCD is a real pain in the S. and the talented apple developers just ship even crappier x3100 drivers with each release. it took me too much time to get it work in my D830, and still, not everything. you gotta pick your own poison -- not a single combination works without a glitch. there are basically 2 combinations to choose from. all depend on different versions of AppleIntelGMAX3100FB.ext: A: *3100FB.ext (from apple's official 10.5.1 update package): for this ext, AppleIntelGMAX3100GA.plugin, AppleIntelGMAX3100GLDriver.bundle and AppleIntelGMAX3100VADriver.bundle should be removed. otherwise Finder very frequently hang on boot and you will only see a black (without DSDT fix) or blue (with DSDT fix) screen. with the above 3 kexts removed plus Natit.kext, sleep trick will work. you can further apply DSDT fixes then you dont need sleep tricks any more. CULPRIT: <1> sadly when verticle resolution is native 1200, the mouse artifact raises its ugly head. to workaround, you can either use the blurry reduced resolution (1600 x 1000 and below), or rescale the mouse to a huge one (in "Universal Access" of the System Preferences). UPDATE: the mouse artifact is resolved with my hacked to use soft cursor. see SOLVED: X3100 mouse artifact in full resolutions. <2> since the above 3 kexts were removed, QE will NOT be supported. well, it is already ugly enuf in <1> so that you wont even think about QE. SUMMARY: o- remove: AppleIntelGMAX3100GA.plugin, AppleIntelGMAX3100GLDriver.bundle, AppleIntelGMAX3100VADriver.bundle. o- add Natit.kext. o- use DSDT fix to get rid of the sleep trick. o- reduce resolution to 1600x1200 or lower; or rescale the mouse bigger to fix mouse artifacts. o- use my hacked AppleIntelGMAX3100FB, download from here. B: *3100FB.ext (from apple's official Leopard Graphics Update1.0): good news is -- this one works with all the kexts and NO artifacts at all in native 1920 x 1200 resolution !! no Natit.kext is needed. but you must have DSDT fix. the reason -- well, see culprit: CULPRIT: there is no way to fully wake up the built-in LCD after the screen sleep. the backlight was on but the screen is just black. this is exactly the reason why DSDT fix is a must in this scenario -- you cannot use sleep tricks at all since the LCD never wakes up. this is eactly the same reason that i had thought didnt work at all. changing the screen resolution also blacks out the LCD. the workaround will be cruel to your lappy -- never let it sleep. power off when not in use. unless it's a company laptop that is constantly AC hooked, i dont think you'd even consider doing this. SUMMARY: o- DSDT fix. o- Natit.kext is NOT needed. o- NEVER let it sleep. C: all other newer versions of *3100FB.kext: they dont work at all. apple should fire the developer for the new versions. it's just getting crappier as everyone can see. SIDE NOTES: o- AppleIntelGMAX3100.kext doesnt seem to matter. you can just use the stock one comes with the official releases. o- indeed you only need to remove the DVI devices from the DSDT to get rid of the sleep trick. o- looks to me that versions newer than merged part of the startup code path with the wake up logics, which led to their not working at all for us. o- from and above you will see a warning: "IG: Invalid firmware max backlight settings". yes i suspected that it could be the reason that the LCD doesnt wake up. and i did took a look at the disassembly in IDA. it was reading the max backlight values from offset 0x61254 of a certain table -- for my D830 it was 1000. then it uses a magic number 0x9E822A to divide it by "InverterFrequency", and compare it with 1000. if they are not equal, it complains. by default, if the "InverterFrequency" is not set, it takes a default value of 21000. 0x9E822A / 21000 = 494 != 1000. and that's the reason you see bklt = 494 in IOREG. i tried to change the magic number to be 21000 x 1000. then the warning log went away, but the screen still didnt wake up. tried to read a bit more code but couldnt nail where was wrong. esp there is a big jump table to invoke SDVO opcodes which i thought could be covered by NDA craps that i didnt have time to dig into. but most of the power state code looked same or similar btw .18.7 and .24.9. hope this'd be helpful. - lt
  5. Natit source code ?

    hello, i wonder if Natit is open source ? if so, is there a place i can get the source code, svn/cvs, git ? i'm desperately trying the make the GMA X3600 driver work for my Dell Latitude D830 1920x1200 in 10.5.6 (iPC PPF5 final). tried *lots* of drivers i could find in the forums without luck. the stock 10.5.6 drivers (AppleIntelGMAX3100FB.kext) can read the EDID and other built-in LCD parameters but failed to display anything, even with the so called "sleep tricks". so i'm guessing some parameters may have triggered the driver down a buggy code path that blanked out the LCD. as an alternative approach i'm looking into an old version of 3100FB ( which cannot read the built-in LCD info (EDID, etc). i wish to use Natit to work around the parameters that caused the malfunctioning of the 3100FB driver. with current Natit.kext that i could find, in my Latitude D830 together with 3100FB it will hang the caller if IOService node "Intel965" is queried. thus the Finder cannot fully initialize and the desktop doesnt show up. very much appreciate if anyone could shed some light on this issue. thanks ! - lt
  6. Booting iPC 10.5.6 PPF5 Final on Dell D830

    try the following options: -v cpus=2 maxmem={your-system-RAM MB} e.g., i have 2GB memory i use: -v cpus=2 maxmem=2048 it still panics sometimes, but a lot less.
  7. HOW TO - INTEL GMA X3100 FULLY working!With Dual Monitor!

    booger_sniffer5000, could you please share the whole bundle of tim025's kexts ? i think i'm seeing similar things like you did. thanks !
  8. Leopard Laptops with NON-working GMA X3100

    no luck with my laptop Dell Latitude D830 X3100 with iPC 10.5.6 (PPF5 final) . i wonder if anyone has a success story for D830 + 10.5.6 to share. my system is: * GL960 GMAX3100 [8086:2a02] (rev 0c) * BIOS revision A14 (latest). * LCD 1920 x 1200. the parsed EDID of the LCD from ubuntu follow as reference: # EDID version 1 revision 3 Section "Monitor" # Block type: 2:0 3:f # Block type: 2:0 3:fe # Block type: 2:0 3:fe Identifier "SEC:5532" VendorName "SEC" ModelName "SEC:5532" # Block type: 2:0 3:f # Block type: 2:0 3:fe # Block type: 2:0 3:fe # DPMS capabilities: Active off:no Suspend:no Standby:no Mode "1920x1200" # vfreq 60.013Hz, hfreq 74.117kHz DotClock 167.800000 HTimings 1920 2020 2052 2264 VTimings 1200 1202 1208 1235 Flags "-HSync" "-VSync" EndMode # Block type: 2:0 3:f # Block type: 2:0 3:fe # Block type: 2:0 3:fe EndSection i think i tried almost all the methods i could find in this thread, with or without Natit.kext. i also tried EFI strings and DSDT, using the dual-screen method in thread "HOW TO - INTEL GMA X3100 FULLY working!With Dual Monitor!, without sleep trick on SONY VAIO VGN CR220e, Thats REAL". still, the built-in LCD is either dark of just showing scramble images. the best result so far was to use the vanilla kexts comes with iPC 10.5.6 PPF5 final (version the external display could show the desktop. finder was running and both displays were detected. i could launch the "System Preferences" into the external display and set the resolutions. but the built-in LCD still refuse to show anything even with the sleep-screen hot-corner trick. install or remove Natit.kext doesnt help here. i tried replacing AppleIntelGMAX3100FB.kext with the it was the same as 1.5.36. but if i replaced both 3100.kext and 3100FB.kext with the versions, finder would not start and the external display would be just grey. seem like the finder was blocked indefinitely at initialization. using the older didnt help either. the behavior was kind of random. sometimes it totally blanked out and sometimes i could see only the mouse pointer in the built-in LCD and the rest of the screen was black. and often after some tries my screen background picture was cleared out. by this i mean that even if i boot up without any of the GMAX drivers (so it will fall back to default VESA), no background picture will be shown. also loaded up the chameleon with DSDT support and added my own DSDT.aml following the instructions given in this thread. the DSDT was in effect 'cause i could see the VID2 never showed up in the boot up messages with the updated dsdt.aml. but that didnt help with the display either. one thing i realized from the IOREG dump was that the built-in LCD has a IODisplayConnectFlags = 00 08 00 00, which is different from the working external display which is 0. i dont really know if this is the culprit or not. and how to fix it if it is the problem. thanks very much for your info. - lt
  9. VoodooHDA

    this is purely awesome !! my Intel HDA (STAC 9205) in Dell Latitude D830 now worked like a charm. thank you !