Flash Your RX 470 Card on Mac / Linux

I just built my first Ethereum mining rig with 6 MSI RX 470 video cards. My stock hash rate while mining was around 22 MH/s per card for a total of 132 MH/s. Overclocking the GPU memory clock to 1750 MHz increased my hash rate to 23.5 MH/s. I had seen reports of other miners achieving hash rates as high as 28–29 MH/s with the same card.

Attempts to further increase my hash rate with additional overclocking were unsuccessful. Although my hash rate increased, all of the shares I was submitting were incorrect due to errors. It seemed the only solution was to mod the BIOS of my video card.

Unfortunately I couldn’t find any modded BIOS files for the exact video card I was using (MSI RX 470 ARMOR 4g OC). Additionally, all of the tutorials I found were for Windows and I run OSX on my personal computer and ethOS, an Ubuntu based Linux distribution, on my mining rig.

Here are the steps I took to flash my RX 470 with OSX.

Prerequisites

  1. Install a Windows distribution in a VM. I used Windows 10 and Virtual Box because it’s free.
  2. Install atiflash on your mining rig. If you are running ethOS it’s already installed. Otherwise if you are running Ubuntu install it with the following command, apt-get install atiflash. If you don’t have administrative privileges you will have to use sudo.

Backup Your Stock BIOS

Identify the adapter your video card is associated with sudo atiflash -i . In the below image you can see that the video card is associated with adapter number 0.

Identifying the video card adapter

Now save the BIOS image from adapter you identified earlier with sudo atiflash -s <Num> <File> [Size] .

The -s flag means save the BIO image, the <Num> argument is the number of the adapter identified earlier, and the <File> argument is the name of the file you want to save.

Backing up the stock video card BIOS image

Copy the backed up BIOS image to the Windows VM

First create a shared folder in the Windows VM.

Creating a shared folder in the Windows VM

Now use Secure Copy (scp) to copy the backed up BIOS image from the machine running ethOS to the shared folder from the Windows VM running on the OSX machine. To complete this step you must either be locally operating the ethOS machine or remotely connected to it via ssh.

$ scp ~/backup.rom username@osx_machine_ip:/path/to/shared_folder

In the above example the first argument is the location of the file to copy and the second is the destination to copy the file to.

Modify the backed up BIOS image in the Windows VM

Download and install Polaris Bios Editor in the Windows VM. The source code as well as executable binaries can be found on the project’s GitHub page, https://github.com/caa82437/PolarisBiosEditor.

Locate the backed up BIOS image in the shared folder inside of the Windows VM.

Saving the backed up BIOS image in the Windows VM shared folder.

Once you have located the file open it in Polaris Bios Editor.

Polaris Bios Editor

Locate the table in the bottom right hand corner in the VRAM section with the column titled TIMING(Mhz) . These are the memory timing values for different clock speeds of the VRAM (Video RAM).

The clock speed of the VRAM is measured in megahertz (Mhz). Each Herz unit is representative of a cycle in which the VRAM can perform calculations and work.

The timing values in the above table associated with the different clock speeds represent the time delay between performing these calculations and passing the solution to the GPU. Therefore even if you overclock your memory you can still be limited by the memory timings.

We are going to copy the memory timings from a lower clock speed to all of the higher clock speed settings allowing for faster data transfer speeds between the memory and the GPU. Ultimately this will result in larger mining hash speeds.

Copy the value from the 1500 MHz row and paste it into 1625 , 1750 , and 2000 rows.

Modifying the memory timings

Now save the file to your shared windows directory with a different name such modified_backup.rom .

Copy the modified BIOS image to the ethOS machine

Now that we have modified the rom file, we are going to copy it back to the ethOS machine. This step is essentially the opposite of the earlier step where we copied the original backed up image from the ethOS machine to the Windows VM.

$ scp /shared/modified_backup.rom username@ethos:/destination

Flash the GPU with the modified BIOS image

Now that we have the modified rom file, on our ethOS machine we are going to flash our GPU with the new BIOS. We are going to use the same utility, atiflash , that we used to backup the original BIOS image.

The command we will run issudo atiflash -p <Num> <File>

The -p flag means write the BIO image to the GPU, the <Num> argument is the number of the adapter identified earlier, and the <File> argument is the name of the file you want to write.

If successful you will see output similar to that in the image below. Now reboot your machine for the changes to take effect.

Flashing the modified BIOS image to the GPU

Overclocking

Next I overclocked the global core and global memory speeds. You can see the settings I used in the following screenshot.

ethOS overclock settings

Conclusion

You should now see increased hash speeds on your card. Here is a screenshot of my machine mining Ethereum on ethOS after flashing my video cards.

Final hashing speeds

You can see that all six of the cards are hashing at at least 28 Mh/s and are stable as the machine has been running for 527 hours.

Donation

If you found this guide helpful please feel free to donate :)

ETH 0x92Ac77f8f139209a915f2A2DEad9F8aA64ab5f46

BTC 1Fb5JFNJeTck4gTupLBiv6WxsLQTamkY89