What's the hack?
Ever wanted better FPS/GPU control in the middle of a game? This hack allows you overclock and underclock the ATI Radeon video card by rotating a Griffin PowerMate mulitfunction knob - both GPU clock and Memory clock independently. Clocked too high and see corruption? Press the knob button to reset it back to the original clocks.
Disclaimer
Overclocking your video card can damage it. Overclocking it "this easily" is even more dangerous (i've dropped the knob off the desk and it rebooted my machine when the clocks went super-high). You do so at your own risk. If you really like your video card, don't do this hack. Definitely don't blame me for what happens with any hardware or software - there aren't any training wheels on this bike. Reproduce this project at your own risk; I take no responsibility or liability.
How?
By connecting the PowerMate to AutoHotkey and writing a Autohotkey script to clock the card up in the background, the overclocking can occur while the benchmark or game is running.
Hardware:
ATI Radeon 5800 Series card PCIe 16x
Griffin PowerMate USB Multifunction Knob (~$30-$45)
HP TouchPad 16GB (~$99)
Running Windows 7 Professional SP1 with .NET 4.0 framework
Step 0:
Unlock ATI OverDrive 5 (OD5) via Catalyst Control Center
http://www.youtube.com/watch?v=jmyFk7_cnUY
Step 1:
Install required software - follow necessary instructions from each site:
- Autohotkey - http://www.autohotkey.com/download/
- Griffin PowerMate 3.0 - http://store.griffintechnology.com/powermate
- AMD GPU Clock Tool v0.9.26.0 - http://downloads.guru3d.com/AMD-GPU-Clock-Tool-v0.9.26.0-For-HD-5870-download-2383.html
- Unigine Heaven Benchmark v2.5 - http://unigine.com/products/heaven/
Step 2.
This code is provided without any warranty and may or may not work for you. It's based on the ADL SDK code's poor Managed code example extended to provide more OD5 data via a standalone webserver running on localhost's port 5005 (i.e. http://192.168.1.2:5005). If everything worked (you got lucky), opening the page in a modern browser will show information on your video card's OD5 information. ADL Rant: Interops do not mean you support C#/managed code; it just means it can work messily.
a) Extract the attached GPUWebpage.rar and run Sample-Managed.exe found in the root of the archive
b) Enable port access to software via "vshost.exe" to enable incoming connections
Note: The source code should compile on Visual Studio C# Express 2010 with whatever .NET Framework that uses.
Step 3.
Add support for AutoHotKey to interact with AMD GPU Clock Tool.
After this step, if AutoHotKey and AMD GPU Clock Tool are running the following key presses will perform an action -
Ctrl-Alt-u : increase GPU Engine clocks by 50MHz
Ctrl-Alt-i : decrease GPU Engine clocks by 50MHz
Ctrl-Alt-j : increase GPU Memory clocks by 50MHz
Ctrl-Alt-k : decrease GPU Memory clocks by 50MHz
Ctrl-Alt-o : reset all clocks
a) Launch AutoHotKey, Right-click the AutoHotKey icon in the Windows Systray and click "Edit This Script".
b) When notepad opens the script file, add this to the bottom:
- Code: Select all
^!u::
Loop, 50
{
ControlClick, X274 Y131, AMD GPU Clock Tool
Sleep, 10
}
ControlClick, X375 Y171, AMD GPU Clock Tool
Sleep, 10
return
^!i::
Loop, 50
{
ControlClick, X273 Y144, AMD GPU Clock Tool
Sleep, 10
}
ControlClick, X344 Y164, AMD GPU Clock Tool
Sleep, 10
return
^!j::
Loop, 50
{
ControlClick, X579 Y127, AMD GPU Clock Tool
Sleep, 10
}
ControlClick, X344 Y164, AMD GPU Clock Tool
Sleep, 10
return
^!k::
Loop, 50
{
ControlClick, X572 Y141, AMD GPU Clock Tool
Sleep, 10
}
ControlClick, X344 Y164, AMD GPU Clock Tool
Sleep, 10
return
^!o::
ControlClick, X370 Y201, AMD GPU Clock Tool
Sleep, 10
return
c) Save the file.
d) Right-click the AutoHotKey icon in the Windows Systray and click "Reload This Script".
Step 4.
Hook up the Griffin PowerMate with AutoHotKey.
a) Launch the Griffin PowerMate software and set the "Clockwise" rotation to 'Simulate keystrokes' with the key to emulate to be 'ctrl-alt-u'.
b) Repeat the above sub-step with:
"Counter-clockwise" = 'ctrl-alt-i'
"Press and Clockwise" = 'ctrl-alt-j'
"Press and Counter-clockwise" = 'ctrl-alt-k'
"Push button" = 'ctrl-alt-o'
Step 5.
Time to overclock!
a) Launch AMD GPU Clock Tool, Griffin PowerMate software, and AutoHotKey if not already launched. Ensure that AMD GPU Clock Tool is not minimized.
b) Launch game/demo with a FPS count.
c) Use a second computer/monitor/tablet (my case the HP TouchPad) to open up your computer's IP address with port 5005 in a web browser (i.e. 'http://192.168.1.2:5005')
d) Rotate the knob, overclock your card, and hopefully see higher FPS counts!
That's it... for now. In the future, whenever you want to overclock the card through the knob, you must follow Step 5.
What else could I have done?
- reduced the time waiting between emulated keystrokes to change clocks
- configure the MHz changed when knob is rotated (currently set to 50 based on the autohotkey script)
- add changes to marshall overclocking settings through AMD ADL instead of AMD GPU Clock Tool
- would remove Autohotkey and AMD GPU Clock Tool from the equation
- remember the overclocking settings for each application based on what you set it to and automatically set it back when launched
- extend the info webpage to set the clocks instead of only showing the current settings
- pulse the Griffin PowerMate based on the temperature of the video card's main GPU sensor
- extend to control GPU Fan
- Replace the word GPU with CPU or APU above
