theBishop Posted August 12, 2006 Share Posted August 12, 2006 I'm one of the many suffering with the Intel 915 VGA problem. For those who don't know, laptops that use the intel 915 gpu will hang after the White Spinning logo at a blue screen if you don't connect a monitor to the VGA port. This has some osx86'ers creating silly VGA loop mods to make their hackintoshes usable. It seems like the going theory is that the bios doesn't allocate enough RAM by default for OSX. And that plugging in a VGA connector causes the bios to allocate more vram. i'm here to say this theory is false. I have two piece of evidence to show: #1: Whether or not the VGA cable is plugged in, Darwin's boot option screen shows 7MB Vesa 3. If the vram theory was correct, you'd see more ram at that screen. #2: You don't need the VGA cable connected at boot. The only time the cable must be plugged in is for the 2 seconds during OSX's boot process when it initializes the GFX. Try if for yourself. I'm not saying the problem isn't related to vram, only that it has nothing to do with the bios' allocation of vram. Because the issue is clearly established at that specific point of the boot process, i believe the issue could be solved in software. I have programming skills, but i'm also an OSX newb, so i doubt i'll be much help in solving the issue. Link to comment Share on other sites More sharing options...
troisd Posted August 12, 2006 Share Posted August 12, 2006 You definitely can help out. I'm an old school programmer (Sparc SunOS/Solaris) and recently took the job to figure this out. Answer me this, and perhaps others: from a cold bootup *without* the VGA hack (or VGA null adapter), do you *always* get the blue screen hangup? Every single time? I wrote some test code in Linux and ran that off a minimalistic (text only and 45MB big) live Linux CD (Slax Frodo) which allocated either 128MB video RAM. Then I did a warm reboot into OSX86, and 3 out of 5 times it booted normally using my laptop's LCD screen *without* any VGA hack. Every time I went into Darwin's boot prompt, it always showed 7MB video RAM, *but* it still activated my laptop's LCD. I'm only dissecting 915 chipsets for now and there are some bugs left. I am now in the process of converting the code to OSX86 and that in itself is a challenge because Apple removed /dev/mem for direct memory access. Good time to learn Mach API syscalls! My work is based on the following theories: 1. video memory allocation theory. 2. warm reboot from WinXP preserves the its video memory allocation. From what I understand, (2) does not go through POST initialization whereupon the SYSTEM BIOS and VIDEO BIOS is shadowed into RAM. My technique from Linux to OSX86 via complete warm reboot goes through POST init and I wonder if shadow VIDEO BIOS overwrites my video RAM patch done in Linux. When I can get the patch to run post-Darwin boot prompt, I'll see once and for all if the video memory theory is right.... or wrong! Link to comment Share on other sites More sharing options...
Rammjet Posted August 12, 2006 Share Posted August 12, 2006 Let me throw a different twist in here. Macs have always required monitors (or dongles or cables) in order to boot. For some reason, having a headless Mac was not provided for by Apple despite complaints by customers (I'm sure the Xserve must be an exception). So, during those first few seconds when the OS is checking for a monitor, for some reason on a 915, it doesn't see the LCD. But it will see a dongle or the wires. Link to comment Share on other sites More sharing options...
rustak Posted August 12, 2006 Share Posted August 12, 2006 I have a plan that I'm slowly putting into action, though my problem is a little different (my internal LCD panel on the P1510 is not recognized by any of the intel drivers, either the 915 driver or the IntelIntegratedGraphics driver; vga out works fine). The actual video driver seems to be fine; it just seems to be doing display detection brokenly -- not surprising, since the machines the driver was originally written for didn't have integrated displays. So, my plan is to just write a new driver that subclasses the existing driver, lets almost all function calls go straight through to it, and just handle monitor detection myself. There's an open-source driver for the GMA 900 as part of the intel xorg driver, so that's not an issue. (In theory, you could implement a brand-new driver using the xorg driver as a starting point, but I don't think that's necessary.) So, first, subclass IntelIntegratedGraphics and get things working with that (since it's a simple IOFramebuffer-based driver), and then move on to Intel915 (more complex, some dancing around with IOAccelerator). I'm taking this on, but my time is limited, so if someone who has more free time than I, get to work! Link to comment Share on other sites More sharing options...
troisd Posted August 12, 2006 Share Posted August 12, 2006 So, during those first few seconds when the OS is checking for a monitor, for some reason on a 915, it doesn't see the LCD. But it will see a dongle or the wires. In a sorta way it does... you get a blue screen. If it didn't, you'd get a black screen. This blue screen seems to be the end of it. No more disk activity. Rustak's ideia is interesting but isn't a little hack anymore Link to comment Share on other sites More sharing options...
rustak Posted August 12, 2006 Share Posted August 12, 2006 You can do your idea in the same way -- creating a kext is pretty trivial, and you can set up your kext so that it has a chance to run (your probe method will be called) before any of Apple's drivers. At that point you have a nub for the device, and you can poke pci config registers/memory space/etc. Just do your monitor setup, then return null (saying your driver can't handle it) and let the other driver take over. I'd suggest writing a small kext first that would just print the contents of the registers you're interested in, and then doing a few linux->osx warm reboots to gather data from when it works and when it doesn't, so you know what bits to bang where. Link to comment Share on other sites More sharing options...
theBishop Posted August 13, 2006 Author Share Posted August 13, 2006 To date, i have NEVER bad OSX boot properly without the VGA connected. the idea of using a more generic "integrated video" kext sounds interesting. But i think the fix is going to involve actually modifying the part of the code which initializes the gpu. I'm not really clear on how OSX86 is "patched". Are coders compiling the darwin kernel from source, or are they using the kernel on the CD? Link to comment Share on other sites More sharing options...
troisd Posted August 13, 2006 Share Posted August 13, 2006 no need for kernel sources it ain't in there... it's apple's kexts sources we need, and they don't release that. no need for kexts either because it's a run-once kinda deal. do the required initialization and let OS X takeover from there. Link to comment Share on other sites More sharing options...
xxabi Posted August 14, 2006 Share Posted August 14, 2006 If you press your shortcut to external monitor in the very moment it starts blue screen (mine is Fn+F4) then it forces monitor detection AND IT WORKS WITHOUT PINS OR EXTERNAL MONITOR. So there should be an application that forces this detection in the moment BEFORE it starts this screen. Link to comment Share on other sites More sharing options...
rb2k Posted August 20, 2006 Share Posted August 20, 2006 Strange... The first time I installed OSX86 (?a year ago? shortly after the first release appeared) it worked fine on my laptop Now it doesn't (blue screen) Only thing that changed: HDD and a BIOS update Link to comment Share on other sites More sharing options...
troisd Posted August 20, 2006 Share Posted August 20, 2006 Assuming same OSX86 install disk, it just emphasizes what we all suspected. It's a BIOS bug which doesn't properly report the correct modelines and/or video ram. Certain laptops allowed for much better control of how much VRAM to use in BIOS. Those lucky few got it working without any problems. Intel's chipset usually has few VRAM options in BIOS because of its much advertised DVMT (sp?), i.e. dynamic video memory allocation. Link to comment Share on other sites More sharing options...
rb2k Posted August 21, 2006 Share Posted August 21, 2006 No, I have a 10.4.7 DVD now and the first time I installed I had... uhm ?10.4.1? I can set fix values for video ram (64/128/auto), but that doesn't help Link to comment Share on other sites More sharing options...
troisd Posted August 21, 2006 Share Posted August 21, 2006 Most likely it was your BIOS update. Care to inform us your laptop make/model/BIOS version? Link to comment Share on other sites More sharing options...
rb2k Posted August 21, 2006 Share Posted August 21, 2006 Most likely it was your BIOS update. Care to inform us your laptop make/model/BIOS version? Laptop: Samsung x20 1730V (Bios 12z) CPU Intel® Pentium® M processor 1.73GHz RAM 1024MB GFX: Intel Corp. Mobile Graphics Controller (i915) Sound Intel Corp. 82801FB/FBM/FR/FW/FRW (ICH6 Family) AC'97 Audio Controller USB 1 Intel Corp. 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI USB 2 Intel Corp. 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB2 EHCI Controller Firewire Ricoh Co Ltd R5C552 IEEE 1394 Controller LAN Broadcom Corporation BCM4401-B0 100Base-TX WLAN Intel Corp. PRO/Wireless 2200BG Modem Intel Corp. 82801FB/FBM/FR/FW/FRW (ICH6 Family) AC'97 Modem Controller TouchPad Synaptics PCMCIA Ricoh Co Ltd RL5c476 II MD/SD-Slot Ricoh Co Ltd R5C822 SD/SDIO/MMC/MS/MSPro Host Adapter (rev 17) + Ricoh Co Ltd R5C592 Memory Stick Bus Host Adapter (rev 08) but after reading the other threads about gma900, it could be possible that it only worked on the 10.4.1 install because at that time, the chip wasn't detected and therefore VESA was used? (Although the installer is using vesa too... hmm ) Link to comment Share on other sites More sharing options...
troisd Posted August 21, 2006 Share Posted August 21, 2006 nice try... 10.4.1 was around when the apple's developer kit was being thoroughly hacked. the developer's machine had GMA900 and worked as should, except, that it was used using external vga! internal vga was not intended for use, thus our current problem. I'm downloading Apple.OS.X.x86.Generic.Install.DVD (I believe it's 10.4.0) to test that theory. In a couple of days I'll know... Link to comment Share on other sites More sharing options...
jtwh20 Posted August 21, 2006 Share Posted August 21, 2006 Macs have always required monitors (or dongles or cables) in order to boot. For some reason, having a headless Mac was not provided for by Apple despite complaints by customers (I'm sure the Xserve must be an exception) i have to disagree - i have a g4 powermac that sits in the corner powered on, as a file / printserver - i use VNC to control it - it has no keyboard, mouse or dsplay connected - just power and ethernet Link to comment Share on other sites More sharing options...
troisd Posted August 21, 2006 Share Posted August 21, 2006 While fiddling around the Darwin bootloader, I've noticed that if you put: "Graphics Mode"="1280x800x32" Sometimes... it boots right into OSX without the need for any VGA dongle. Link to comment Share on other sites More sharing options...
troisd Posted September 1, 2006 Share Posted September 1, 2006 but after reading the other threads about gma900, it could be possible that it only worked on the 10.4.1 install because at that time, the chip wasn't detected and therefore VESA was used?(Although the installer is using vesa too... hmm ) You are correct indeed. I downloaded 10.4.1 and it did use VESA all the way. Profile indicates no kext loaded. No CI/QE either. Beachballs abundant. No dongle required. Link to comment Share on other sites More sharing options...
rb2k Posted September 1, 2006 Share Posted September 1, 2006 the strange thing is that VESA on Linux is pretty fubar too... I usually end up with a black screen and have to fn+f4 back to my LCD Link to comment Share on other sites More sharing options...
rb2k Posted October 27, 2006 Share Posted October 27, 2006 does anyone if 10.4.8 brought some changes with it in this direction? Link to comment Share on other sites More sharing options...
GBK.Xscape Posted October 27, 2006 Share Posted October 27, 2006 You definitely can help out. I'm an old school programmer (Sparc SunOS/Solaris) and recently took the job to figure this out. Answer me this, and perhaps others: from a cold bootup *without* the VGA hack (or VGA null adapter), do you *always* get the blue screen hangup? Every single time? I wrote some test code in Linux and ran that off a minimalistic (text only and 45MB big) live Linux CD (Slax Frodo) which allocated either 128MB video RAM. Then I did a warm reboot into OSX86, and 3 out of 5 times it booted normally using my laptop's LCD screen *without* any VGA hack. Every time I went into Darwin's boot prompt, it always showed 7MB video RAM, *but* it still activated my laptop's LCD. I'm only dissecting 915 chipsets for now and there are some bugs left. I am now in the process of converting the code to OSX86 and that in itself is a challenge because Apple removed /dev/mem for direct memory access. Good time to learn Mach API syscalls! My work is based on the following theories: 1. video memory allocation theory. 2. warm reboot from WinXP preserves the its video memory allocation. From what I understand, (2) does not go through POST initialization whereupon the SYSTEM BIOS and VIDEO BIOS is shadowed into RAM. My technique from Linux to OSX86 via complete warm reboot goes through POST init and I wonder if shadow VIDEO BIOS overwrites my video RAM patch done in Linux. When I can get the patch to run post-Darwin boot prompt, I'll see once and for all if the video memory theory is right.... or wrong! this is true because when i first started into osx86 it would sometimes boot up into osx without the external monitor or wire hack. dont know why but sometimes it did and most of the time it didnt Link to comment Share on other sites More sharing options...
Honu Posted November 5, 2006 Share Posted November 5, 2006 Hi, Same thing for me, 95% of the time it stay stucked on the blue screen ... 5% of the rest it boot... I can't really figure out what are the difference in the configuration .. ! But i haven't got any chance to reproduce a good boot two times in a row .. !!! Booting with a second monitor will always be ok. Have tried booting "Graphic blabla"="1024x768x8" ... not better. Is plugin a dongle the only solution for now ..? (don't like this kind of trick) Dell D410 Intel GM915 Centrino 1.73 Ghz 1 stick 1Go 533 DDR Booting Osx on external 20Go usb drive Link to comment Share on other sites More sharing options...
NET Posted May 12, 2007 Share Posted May 12, 2007 Right in the momment i have got HP Pavilon 4000 with i915 the problem with blue screen is strange, it booted normaly with build in LCD without any dongles or shorts wires, pins or anything alse, afther using XP. but i have used -f switch (it probably has nothing to do with that) and next time i booted there was blue screen, next time afther rebooting from XP i could use the build in display. Question WHY? and how make it working every time ? Jas 10.4.8 AMD/Intel SSE2/3 no additional software or kexts Edited: 1. Delating the /System/Library/Extensions.kextcache and /System/Library/Extensions.mkext makes the lappy booting and working with build in display. without any dongle/shorts/external displays 2. Ones in the beggening the display has worked fine and in the system profiler i have seen 2 displays! why? there was no other display connected, no shorts no pins no dongle. worked well till i have turned on mirror mode on displays, the display get blue, and the second one too, cince that moment i cant see 2 dispalys even afther reboot and LCD works when i delate the files as written in point 1. in my opinion we can solve the problem in a software way ones for ever. Link to comment Share on other sites More sharing options...
troisd Posted May 12, 2007 Share Posted May 12, 2007 Right in the momment i have got HP Pavilon 4000 with i915 the problem with blue screen is strange, it booted normaly with build in LCD without any dongles or shorts wires, pins or anything alse, afther using XP. but i have used -f switch (it probably has nothing to do with that) and next time i booted there was blue screen, next time afther rebooting from XP i could use the build in display. Question WHY? and how make it working every time ?Jas 10.4.8 AMD/Intel SSE2/3 no additional software or kexts Howdy! I've been away from the OSX86 scene far too long. Didn't have time to play with this project... slowing getting into the rhythm of 10.4.9 and a new kernel! Yeehaw! Back to your question: When you ran your WindowsXP, it correctly configured your video memory into shadow ROM. When you do a warm reboot, the contents of the shadow ROM is still intact and just the way needed for the i915 to work with OSX. If you do a cold reboot, the shadow ROM is erased and must be copied again, incorrectly by Darwin bootloader. Link to comment Share on other sites More sharing options...
NET Posted May 12, 2007 Share Posted May 12, 2007 ok, but, why it starts right afther cold boot ? as i said, i can start easy when i delate the kextcache and mkext, so if it enables the build in LCD , we can do that too. and it is not the hardware problem but software. and another thing, i can start with build in LCD without doing nothing just putting jas dvd into drive and letting boot the system (3/8 tryes works fine) so ? where is the problem, for sure it is not the bios or something. and why delating mkext and kextcache enables LCD and what's going on while rebuilding those 2 files that enables LCD? and how make that proces (the one ewhile rebuilding those 2 files) to work for us wihout delating them ? maby the simplest in the momment solution is a script wchich will delate the files everytime the system starts or closes, and in meantime we will figure out whats going on ? and anybody alse has got the same results ? i have found a few people writting that they can enable LCD by delating those files. so i'm not the only one let's follow that patch and maby we will solv the problem ? any ideas ? Link to comment Share on other sites More sharing options...
Recommended Posts