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:
- Gigabyte R9 280X sweet spot for 730KHash/sec
- HIS R9 280X sweet spot for 730KHash/sec
- PowerColor R9 280X sweet spot for 760KHash/sec
- Sapphire R9 280X sweet spot for 760KHash/sec