AMD BIOS Mods Without Desktop, RDP, or VNC Access
I just built my first AMD rig, Crypto-04, and have come to find that she is suffering from the dreaded "No Desktop" issue. Unfortunately, this also means that I do not have access via RDP or VNC. What I do have is SSH, which is fine for me since that's how I administer all my rigs anyway.
Crypto-04 is packing three (3) Gigabyte RX560's, three (3) Gigabye RX570's, and three (3) Asus RX580's.
After building and setup, I got her mining and put her through stability testing with everything set to stock settings (no overclocking , no undervolting, and original BIOS). After running stable for about a day, it was time to start tweaking and my first stop was going to be the AMD GPU BIOS mods. By request, I will share with you what I did and how I did it.
Note: This guide is only for AMD GPU's and only goes over the Polaris BIOS Editor "ONE CLICK TIMING PATCH". Overclocking and/or undervolting is not covered in this guide.
TLDR - Results
Mining ZEC on Nanopool:
- Before the BIOS mod: 1.94 kSol/s
- After the BIOS mod: 2.14 kSol/s
- Difference: +200 Sol/s
- Mining machine with one or more AMD GPU's (duh)
- Access to a computer/laptop running Windows or Linux.
- Windows machines will need an SSH client like Putty/MobaXterm installed.
- Polaris Bios Editor (PBE)
- Compiled for the above computer/laptop operating system.
- A way to transfer files between the mining rig and the computer/laptop.
- (i.e. network connection, USB thumbdrive, etc...)
Step 1: GPU Identification
- From the computer/laptop, establish a SSH connection to the mining rig and stop all mining with the
pimp --stop allcommand.
Note: The rest of this step can be tricky and you must pay attention to what you are doing. We are going to use two (possibly three) tools to help us identify the correct target GPU that we are going to mod. We do this by cross-referencing the data output from the two tools. Depending on the number of GPU's you have in your machine, this can be a chore, so I strongly recommend opening up notepad or whatever text program you use to help keep the data sorted.
This will give us a listing of all the GPU's that have been detected in the machine. Your output won't look exactly like this, but it should look similar. Notice that it is broken into multiple parts: Hardware and AMD Driver (possibly a third nVidia Driver if you have a mixed GPU rig).
Caution: The entries between Hardware and Driver (AMD Driver + nVidia Driver) should match. (i.e. 9 Hardware = 4 AMD + 5 nVidia) If the number of Hardware and Driver entries do not match, do not continue - you will need to fix this before continuing.
All we really need from this output is the AMD Driver section. Copy and past this data into your text program.
This gives us a listing as seen by the
atiflashprogram (very similar to the
gputooloutput from above). Copy and past this data into your text program.
Between the data from these two tools, you should be able to identify the correct GPU# (from
gputool) and the correct Adapter# (from
atiflash) of the card you want to flash. You can cross-reference the "adapter", "bn", and "dn" from the
atiflashoutput to the
Caution: In a mixed GPU rig (AMD & nVidia), the GPU# (from
gputool) will most likely not match the Adapter# (from
atiflash). Mine match only because my machine is not a mixed GPU rig. This may not be the case for your machine. [Credit: @pREDDY for confirming this.]
- If you wish to make triple certain that you have identified the correct GPU and you have physical access to the mining rig, you can run:
gputool --find #(replace # with the actual GPU# of the GPU identified with
This will cause the system to cycle the fan speeds and/or LED's of the selected GPU so that you can physically verify with your own eyes that you have correctly identified the target GPU.
- At this point, you should now know the target GPU's Adapter# (as reported by the
atiflashprogram). This is the number we need in order to continue.
Step 2: Pulling the Original BIOS (+Backup)
Note: In this step you will need to pick a Filename to save your original BIOS to. I recommend something detailed enough that you can know which GPU it belongs to. (i.e. Manufacture, Model, and Serial Number) For this write up, I'm just going to use "RX560.rom"
atiflash -s <Adapter#> <Filename>(example:
atiflash -s 0 RX560.rom)
- To verify the file was saved, you can run:
lsand you should see your file listed.
Now you will need to transfer this file to the computer/laptop that has the Polaris BIOS Editor (PBE) installed. How you do this is up to you.
Note: Since you're at it, now would be a great time to save this file somewhere safe. This is your original BIOS and should you ever wish to revert back to it, you are going to need it.
Step 3: Polaris BIOS Editor (PBE)
Launch the Polaris BIOS Editor (PBE) and follow the below steps.
- Click "OPEN BIOS" (top left) and navigate to your original BIOS file.
- Click "ONE CLICK TIMING PATCH" (bottom right).
- Click "OK" on the Memory Identification Prompt.
- Click "SAVE AS" (top left) and navigate to the location that you want to save to. Change the file name in some way as to indicate that this is the modified BIOS. (In this write up, I'm just going add a lowercase 'm' to the original file name. i.e. "RX560m.rom")
At this point, you will need to transfer this new file back to the mining rig. Again, how you do this is up to you.
Step 4: Flashing the Mod BIOS to the GPU
Note: For this guide, I will assume you put it into the same root folder you got the original file from. Run:
lsto verifiy the file exists.
Using the same Adapter# identified back in Step 2 and the Mod BIOS Filename:
atiflash -p <Adapter#> <Filename>(example:
atiflash -p 0 RX560m.rom)
Step 5: Reboot
As the output of the previous command states, you will need to reboot the mining rig for the update to complete.
And that's it. You are done.
Repeat the process for any additional AMD GPU's that you wish to mod and get back to mining!
Should you need to flash back to the original BIOS, just repeat this guide, but skip Step 2 & Step 3 and use the original BIOS file in Step 4. Simple.
Great doc Doc!
Windows is never needed when you have pimp - Polaris and atiflash are included. Here is the quick version:
atiflash -sto save the existing rom, example:
atiflash -s 0 gpu0-stock.romto save the rom from gpu 0.
- RDP in and click Polaris
- load the file you just saved
- click one click strap mod
- save as another file
atiflash -pto flash it, example:
atiflash -p 0 gpu0-modified.romto write the rom to the gpu0 from the file..
Also, we will be releasing an even easier way, PBE CONSOLE edition - in the next pimp image. Thanks!
We promise to keep your email safe and never spam you.
Copyright (c) 2017 PiMP LLC. All rights Reserved.