How to modify video BIOS to undervolt GPU in Linux
Apart from tweaking the mining software, many never realize that undervolting a GPU can potentially increase your hashrate with a reduced power draw. With a lower voltage, the GPU will run cooler and in most cases, it would be possible to tweak for a higher hashrate. I have been tinkering around mostly with R9 280X, and noticed that some cards are voltage locked, and in order to increase the hashrate to above 700KHash/sec, the BIOS needs to be updated which opens the possibility for undervolting. I will include the BIOS that i have tested mostly for the R9 280X cards.
For this tutorial, i will be using the software VBE7 to perform undervolting, which would be a bliss for Linux users.
Creating a custom video BIOS for undervolting
Warning: There are always risks involved when flashing the BIOS, and can potentially damage your hardware and void the warranty. So this tutorial is for advanced users who know what they are doing. I am taking no responsibility for any damage you might have by following these instructions.
Step 1 : Download files
BIOS files (optional):
Password : rumorscity
Both ATIFlash and VBE7 are compulsory files in order to undervolt your GPU. So download both of these files and extract it. The BIOS files are optional and i have only included those that i have tested.
Step 2 : Create DOS bootable USB drive
Create a DOS bootable USB disk. There’s a tutorial here : How to create a DOS bootable USB drive.
Step 3 : Copy files to USB drive
Copy both VBE7 and ATIFlash files that you have extracted in Step 1 to the root folder of USB drive with bootable DOS.
Step 4 : Reboot computer into MS-DOS
With the USB drive plugged in the computer, reboot it into MS-DOS. If it does not automatically boot from the USB drive, you may need to change your boot order or use a boot menu to select the device you want to boot from.
Step 5 : Copy vBIOS file from GPU
Important: If your GPU is not voltage locked, you may extract the ROM directly from the GPU and modify it with VBE7. I have experience with some R9 280X cards which are voltage locked, like MSI, Gigabyte and Sapphire Toxic. So, if you have one of these cards or you find that the voltage is sticking even after you have changed the voltage value with VBE7, you can download your appropriate BIOS file from step 1 and flash using the downloaded BIOS file instead.
- To save a copy of the vBIOS file of your GPU, use the following command at the DOS prompt :
atiflash -s 0 0.rom
- Repeat the step for each additional GPU that you have in your mining rig. So if you have a total of four GPUs, you would additionally type:
atiflash -s 1 1.rom
atiflash -s 2 2.rom
atiflash -s 3 3.rom
The number of files on your thumb drive should correspond to the number of GPUs on your mining rig, with each file containing the vBIOS for one GPU. So if you have four GPUs, you would have four *.rom files in your thumb drive.
Step 6 : Modify each vBIOS file with VBE7
Plug the thumb drive containing the vBIOS files to a Windows computer.
- Launch the VBE7 program that you have downloaded in Step 1.
- Once in VBE7, click on the Open button and then browse to the 0.rom file that you have saved in the thumb drive and load it (if you are using the downloaded BIOS files from step 1, load those files instead).
- After it has loaded successfully, you will see the details of the vBIOS in the Overview tab.
- Click on the PowerPlay tab.
- Select State 1 – Performance from the drop down list.
- Then look for the last two entries on #6 and #0. Change the VDCC settings for both of these entries to your desired voltage level.
- Click on the Save button and save the new vBIOS file as 0_mod.rom onto your thumb drive.
- Repeat the steps for each GPU vBIOS files so you should have a *_mod.rom file for each vBIOS file that you have saved with ATIFlash in Step 5.
Step 7 : BIOS switch on GPU
On most R9 280X cards, there should be a tiny switch which is the dual BIOS switch. So far, the only R9 280X card that i didn’t see this switch is the Asus R9 280X Direct CU II. Locate this switch, and then flip it to the other position. This is extremely important and acts as your safety net if anything should go wrong. If something would go terribly wrong and you are unable to boot up after flashing the BIOS, simply flip the switch back for your original BIOS. If your card does not have the dual BIOS switch, i would advise that you abort the process.
Step 8 : Flash the modified vBIOS file to your GPU
- After you have switched all your GPU to their secondary BIOS, type this code at the DOS prompt:
atiflash -f -p 0 0_mod.rom
Wait for the process to finish, and if there are no error messages, ATIFlash will inform you that you will need to reboot to complete the process. But it’s actually safe to continue flashing the remaining GPUs first.
- Repeat the code for each additional GPU that you have in your mining rig. So if you have a total of four GPUs, you would additionally type:
aitflash -f -p 1 1_mod.rom
atiflash -f -p 2 2_mod.rom
atiflash -f -p 3 3_mod.rom
Once ATIFlash have completed the process, it is done and would be safe for you to shut down the mining rig.
You should be able to notice a significant lower temperature on your GPUs, which would allow tweaking for a higher hashrate. In my own testing, i find that HIS R9 280X would be able to cross the 700KHash/sec mark only after flashing the vBIOS. You can experiment with lower voltage but depending on your mining configuration, if you experience any instability or crashing, just tweak the voltage back up a bit.
Below are my configurations of R9 280X cards:
47 thoughts on “How to modify video BIOS to undervolt GPU in Linux”
Will this work for mining in Windows 7?
Yes. This method will modify the GPU BIOS in order for undervolt. After that your GPU will still work whether in Windows or Linux.
Great article. Is it possible to undervolt R9 280V using the MSI Afterburner software? I am trying to understand how it works. Is the purpose of flashing the bios to lower the lowest level allowed? How about CGminer, I belive you can set the undervolt in the configuration file.
Windows have a lot more options to do this. So yes, you can try using MSI Afterburner and Sapphire Trixx. This is the easiest option to undervolt for Linux.
OK – I will try it out in the evening. I have just got 2 brand new MSI R9 280X
(not even unpacked yet), looking forward to trying your guide about the 700 KHash/s sweetspot.
I am just finish by setting up a dual MSI R9 280X rig, win7-64, core2 duo, 2GB ram. Your site was very helpful. Biggest problem was the undervolting, no way to change it in MSI afterburner. When I modified the factory bios with atiflash, the GPU could not run, not even if only decreasing with 20mV. I had to use “MSI.R9280X.3072.131009” BIOS that you have provided (thanks a lot!) and then change the voltage to the sweetspot “1137 V”. The rig has been running very stable for 12 hours, with an average of 2×714 kH/s (i am not using your exact configuration, the thread-concurrency 22272 cannot run for some reason). I have yet to perform the power measurements.
I really appreciate your work, is there anywhere where I can send you a small tip?
I encountered the same problem as you did when undervolting the MSI card. That’s why i have searched for the solution. Glad the ROM works for you as well. Don’t worry if your card doesn’t accept the thread concurrency that i am using. Every hardware performs a bit differently even if it’s the same model. Just use the thread concurrency that it allows you to and tweak with the engine/memory ratio to get a good hashrate, and i see yours are performing very good.
MSI is one of the card that i have got good results from. The best i have tried so far is the ASUS R9 280X Direct CU II though, which goes to around 750KHash/sec at 69 degree. The beauty of it is that i didn’t even undervolt it (I am hesitant to flash it since it is the only R9 280X card that i came across which doesn’t come with a dual BIOS switch).
Am glad to hear that you have successfully setup your rig and getting good results. Happy mining.
You can give me small tip in LTC : LeaiRnTbLona2MPeUwLgcjjawAYuxfSZ47
The cards have been running rock steady for at 714 kH/s /75C for 30 hours now. I will properly stick with to the MSI when extending with new cards, now that I got the setup running steady. Thanks again, I really appreciate your work.
I have send you a small tip as thanks:
Glad to hear that. I will be slowly adding few more rigs myself. Happy mining and thank you too.
What cgminer settings are you using for the Asus R9 280x Direct CU II? Thanks!
-g 2 -w 256 -I 13 –lookup-gap 2 –thread-concurrency 8192 –gpu-engine 1050 –gpu-memclock 1500
How can I change with windows 7 trixx? just undervolt it -> apply.
and boot up BAMT?
I have 3 powercolor r9 280x OC .
After doing this, GPU Z does not show a different VDDC. I set the gigabyte r9 280x to run at 1075 mV in the new bios, GPUz still shows 1163 mV. Is this normal?
Did you see the new voltage at CGMiner screen? I only have had problem with a MSI R9 280X, where after i have changed the VDDC, it won’t boot. Solved the problem with flashing it to the latest ROM //rumorscity.com/2013/12/12/msi-r9-280x-bios-update-to-fix-overheating-and-vrm-temperatures/
I flashed the vbios again, and set the voltage to 1050 mV. And this time it worked! GPUz shows the correct voltage of 1050 mV. And the GPU can a lot cooler! Something may have went wrong the first time.
Great to hear that you found great result with 1050 mV. I tried 1050 mV before and it worked for awhile but not so stable. I found 1075 mV is more stable for my settings.
I have tried to flash my gigabyte 280x’s with this twice now and no change, If I open the 0_new.rom file up it shows that it is set to 1094 but its still 1.2v in GPU-Z and no temp decreses. Any ideas?
I encountered the same problem with MSI that the card doesn’t like me changing the values. Solved it by flashing it to the latest ROM. You can also try MSI Afterburner since you are on Windows, which is usually easier to undervolt.
So download and edit the latest ROM from the gigabyte website?
Hoston we have a problem!
A did everything like the tutorial, the miner runs but when the bamt tries to boot, the miner reboots :s i tried to put the switch to original position and the problem is still there! Why ? What should i do to fix This?
I have 5 r9 280 from gigabyte, before undervolt the miner worked perfectly
It should be back to normal once you flicked the switch to the original ROM. You can try to flash it back to the original ROM and see how it goes.
I will try it in position 2 of the switch…
It is possible to have burned even with undervolt? Whats the worst cenário?
My worse case scenario is when the CGMiner doesn’t detect the GPU. Fixed it by flashing it back to the original ROM.
Is your Gigabyte the Windforce OC version? I can upload the Gigabyte ROM for you to try if there are still problems.
I Think Yes, its the gv-r928xoc-3gd
It is possible that i didnt flick full the switch and burn one gpu? Damn…
Btw i still have in the pen the original config, flash it back and the problem is the same
Don’t think it’s possible to burn it since CGMiner haven’t even started running. The worst when flashing is to have bricked the GPU when flashing. But it’s also reversible since you have a GPU switch on the Gigabyte card.
If it is indeed bricked, you can try hot flashing it. Boot up with your DOS bootable with the good GPU (flip the BIOS switch). Then once booted up, flip the switch back to the one that you think is bricked, and re-flash to the original ROM.
Here is the ROM for Gigabyte R9 280X (Windforce OC) if you need it. https://www.dropbox.com/s/j6f272bnbu59ih7/gigabyte.rom
Well, i think i didnt explain the problem… It boots for the dos… When i try to run bamt, when we see the boot screen( where we can choose to boot, help, etc), the psu turn pff and on ( i can listen the noise like i was unpluging the power.
Okay. That sounds more like the PSU problem. You said there are 5 gigabyte cards on the rig. Is the PSU enough for the 5 cards? Because PSU will shutdown to protect itself from a high current draw.
I have one corsair rm 850 and other corsair rm 750, i think is enought no? Before the flash, everything was working just fine
Did the original ROM work, maybe you can try flashing the ROM that i have posted. Normally if one GPU is having problem, it won’t be detected.
The fans off all gpus are working, só the problem is not in the gpus?
The problem only occurs when you start CGMiner and the power draws from the PSU? Is there a way you can check the power draw from the PSU?
The bamt dont boot up, when the first screen of bamt apears, that one that hás a count down from 5 sécs., after the 5 secs the miner reboots, i dunno if i am explaining clearly
Okay. I got what you mean now. I have experienced it once, when i undervolt too much, BAMT doesn’t startup after that loading screen. Try to reflash with a higher voltage.
I will do that using the original config that i stored
Okay. Keep me posted and good luck.
In 1 or 2 hours i will come back with results
I just remember that i flipped the switch of the cards to original position and This problem is still there, is the same as reflash
hi again, i used your file and its the same thing :S what should i do?
Hi, i changed the USB Port from bamt and worked :s
So the culprit is the USB port? Quite unexpected….am glad you found out.
i dont get it! i just changed the usb port!!! ffs… no clue on that! anyway i am running without undervolting this rig ^^
btw any link for power consuption estimation??
It happens. Every hardware have a different combination. So you can get the info from internet as a base and tweak your own sweet spot. I am using a wattmeter to check my power consumption. If you want to check your profitability against power consumption, you can try http://www.coinwarz.com
I will try! It is possible to burn with undervolt? What is the worst cenário?
Doesn’t stick. I have a Gigabyte R9 280x and I’ve set the voltage for my clock speed of 1020 to be at 1.050. When I open GPU-Z and then run CGminer (using –gpu-engine 1020 as my target), GPU-Z reports the voltage increases to 1.050 for a second, and then it forces to 1.2 volt. It does not stay at 1.050. I’ve also tried a couple different voltages (1.094, 1.181). Nothing sticks. I am using Bios F60.
Funny thing – when I re download the BIOS from the card, it shows my values to be those that I set (Core Clock 1020 = 1050 VDDC, Core Clock 1100 = 1094 VDDC). So the BIOS has these settings written. For some reason when it runs it ignores these values.
I can’t use Afterburner or OC Guru because both softwares show the voltage as being locked.
Some have problem with locked voltage Gigabyte, Try this F31 BIOS. Backup your rom then flash with the F31 BIOS and try undervolting it with ATIFLASH. https://www.dropbox.com/s/j6f272bnbu59ih7/gigabyte.rom
How is this guide for linux os if the screenshots are taken in windows? Or I am not getting it right?
well – I followed these instructions and my computer rebooted in Dos mode from the memory stick but when I tried to run the vbe program I get an error message that says “Cannot be run is DOS mode” – what now?