Friday, November 16, 2007

OS X 10.5 Leopard G4 nVidia boot delay bug - Fixed!

Those of you running flashed nVidia PC video cards in your G4 Power Macs may have noticed significant boot delays with Mac OS X 10.5 Leopard. Once the operating system has booted it will work normally, but getting there is the annoying part. The Leopard boot delay is 2 minutes on my Cube, and it's even worse on some other machines, with reported delays of well over five minutes.

Fortunately, the industrious folks over at The Mac Elite have figured out a solution. Apparently, the problem is related to Leopard's handling of GPU temperature diodes, specifically on some recent nVidia cards. The OS will wait until the temp diode is activated during bootup, but until then the boot process simply hangs. A solution to this problem is to deactivate the diode completely in the video card's firmware, and this will allow the boot process to proceed normally. To make that modified firmware, you'll have to dump your own video card's ROM to a file so that you can edit it yourself, or else somebody else has to do it for you.

I flashed my Cube's XFX GeForce 6200 to a new Mac-friendly configuration with such a modified ROM, using nvflash and a cheap Pentium 4 AGP PC running MS-DOS (and a PCI video card so that I could see what I was doing). If you don't have access to a cheap PC, you may be able to use NVFlashUtility, which comes with Graphiccelerator. Be forewarned though, with NVFlashUtility, a misflash or a bad ROM can leave your machine blind, with no video support at all. The MS-DOS PC flash method with a second video card is safer, since if you misflash you can simply flash back to your original ROM.

The boot process in Leopard used to take almost three minutes on my Cube. Now with the modified ROM it takes less than one minute, a three-fold change. The only drawback is that iStat Pro can no longer report the GPU temperature, but that's a small price to pay for great Leopard compatibility.

1 comment:

B.D. said...

Or you can just delete AppleHWSensor.kext from /System/Library/Extensions. Does the same thing.