Mining ZCash on Windows

ZCash launched on October 28th among some of the craziest price volatility imaginable.
Here’s how I got on, mining to a ZCash pool on a Windows GPU mining rig.

I’ve been playing around with Bitcoin and alt currency mining since 2013, initially building a couple of GPU rigs to mine Litecoin and then diversifying across all manner of coins and algorithms. I’ve been mining Ethereum for some time and until recently no new coin launch has caught my attention enough to move my hashing power.

Recently however, I couldn’t help but notice the hype surrounding ZCash.
ZCash is supposed to be truly anonymous in a way that Bitcoin never was. Anonymity is something that was assumed by early users of Bitcoin, but it was soon discovered that analysis of the blockchain could link transactions to people, fairly reliably.

Several coins have stepped in and tried to fill the anonymity gap, including the likes of DASH, StealthCoin and more recently, Monero.
I won’t go into a technical comparison of competing coins, but suffice to say that no other anonymous coin has enjoyed quite the marketing push that ZCash has... I get a lot of my crypto news from CoinDesk who are invested in ZCash, so that might have something to do with it – but either way I was interested enough to give mining a go at launch.

ZCash mining software

The ZCash wallet is only available on Linux at the time of writing. My woes with Ubuntu and AMD drivers are a whole other topic; so I decided to try mining to a pool on Windows.

At the time of writing there are three main Windows miners for AMD cards that I’ve been able to play around with. My rigs are a little old, housing mostly 7950 and R9 280X cards. Most of the testing for the Open CL miners seems to be around the RX 480 cards, so I’ve found the miners to be a little slower less stable on my older cards.

Here’s how the mining software stacks up currently:

SilentArmy:

https://github.com/mbevand/silentarmy
The SilentArmy solver by Marc Bevand is widely considered to be the fastest. There are no Windows binaries for this, however other mining software authors have been implementing the solvers too.

NiceHash:

https://github.com/nicehash/nheqminer/releases
The team at NiceHash had a Windows miner out quickly. Primarily the software is aimed at allowing rig owners to rent out their hashing power on the NiceHash platform, however NiceHash also have a pool at https://zcash.nicehash.com and their software can be used to connect directly to this, or any Stratum enabled pool.
The NiceHash software will mine using CPU as well as AMD and NVIDIA GPUs... all at the same time.
With an AMD 7950 using the latest drivers, I managed to get around 10 Sols/s per card with this software.

eXtremal:

https://bitcointalk.org/index.php?topic=1660023.0
eXtremal’s miner has a version using the SilentArmy solver and another forked from NiceHash. (eXtremal is listed as helping with the NiceHash Open CL implementation).
The standard version was the first that I was able to get working on launch day – the others at the time were all crashing too much to use. However the software is tied into eXtremal's own mining pool, which has a high fee of 4% and had payout issues on launch day.
Speeds varied across rigs, but I was able to get around 12 – 14 Sols/s with a mixture of 7950 and R9 280x cards.
I was unable to get the SilentArmy version working with my cards, but I understand this might be a lot quicker.

Genoil:

https://github.com/Genoil/ZECMiner
Genoil is well known in the Ethereum mining community. He had a few ZCash releases available on launch day, but it was very unstable and I couldn’t get it to run at all with my cards.
The latest version at the time of writing is 0.4.2. It implements the SilentArmy solver and this is the first Genoil release that I’ve managed to get working. It’s running much quicker at around 20-25 Sols/s per card – however it’s not the most stable, it can take several attempts to run and crashes every now and again. It still seems to be the best of the bunch for now, so we’ll address the instability with a bit of scripting further down.

How to get up and running mining ZCash on Windows

AMD’s drivers can be pretty fickle and I’ve not updated in a while, so I decided to run with a fresh install of Windows 7. Here’s the steps to getting a rig up and running mining ZCash:

  • Windows update
    No, really. The latest AMD Crimson drivers require an up to date version of Dot NET (4.6 I think) and service pack 1 if you don’t have it. Installing the drivers without a fully updated version of Windows is a fool’s errand.

  • TightVNC
    Much as it might look like Remote Desktop is working, in truth it plays havoc with a multi GPU mining system. The AMD card sensors don’t seem to function, drivers may not install correctly and I’ve been unable to adjust clock settings. Thus, I use Tight VNC to access my Windows miners over the network.
    Download the server here: http://www.tightvnc.com/download.php

  • AMD Crimson drivers
    At the time of writing, the latest drivers are 16.40.2311 and available here: http://support.amd.com/en-us/download/desktop?os=Windows+7+-+64
    Install the display driver locally or over Tight VNC for best results.

  • AMD APP SDK 3.0
    Available here:
    http://developer.amd.com/tools-and-sdks/opencl-zone/amd-accelerated-parallel-processing-app-sdk/
    Download, install, etc.

Scripting

The ability to leave your miner unattended is the key to a happy and stress free mining career. With the instability of the current mining software, there are a few steps we can take to keep our rigs running.

First, we’ll write a Powershell script to check that our software is running and start it up if not

$b = 1
do  
    {
        $a = get-process genoil -ErrorAction SilentlyContinue
        echo($a);
        if($a -eq $null) {
            Start-Process "cmd.exe"  "/c D:\ZEC\genoil-zec-miner-0.4.5\Genoil.exe -c stratum.zcash.nicehash.com:3357 -u YOUR-ZCASH-ADDRESS -p x -P 0 20 -g 0 1 2 3" -WorkingDirectory "D:\ZEC\genoil-zec-miner-0.5"
        }
        Start-Sleep -s 5
    }
while ($b -eq 1)  

This script loops every five seconds and checks that the mining software (in this case, the Genoil miner) is running. If not, it fires up a new instance.

Second, we need to allow the software to exit when it crashes.

Out of the box, Windows will attempt to ‘Find a solution’ to the problem of software crashing (has anyone, ever seen that work?) and when it fails, will require user input to close the window. We need to stop that from happening so that the process dies completely when the ZCash mining software crashes – and our script can fire off a new instance.
There are two steps to this:

  • Disable problem reports via the ‘Action Center’ in the Control Panel

  • Disable the UI dialog box when crashing out by creating a DWORD value in the registry at:
    HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\Windows Error Reporting\DontShowUI

Third, we need to get the script to run on boot.

There are ways of running Powershell scripts through the group policy on boot, but I’ve not had any luck getting that to work – instead, we’ll create a batch file to run the PowerShell script.

Create a batch file in the same folder and with the same filename as your PowerShell script.
Add the following:

@ECHO OFF
PowerShell.exe -ExecutionPolicy Bypass -Command "& '%~dpn0.ps1'"  

What we’re doing here is telling PowerShell to allow unsigned scripts for this session, and running the script we created to boot up the miner.

Create a shortcut to the batch file and place it in the ‘Startup’ folder in your start menu, so that it’ll run on boot.

Finally, we need to make sure that our batch file runs unattended when we boot Windows

Usually the system will wait for us to login before running items in the startup folder, so we need to automatically login.

Click on start and run: netplwiz.
Choose the account you want to log in automatically and uncheck the box marked: ‘Users Must Enter A User Name And Password To Use This Computer’

And that’s it, you’re done!

The mining rig should now automatically run our PowerShell script causing it to check for the existence of the ZCash mining software, running it again whenever it has crashed.

Don’t forget to keep an eye on the various ZCash miners out there – these are very early days and new releases are coming out all the time... these new releases can often result in huge hash rate increases, so don’t get left behind!

Good luck!

Comments