Build your own Ethereum Mining Rig, part 4: Optimization

Before (top) and after (bottom) GPU BIOS mods.

This fourth installment of our Ethereum mining guide will focus on optimizing your rig’s performance via GPU clock speed and voltage setting tweaks to achieve maximum efficiency.

The tweaks that I outline in this article are applicable whether you’re using Linux or Windows. If you’re using the hardware that was recommended in the first part of this guide (or very similar hardware), you should expect to achieve Ether mining performance gains of 20-25%, compared to stock settings! At the same time, you’ll reduce power consumption by 10-15% (and consequently, lower GPU temperature and fan noise).

More speed for less power—how is that possible? Click “read more” to find out, in our mining performance optimization guide!

 Build an Ethereum Mining Rig, part 4: Optimization

Let’s get the bad news out of the way up front: achieving these levels of performance gain require flashing your GPU BIOS with custom replacements. Doing this incorrectly may leave you with a non-working GPU that can be difficult or (sometimes) impossible to restore to factory settings. The steps that I outline in my guide will show you how to minimize the risk that you end up with a bricked GPU, but always remember that messing around with BIOS settings can potentially result in unstable hardware.

Disclaimer: Installing a custom BIOS and/or changing factory clock speed & voltage settings on your graphics card(s) may cause system instability, may harm your hardware, and probably invalidates your warranty. I assume no responsibility for hardware damage if you choose to follow this guide!

With that said, I’ve flashed probably close to a hundred GPUs, and I haven’t destroyed any hardware yet. =) If you proceed, just make sure to follow the steps in order, don’t take any shortcuts, and stop if there is anything that you’re confused or unsure about.

What you’ll need

There are ways to create and flash custom BIOS mods to your GPUs without some of these things, but I believe this method is by far the most user-friendly:

  • A computer running Windows
    You’ll flash your GPUs with this computer. My mining rigs run Linux, but I keep a small/cheap SSD loaded with Windows 10 handy for testing/BIOS flashing purposes (I simply swap the SATA connector between disks when I want to switch OSes). Any version of Windows 7, 8, or 10 will work fine (note that you don’t have to activate Windows to install it). Or, you can simply temporarily move your GPUs to another computer running Windows to flash them.
  • ATIFlash / ATIWinFlash
    You can download the latest version of ATIFlash here (v2.74 at the time of this article). We’ll use this to read and write BIOS files to our GPU hardware.
  • Polaris BIOS editor
    You can download the latest version of Polaris BIOS editor here (v1.4.1 at the time of this article). We’ll use this to modify BIOS files.
  • ATI Pixel Clock Patcher
    You can download the latest version of ATI Pixel Clock Patcher here (v1.4.5 at the time of this article). We’ll need this to get AMD’s Windows driver to recognize a modded BIOS.
  • A Kill-a-Watt electricity usage monitor (or similar device)
    Not strictly required, but I highly recommend this—it’ll pay for itself! I have two of these and consider them invaluable in dialing in the performance of my mining rigs. When doing optimization tests, I often find that the last few percentage points of speed gain come at a much larger cost in power consumption (and thus, a decrease in overall profitability)—having an electricity monitor allows me to find the efficiency sweet spot between raw speed and electricity usage.
  • Some baseline information on each of your GPU’s factory performance to compare your modifications against. If you haven’t already, let each GPU run for 5+ of mining and record its speed, temperature/fan speed, and power consumption at the wall (assuming you have a Kill-a-Watt). This will be immensely useful later when trying to figure out if your mods are beneficial or not.

From this point on, I’m going to assume that you’re following directions on a Windows computer with the above software available, ideally with a Kill-a-Watt connected for testing. I’m also going to assume that you have a single GPU installed. If you have multiple GPUs, I highly recommend that you disconnect all but one, and work on them one at a time. All of the software does support multiple GPUs, but you’ll keep confusion and the potential for mistakes to a minimum by only connecting one video card at a time. The times that I’ve made mistakes with BIOS flashing, it has always been because I flashed the wrong card due to having multiple GPUs connected!

Step 1: Make a backup of your factory GPU BIOS

Saving your GPU BIOS with ATIWinFlashBefore we start, open your Radeon Settings and disable any overclocking/undervolting that you have set up through WattMan (if you followed my Windows setup guide, you’ll need to temporarily disable the “EthDcrMiner64” profile that you created in step 12). After that:

  • Open ATIWinFlash (extract the .zip file you downloaded and double-click ATIWinflash.exe).
  • You should see your GPU detected at the top under “System Video Devices”. Again, I highly recommend that you have only a single GPU connected for this entire process!
  • Click “Save” to make a backup of your GPU’s BIOS data. Don’t lose this file!

Your computer might appear to freeze for a few seconds while your GPU BIOS data is being saved—this is normal. When ATIWinFlash is done, you can close it for now.

Step 2: Open your GPU’s factory BIOS with Polaris BIOS editor

Here is where we’re going to be making all of our modifications. Editing the BIOS data gives us access to a few values that we normally wouldn’t have any control over—most importantly, the memory timing values.

  • Open Polaris BIOS Editor (extract the .zip file you downloaded and double-click PolarisBiosEditor.exe).
  • Click “OPEN BIOS” in the top left, then browse to where you saved your GPU’s factory BIOS in step 1, and double-click it to open it.

You should see something like the image below (click for full-size). I’ve highlighted the areas that we’ll be modifying in blue—if you stick to these areas, you’ll generally be safe from getting yourself into too much trouble, as the GPU doesn’t enter these states until it’s mining or otherwise working hard. Note that the first entries in the “GPU” and “Memory” section are outside of the blue area and should never be touched unless you absolutely know what you’re doing. Likewise, the memory timings at 1500mhz and below should usually be left at default settings.

Factory BIOS in Polaris BIOS editor
My screenshot shows the default BIOS from an Asus 1650mhz factory-clocked RX 470 4GB GPU. If you have a 4GB RX 470, it should look pretty similar, although many of the values will likely differ by a small amount. At these factory settings, I get around 20 Mh/s in Claymore’s Ethereum miner, which isn’t spectacular.

If you don’t see memory timing values for your card, try this version of Polaris instead (click the “clone or download” button, then “Download ZIP”).

When you’re comfortable, let’s move on and start modifying some values.

Step 3: Modify BIOS memory timing values

At this point, you should still have Polaris BIOS editor open, with your GPU’s factory default BIOS loaded. We’re going to focus on the lower-right corner area containing memory timings.

If you have a RX 470/480 that has memory clocked at 1750mhz or less (eg: most 4GB cards), you may have noticed that it’s really easy to overclock past 1750mhz via the driver (in Windows, anyway). You probably also noticed that mining performance immediately tanks as soon as you do so: a 1751mhz overclock results in much slower performance than 1750mhz. You may have wondered why, and these memory timings are the answer. On most 4GB cards, the GPU switches over to less aggressive memory timings at clock speeds beyond 1750mhz, which results in slower performance even though the absolute clock speed is higher. We’re aiming to fix that.

This isn’t an exact science, and some experimentation may be necessary for you to achieve optimal results, but what follows is a good starting point and should work for 99% of you:

  • If you have a RX 470/480 that is factory clocked at 1750Mhz or less (eg: nearly all 4GB cards):
    Copy the value in the 1500Mhz field, and then paste it into all of the fields after it (1625mhz, 1750mhz, 2000mhz). The easiest way to do this is to click anywhere inside the 1500mhz value, then press CTRL+A to highlight the entire string, and then press CTRL+C to copy it. Then you can simply click into the remaining fields and press CTRL+A followed by CTRL+V to paste over the existing value.
  • If you have a RX 470/480 that is factory clocked at 2000Mhz or more (eg: nearly all 8GB cards):
    This is a bit trickier, but generally most cards will be most stable by simply copying the value in the 1750mhz field into the 2000mhz field. The easiest way to do this is to click anywhere inside the 1750mhz value, then press CTRL+A to highlight the entire string, and then press CTRL+C to copy it. Then you can simply click into the 2000mhz field and press CTRL+A followed by CTRL+V to paste over the existing value.

Once you’ve made the edit that is appropriate for your GPU, click on the “SAVE AS” button located at the top left. Save your modded BIOS with a new name (don’t overwrite your factory BIOS!), and then close the Polaris editor when you’re done.

Step 4: Flash your modified BIOS back to your GPU

Flashing your GPU BIOS with ATIWinFlashNow it’s time to write your custom BIOS back to your hardware. This can be a little scary if you’ve never attempted anything like this before, but generally if you’ve followed the steps as written, you shouldn’t have any issues. Again, there are no absolute guarantees, so proceed at your own risk!

  • Open ATIWinFlash back up.
  • Click on the “Load Image” button and select the modded BIOS that you created in step 3.
  • Click on the “Program” button to write the BIOS to your GPU. Your computer may appear to freeze for what might seem like a long time—this is normal.
  • You’ll be prompted to reboot when ATIWinFlash finishes. Don’t reboot yet—we have one more thing to do. Go ahead and close ATIWinFlash, though.
  • Unzip the ATI Pixel Clock Patcher utility that you downloaded and double-click atikmdag-patcher.exe. It should offer to apply a patch, let it. You only need to do this step once per GPU, even if you flash it multiple times. If you skip this step, when your computer reboots, the AMD display driver will refuse to load because it’ll detect that your GPU BIOS has been tampered with it.
  • Go ahead and reboot after the patch is applied.

If you’ve done everything correctly, your computer should boot normally, and you’ll arrive back at the Windows desktop, ready to test your changes.

Step 5: Test your modified GPU BIOS

Now is a great time to fire up your miner and see what kind of difference your changes made.

If you have a 4GB card, the timing change alone should be enough to get you from ~20 Mh/s to ~24 Mh/s. If you have a 8GB card, you likely went from ~24 Mh/s to ~28 Mh/s. We can do better, but that’s a pretty good start!

Power consumption will be unchanged (or even up slightly, due to the more aggressive timings), but we haven’t touched voltages yet.

Once you’ve recorded your GPU’s new metrics (speed, temperature/fan speed, power usage), we can move on.

Step 6: Find appropriate clock speed and voltage values for your GPU

Before we head back into Polaris BIOS editor to increase memory clock speed settings, it’s a good idea to have an idea of how high we can push them. It’s a lot easier (and faster) to make these tweaks in Windows via the driver (Radeon Settings/WattMan), and then once we’re confident on the proper values, write them to BIOS.

So if you haven’t already, read step 12 of my Windows guide to get an idea of the process around overclocking and undervolting via driver-level edits. If you’ve already gone through the process, you’ll need to repeat it, as your new more-aggressive memory timings invalidate all of your previous data—you won’t be able to push the memory clock speed as high as you previously could (but performance will be much better).

Using Radeon Settings/WattMan in the manner that I describe in my Windows guide:

  • Increase memory clock speed slowly until you see signs of system instability (incorrect share warnings in your miner, artifacts on screen, crashes)
  • Decrease core clock speed slowly until it starts to significantly negatively impact performance
  • Decrease memory voltage slowly until you see signs of instability (you may not be able to significantly lower memory voltage, depending on your card)
  • Decrease core voltage slowly until you see signs of instability

Don’t rush; make sure that your system is stable before moving on. It’s possible to reach speeds of nearly 29 Mh/s with 4GB cards, or over 31 Mh/s with 8GB cards, but watch out for power consumption and stability issues—it’s not always worth running at higher speeds. I’ve found that 25-26Mh/s for 4GB cards, and 27-29Mh/s for 8GB cards is right around the sweet spot for maximum efficiency and stability. When you feel confident that you have good clock speed and voltage values, then move on to the next step where we’ll write them to the BIOS.

Step 7: Write new clock speed and voltage values to GPU BIOS

Note that this step is not strictly necessary if you plan to use Windows for your miners long-term. You can certainly just dial in whatever values you found in the previous step at the driver/WattMan level and call it a day. I prefer to have everything done at the BIOS level, as then I don’t have to worry about software configuration, and can move GPUs between environments with ease.

If you’re running Linux, this is the only way (currently, at least) to overclock and undervolt.

  • Open Polaris BIOS Editor back up.
  • Load the modified BIOS that you created in step 3 (click “OPEN BIOS” in the top left and browse for your modded .rom file).
  • In the “Memory” area, carefully input your values for memory clock speed and voltage in the bottom row.
  • In the “GPU” area, carefully input your values for core clock speed and voltage in the bottom row. You’ll probably be overwriting a 65xxx value in the voltage column—that’s ok.
  • Still in the “GPU” area, fill in the table between the bottom row and the first row (but do not touch the first row!) with values that ramp up to whatever you entered in the bottom row. It isn’t super important to get these values “right”; you can look at the original table and see what percentage adjacent rows vary by, and just calculate new values that way.

Here is my finished, modded BIOS for my Asus RX 470 4GB (click for full size):

Factory BIOS in Polaris BIOS editor

The original factory BIOS is shown in step 2 for reference. Note that I’ve made absolutely no edits outside of the area I originally outlined in blue. I get over 25 Mh/s after the modifications (+25%), while using ~15% less power compared to stock. These changes are fairly conservative; I’m stable at nearly 27 Mh/s on this card with more aggressive settings, but the increase in power consumption isn’t worth it at my electricity rate.

If you’re looking for a good starting point, the settings pictured here should be stable in just about every 4GB card (in the timings section, just copy the 1500mhz value to every row below it).

When you’re done making your edits in Polaris, save your final BIOS (click “SAVE AS”) as a new file. Then open up ATIWinFlash and write the new .rom to your GPU (same as step 4). Reboot and test!

Step 8: Repeat steps 1-7 for each of your remaining GPUs

Yes, it’s a little tedious. But it goes quite a bit faster after your first one. Don’t be tempted to simply take the first BIOS that you create, and flash that to all of your other cards—every GPU is different, even between cards that are the same brand/model. It’s quite possible (likely, even, if you have a lot) that some of your cards will be capable of stable speeds 25+ mhz higher than others. Test them all; it’ll save you headaches later.

Analyzing the cost/benefit of different setups

If you’re stuck on whether or not an extra 1-2 Mh/s is worth 25 watts of additional power consumption, remember that you can use an online calculator to help simplify things. For example, here is a GPU hashing at 25 Mh/s @ 100 watts vs another GPU at 26 Mh/s @ 125 watts (assuming $0.15 per kWh, remember to plug in your own rate!). At the time that this was written, the slower GPU is slightly more profitable.

BIOS mods: before and after comparison

My test rig, running two RX 470 4GB cards, and one RX 480 8GB card, mining ETH in Linux. Top is stock factory settings, bottom is after BIOS mods outlined in this guide. From 65 to 80 Mh/s, using 70 watts less power!


In the next and final installment of this Ethereum mining guide, I’ll post a mining FAQ and some other tidbits that didn’t quite fit anywhere else. Until then, thanks for reading, and feel free to leave questions or comments!

202 Responses to Build your own Ethereum Mining Rig, part 4: Optimization

  1. Elmatra says:

    I have Sapphire nitro rx 480 4gb serial# A1713 (Hashing at 22.5 mh/s with 900 mhz and 825 voltage at 70 watts(gpuz) from card using wattman).

    When I open “Polaris BIOS Editor” the timing value box is empty.
    on the Bios Editor page it says “PS: Use this only with dual bios cards, it has only been tested once on a Elpida Nitro+ RX480 and can be unsafe.”

    Any ideas how I can mod the bios and push for 26.5 mh/s? ANy alternative to polaris bios editor? My card does not have dual bios and I need to for VR games too.

    • CryptoBadger says:

      If you’re using your GPU for games/VR in addition to mining, I’d probably advise against flashing your BIOS. These modifications are aimed at boosting mining performance, and many of them may actually negatively impact gaming performance.

      If Polaris doesn’t read your BIOS timing values automatically, then it definitely isn’t safe to use, especially if you don’t have a card with a secondary BIOS. I don’t have any GPUs with Elpida memory to test myself, but I do know that Elpida support was added to Polaris recently so hopefully it improves in a future version. The only current alternative to Polaris that I’m aware of is manually editing your BIOS with a hex editor, but I would never recommend that (especially on a single-BIOS card) unless you’re extremely comfortable with that sort of thing.

    • Dmytro says:

      I have same problem. My GPU is Sapphire Nitro+ RX470 (Hynix) and when I open BIOS file with Polaris BIOS Editor I do not see any info in TIMIMG VALUES field is just empty.

  2. Jonathan says:

    Hi there,

    I just set up a single GPU (Strix Gaming Rx 580 8gb) to test out this process and make sure it’s working smoothly. I’m currently hashing at 30.5 Mh/s! I’m thinking about investing more, but I have a few questions:

    The pool only pays out in amounts of 1 eth. Would I have to wait a whole month at this current rate to make sure that things are properly set up to pay out to my wallet? It doesn’t seem like there is any other way of assessing my overall progress, since the number of shares resets if I close the miner. Is there a better way to assess progress and make sure it’s collecting properly before the end of the month?

    • CryptoBadger says:

      Hey Jonathan – you can actually change the payout threshold on most pools, although typically you’ll be assessed a small fee if you set it below 1 ETH. For example, if you’re using (the pool I recommend in my guide), you can set the payout threshold as low as 0.1 ETH as long as you’re ok with a 0.001 ETH fee for every payout – just click on the “settings” tab of your dashboard to make the change.

      So if you want to confirm that payouts will hit your wallet address properly, you can change your payout threshold to 0.1 ETH (which should take ~3-4 days to reach with a single GPU) for your first payment, and then bump it back up to 1 ETH afterwards.

    • Tomas says:

      Hello Jonathan, could u please post which timings u copied and what are your clocks? Having the same card and going to experiment today, but would be good to have referral values. Did u measure power consumption? Thank u. Tomas

  3. fr0sty says:

    Having a heck of a time trying to edit the BIOS. I’m running my rig on Ubuntu, but trying to adjust BIOS by using separate storage device that has Windows installed. I can get everything perfect (albeit it took hours of troubleshooting lol) down to the Pixel Patcher.. When I try to start the Pixel Patcher I get the error “failed to locate driver file”. I’m at a loss on it, was wondering if you may have some knowledge about the situation and if you wouldn’t mind lending some advice. It would be super appreciated! GREAT tutorials BTW!

    • CryptoBadger says:

      Try running this patch debugger and taking a look at the debug.txt file:

      Hopefully the output gives a clue as to what’s going on. If the answer isn’t obvious from the ouput, try asking for help over here. The creator of the patcher is pretty active/responsive and should be able to figure things out for you.

      • fr0sty says:

        Will try it man. Thanks much for the feedback!

        • nobody says:

          You can try directly under GNU/Linux 😉


          “PolarisBiosEditor with any memory support (Samsung, Hynix, Elpida etc)”
          “Replaced WPF components with Windows Forms to archive mono compatibility”

          Need install Mono (Linux implementation of .NET):
          # on Ubuntu:
          sudo apt install mono

          # run using (or create icon on desktop/panel with this command):
          mono PolarisBiosEditor.exe


          # list of installed/supported cards (numbered from 0)
          atiflash -ai

          # backup of original bios of card 0
          atiflash -s 0 /path/filename.rom

          # compare bios in card 0 with bios in file (if show error, then not same)
          atiflash -v 0 /path/filename.rom

          # flash bios file into card 0 (after this restart manualy to apply new bios)
          atiflash -p 0 /path/filename.rom

          If any problem with BIOS found, put “bricked” card as second card, and start GNU/Linux with this kernel parameter added, using in grub menu, press e as edit, and write between splash and quiet:
          confirm and boot using F10…

          after boot, use atiflash to flash backup of original bios and reboot…

  4. WannabeMiner says:

    Was wondering why my MHz values on my Sapphire RX470 8GB look different to yours?

  5. Dmytro says:

    Could you please confirm whether my understanding of exact steps are correct?
    Assuming that I am going to use primarily LInux to run eth mining. To get everything up and running on optimum performance I follow steps:
    1) Assemple HW. Connect Hard drive.
    2) Power it on and install Windows operating systems on connected Hard drive.
    3) Install video drivers, make BIOS modification using Windows 10 and eventually run mining software.
    4) When all GPUs are patched switch off the power.
    5) Install another disk or USB flash switch on the power.
    6) Install Ubuntu linux.
    7) Install Linux video drivers.
    8) Install and run mining software.

    Is the sequence correct?

    • CryptoBadger says:

      Yes, that’s correct. If you already have a Windows desktop, you can save yourself some time by modding each GPU BIOS in your existing machine, instead of creating a fresh Windows install just for that purpose.

  6. Anonymous says:

    first thank you for best article that you write .

    i have setup miner with 4 gpu but only one gpu detected .i am using gigabyte RX480 gpu .

    help me so that i improve my performance .

  7. Dmytro says:

    Could you please suggest what else could be done to further improve minig?
    I am using Sapphire Nitro+ RX470 4Gb (Hynix memory). I did BIOS modification as per your description:
    Timing values 1500 copied to 1650, 1700, 2000;
    core clock speed decreased to 1000;
    core voltage: 850mv
    memory voltage: about 825mv

    Now I see under Windows environment 24.6 Mh/s and 157 Watt. Interestig trick is that when I start Sapphire Trixx and just trying to change memory clock from 7000 to 7100, then run miner, after this I see that in Trixx screen clock returns to 7000 (looks like hardcoded value), but most interestimg thing is that consumed power dropt to 127 Watt ( 30 Watts less) actually without any modification of parameters. After next restart consumption goes back to 157 Watts.

    Under Linux hash rate is a bit smaller 24.1 Mh/s and it is not stable at all.

    So my 1-st question is what else can I modify in order to increase hash rate? As I understood memory overclocking is not possible for this model.

    2) Have you ever faced an issue that if display is not connected to HDMI port of AMD GPU computer does not boot up? As soon as display gets connected to HDMI port computer boots up properly. I’ve read that some display emulators are needed to be connected to every GPU’s HDMI ports in order to allow display free operation, but do you maybe know some other tricks how to overcome this without buying those emulators?

    • fr0sty says:

      Hey Dmytro,

      I have the same experience in regards to your second question. What I do, start my rig with 1st GPU attached to monitor via HDMI, so it’ll power on. Once it is on, I connect via putty with my laptop and then disconnect the monitor. From there out you can control your rig via putty and as long as you don’t cut off (which you’ll be mining anyway lol) your good to go.

      I’ve also seen other comments about people programming the rig to start headless, but I myself never delved into the topic too far, as the above scenario was sufficient for my needs.

      Help it helps!

      • Dmytro says:

        Hi Fr0sty,
        Thanks for suggestion. It is fine to boot computer up with connected display and then disconnect, but it is not very convenient if I want to keep rig in some specific place where access to display is limited (f.e. length of HDMI cable is not enough). Your option is good but it is working up to next computer restart, and that is a problem if it happens and I’ll not be available to connect display there will be a downtime :-(.

        • fr0sty says:

          I understand completely! I have a 22 monitor I’m able to lug to my rig whenever I need to mess around with it, so it was no problem for me. We all have different circumstances 🙂

          I hope you find a solution! Maybe you will be able to find how to get it running headless. That would definitely be nice.

          Best of luck!

      • CryptoBadger says:

        Just in case you ever need a solution to running headless, I just added some info to my FAQ that should help.

    • CryptoBadger says:

      If you’ve written your desired clock speed & voltage values to GPU BIOS, try not using Trixx/WattMan/Afterburner at all. They may be trying to reset your BIOS values to some other default settings. Regarding increasing performance further, the settings that I gave in my guide are fairly conservative and intended to maximize stability/reliability and minimize power consumption. Your cards can probably be pushed to ~28 MH/sec or more without compromising stability, but they’ll pull significantly more power. If you want to try for higher hashrates, try Googling around a bit for others that have the same model GPU and use their posted settings as a starting point (the bitcointalk forums are an excellent resource, too).

      How are you measuring power consumption? At those values, you should only be pulling about 100-110 watts per GPU at the wall, assuming a platinum-rated PSU. The wattage estimates that software (Trixx, GPU-Z, etc) give are usually pretty far off the mark.

      Regarding question 2, I just added a question to my FAQ that should help you.

      • Dmytro says:

        Power consumption is measured with wattmeter tool from the 220V socket (at the wall). Actually 127 Watts is a total consumption of whole setup including GPU, motherboard,cpu, etc. Out of this GPU itself consumes about 65-70 Watts.

        Any ideas why cann’t I change memory clock to be higher then 1750Mhz (7000) on Sapphire Nitro+ RX470 4Gb? As soon as I change it to 2000MHz (8000) on Sapphire Trixx tool and start miner it immediately drops to 1750 MHz (7000). Shall I change memory field in BIOS to have 2000MHz instead of 1750MHz? Or 1750 is a hard limit for this type of board and I can not go higher?

        • CryptoBadger says:

          Got it – 70 watts at the wall for the GPU is excellent!

          1750Mhz isn’t a hardware limit, although it’s possible that Trixx is imposing that limit on you. If you’ve already flashed your GPU and copied the 1500Mhz timings to 1650, 1750, and 2000Mhz, then clocking much over 1750Mhz is going to be unstable (2000Mhz+ is possible with a factory stock GPU BIOS, but mining performance will be much lower than 1750Mhz on a modified BIOS due to the better timings on the modded BIOS). Hope that makes sense!

  8. TargetPractice says:

    I currently use Afterburner to change my clock speeds and voltage and I wanted to write those changes on the bios.

    From your picture of the original bios on the Polaris Bios Editor (, in the memory box you put the memory clock speed and voltage that you want it to run at,
    Is that correct?

    Also, in the GPU box you put the core clock speed you want it to run at for the last one and fill in every value in between, then how would you do the voltages for each one? How do voltages in the GPU box and Memory box differ?

    Thank you for your help,

    • CryptoBadger says:

      That’s correct.

      As far as calculating your own intermediate core clock/voltage values, the way I do it is by looking at the original factory settings, and determining what percentage every each step from the top drops by. So for example, if the factory BIOS settings decrease the clock speed/voltage by 10% between the last step and the previous step, I’ll do the same thing when supplying my modified values.

  9. Anonymous says:

    When I tray to start ATIWinflash.exe it says invalid command. And idea why? It’s a Asus rx470. I used it on tow sapphire card without any problems.

    And thanks for your guides, great work!

    • CryptoBadger says:

      How are you trying to launch ATIWinFlash? Are you just double-clicking the .exe? Or are you trying to pass options to it via the command line?

      • Anonymous says:

        Hi CryptoBadger – I tray to launch ATIWinflash.exe as admin (right click and the select “run as admin”). I tried a fresh unpacking of the files atiflash_274 running amdcleanuputility.exe for cleaning. But no luck? Any idea of whats wrong?

        • CryptoBadger says:

          Honestly, I’m stumped on this one. Other than a corrupted download or a binary that isn’t compatible what your OS, I’ve never seen anything like this – and since you said it worked with another one of your GPUs, it couldn’t be either of these. Hopefully somebody else reading has some advice. Sorry I couldn’t be more help!

          • Anonymous says:

            Thanks for the quick answers. I hope that I’ll find a solution later this week.

  10. danish sharma says:

    hi i have sapphire nitro+ rx480 8gb.i modded the bios as you said .i ws getting the hasrate while i was doing single gpu but when i conncted 5 of my gpu then my system do not boot.And now single cards are also not working please help me.

  11. Amirpasha says:

    Hello, I have a question. I have 4 msi rc470 armor OC 4g + 2 Asus rx470 strix 4g with a msi z170a pro carbon motherboard.
    I did everything you’ve said and I could mod all the GPUs. when I plug one of them and test it everything is fine and I can get up to 27Mh/s; But when I connect all of the to the motherboard and boot into windows, after a couple of seconds the screen turns off and it turns on again, and then I get error 43 in device manager for all of the cards.
    I’ve patched the cards as you said with the patcher and everything is fine when I only connect one of the cards.
    Please help me 🙁
    I really don’t know what to do 🙁

    • CryptoBadger says:

      Does your motherboard have onboard video? If it does, try going into BIOS and disabling it. Sometimes Claymore reads onboard video as another GPU, and that causes issues.

  12. crazygamer says:

    Hey, is it save to run my rom file if it is only 128kb? I am not able to save it at 512kb.

    • Dmytro says:

      How did you save your BIOS? As far as I know GPU-Z does this saving of BIOS with 128/256kb of size. ATIFlash works fine for me and saves 512kb rom file.

  13. batsev says:


    Thanks for all the guides. I have bought Nvidia, due to the lack of ATI Cards, do i use the same software for BIOS flashing – ATIFlash, Polaris etc..?

  14. dtriana says:

    Thanks a lot for the guide, it’s been very helpful.

    Everything up to step 7 worked perfectly but when I tried to flash the new memory and gpu values nothing happened. Step 6 in WattMan worked just fine but when I tried to flash them to the bios the results were the same as step 5. Any ideas? (After I flashed I disabled the WattMan profile and restarted)

    My hashrate went from 24.6 to 29.5 which is good. However my power consumption only went from 205 Watts to 195 Watts. I was expecting a larger decrease any thoughts?

    My hardware and settings:
    one – Asus Strix rx 480 8gb
    2125 MHz @ 1000 Watts (Mem)
    1170 MHz @ 1000 Watts (GPU)

    Thanks for your help.

    • Dmytro says:

      Hi you should look fo rthe sweet spot. Either high hash rate and high power or lower hash rate and lower power consumption. First step in reducing consumption is to reduce GPU clock and voltage. For clock 1170 can be reduced to 1100 or even lower, for voltage try to reduce it from 1000mv to f.e. 900mv you will save 10-15 watts, further voltage decrease can be tried until you see degradation (computer hangs, black screen, etc). Doing so you will get hasrate drop but at the same time significantly reduce power consumtion.

      • dtriana says:

        Ok so I solved both my issues. Somehow they were related…

        I didn’t taper my gpu voltages like I did the freqs. This threw the whole flashing for a loop evidently. Not only was the power consumption not decreasing like I thought but the memory freq was not increasing like it should have. Once I tapered the voltages both things started working like they should with WattMan not running.

        My settings now are:
        29.5 Mh/s @ 180 Watts (Whole rig, one card)
        2125 MHz @ 1000 mV (Mem)
        1170 MHz @ 900 mV (GPU)

        With these settings I am getting about 17% more hashrate with 15% decrease in power consumption. Like you said it’s a balance. Maybe I will sacrifice some of my hashrate but really I don’t mind the extra electricity, I just want the ether.

    • CryptoBadger says:

      Is the 195 watts for the whole system? If so, that sounds about right for a RX 480 at ~30 MH/s. The RX 470 is still the power efficiency king; the 480 uses a bit more. You may be able to lower consumption a bit by dropping voltages a bit more in the BIOS, but just be careful not to go too far and sacrifice stability. I don’t have my rig in front of my at the moment, but I’m pretty sure I run my own RX 480 8GB card at 875 mV on the core clock, and something close to that on the memory side.

  15. marco poles says:

    Hi CryptoBadger,
    I build mining rig with 4 rx 480 and 2 rx 580 over the table. All GPUs have bios changed and the rig worked with hashrate=155Mh/s. After, I disassemble it to put the rig into the frame, but the GPUs are no more recognized.
    To reinstall crimson 17.5.2 do I have to write original bios to at least one GPU and after apply atipixel clock patcher? or there is some other method to reinstall amd driver?


  16. anony says:

    Thanks for the optimization guide.
    I have followed each steps carefully on my Asustek RX570 OC 4gB Expedition card and after completed all steps outline in this article and i follow the instruction to write the GPU rom on memory, timing and GPU with the same value as in “Step 7: Write new clock speed and voltage values to GPU BIOS”. Then I patch it before I reboot. When I run my claymore miner with the only GPU card on board, the hash rate dropped from 22.3mhz to 4.x mhz.
    I have try to restore my Original BIOS of this GPU card and patch it again, the hash rate remain same as 4.x mhz. Appreciate your help if you could guide what is happening. Thank you

  17. TARA says:

    GREAT ARTICLE. thank you. then
    I tried to custom v-BIOS but it’s memory timing written by hex.It is too difficult to,There is nothing I can do?
    and plz tell me that some vendor wrote that by hex,others by decimal?
    so we must chose by decimal. if that’s the case,which vendor wrote by decimal?

    • CryptoBadger says:

      Do you mean the Mhz labels are shown in hexadecimal (the values themselves should always be in hex)? If the labels are in hex, then you might need a different version of the Polaris editor. Check this page and expand the “Polaris BIOS editor” section and give the other downloads a try – hopefully one works for you!

  18. Peterpants says:

    Stability question:

    I followed this guide to the T for two rx480 8gb. These are my settings and results:

    29.2 mH/s @ 150 watts/per card
    GPU 1050 MHz @ 1000 mV
    Mem 2115 MHz @ 1000 mV
    Both at 67C
    Timing values, 1750 copied to 2000

    My issue is that my system is stable for 1-2 hours at a time. The screen turns blue/green and freezes, then I have to reset the system. This is a really long time to make a small change then wait to debug. Do you have any suggestions? I thought my settings were fairly conservative based on what others have posted.

    I’m not terribly concerned with power at the moment but I do need to fit 6 cards on one 1000 watt power supply. I want to maintain the 29 Mh/s but I guess I could sacrifice a little.

    Thanks for any help you guys can give me.

    • Peterpants says:

      1150 MHz on the GPU*

    • CryptoBadger says:

      Stability issues are almost always related to overclocking a bit too aggressively. You probably need to back off on the memory clock a bit. I’d revert it back to 2000 Mhz and see if the crashing stops – if it does, you can slowly increase from there until you start to see instability again.

      Agree that you should get things stable first, but after you do, you can probably undervolt both the core and memory to somewhere in the neighborhood of 875 mV or so. That should help with power consumption.

      • Peterpants says:

        Yeah I think you are right. I did some more reading here

        Something I wasn’t doing was looking at memory errors. I started looking at them with HWinfo and they were huge for my ASUS card. It looks like I am not able to overclock the memory much at all. I reverted back to stock and only changed the timing. Now I am increasing the mem clock by 5 MHz and looking at memory errors. Sadly I think I am only going to get to 28 MH/s with this card.

        (I tried a few different Samsung timings from the link I provided. They greatly increased the hashrate but they introduced too many memory errors. I will try them again with my other cards, maybe it’s just this card.)

      • concern says:

        is that possible to reset back to factory setting without restoring the backup of the original configuration?
        I had tried many times to restore the original rom which I have backup before making any changes, however Windows keep complaining it can’t detect my GPU card and each time I have to run the ATI Patch and reboot the system.

        • Peterpants says:

          Yeah I am flashing back to my original bios.

          Did you try reinstalling your drivers. Make sure then to patch the new drivers before restarting. If you are having trouble booting consider using your onboard card.

          Also note you don’t need to patch the drivers each time you flash the bios. You only need to patch the drivers for each fresh install of drivers. So you should only really do it once. If you try to patch again you might have accidentally unpatched your drivers hence the warning.

  19. h2g-vaka says:

    On Polaris Bios Editor 1.41 I don’t see timing. On version 1.4 I got weird numbers for memory timings.

  20. fluffdog says:

    I have the same problem as h2g-vaka. Also, the bios.rom file I save from ATIWinflash is only 256 kb, which Polaris warns me about. Any thoughts?

  21. h2g-vaka says:

    I’ve got 28.5Mh/s with 480 Nitro 4GB Hynix memory. Copied 1500 time straps up to 2000. Core Clock 1100Mhz, auto voltage. 2000Mhz memory clock, auto voltage. ~91W power consumption per card. Set max temperatures to 70C, targeted to 65C. Fans on ~60%, just last one in array staying on ~30%(her fans are not blocked by another card). Everything is working for 24h now without any issues.

    Now I’m wondering will you suggest me trying 2100Mhz or at least 2050Mhz memory clocks? Is there any risk of damaging cards? And what about the way I set voltages to Auto? 90W for 28.5Mh/s seems good enough to me.

    • CryptoBadger says:

      No, I wouldn’t change anything if you’re stable at 28.5 MH/s. That’s pretty good already, especially for ~90 watts.

      Lots of people try to squeeze as much speed as possible out of their GPUs, and then end up with weekly (or more frequent) crashes because things aren’t quite stable. A few hours of downtime because of a crashed rig erases weeks of running at a slightly higher speed – so I generally recommend shooting for 100% stability over marginally better hashrates.

      • h2g-vaka says:

        I hear you. Experiencing lots of these chrashes with GTX1070 rig(damn Micron memory).Will listen to your advice.

        While I’m here. I went with ethermine as you suggested. So far I’m experiencing a lot lower effective hash rates. Saw lots of people are complaining about this on ethermine and suggesting nanopool. What is your exerience about this matter?

        Thanks again for amazing guides and all the answers. Will definitely send you some ethers as soon as I get first payout.

        • CryptoBadger says:

          I actually just switched from ethermine myself a few days ago because of ~30% lower effective hash rates over the previous 3-4 days. They might be experiencing issues, because I’ve had no trouble with them until now.

          I’m testing nanopool currently – everything looks fine so far. If I don’t experience any problems after a week or two of testing, I’ll update my guides to point at nanopool instead.

  22. Robert says:


    Again.. really thanks for all your help. I am mining on six, nitro sapphire rx 580’s, and I attribute it to your guide.

    However, I still can’t figure out how to access the ETH that is being sent to my geth account wallet. I’ve tried to google the process of checking balances and making transfers, but I am not having great luck. If you have time and could give a few helpful hints I would be grateful. I will even send some ETH to your wallet as a way to practice!

    Best Regards!

  23. Marcopoles says:

    Hi CryptoBadger,
    On rx 480 bios I put memory clock/voltage=2125/850 and 850mV on all GPU voltage rows. After reboot the power consumption is not decreased and with gpu-z the vdd is 0.98V
    Reading the bios with atiflash the voltage values are 850mV. It seems that voltage values that I put are not used..
    Best regards

  24. tseub says:

    hi crypto badger , i have errors when i open my bios with polaris , it says that my bios have an insuficient size ( the file is 252 kb instead of 512 standard) and thus i have weird values, i tried with different versions of polaris but didnt suceeded. here find attached the screenshots.

    thanks for your help.

    • tseub says:

      edit : i have a hynix memory , and can you tell me what would be the best base values for overclocking and undervolting please.

      thanks a lot

  25. johan fajka says:

    Hello Mr Cryptobadger,
    I am a new new user of Ubuntu and i have implemented your guide ( to good effect
    the only worry I have is that my cards get hot 71deg and the fans are only going up to 40% or so . How exactly do I use the -fanmin command and where do I put it to implement. If you could be so kind to help me out I would certainly appreciate your help.

    • CryptoBadger says:

      I wouldn’t worry about your GPUs running at 71C – that’s completely normal. I run my own GPUs at the same temperature. Anything under 80C or so should be fine for long-term 24/7 operation without issues.

      If you’d prefer to run your cards cooler, just open up your script (which you created in step 6), and on the last line (the one that starts with “./ethdcrminer64”), you should see a “-tt 68” switch near the end. The -tt stands for “temperature target”, so if you followed my guide Claymore will aim for roughly 68C. Just lower that 68 to whatever temperature you want to aim for, and Claymore will automatically control your GPU fans to keep your cards at that temperature (+/- a few degrees). Just remember that lowering the temperature target will make your fans work harder, which increases the chance that they’ll wear out prematurely (and also uses a bit more electricity).

Leave a Reply

Your email address will not be published.