As in most apple products built in the last 15 years, iMac GPUs have a bad habit of failing because of questionable decisions in HW and fan curves design . While 2011 models are the most afffected, today we are looking at a 2009 model, but the same principle applies to all iMacs using MXM gpus (though i found the hd2600pro voltage table impossile to read and edit, i was successful doing this on HD5670M and HD6950M).
Bios undervolting can be done before the gpu failing like we did here, or after a successful reballing / reflowing to prevent it from breaking again.
We will need to boot to Windows in order to extract, modify and flash the MXM Gpu Firmware. It can be installed using bootcamp or just booted with a SATA to USB adapter to connect a working Windows 10 drive. I used a legacy install that already had the AMD pre-GCN drivers installed to help validate the results; we will need a windows install that has no newer AMD drivers installed, as i found out Windows “uninstall and erase drivers” option to be broken. The best option, as i did, would be to create a fresh w10 drive install on another core2 machine with a similar AMD GPU (any card from 6xxx or previous generation) or nVidia card and just let windows update install the drivers for the GPU.
Attach the drive and select it in the Startup Disk Utility. It will usually take 3 reboots for windows finish setting up the devices.
Then you will need to extract the vBios using AtiFlash – https://www.techpowerup.com/download/ati-atiflash/ – run as Administrator and select “save” button.
We will then edit the bios using Radeon Bios Editor , made to edit hd4xxx , hd5xxx and hd6xxx gpus vBios – https://www.techpowerup.com/rbe/
Sadly, i was not able to do a normal process of sofware overclocking as MSI Afterburner did not allow me to tune the frequencies. I also did not want to risk running the card at the default 1.2v to avoid stress; i tested the default 680 mhz frequency at 1.1v first and it was stable on Cinebench OpenGl and FurMark. Having to dial in the freq/voltage straight to the bios is a risky process – setting them too low can cause the system to become unstable or even unable to boot. On the HD4570m, i lowered the idle setting to 200mhz / 0.9v, and the load freq from 680 mhz / 1.2v default to 450 mhz / 1.0 v. I did choose these values based on my experience with many GPUs – lowering the frequency just by a few MHz usually allows voltages to be drastically reduced. I kept the memory frequencies unaltered – they might even be rised a couple of mhz to offset the performance loss, but i was not after performance with this build, as our goal is to make this last as long as possible before replacing the doomed GPU.
With a kill-a-watt i was able to measure a drop of 20w during FurMark stresstest on windows and 18w running Cinebench OpenGL test on macOs . I would not risk running Furmark on a reflowed GPU, but i needed to validate the undervolt because sometimes (HP laptops) the vbios might be read on the main system bios and not on the actual MXM chip. The voltage difference was also reflected in HWinfo reading and lower temperatures / fan noise.
Having less voltage going through the chip will definitely stress the solders a lot less, while lowering power consumption and the speed of fans. There will be a performance impact – Furmark score dropped to 311 from 340 and opengl cinebench r15 to 18 from 21 , but these cards are basically useless anyway in the modern era. It is much better to save a bit of power and allow a longer lifespan as web browsing – office devices, or excellent audio production machines in the 2011 models.
Please note total system power changes a lot based on the screen brightness: full load with 100% screen brightness and r15 opengl, peak power was 150w; lowering brightness to 1/3 it went down to 100w; idling the system uses 40w with the screen off and 100w at peak brightness, therefore the screen is using between 10 and 60w based on the brightness value.