HawaiiBiosReader 290/290X/295X2/390/390X (Hawaii Bios Editing)


When using Hawaii GPUs like the R9 290 on Linux, aticonfig does not provide the ability to change voltages. Even on Windows, utilities such as MSI Afterburner usually have limitations on how much you can increase or decrease GPU voltage. In order to reduce power consumption, I decided to create my own lower voltage BIOS for my MSI R9 290X.
The best tool I have found for Hawaii BIOS mods is Hawaii Bios Reader. To read and write BIOS to Hawaii cards, I use ATIFlash. It runs from DOS, so I can use the FreeDOS image included with SystemRescueCD.
For reasons I haven’t figured out yet, the DPM0 voltage in each of the limit tables must match the PowerPlay table. After modifying the four limit tables, the BIOS can be saved and written to the card.
I created modified BIOS files for MSI R9 290X 4GB card with DM0 voltages 868, 825 and 775. With 775mV BIOS, I was able to reduce power consumption by more than 20% compared to 968mV.
Note. Any modified ROM, even with a UEFI / GOP module in it, is technically not UEFI. The legacy ROM partition contains a BIOS signature, which is a hash of hashes of protected tables in ROM. Since the mods we make are in secure tables and we cannot update the signature in the legacy ROM to reflect changes that will fail UEFI checks, so you need CSM support in the motherboard BIOS to use the modified ROM.

I have used all programs related to the German sTOrM41 branch and have successfully edited my Vapor X 290X STD edition biography just the way I wanted.
The flashing was done using the method and files in the OCN 290 -> 290X Unlock branch, look under the R9 290 heading for the Unlock Guide in post 1 and use steps 1-7, skipping step 3.
Before clicking on the spoilers below, please read and follow the rules below.
Warning: using this guide to edit your bio will void your warranty (if any on your card). This guide is provided on the condition that the user is aware of the consequences of what he is doing. I am not responsible for damages from the use of this information. Every effort is made to double check the information, but errors are possible.
My stock factory ROM set to ref 290X clocks (1000/1250) My stock factory ROM set to factory clocks (1030/1325) My stock factory ROM set to 1100/1525 My stock factory ROM set to 1030/1325 with Stilts timings in appropriate strap to boost RAM My stock factory ROM set to 1100/1525 with stock 1250Mhz RAM timings in appropriate strap to boost RAM performance
Things to explain:
The next thing to note in my particular comparison is there is no GPU Global Offset in my ROM, but there is a PCB Voltage IC (IR3567B).
On the right is Standard ROM (1), then Standard Clock ROM (2), but only DPM7 manually installed, next is 1090/1475 ROMs (3) and 1100/1525 ROMs (4) manually installed for all DPMs.
Now 1 versus 2, DPM 2-6 is lower at EVV, so the chances of the card possibly being an artifact, say, when reaching these DPM frequencies of the GPU (range). The decrease is due to the increase in GPU frequency over the entire DPM range.
Comparing 2 and 3, we can see that DPM 5 and 6 need a higher VID than the one set by EVV to be free of artifacts at those DPM GPU frequencies (range) when tested. DPM 4 and 2 are lower and DPM 3 is unchanged, I set DPM 1 lower and no side effects so far.
Comparing 3 and 4, we see growth across the board, but the DPM frequency of the GPU has increased, as has the amount of RAM.
My main purpose for this test was to register the VDDC in standard ROM (1) and see when OC’ing (setting a higher GPU frequency on the DPM) added more voltage. If you compare 1 and 3, DPM 7 is equal, DPM6 is up (but higher GPU frequency), DPM5 is almost the same (but higher GPU frequency), DPM 4, 3, 2, 0 all end up lower plus 1 lower, even if not checked in rom 3.
As I can see, this is the standard ROM (1) versus 1090/1475 (3). I ended up with higher clock speeds on the DPM for almost the same / lower voltage as the standard EVV ROM. Even 1 versus 4 seems better as each DPM is higher than standard for really small voltage deviation.
My HML log files, file HMLGPU-Z.zip 33k .zip
Note: In the test above, I used the GPU-Z render test as a graphics load to register a stuck VDDC from a VID, this gives a more linear controlled VDDC value compared to other applications. I used MSI AB to monitor, as did the HML log file, plus set DPM frequency to test with it. My card is sensitive to 3DMark FS graphics test 1, so artifact testing was done with this loop plus Heaven and then Valley run.
This post is also available in: 
SRBPolaris V3.5 – Program for editing BIOS on AMD RX4XX/RX5XX
ATIFlash & AMD VBFlash v2.93 – Flashing BIOS on AMD GPUs
Red BIOS Editor (RBE): flashing and overclocking AMD/ATI GPUs (Download for Windows)
NVIDIA NVFlash v5.590.0/v5.414.0: Download for Windows/Linux (BIOS Flashing)
Polaris Bios Editor v3PRO (PBE Crack): Download for Windows (x32/64 bit)
GPU-Z (Standard Version & ASUS ROG): Download for Windows
Polaris Bios Editor v1.7.5: Download PBE for Windows 7/10 (x32/x64)
AMD Memory Tweak XL: (VRAM Boost Performance Tool): Download for Windows.
WattTool v0.92: A Simple Tool for Overclocking and Configuring VRM for the RX 400
ATIFlash & ATI WinFlash v2.8.4: Download BIOS Editor for AMD GPUs.