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!

You can leave a response, or trackback from your own site.

209 Responses to “Build your own Ethereum Mining Rig, part 4: Optimization”

  1. Ben says:

    Ok, so I’ve had my rig running now for a few weeks and have added more graphic cards as I go along, I’m now upto 4. 3 Nvidia gtx 1060 and one P106-100. I was happily cooking at 92 MH/s, went to check it today and windows is crashing and restarted the rig. In doing thsi its lost all the MSI afterburner clocks and set them back to factory..any ideas anyone.
    After restarting. my power usage was jumping all over the place and ive seen the MH/s drop to 9 on some of the cards.
    Please help..

    • Rob T says:

      Ben, if your miner is unstable even when all your GPUs are back to stock, you have an issue with your hardware. You have to start over with 1 GPU again, and add each one one by one to see what went wrong.

      Maybe your PSU went or hard drive containing your OS. Heat kills electronics so don’t let it overheat, especially if you are overclocking it. Unless you kept written notes of your Afterburner settings, they’re gone.

      • Ben says:

        Hmm, One of my cards was running at 67c while the others were running around 61. So I’ve replaced the fan closest to this ‘dodgy card’ with a stronger fan and its dropped 6c already, which looks much better.
        I hope my PSU is ok, its a new 1200W Corsair platinum, only been runnign for a few weeks.
        I did have a written record of the overclocks but I’ve backed these off slightly to try get a more stable 22mhs. Before they were at 24ish.
        Its back up and running but I’m still seeing the odd card drop from 22 mh/s to 15 mh/s and then back up again. It’s all a bit strange.

        • Robert T says:

          Sounds like you have things under control.

          I have 3 1060’s 6gb and 1 1070. I’m getting about 100 mhs total with the 1070 contributing about 30 of that. If I keep my mem clock under 4400, I’m ok. Power at 78w for 1060’s and 110 for 1070. GPU clock does not matter much, but it’s -100.

          It’s been pretty stable, running under Linux. My room temp gets to max 86 degrees F and stable but the miner/parts are hanging in an open plastic shelving unit from Home Depot $20. Hope this helps.

          • Ben says:

            Just checked the rig, my temps are now 58c to 61c across the board (positively chilly I reckon) and the MH/s seems to have settled down. Although my rig is hiding in the garage. Its still on the soft clock, maybe it had had enough of being pushed all the way up and had a fit. As ever, thanks for the help, this guide and forum is indespensible for us miners.

  2. George says:

    I have a sapphire Rx 570 nitro + OC 4gb Gpu and can’t get a 512 kb bios from Atiwinflash. Only 256kb. So Polaris warn me not to continue. What I do to follow your guide?

  3. Robert T says:

    Depends. Make sure you are using the latest ATIwinflash – I think it’s 2.7.7 now.
    When you load into Polaris 1.4, it will give you a false warning. But make sure your Memory section does not look like gibberish, otherwise you will brick something. Google search for images of Polaris and your video card.

    https://bitcointalk.org/index.php?topic=1805129.0

  4. Ben says:

    So after my rig freaked out a few days ago, I’ve let it settle on a lower clock rate, but still my hash rate has been jumping around, up and down..is this normal. Before it crashed my MH/s was dead on 92..no deviations for weeks, now its all crazy, and the average is dropping. I’m starting to wonder whether one of the cards is playing up with things, or whether the psu is causing problems.

    • Robert T says:

      Start removing each GPU and see if it stabilizes. or use Claymore miner and see which GPU hash rate fluctuates the most – or all of them fluctuate? It would helpful to have another PSU ready to swap in.

      Could your GPU driver have been corrupted? do you surf the internet on your miner? if so, you may have downloaded malware. Google for mining software malware.

      Try a different mining pool. Maybe yours was sending you bad jobs?

      My AMD mb Windows 7 machine with the leaked AMD blockchain driver would always give me problems (hash rate steady at 27, but drops to 21 and then back up). I thought it was the PSU, but now that PSU powers another rig running Linux/Nvidia and it’s rock steady on Zcash. Another rig on a Dell Intel MB running Win 10/AMD cards with official blockchain driver has been steady for the last two days.

      • Ben says:

        Yeah, I think I’m going to have to pull the gpus and start from the beginning like you say and see when the instability starts. I’m using Claymore miner and ethermine.org as the pool, they seemed ok before so I’m more inclined to think its a hardware issue now. I’ll redo the drivers just in case, and I don’t use the rig on the internet at all. I’ve ordered a psu tester just to see if theres an issue there..

  5. Bocky says:

    are there any other timing settings that can be tweaked for the 8gb cards? I am running sapphire nitro 8gb cards and changed the one timing value while finding optimal settings in wattman. So far I can get roughly 25 mhs per card dual mining with decred or roughly 23.5 dual mining sia. I could go for a bit more using wattman tweaks but then things become unstable. so I was wondering if there was any extra tips for these cards that might be available, thanks.

    • Robert T says:

      Linux AMD driver does not allow you to overclock memory, so you get only the out of box speed. Windows AMD Blockchain driver allows you to overclock memory, but the Aug 23 release prevents you from undervolting.

      Sounds like you are running under Windows, so if you have not done your BIOS memory timing shift, do so.

      Lastly get a quality PSU. Erratic voltages will cause your GPU to constantly adjust, ruining a good steady high hashrate.

  6. Bocky says:

    yea I already did the timing from the 1750 to 2000 like previously stated was just wondering if that was the only change in timing that would effectively up the hash rate. running on a 1300w antec hcp power source not the best but only running 3 cards atm too.

    • Dmytro says:

      The trick for my Saphire Nitro+ 8Gb cards (Hynix memory) was to use specific timing strap for 2:1750, 2:2000 and 2:2250 MHz. String starts from 777 and not from 999 as in out of box bios (default one). I do not know if it is a good idea to share this strap here because it works for my 4 cards but may not work for yours (different HW). I haven’t touched 1:1750, 1:2000 values at all. In addition I increased Memory clock to 2225 MHz. Those settings gave me about 30-31 MH/s for EThereum.

  7. Bocky says:

    thanks for the reply. kinda noob to all this so I am unsure what you mean by 2:1750/2:2000/2:2250 1:1750/1:2000

    I dont understand those values as my bios only shows 0:2000/0:1750/0:1625 etc. so when u say 2 and 1 I am already lost lol sorry.

  8. Bocky says:

    one other thing, my bios does not start with 999 strings only 777 and below. https://postimg.org/image/6wt3ch0djf/ is an image of the original bios before flashing 1750 into 2000.

  9. Ben says:

    Any ideas guys??
    My hashrate jumps up and down all the time from sometimes 23 mh/s down to 9mh/s!!
    But it isint just one particular ‘sick’ card, they all fluctuate. Sometimes its GPU 1, then 2, then 3 etc. There doesnt seem to be any reason to it. I was hitting a steady 92 mh’s day in day out until the system crashed. Windows shut down the miner, and had to restart. After that the problems started..could a faulty psu be causing the cards to flip out?

    • Rob T says:

      Ben, another suggestion. If you are running under Windows, increase your virtual memory (ie. swap file) to 20gb, rather than 16gb suggested by Claymore. I’ve found that does help. Also your swap file should be on the fastest drive possible. If it’s too slow and your GPU has to wait, then that could be it too.

  10. Zelda says:

    Our rig is plugged into an eight-outlet Ubiquiti mPowerPro (about $90). It measures power consumption for optimization. It also has an API that allows power outlets to be turned off and on remotely, which is handy for remote power cycles if the rig really wedges or overheats.

    I’ve written some Python that monitors Claymore and power cycle the rig if it becomes unresponsive, underperforms, or overheats. If anyone’s interested, drop me a note and I’ll clean the code up enough to post on github.

    Happy mining!

    [Disclaimer: I have no commercial connection to Ubiquiti, just thought this code might help other miners.]

    • Robert T says:

      I use the TPLink HS100 for remote power switchoff. The downside is that’s manual and costs $25 per outlet. The mPowerPro is 8 sockets it’s more economical and can respond with your custom software 🙂

      There are some USB watchdogs on eBay that will trigger the reset switch, but have not tried any of them.

  11. Zelda says:

    If you find that your Claymore Ethereum mining rig sometimes locks up while optimizing (as I have), you might find this software useful. watchclay monitors a rig and resets it by power cycle if issues arise. A Ubiquiti mPower strip is required.

    More explanation here:
    http://www.cryptobadger.com/build-your-own-ethereum-mining-rig/comment-page-1/#comment-59873

    Software posted here:
    https://github.com/llang629/watchclay

  12. Roaders says:

    I have a mining rig with currently 9 cards and I have set it up with both Linux and Windows on different hard drives. I seem to have the hardware stable now in both Linux and Windows so I am now planning on overclocking.

    I prefer running under linux, it seems a lot more stable, faster to boot and easier to monitor remotely.
    However with windows I can overclock using MSI Afterburner and do not have to go to the extra effort of flashing bioses.

    How much extra performance can you get from flashing over what you can achieve with after burner?

    I have 8 Rx 480 cards – only some of which have a bios switch on that I can see and a GTX 1070 card that doesn’t have a bios switch either.
    I don’t really want to mess with Bioses without the switch available.

    Thanks

    • Robert T says:

      I have used both Windows and Linux, and find that Linux is more stable and SSH is much easier than using RDP. The biggest problem with Linux is that I cannot fine tune the memory overclock. Second is undervolting. Unlike AB where undervoltages are soft limits, BIOS undervolts are hard and when the chip exceeds this limit, it locks up. I hope someone will correct me if I’m wrong.

      • arcol says:

        You can edit vga bios settings under linux.

        The polaris bios editor (v1.6.6, as of 28th of Dec)
        can be run under linux, here:
        https://github.com/jaschaknack/PolarisBiosEditor

        The bios vga can be saved with atiflash, here:
        https://medium.com/@lukehamilton/flash-your-rx-470-card-on-mac-linux-7391fb78b6f6

        The temperature and voltages can be read from sensors:
        apt install lm-sensors

        Load the necessary modules what sensors-detect shows you.

        Then you will have a nice temperature and voltage output with sensors command.

        You can also check the actual consumption via sys class:
        sudo cat /sys/kernel/debug/dri/0/amdgpu_pm_info

        So in theory you do not need to touch windows at all to finetune a linux setup.

        • Rob T says:

          This is great, arcol!

          The last piece of the puzzle is are you able to set the GPU clock and Mem clock from Claymore?

          I tried this a few months ago, and gave up.

          Googling this again, I found this article, but I have another dozen GPUs to setup, and Windows 10 is free for another 3 days (Google “windows 10 accessibility upgrade”), so Linux is taking a back seat for now.

          https://gist.github.com/Francesco149/0302fbb5e056f3339ae17d3c13257929

          • arcol says:

            If I understand right, you are after real time adjustment?

            My setup is basically, I have a master-miner pc, with multiple gpus.
            And I have two slaves:)

            Each slave is just an old PC (from 2010), plugged in a amd RX470.

            So every change I make, I make on one of the slaves.
            If its perfect, then I load it on the another slave to verify, then on the master.

            The point is, you do not want to fiddle with a multigpu pc, instead of money making. It should be run 24/7, without any downtime.

            So get a PC for toying.

            The power consumption is like this (on one of the slave pc):
            50W – with no hard drive, and no gpu
            60W – with hard drive, and no gpu
            70W – with hard drive and gpu
            195-203W – while mining (with hard drive and gpu)

            Mining speed is like this (RX470, ethereum, claymore):
            17.3MH/s just installing the amd driver
            21.3MH/s after reboot
            24.4-24.5MH/s after copying 1500-200MHz

            I still need to optimize for power (eliminating the hard drive, undervolting).

            Share your experience too!:)

          • Rob T says:

            I like your scientific approach to mining. My miner rig is described another post on November 24, 2017 at 9:44 pm. Unfortunately I did not test the RX470 I have for wattage. On Win 10/claymore 10.1/Eth, the RX470 is at 26 Mhs. This is on a MSI 4gb RX470 with 1650 mhz RAM (other cards are typically 1750). Here are my settings: in BIOS, the TDP is 60, Max Power Limit 110, copy the 1500 timings to 1750, 1900, and 2000. Everything else is stock (except I like to put in lower Temp limits). In Windows, I use MSI Afterburner to reduce GPU core voltage to under 900mV, GPU clock 1100 MHz, Mem clock 1800. I would like to push Mem block higher because Ethhash is memory intensive but this card has slow memory. With Mem clk at 2000, my other RX 570 is 27.8 Mhs.

            Note that it’s common that Claymore hashing rates are higher in Windows than in Linux. Claymore says it’s a difference in the way the operating systems handles the clock. But the best number is to look at the average hashing rate at your mining pool. So from two Windows machines running Claymore, the realized hash rate is 2% under and 5% under what’s reported by Claymore. I’m using ethermine.org.

  13. Zelda says:

    We have a dual-boot Ubuntu16/Windows10 rig with seven GPUs (3xRX580, 4xRX570). While running Linux would be preferable for stability and remote management, the lack of real-time control of overclocking and especially undervoltage are a real obstacle. Even if you want to flash GPU BIOS, all the experimenting to find the right settings must happen under Windows. Thus, mostly running Windows now, because the cclock, cvddc, mclock and mvddc parameters in Claymore provide enough control to substantially improve efficiency without the bother and risk of flashing cards. It would be great if these parameters also worked under Linux, but until they do, Claymore mining is more natively useful under Windows.

    By the way, Windows instability was part of what prompted the creation of this python script, which watches the rig and powercycles if it becomes unresponsive or otherwise misbehaves:
    https://github.com/llang629/watchclay

    • Rob T says:

      Hi Zelda, what do you consider unstable?

      I was running Windows 7 and the hashrates would occasionally fluctuate. I later switched motherboards and better PSU and Windows 10. It was rebooting due to software updates, but I turned it off. Later, I was amazed that it would be rock solid for a week. So long as your cooling is good, don’t overclock too much, I think you should be good.

  14. VC says:

    Question. I have the Sapphire Nirto+ RX470 8gb (Samsung mem) which has a ‘silent bios’ switch on the card. I bought it used and device manager would not recognize the card unless I turned it off. Do I attempt to mod the bios in silent mode or regular?

  15. […] BUILD YOUR OWN ETHEREUM MINING RIG PART 1: HARDWARE PART 2: LINUX SETUP PART 3: WINDOWS SETUP PART 4: OPTIMIZATION […]

  16. LEE says:

    Hi guys am i missing somthing or is this about flashing ati and not nvidia cause i like to flash my 1070 TI but woun’t work with ATIflash!

    • AussieBen says:

      nvidia cards can’t be flashed. You can only use software to overclock & undervolt and you can’t get anywhere near the % as you can an AMD.

      • Rob t says:

        I have both Nvidia and AMD cards. Though AMD generates higher hashes per dollar, it comes at higher power consumption. I have experimented and flashed AMD cards many, many times to optimize them, while my Nvidia cards work right out of the box. I am also worried that if I lose my factory ROMs, I’d have trouble with warranty service.

        Lastly I have not been able to overclock the memory in Linux above what the AMD driver allows – to like like 1850 or something. In Windows, you can get it above 2000. Nvidia cards have no such restrictions in either OS. Because these issues, I shorted AMD stock and went long Nvidia. This trade paid for my hardware 2x over. LoL

        Having said all that, I just bought 2 RX 570 cards on Black Friday special for about 180 USD. Happy Thanksgiving to everyone!

        • AussieBen says:

          I question that power consumption statement. An nvidia card can beat 32mh/s solo eth at 130w measured at wall? Nvidia used to be better at monero algo but the new vegas are blowing the 1080ti out of the water with that reddit post on mods. And still running 130w at wall (1900 h/s)

          I get the feeling a lot of people buying nvidia rigs are doing it for the brand. Long history of followers and they just simply refuse to buy anything else. But only speed testing on my gaming nvidia, i haven’t tested every algo, maybe 1 or 2 are more profitable/power efficient then eth.

          • Rob T says:

            Hi Aussie, I have a Gigabyte GTX 1070, and I’ve got it up to 32mh/s on 80w power target (GPU chip only) for a wall wattage of 115w. I’ve since lowered power target to 60w and still get 32mh/s, but have not taken the time to measure consumption at the wall. My rig consumes a total of 620 measured by Kilo-watt, and consists of 1 RX 570, 2 RX 480, 1 RX 470, 1 GTX 1070. I am getting 137mh/s mining ETH. Other specs: low power Pentium G645T, 4gb RAM, 60gb SSD, 2x 80+ Gold PSUs rated total of 1300w.

            From what I read, the 1080ti and 1070ti don’t offer much more than 1070, so not surprised Vegas are beating them. But the best hash for the money and wattage IMHO is the GTX 1060 but your mileage may vary.

          • AussieBen says:

            Hi Rob. I haven’t gone the nvidia route mostly because of higher ROI. I can’t see any repeat power reading of sub 120w at wall. How are you measuring the card only? I.e. taking the system power away?

          • Rob T says:

            Ok, so I decided to take my rig offline to do this GPU comparision on my Win 10 machine. Using only the integrated video, I am measuring 24w At The Wall at 1% utilization (i.e. idle) for the motherboard alone.

            Methodology: using Claymore 10.1 to mine ETH only, and with the best tune I’ve been able to accomplish. This involved flashing the RX570 BIOS ROM, and using MSI Afterburner to tweak the results.

            These are the stats of the cards tested alone, on the motherboard PCI-e slot:

            Card, Mh/s, system power consumption ATW, card wattage (minus 24), mh/watt
            GTX 1070 8gb, 31.5, 139, 115, 0.274
            GTX 1060 6gb, 23.4, 101, 77, 0.304
            RX 570 4gb, 26.0, 134, 110, 0.236

            ATW measurements were taken using reading a Kilo-watt meter. The PSU is Supermicro server 550w PSU with 110w input, rated 80+ Gold. Motherboard specs are in a previous post.

            The surprising result was the GTX 1060, with the highest hashrate per watt. Though I did not stress test the 1060 (it was from another rig),the other cards have been running nonstop. The 1060 was using the same memory OC as the 1070, so I have no reason to believe it would have stability issues.

            So while AMD cards are cheaper, it takes time to BIOS Flash them, where as Nvidia cards work right out of the box. For Linux installations, I’d go Nvidia all the way. AMD cards really need Windows to squeeze out the best performance (due to Linux driver issues I’ve mentioned). Having said all that, I ordered 3 AMD cards this week because they’re on special at Newegg.com.

          • gadiminas says:

            Rob have you tried measure RX580 power consuption? If this card is worse than RX570?

          • Rob T says:

            The specs for RX580 TDP is 35 more than RX570

    • Rob T says:

      Ethminer is optimized for Nvidia cards. It hashes faster than Claymore and there is no Dev feeas well. https://github.com/ethereum-mining/ethminer/releases

      • gadiminas says:

        What tools you are using for overclocking in linux? Or is there options in nvidia drivers to set?

        • Rob T says:

          I have not found any utilities like MSI Afterburner for Linux. The Nvidia SMI tools work well. I get same hash rate in Linux as I do in Windows. This is not possible with AMD.

  17. Jaz says:

    Great blog. Thank you so much on getting me started. I have a Powercolor Red Dragon RX580 4gb and have saved a backup copy of the bios however when I go into the Polaris editor I see this in the bottom right hand corner. Where do I copy from and where do I paste to?

    Mhz mV MHz Timing Value
    300 1000 161:42292 00000000003010507…..
    1000 1000 162:84235 00000000006010…..
    1750 1000 165:351 0000000000C06141A….
    166:352 0000000000F0AA1….
    166:84238
    168:12618
    169:352
    169:84238
    170:42296

    I have no way to screen shot through this but I could send you what my screen looks like.

    Please advise 🙂 Thank you !

    • Rob T says:

      The version you are using is not compatible with your card. Absolutely do not edit this and flash as you are guaranteed to brick your GPU. Find another version of Polaris, Google RX580 Polaris editor and see what other people have used.

    • jaz says:

      Please ignore the last post.

      I had the wrong version of Polaris.

      I was able to improve my hashrate from 20.280 to 22.910 just from rewriting the bios with Polaris on my Powercolor Red Dragon Rx 580 4GB.

      There is no app such as “wattman” described above in the the new drivers to tweak the clocks. Any suggestions?

  18. Sharahus says:

    Hi
    I have rx 580 4g, i copied 1500 like it said in th guid and my hashrate went up from 19mh to 23. After tweaking with wattman i can get close to 26Mh but when i write the sttings on the bios i get 23mh, I checked and the settings are on the bios. What am I doing wrong?

    • Rob T says:

      What did you do after you got 26mh/s? Something you did after that brought it back down.

      • Sharahus says:

        I just used polaris to write it on the bios like it said on the guide , i only managed to get one card to work with the bios and not give the before Overclocking hashrate, but i hit another wall when i use that card with rest of my cards it crashes , so i just went back and wrote back the 1500 straps and get to 23Mh. And when i the over clock setting for the cards to work on 26Mh just by wattman i can only use 4 cards the next card i add crashes the whole system. So long story short ive settled with average 24.5 mh hashrate for each of my 6 biostar Rx580 4g cards. Just wish i could figure out a way for all of them to work on there 26mh settings together without crashing.

  19. Patas007 says:

    After playing with Wattmann on memory undervoltage and GPU underclocking and undervolting I got only Windows miner to get working (tried ethminer). Under Linux I had working both claymore and ethminer but none of them works now. I’ve MSI RX570 4GB. HWiNFO reports same. I tried two GPU memory testing tools and both report 3072MB of available RAM.

    Claymore miner says

    AMD Cards available: 1
    GPU #0: Baffin, 1532 MB available, 16 compute units
    GPU #0 recognized as Radeon RX 460/560

    Setting DAG epoch #155…
    server: bind failed with error: 98 (check -mport option value), next attempt in 20sec…
    Setting DAG epoch #155 for GPU0
    Create GPU buffer for GPU0
    GPU0 – not enough GPU memory to place DAG, you cannot mine this coin with this GPU
    GPU0 – OpenCL error -61 – cannot allocate big buffer for DAG. Check readme.txt for possible solutions.

    Ethminer says
    cl 09:23:54|cl-0 Platform: AMD Accelerated Parallel Processing
    cl 09:23:54|cl-0 Device: Baffin / OpenCL 1.2 AMD-APP (2482.3)
    ✘ 09:23:54|cl-0 clCreateCommandQueue ( -6 )
    ✘ 09:23:54|cl-0 OpenCL Error: clEnqueueWriteBuffer -36
    m 09:23:55|ethminer Speed 0.00 Mh/s gpu/0 0.00 [A0+0:R0+0:F0] Time: 00:00

    Please any suggestions?

    • Rob T says:

      Out of disk space, swap space, or low system RAM. Also do fresh install of video driver using DDU (if you are on Windows).

  20. Pavel says:

    I was playing with my RX470 4GB. First on Asus OC Formula, i7-6700k, 32GB RAM. I did only ATI flash, I didn´t play with clock speed or voltage values.

    Everything was smooth and I went from 20 MH/s to 24 MH/s.

    Now I am trying to run this on Asrock H110 Pro BTC+, Virtual memory is 16GB, Celeron G3900, 4GB RAM and after flashing bios and starting Claymore, I got blue screen. Running on original Bios is fine..

    Please any idea?

  21. Anonymous says:

    Anyone know how to successfully undervolt and overclock in Linux using Claymore?

    • Patas007 says:

      Claymore is mining tool. You can find other similar to be used for mining. Those can be used on Linux, Windows or MAC.

      Undervolt and overclock is GPU BIOS modification. Unfortunately I did not find any Linux Tool and you will have to play on Windows for a while to tune the graphic card. But it’s only for finding the best values. Once you have them you will save final version of your modified BIOS into the graphic card and then you can reboot back into Linux and run Claymore there.

      If anybody finds Linux tools replacing AtiWinFlash and PolarisBIOSEditor please share with others.

      • Zelda says:

        In particular, claymore has command line options for core and memory overclocking and undervolting: -cclock -mclock -cvddc -mvddc. These work under Windows 10, but not under Linux. The only method to change the parameters in Linux is first to use the Windows tools to experiment, tune, and reimage the GPU cards.

      • PC Simple says:

        you can use ohgodatool in linux to overclock your cards. As it must be launched as root and after the start of the xserver i put commands in rc.local.

  22. Paul says:

    I’m a little frustrated that I’m stuck at around 25.5 on my Pulse Sapphire 580 4gb. I’ve done the default tweaks which pushed it from stock 21 to 25 but I just can’t seem to get this sucker higher. I’m on Windows, so I guess some of it could be driver related? I see a lot of people have them at 29+ so I feel like I’m missing something obvious 🙂

    • Rob T says:

      Are you using AMD’s Blockchain drivers? Install it, and you should get 28-30 mhs. You can find it using Google on AMD’s website.

  23. rene says:

    hello i have try everything in your guide, i have 5 xfx xxx rx580 samsung memory 8gb, i cant get more thatn 20mh/s i tryied the phisical bios also you way to do it and it only adds 1mh/s

    i will apreciate if you can help me with it.

    • Rob T says:

      Without more information about your setup, one can only guess at what’s wrong. Please provide as much information about your complete mining rig setup. Things to provide:
      Motherboard, CPU, RAM, hard drive size, swap space allocated, operating system, mining software, power supply brand/wattage, how you are connecting your miners – PCI-e and power connections, how many PSUs you have, and so on. Power is very important – every detail is important. For example, are you using SATA connectors to power your risers?

  24. Captain says:

    Excellent guide!

    I followed the guide pretty closely, and am mostly happy with what I have:
    – Biostar TB250-BTC Motherboard
    – EVGA SuperNOVA 1200 P2
    – Intel Celeron G3900 CPU
    – Ballistix Sport LT 4GB DDR4 memory
    – 60GB SSD
    – 3 x MSI RX 580 ARMOR 8GB
    – 1 x MSI RX 570 ARMOR 8GB
    – Running Linux Xubuntu 16.04 (without the recent Linux update)
    – All drivers as in the guide

    I’m stable and getting excellent hash rates of about 30 mH/s on the 580s after flashing the memory timing changes suggested in the guide (copying 1750mhz values to the 2000mhz), and increasing the memory clock speed to between 2175-2200. The 570 card is getting 24 mH/s after memory timing changes only. I was unable to make changes to the core clock speed without impacting performance.

    My only issue is that I can’t seem to get power usage down. I’m at about 200W on the 580s and 125W on the 570 – a total of about 900W on this 4 card rig. I was able to boot under Windows and use Wattman to test lower memory and core voltages, but didn’t see any resulting power savings in Windows. I went ahead and flashed the lower values to one of the 580 cards and went back to running under Linux. No change.

    Is there something obvious I’m missing here? If I’m understanding some of the comments in the guide correctly, this is a lot higher power consumption than should be expected if the cards are optimized. Or are my expectations off?

    Thanks!

    • Rob T says:

      125w on the 570 is expected, that’s what I get.
      200w on the 580 is absurd. You need to BIOS mod or undervolt it.

  25. asdf says:

    still no way to undervolt in linux???

Leave a Reply