Build your own Ethereum Mining Rig, part 3: Windows Setup

Ethereum & WindowsNo doubt some of you saw the Ethereum mining guide for Linux that I published last week and balked at all of that “command-line nonsense”. Linux isn’t everyone’s thing, and that’s ok—if Windows is your OS of choice, then this guide is for you!

While Linux offers some significant advantages when it comes to GPU mining, Windows does have one potentially important edge: undervolting your GPUs currently requires quite a bit less effort under Windows. If you want your mining rig to run at its maximum efficiency, you’ll want to keep power consumption to a minimum, and with Linux that generally requires flashing a custom BIOS to each GPU—whereas in Windows you can usually accomplish this at the driver level with a simple software setting.

The bad news is that if you want maximum performance out of your rig, you’ll probably eventually want to flash your GPU BIOS under either operating system, but we’ll get into that in part 4 of this guide. But if you already know that overwriting your GPU BIOS with a custom replacement is outside of your comfort zone, then sticking with Windows will at least allow you to undervolt.

So with all of that in mind, if Windows sounds like the best option for you, read on for our setup guide!

Build an Ethereum Mining Rig, part 3: Windows Setup

I won’t go into quite the same excruciating level of detail as I did with my Linux guide, as it’s probably a safe assumption that anyone reading a guide about building a custom cryptocurrency mining rig is already quite comfortable with basic Windows tasks. The steps outlined below should be more than adequate for the average Windows user, but feel free to leave comments if anything is unclear!

Step 1: Configure BIOS Settings

Before we even get to Windows, make sure your mining computer’s BIOS settings are in order. Power on your computer, and press the “delete” key a few times immediately after power on. You should end up in the BIOS configuration area. Do the following, then save & exit:

  • Change power options so that the computer automatically turns itself on whenever power is restored. The reason for this is two-fold: first, it’ll make sure that your miner automatically starts up after a power outage. Second, it makes powering the computer on much easier if you don’t happen to have a power switch connected to the motherboard.
  • Disable all components that you don’t plan to use. This might save a little bit of power, and since your miner will likely be running 24/7, it’ll add up. For me, that meant disabling onboard audio, the USB 3.0 ports, one of the SATA controllers, the Firewire port, and the serial port.
  • If you’re running a lot of GPUs (4+), additional tweaks might be necessary to ensure that they’re all recognized by the OS. Exact tweaks vary by motherboard, but setting the PCIe speed to Gen1 is usually a good place to start. No need to change anything now, but make a mental note that you may need to come back and play around a bit if all of your GPUs don’t show up in the OS later.

Step 2: Install Windows 10

Any 64-bit edition of Windows 10 should work fine (a 32-bit OS is not capable of running the Ethereum mining software). Windows 7 and 8 will work as well (as long as they’re 64-bit versions), although you may need to do a bit of extra work to recognize all of your GPUs if you’re running more than 4. The guide is written assuming that you have Windows 10, but the steps for 7/8 should be pretty similar.

I’m going to assume that everyone reading this is capable of installing a fresh copy of Windows. Complete the installation and boot into the Windows desktop before proceeding to the next step. If necessary, also install the LAN/Ethernet driver that came with your motherboard so that you can get online.

Step 3: Configure automatic login

If you’re building a dedicated mining rig, then you probably want your mining rig to boot up and start mining automatically, without any user intervention. We’ll need to enable auto-login for that to be possible.

  • Right-click on the Start Menu and select “Run”. Type “netplwiz” (without the quotes) at the prompt, and click “ok”.
  • Uncheck the box that says “Users must enter a user name and password to use this computer”.
  • Click “Apply”. You’ll be prompted to enter your password to confirm the change.

Step 4: Change power settings to prevent sleep

By default, Windows will go to sleep after 30 minutes without user interaction. Obviously, we don’t want that behavior on our mining rigs. To disable it:

  • Right-click the Start Menu -> Control Panel -> System & Security -> Power Options.
  • “Balanced” should be selected. Click on “Change plan settings” next to it.
  • Change “Put the computer to sleep” to “Never”, then click “Save changes”.

Step 5: Minimize unscheduled reboots due to Windows Updates

Windows 10 introduced forced updates as a pretty controversial “feature”, and not having control over when your mining rig is rebooted to install OS patches could be frustrating. We’ll be setting things up so that your mining rig automatically begins mining any time Windows boots, so leaving automatic updates in place certainly wouldn’t be disastrous if you want to skip this section. But if you’d prefer to retain control over downtime, here are some workarounds:

Keep in mind that if this is a fresh install of Windows, it’s a good idea to let the OS install any available updates first (right-click start -> settings -> windows update -> check for updates).

Step 6: Allocate at least 16GB of virtual memory

The author of the mining software that we’ll be using recommends this step, although I’ve never encountered issues with a smaller pagefile (edit 4/19/17: I tried mining on a machine with only 4GB of physical RAM and got terrible performance until I increased my pagefile to 16GB). Here’s what you need to do:

  • Right-click the Start Menu -> System -> click “change settings” on the right side of the window (if you don’t see “change settings”, click “system info” first)
  • Click on the “Advanced” tab, then in the “Performance” area, click “Settings”
  • Click the “Advanced” tab, then click “Change” in the area labeled “Virtual Memory”
  • Uncheck the box at the top that says “Automatically manage paging file size for all drives”, then click on the “Custom Size” radio button.
  • Enter “16384” (without the quotes) in both the Initial and Maximum size fields, then click “Set”. You’ll need to reboot for the change to take effect.

Step 7: Disable unnecessary Windows visual effects

On systems with borderline hardware, this may increase performance a bit and help keep the OS a bit more responsive during mining:

  • Right-click the Start Menu -> System -> click “change settings” on the right side of the window (if you don’t see “change settings”, click “system info” first)
  • Click on the “Advanced” tab, then in the “Performance” area, click “Settings”
  • On the “Visual Effects” tab (which should be open by default), click on the radio button labeled “Adjust for best performance”, then click “Apply”

Step 8: Install AMD GPU drivers

I’ve tried a few different driver versions in my testing, and while there were a few performance issues with some 16.x versions, they appear to have been cleared up in later releases. So there is currently no reason to not use the latest available AMD drivers (17.4.2 at the time of this post).

It’s ok to simply pick all of the default options during installation. Skip including ReLive when asked, as we don’t need it.

Reboot after the driver installation is complete.

Step 9: Generate a wallet address

You can skip this section if you already have an Ethereum wallet address. Otherwise, you’ll need to create one to mine with. There are many ways to generate your own wallet address, but I’ll show you how to do it using the official open-source Ethereum software. Be wary about trusting other methods, as some online creation tools are potentially scams designed to later steal your coins.

  • Download the latest release of Geth for Windows here.
  • When the download is finished, run the installer and select all of the default options.
  • Open a command prompt window (right-click the Start Menu -> Command Prompt).
  • Type the following to switch to the Geth installation directory (assuming you installed it in the default location):
    cd \Program Files\Geth
  • Type the following to create a new wallet address:
    geth account new

If you see a warning about starting the Ledger hub here, you can ignore it. You’ll be prompted to enter a password, and then to confirm it (use a strong password that you won’t forget!). The output will be a long string between two curly braces { }. That’s your new wallet address—make a note of it. You can easily copy it by right-clicking anywhere in the command prompt window, selecting “Mark”, highlighting your new address by holding left-click and dragging the mouse over the entire address, and then right-clicking again to copy to your clipboard. From there, you can paste your address anywhere using standard Windows shortcuts (CTRL+V).

Important: The combination of the password you just used to create this address *and* the associated encrypted key file is what gives you control over your new wallet address. If you lose either of these, you’ve also lost control of your wallet and all of the coins associated with it—and there is literally nothing that anyone will be able to do to help you. Remember your password, and keep multiple backups of your key file(s)!

Your key file(s) are stored in the %APPDATA%\Ethereum directory. For a fresh Windows 10 install, that means the C:\Users\[YOUR WINDOWS USERNAME]\AppData\Roaming\Ethereum\keystore folder (note that the AppData folder is hidden by default). Copy the entire keystore folder someplace safe to backup your wallet.

If you ever forget your wallet address, you can open a command prompt, return to your Geth installation folder, and type geth account list to see your addresses and the location of their key files.

Step 10: Install Claymore’s Ethereum miner

I talked about my reasons for selecting Claymore’s miner over other alternatives in my Linux guide, but to sum up: it’s currently the fastest, most stable Ethereum miner that’s still under active development. The downside is that it’s not free—about 1% of your mining time will benefit the creator of the software instead of you. However, even after the usage fee, you’ll come out ahead compared to the alternatives.

  • Download the latest version of Claymore’s ETH miner (v9.0 at the time of this post). Make sure to get the .zip file and not the Linux tar!
  • Extract the downloaded archive into a folder on your mining computer.
  • Open the folder where you extracted the miner, and create a new text file called “mine.bat” (you can use notepad for this).
  • Enter the following text into your mine.bat file exactly as written (but do make sure to substitute your own wallet address—see note below):
    timeout /t 15
    setx GPU_FORCE_64BIT_PTR 0
    setx GPU_MAX_HEAP_SIZE 100
    ethdcrminer64.exe -epool -ewal YOUR_WALLET_ADDRESS.Miner01 -epsw x -mode 1
    -tt 68 -allpools 1

Where it says YOUR_WALLET_ADDRESS, use the address you created in step 9 (you’ll need to put “0x” in front of it). The “Miner01” following your address can be changed to any friendly label that you want to give your miner (only important if you plan to run multiple rigs).

Note that I’m using as the mining pool here. It’s a fairly typical ETH pool that seems to have good reliability, but feel free to pick your own pool. Most don’t require registration, and simply payout to whatever wallet address you supply whenever a certain threshold is met (usually whenever you accumulate 1+ ETH). Assuming you stick with, you’ll be able to check on your miner’s status by going to this URL after you start mining:[YOUR WALLET ADDRESS]

Save and close notepad when you’re done.

Now is a good time to perform a quick test. Simply double-click your mine.bat file to launch the miner. It’ll take a minute or two before it actually starts mining, but it should get there eventually. When you see a scrolling log of outputs that includes non-zero hashrates (expect hashrates in the low to mid 20s for unoptimized GPUs), you’re good to go. If the script fails to start, or you see errors, make sure that you’ve created the script exactly as outlined in the guide.

Press CTRL+C to exit the miner when you’re satisfied that it’s working.

Step 11: Configure your miner to start automatically

We want our rig to automatically start mining whenever it’s powered on or rebooted. That way, we keep mining losses to a minimum whenever a power outage occurs, and we don’t have to worry about manually starting it back up in other situations.

  • Open Windows Explorer and navigate to the folder where you created “mine.bat” in the previous step.
  • Right-click on your mine.bat file, and pick “Copy”.
  • Now, navigate to %AppData%\Microsoft\Windows\Start Menu\Programs\Startup (should be something like C:\Users\[YOUR WINDOWS USERNAME]\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup).
  • Right-click anywhere on the empty background of the Startup folder and select “Paste shortcut”.

You should see a shortcut to your mine.bat file appear in the startup folder. Windows should automatically execute it upon bootup.

At this point, we’re done with the essentials. If you’ve done everything correctly, you should be able to reboot and watch your rig automatically start mining shortly after the Windows desktop loads. There are a couple more steps that may be important to you, though.

Step 12 (optional): Optimize clock speeds and undervolt (basic)

We’ll get into more advanced optimization in the next section of this guide, but as long as we’re on Windows, it doesn’t hurt to see what we can accomplish via some basic driver setting adjustments. We should be able to squeeze out some extra performance on most RX 470/480 cards and save a bit of power without venturing into the realm of BIOS mods.

  • Open the Radeon Settings app. There should be an icon for it in your system tray. If not, it’s located here: C:\Program Files\AMD\CNext\CNext\RadeonSettings.exe
  • Click on the “Gaming” tab at the top left.
  • Click on the “Add” button near the top right, then click “Browse”.
  • Navigate to the folder where you installed Claymore’s miner, select “EthDcrMiner64.exe”, and then click “Open”.
  • You should see a new profile appear on the Radeon Settings App window labeled “EthDcrMiner64”. Go ahead and click it.
  • Click on the “Profile OverDrive” tab.
AMD's WattMan

(click for full-size)

You should see something that looks like the image on the left (click for full-size). I’ve cropped in on the two areas that we’re interested in (they’re labeled “GPU” and “Memory”). Find them and start by setting the Frequency to “Dynamic” and the Voltage Control to “Manual” in both areas.

Before we go any further, I’ll just throw out this disclaimer: changing the factory voltage settings on your GPU can result in system instability, crashes, and/or damage. Proceed at your own risk! Honestly, the risk here is tiny—we’re still constrained to basically safe values by AMD’s software, and in the case of a crash we’ll just reboot and be back to factory settings (where we can try again with less-aggressive values).

We’re aiming to accomplish three things here:

  1. We want to lower the core clock speed as low as possible without impacting performance.
  2. We want to increase the memory clock speed as high as possible without impacting stability.
  3. We want to lower both the core and memory voltage as low as possible without impacting stability.

Before we go changing any values, if you haven’t run your miner at stock settings already for a few minutes to get a decent idea of its baseline performance, now is a good time to do that. Look for output along the lines of “ETH: GPU0 XX.XXX Mh/s” while Claymore’s miner is running. There will be some variance from line to line, but that XX.XXX number is the hash rate for that individual GPU. When you have a good idea of your average hash rate, close the miner—it’s time to start making some changes!

  • Start by decreasing your core clock speed to 1000 mhz from whatever the factory setting was (in the “GPU” area, change the values for state 6 and 7 to 1000 on the Frequency row). Click “Apply” (at the top right). Restart your miner and see how performance looks. There is a good chance that it’s unchanged. If that’s the case, repeat the process, but decrease the core clock speed by another 50 mhz or so. Keep moving down in 50 mhz increments until you notice mining performance drop. When that happens, bump the core clock back up to the previous value—that’s the sweet spot.
  • We’re going to basically do the reverse with the memory clock speed, but there are some important things to know. If you have a GPU that is factory-clocked at 1750 mhz or less (virtually every 4GB RX 470/480 GPU, and most RX 470 8GB GPUs as well—the Sapphire Nitro being the notable exception—then 1750 mhz is going to probably be your limit via this method. Increasing the memory clock beyond 1750 mhz will likely result in a change to less-aggressive memory timings that will result in a loss of performance, and there is no way to prevent this outside of BIOS modifications. So if you have a card clocked at under 1750 mhz, bump it up to exactly 1750 mhz, which will give you a decent performance boost. If you have a 2000 mhz card, you can increase it incrementally, like the reverse of what we did with the core clock. Eventually you’ll experience system instability: artifacts on the screen, a GPU crash, bluescreen, etc. When that happens, back down a bit until things are stable.
  • When you’re satisfied that you’ve found the sweet spot for both clock speeds, it’s time to lower voltages. This is pretty straightforward: drop values 25 mV at a time until you experience instability, then bump it back up to last stable value. You should be able to reduce your power consumption a fair bit this way without impacting performance at all (these are great if you want to measure your electricity usage at the wall).

While more significant performance gains are possible by flashing a custom GPU BIOS (which I’ll cover in the next part of this guide), you should at least be able to realize some significant power savings (which has the added benefit of lowering GPU temperatures as well).

The screenshot in this section is from a factory-clocked 1650 mhz 4GB RX 470 GPU. Feel free to use the settings pictured as your starting point if you have a 4GB GPU, I haven’t found any cards that aren’t stable at these settings yet; most go a bit lower on the voltages.

 Step 13 (optional): Configure remote administration

Configuring remote administration will allow you to disconnect the monitor, keyboard, and mouse from your mining rig and manage it from another computer—even over the internet, if you wish. Windows 10 Professional and up have the built-in option to use Remote Desktop, although it’s disabled by default and must be configured. It’s a fine option if you’re looking for something basic and don’t want to install additional software.

There are a host of other options available, if you’re on a Home edition of Windows and/or want something a bit more robust. I recommend TightVNC: it’s lightweight, simple, cross-platform, and free. Here are the basic setup instructions for TightVNC:

  • Download TightVNC.
  • Install TightVNC on your mining rig. Choose a custom installation and make only the server portion of the application available.
  • Now install TightVNC on the other computer(s) that you plan to manage your rig with. Choose a custom installation and make only the client portion of the application available.
  • If you plan to manage your miner across the internet, forward port 5900 on your router to your mining rig (make sure you choose a strong password if you do this!).

That’s it—you’re done! You’ll probably want to test everything now. The easiest way to do that is to power down your miner. Turn it back on and the following should happen:

  1. Windows should boot up as usual.
  2. You should see a 15 second countdown to the Claymore miner’s launch shortly after the Windows desktop appears.
  3. After the countdown, the miner will start, and your GPUs should start mining.
  4. You should be able to VNC into your rig at any point after the desktop loads to monitor your miner’s progress and GPU temperatures.
  5. If you ever need to start the Claymore miner manually (because you quit out of it, or it crashed, etc), simply double-click your mine.bat file, located in your Claymore miner installation folder.

Congratulations—you have your own headless windows Ethereum miner!

The screenshot above shows a single 4GB RX 470 mining at the settings pictured in section 12. I was able to get about a 10% performance gain over factory settings while reducing power consumption at the same time. That’s good, but we can do better (sometimes much better!) if we’re willing to venture into the world of GPU BIOS mods—and I’ll show you how to do exactly that in the next section of my guide.

169 Responses to Build your own Ethereum Mining Rig, part 3: Windows Setup

  1. Frank says:

    Hi, I’ve installed


    cause running gtx1060 g1 6 Gb and after creating mine.bat, double click on

    it nothing happened. Should I do something different in claymore mentioned above?

    • Mike says:

      Did you try running bat through the command prompt? maybe that will work

      • Frank says:

        I’ve managed already 🙂 Took me a while to learn that clicking on txt file, even when it is named mine.bat won’t work 😀 Thanks anyway, I’m mining now..

  2. unimatrix says:

    Hey, thanks again for your guide. I have one addition.

    I experienced freeze problems where I could not VNC into the rig any more. E.g. because of GPU issues due to maybe to heavy undervoltaging etc.

    I have added a small raspberry PI with a relay IO module to the rig (actually I have 2 rigs). With this I can remotely “press” the reset and power button of the board. There is a script that does that, once the rig cannot be pinged for a while.

    I used this little tool:

    At the same time, pressing the reset button can lead to windows getting into automatic repair mode and then being stuck there.

    To solve this, I disabled automatic repair mode. This time you can hard reset your rig as often as you want, it will always boot up in windows and be reachable with VNC.

    To do that, just open a command prompt doing the following:

    bcdedit /set recoveryenabled NO

  3. Talha says:

    Lovely work, Much appreciated. The best guide I have seen on the internet.

  4. Dave says:

    I have an AMD 2GB 7800 GPU – get this error at startup. The readme from Claymore says 2GB amd cards work (i set the system virtual disk to 16GB)…but elsewhere I see the DAG file needs 3GB. Would another miner that uses system memory work?

    Remote management (READ-ONLY MODE) is enabled on port 3333

    ETH: Authorized
    Setting DAG epoch #133…
    Setting DAG epoch #133 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.
    GPU 0 failed
    Setting DAG epoch #133 for GPU0
    GPU0, OpenCL error -38 – cannot write buffer for DAG
    GPU 0 failed

  5. new miner says:

    Experiencing problem with Nvidia gtx 1070 on Asus z370p running windows 10.
    With the gpu plugged in directly to motherboard both card is recognized (in 2 16x slot), but with risers windows device manager shows error – this device is not working, error 43.
    I have made recommend bios changes,windows changes.
    With 4 gpu connected with risers the system don’t even bootup.
    Spend over a week to get around the problem but no headway. Now I am running with 2gpu attached to MB with 2 spare sitting idle.
    Appreciate any suggestions and will send coins for the help..

  6. Gonza says:

    Im getting this message

    This pool ( does not support Ethereum addresses as login (or requires worker name in “Login.Worker” format) and cannot be used for devfee mining, therefore it is not supported.
    However, you can mine on this pool if you specify “-allpools 1” option, default pools (different from this pool) will be used for devfee.
    Please read “Readme” file for details.This pool ( does not support Ethereum addresses as login (or requires worker name in “Login.Worker” format) and cannot be used for devfee mining, therefore it is not supported.
    However, you can mine on this pool if you specify “-allpools 1” option, default pools (different from this pool) will be used for devfee.
    Please read “Readme” file for details.Pool removed from the list

    this is mine.bat

    timeout /t 15
    setx GPU_FORCE_64BIT_PTR 0
    setx GPU_MAX_HEAP_SIZE 100
    ethdcrminer64.exe -epool -ewal 0x782dd18c40a90948ab2d00f30e5740dff931fb6c.Rig1 -epsw x -mode 1 -tt 68 -allpools 1

    What have i done wrong?

  7. Anonymous says:

    Great article, thanks for taking the time to write it up. Do you have any other guides on using Geth? For instance, what is the process for moving the ETH in my Geth account earnt from mining into somewhere where I can trade it for another CryptoCurrency or even to USD?

  8. Anonymous says:

    Also… any reason for using Geth as opppossed to something like MyEtherWallet?

    • Anonymous says:

      I also struggled moving my mined Eth with my Geth wallet. I found that using the guide to unlock your geth wallet and then requesting your payout from your geth wallet to myetherwallet was super easy and you don’t have to write all of the scripts in the CMD prompt to do it (just to unlock your wallet, which is really easy following the guide)
      Just unlock your wallet, copy your wallet address and paste it in the wallet line when you request through myetherwallet
      If anyone sees this as a problem or security issue please let me know. I don’t want to give the wrong advice.

  9. pchampn says:


    This is a great guide! Already assembled two rigs without reviewing your guide and feel bad that I didn’t come across it earlier.

    On my gaming PC, I have 3x nVidia GPUs mining and can you please indicate how step 12 (i.e. Optimize clock speeds and undervolt (basic) will be different for these cards vs. AMD cards?

    FYI, my gaming PC config is 1x GTX 1080, 2x GTX 1070.


  10. Ab Ansari says:

    Very helpful Article guide.

  11. RTLTHECAGE says:

    Can you ssh into a windows OS miner using a mac?

  12. David Reynolds says:

    Good morning 1st thanks for the great how to got my 1st eth miner going last night i have 4 gpus avg 23 h/s per gpu. For a total of 92.2 avg h/s with out evening tweeking clock speed or volts probably do that tomorrow. Hope i can squeeze more out. Question i have is if i build basically the same system that u listed, will that hardeare work for lite coin mining with the correct scripting thank you.

  13. Thomas says:

    Hello Im having some trouble finding a way to see my balance of my geth account, does anyone know how to do that ?

  14. ra says:

    G-R-E-A-T tutorial! Thanks a lot!!!!

    By the way, why do you used the “timeout /t 15” parameter?

  15. Debra says:

    Thanks for the guide.

    One question. I already have an Ethereum wallet on Exodous that I was storing some coins that I have bought. Is it ok to use this address with the miner or do I have to run Geth and use that address with the miner?

  16. J A says:

    Hello. Followed the steps to Step 12 (optional): Optimize clock speeds and undervolt (basic) so far.

    Upon opening 17.4.4 AMD settings, and after clicking EthDcrMiner64, I don’t see Profile OverDrive Tab. All I see is “Profile WattMan”. I am using Gigabyte Aorus RX 580 8 GB. Are the instructions still applicable?

  17. spartak says:

    good job
    i’m new with mining
    i want to know how to acces/use the generated wallet
    and how to know that i have the control of my wallet

  18. Anonymous says:

    i have two card gtx 1060 but the gpu1 is off i want to know why??

  19. andre says:

    Hi i have done every thing but i can not get more than one gpu on windows 7 ultimate and windows 10 pro 17.03 update dotnet c++13 cuda. i am using risers, i have 2x 980ti 2x 1070 in cmos i have change to gen1
    nothing only one CARD, msi z270 krait gaming board, i do not know linux little bit dos most windows, so i am runing 3 computers 2x 1070 in sli and x1 in 2x computers
    What can i do

Leave a Reply

Your email address will not be published.