Ethereum/Installation

From r00tedvw.com wiki
Jump to: navigation, search

Ethereum Installation || Ethereum Tips

Contents

Overview

In the below article i'll be covering how to configure an Ethereum deployment on Ubuntu. Out of the available linux resources out there, Debian based are well supported by Ethereum developers, with some even setting up a repository so software can be easily obtained.
Regarding Redhat based solutions, most everything I've seen requires you to download the source, compile and make yourself, which is not ideal for any solution long term that you plan on keeping up to date.

With the above mentioned, this article will be based on the latest Ubuntu server build, which at the time of this writing is 16.04.3 LTS. Do NOT use 16.04.4 LTS OR upgrade the kernel on 16.04.3 LTS. The spectre and meltdown kernel patches significantly affect the hashing performance, in my experience up to a 50% reduction.

UPDATE: After many issues trying to get all (5) GPUs working at the same time after the OS was installed, I finally tried downgrading to Ubuntu 14.04 LTS. This immediately resolved my issue and the system now boots with an operational onboard ethernet controller, regardless of how many GPUs are installed.
Turns out that 14.04 is not compatible with the 17.40 AMD drivers needed for mining. There are dependencies that are not available through the 14.04 repos.
UPDATE: 3/9/18 Finally resolved the networking issue i was having. Turned out to be a systemd issue. Check it out here: Ethereum/Installation#Networking_Configuration
My main reference article.

Initial Hardware Setup

As a personal rule, I always start with the most basic configuration and slowly build upon it, step by step, rather than just installing everything at once. In my experience, this has helped me overcome issues as they are easier to identify this way.
With that said, I would first recommend setting up your system in the most basic functional configuration possible. My beginning config was this:
Installed:

  • Power supply - EVGA 1k watt PS
  • Intel Mainboard - AS Rock H81 Pro BTC (with onboard video through HDMI)
  • Intel Processor - 2.9Ghz Pentium
  • CPU heatsink/fan
  • ThumbDrive - Toshiba 16GB USB 2.0

OS Installation

UPDATE: While there may be something wrong with my mainboard, when i tried to install the remaining video cards, upon reboot the onboard ethernet port stopped working. I found that I had to install all of my video cards first, then install the Operating system, in order for the onboard ethernet to continue working. I am not sure why this is.
I've chosen to use a thumbdrive as my hard disk. I do not think that disk speed will affect performance, so i've gone with the cheapest solution i can find that I think will work, an 8GB Sandisk drive straight from China. Mine cost $2.84 shipped, but I see others just like it for $2.99 and some mini 8GB versions (sit almost flush with the USB port) for $1.49 shipped.

Again, I've used Ubuntu Server x64 16.04.3 for the operating system. Make sure to download the right ISO, mine was almost 900MB.

USB Installation

Assuming you are working from a Debain based machine (Ubuntu, Mint, etc), you can download unetbootin from the repos in order to install Ubuntu onto the USB drive.

~$ sudo apt update && sudo apt install unetbootin -y

If you wanted to check and make sure it was available in your repos, run a quick search

~$ sudo apt-cache search unetbootin

With unetbootin installed, you can use the GUI to write the ISO to the Flash Drive.

Alternatively, if unetbootin fails (which it did for me, the USB was not bootable), you can see if your distribution has its own USB creator. Thankfully Mint had USB Image Writer and I used that to create the bootable USB.

NOTE: you may need to use (2) thumb drives to pull this off. (1) will contain the installation media, the other will be used for the Operating system to be installed to.

BIOS Configuration suggestions

Below are some BIOS configuration suggestions. I'm not going to show you how to change them or what all of the helpful ones might be because there are simply too many different types of BIOS solutions out there, however, the list below is fairly generic.

  • Set correct date/time
  • Set Boot config so your USB is first.
  • disable sound card
  • set auto power in if AC is lost
  • disable onboard RAID
  • disable full screen logo
  • change halt on to no errors (you want it to boot without stopping)
  • quick boot enabled (no memory checking)
  • disable boot up seek floppy

OS Configuration

Networking Configuration

After a couple of months of struggling with the network interface during system setup, I finally stumbled onto the solution.
Every time i would install a new VGA device, the network interface would break. Turns out that systemd is to blame with all their Predictive Network Interface naming bullshit. Essentially the new PCI device would case the hardware address of the network interface to change (ie. enp3s0 > enp4s0), but the config (/etc/network/interfaces) was never updated, breaking the network interface.
Resolution: Go back to the EL6 way of doing things (the right way).

~$ sudo vim /etc/default/grub
GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0"
~$ sudo grub-mkconfig -o /boot/grub/grub.cfg

~$ sudo vim /etc/network/interfaces
auto eth0
iface eth0 inet dhcp

Reboot and you should now be back in business with the original ETH0. Add/remove PCI devices to your content and be happy that your network interface keeps on working.

SSH Config

Do not update and upgrade all packages. If you install Kernel 4.13+, your mh/s per card will drop considerably.
Install sshd

~$ sudo apt update
~$ sudo apt install ssh -y

Configure sshd. This is a basic, low security, setup working over port 22 and password authentication. It is not meant for a device serving ssh connections to the internet.

~$ sudo vim /etc/ssh/ssh_config
Uncomment:
 PasswordAuthentication yes
 Port 22

Video Card Installation

With a base OS configured, I decided to go ahead and install the first video card (test card).
Hardware installed:

  • AMD Radeon RX580 4GB
  • PCI-e Riser (USB)

NOTE: Depending on your motherboard, you may have to configure the BIOS to use the onboard video instead of the PCIe Graphics card in order to run headless (ie. no monitor plugged it). If you do not, you mainboard may look for a monitor to be plugged in before it will allow the system to boot.

With the video card installed and the system powered on, let's make sure the system sees the video card.

~$ lspci -v | grep -A 10 AMD | grep -A 10 VGA
02:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Device 67df (rev e7) (prog-if 00 [VGA controller])
	Subsystem: Tul Corporation / PowerColor Device 2378
	Flags: fast devsel, IRQ 11
	Memory at e0000000 (64-bit, prefetchable) [disabled] [size=256M]
	Memory at f0000000 (64-bit, prefetchable) [disabled] [size=2M]
	I/O ports at e000 [disabled] [size=256]
	Memory at f0200000 (32-bit, non-prefetchable) [disabled] [size=256K]
	Expansion ROM at f0240000 [disabled] [size=128K]
	Capabilities: <access denied>

We can see that the video card is seen and has a location of 02:00.0.

VGA Configuration

At the time of this writing, AMD has released beta drivers specifically made for mining. You can view them here: http://support.amd.com/en-us/kb-articles/Pages/AMDGPU-Pro-Beta-Mining-Driver-for-Linux-Release-Notes.aspx.

I'll be using the latest drivers as of 12/11/2017, which are 17.40-483984.

Prior Versions: 16.40-348864 16.6-37918417.10-401251 17.30-465504
New Versions: 17.40-492261 17.50-51165517.50 is not compatible with Ethminer as it does not recognize openCL devices.

Download and extract the drivers to /opt/amdgpu-pro-17.40-483984. referer reference

~$ wget -O /tmp/amdgpu-pro-17.40-483984.tar.xz --referer=http://support.amd.com https://www2.ati.com/drivers/linux/beta/ubuntu/amdgpu-pro-17.40-483984.tar.xz
~$ sudo tar -Jxvf /tmp/amdgpu-pro-17.40-483984.tar.xz -C /opt/

Install the drivers. This will take a few minutes, mine took almost 30.

~$ /opt/amdgpu-pro-17.40-483984/amdgpu-pro-install -y 

Set some needed group membersip

~$ sudo usermod -a -G video $LOGNAME

Download and configure ROCm

~$ sudo apt install -y rocm-amdgpu-pro
~$ echo 'export LLVM_BIN=/opt/amdgpu-pro/bin' | sudo tee /etc/profile.d/amdgpu-pro.sh

Enable large page support NOTE: needed for improved mining performance

~$ sudo vim /etc/default/grub
Change:
GRUB_CMDLINE_LINUX_DEFAULT=""
To:
GRUB_CMDLINE_LINUX_DEFAULT="amdgpu.vm_fragment_size=9"

Update grub and reboot

~$ sudo update-grub && sudo reboot

Verify the version you have installed

~$ dpkg -l amdgpu-pro
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name                              Version               Architecture          Description
+++-=================================-=====================-=====================-========================================================================
ii  amdgpu-pro                        17.40-492261          amd64                 Meta package to install amdgpu Pro components.

Uninstalling AMD Drivers

In case you need to uninstall the AMD drivers to upgrade to a newer version, follow the steps below (reference:

~$ sudo amdgpu-pro-uninstall   

This will take a few minutes.

Ethereum Wallet Creation

If you already have an Ethereum wallet, you can skip this step. Otherwise, if you want to create a wallet (or one specific for mining, follow these instructions.
Add repo, update repo cache, download and install packages.

~$ sudo add-apt-repository -y ppa:ethereum/ethereum
~$ sudo apt update
~$ sudo apt install software-properties-common ethereum geth -y

Create the new wallet

~$ geth account new 

You'll be prompted to specify a password. Remember this, you will need it to access your wallet.
Also, when the wallet is created, the keystore will be deposited here: ~/.ethereum/keystore
NOTE: It is very important that you remember your password and keep a copy of the keystore in a secure location. (but maybe not together). BOTH of these are needed for you to access your wallet. Without either of them, you cannot access your wallet and all the associated coins are lost.

Install and Configure Claymore Ethereum Miner

I've personally found that Claymore's Ethereum Miner is much more efficient than Ethminer, resulting in a higher significantly higher hashrate (3-4mh/s). Claymore's Ethereum Miner does have a 2% fee, however compared to the increase in hashrate over Ethminer, it is still more profitable than Ethminer; for example, with claymore 30.5mh/s a 2% fee is 0.6 mh/s, the same system running Ethminer is only pulling in 27/28mh/s. No brainer.
Claymore's Ethminer is available from these sources:

~$ sudo apt install curl libcurl3 -y
~$ sudo mkdir /opt/claymore11.5/
~$ sudo tar -xvf claymore_11.5.tar.gz -C /opt/claymore11.5/
~$ sudo mv /opt/claymore11.5/Claymore\'s\ Dual\ Ethereum+Decred_Siacoin_Lbry_Pascal_Blake2s_Keccak\ AMD+NVIDIA\ GPU\ Miner\ v11.5\ -\ LINUX/* /opt/claymore11.5/
~$ sudo rmdir /opt/claymore11.5/Claymore\'s\ Dual\ Ethereum+Decred_Siacoin_Lbry_Pascal_Blake2s_Keccak\ AMD+NVIDIA\ GPU\ Miner\ v11.5\ -\ LINUX/
~$ sudo chown -R root:root /opt/claymore11.5/

Now that we have Claymore's Ethereum Miner installed, we can configure it. I've opted to use ethermine.org, though you can use any pool you want. Keep in mind though, different pools require different settings, so you will have to research.

COMMAND LINE OPTIONS:

-epool Ethereum pool address. Only Stratum protocol is supported for pools. Miner supports all pools that are compatible with Dwarfpool proxy and accept Ethereum wallet address directly.

  For solo mining, specify "http://" before address, note that this mode is not intended for proxy or HTTP pools, also "-allpools 1" will be set automatically in this mode.
  Note: The miner supports all Stratum versions for Ethereum, HTTP mode is necessary for solo mining only. 
  Using any proxies will reduce effective hashrate by at least 1%, so connect miner to Stratum pools directly. Using HTTP pools will reduce effective hashrate by at least 5%.
  Miner also supports SSL/TLS encryption for all data between miner and pool (if pool supports encryption over stratum), it significantly improves security.
  To enable encryption, use "ssl://" or "stratum+ssl://" prefix (or "tls" instead of "ssl"), for example: "-epool ssl://eu1.ethermine.org:5555"

-ewal Your Ethereum wallet address. Also worker name and other options if pool supports it.

  Pools that require "Login.Worker" instead of wallet address are not supported directly currently, but you can use "-allpools 1" option to mine there.

-epsw Password for Ethereum pool, use "x" as password.

-eworker Worker name, it is required for some pools.

-esm Ethereum Stratum mode. 0 - eth-proxy mode (for example, dwarpool.com), 1 - qtminer mode (for example, ethpool.org),

  2 - miner-proxy mode (for example, coinotron.com), 3 - nicehash mode. 0 is default. 

-etha Ethereum algorithm mode for AMD cards. 0 - optimized for fast cards, 1 - optimized for slow cards, 2 - for gpu-pro Linux drivers. -1 - autodetect (default, automatically selects between 0 and 1).

  You can also set this option for every card individually, for example "-etha 0,1,0".

-asm (AMD cards only) enables assembler GPU kernels. In this mode some tuning is required even in ETH-only mode, use "-dcri" option or or "+/-" keys in runtime to set best speed.

  Specify "-asm 0" to disable this option. You can also specify values for every card, for example "-asm 0,1,0". Default value is "1".
  If ASM mode is enabled, miner must show "GPU #x: algorithm ASM" at startup.
  Check "FINE-TUNING" section below for additional notes.
  NEW: added alternative assembler kernels for Tahiti, Tonga, Ellesmere, Baffin cards for ETH-only mode. Use them if you get best speed at "-dcri 1" (i.e. you cannot find speed peak), use "-asm 2" option to enable this mode.

-oldkernels (AMD cards only) specify "-oldkernels 1" to use old-style GPU kernels from v10, they can be more stable for hard OC and custom BIOSes.

-ethi Ethereum intensity. Default value is 8, you can decrease this value if you don't want Windows to freeze or if you have problems with stability. The most low GPU load is "-ethi 0".

  Also "-ethi" now can set intensity for every card individually, for example "-ethi 1,8,6".
  You can also specify negative values, for example, "-ethi -8192", it exactly means "global work size" parameter which is used in official miner.

-eres this setting is related to Ethereum mining stability. Every next Ethereum epoch requires a bit more GPU memory, miner can crash during reallocating GPU buffer for new DAG.

  To avoid it, miner reserves a bit larger GPU buffer at startup, so it can process several epochs without buffer reallocation.
  This setting defines how many epochs miner must foresee when it reserves GPU buffer, i.e. how many epochs will be processed without buffer reallocation. Default value is 2.

-allpools Specify "-allpools 1" if miner does not want to mine on specified pool (because it cannot mine devfee on that pool), but you agree to use some default pools for devfee mining.

  Note that if devfee mining pools will stop, entire mining will be stopped too.

-allcoins Specify "-allcoins 1" to be able to mine Ethereum forks, in this mode miner will use some default pools for devfee Ethereum mining.

  Note that if devfee mining pools will stop, entire mining will be stopped too. 
  Miner has to use two DAGs in this mode - one for Ethereum and one for Ethereum fork, it can cause crashes because DAGs have different sizes. 
  Therefore for this mode it is recommended to specify current Ethereum epoch (or a bit larger value), 
  for example, "-allcoins 47" means that miner will expect DAG size for epoch #47 and will allocate appropriate GPU buffer at starting, instead of reallocating bigger GPU buffer (may crash) when it starts devfee mining.
  Another option is to specify "-allcoins -1", in this mode miner will start devfee round immediately after start and therefore will get current epoch for Ethereum, after that it will be able to mine Ethereum fork.
  If you mine ETC on some pool that does not accept wallet address but requires Username.Worker instead, the best way is to specify "-allcoins etc", in this mode devfee mining will be on ETC pools and DAG won't be recreated at all.

-etht Time period between Ethereum HTTP requests for new job in solo mode, in milliseconds. Default value is 200ms.

-erate send Ethereum hashrate to pool. Default value is "1", set "-erate 0" if you don't want to send hashrate.

-estale send Ethereum stale shares to pool, it can increase effective hashrate a bit. Default value is "1", set "-estale 0" if you don't want to send stale shares.

-dpool Decred/Siacoin/Lbry/Pascal pool address. Use "http://" prefix for HTTP pools, "stratum+tcp://" for Stratum pools. If prefix is missed, Stratum is assumed.

  Decred: both Stratum and HTTP are supported. Siacoin: both Stratum and HTTP are supported, though note that not all Stratum versions are supported currently. Lbry: only Stratum is supported.

-dwal Your Decred/Siacoin/Lbry/Pascal wallet address or worker name, it depends on pool.

-dpsw Password for Decred/Siacoin/Lbry/Pascal pool.

-di GPU indexes, default is all available GPUs. For example, if you have four GPUs "-di 02" will enable only first and third GPUs (#0 and #2).

  You can also turn on/off cards in runtime with "0"..."9" keys and check current statistics with "s" key.
  For systems with more than 10 GPUs: use letters to specify indexes more than 9, for example, "a" means index 10, "b" means index 11, etc; also "a", "b", and "c" keys allow you to turn on/off GPU #10, #11 and #12 in runtime.

-gser this setting can improve stability on multi-GPU systems if miner hangs during startup. It serializes GPUs initalization routines. Use "-gser 1" to serailize some of routines and "-gser 2" to serialize all routines.

  Using values higher than 2 allows you also to set custom delay between DAG generation on GPUs, for example, "-gser 5" means same as "-gser 2" and also adds 3sec delay between DAG generation (can be useful for buggy drivers and/or weak PSU).
  Default value is "0" (no serialization, fast initialization).

-mode Select mining mode:

  "-mode 0" (default) means dual Ethereum + Decred/Siacoin/Lbry mining mode.
  "-mode 1" means Ethereum-only mining mode. You can set this mode for every card individually, for example, "-mode 1-02" will set mode "1" for first and third GPUs (#0 and #2).
  For systems with more than 10 GPUs: use letters to specify indexes more than 9, for example, "a" means index 10, "b" means index 11, etc.

-dcoin select second coin to mine in dual mode. Possible options are "-dcoin dcr", "-dcoin sc", "-dcoin lbc", "-dcoin pasc", "-dcoin blake2s", "-dcoin keccak". Default value is "dcr".

-dcri Decred/Siacoin/Lbry/Pascal intensity, or Ethereum fine-tuning value in ETH-only ASM mode. Default value is 30, you can adjust this value to get the best Decred/Siacoin/Lbry mining speed without reducing Ethereum mining speed.

  You can also specify values for every card, for example "-dcri 30,100,50".
  You can change the intensity in runtime with "+" and "-" keys and also use "x" key to select single GPU for intensity adjustment.
  For example, by default (-dcri 30) 390 card shows 29MH/s for Ethereum and 440MH/s for Decred. Setting -dcri 70 causes 24MH/s for Ethereum and 850MH/s for Decred.
  Use this option in ETH-only ASM mode for fine tuning, read "FINE-TUNING" section below.
  If you did not specify "-dcri" option in ETH-only ASM mode, miner will detect best -dcri values automatically, you can also press "z" key to do it.

-dcrt Time period between Decred/Siacoin HTTP requests for new job, in seconds. Default value is 5 seconds.

-ftime failover main pool switch time, in minutes, see "Failover" section below. Default value is 30 minutes, set zero if there is no main pool.

-wd watchdog option. Default value is "-wd 1", it enables watchdog, miner will be closed (or restarted, see "-r" option) if any thread is not responding for 1 minute or OpenCL call failed.

  Specify "-wd 0" to disable watchdog.

-r Restart miner mode. "-r 0" (default) - restart miner if something wrong with GPU. "-r -1" - disable automatic restarting. -r >20 - restart miner if something

  wrong with GPU or by timer. For example, "-r 60" - restart miner every hour or when some GPU failed.
  "-r 1" closes miner and execute "reboot.bat" file ("reboot.bash" or "reboot.sh" for Linux version) in the miner directory (if exists) if some GPU failed. 
  So you can create "reboot.bat" file and perform some actions, for example, reboot system if you put this line there: "shutdown /r /t 5 /f".

-minspeed minimal speed for ETH, in MH/s. If miner cannot reach this speed for 5 minutes for any reason, miner will be restarted (or "reboot.bat" will be executed if "-r 1" is set). Default value is 0 (feature disabled).

  You can also specify negative values if you don't want to restart miner due to pool connection issues; for example, "-minspeed -50" will restart miner only if it cannot reach 50Mh/s at good pool connection.

-retrydelay delay, in seconds, between connection attempts. Default values is "20". Specify "-retrydelay -1" if you don't need reconnection, in this mode miner will exit if connection is lost.

-dbg debug log and messages. "-dbg 0" - (default) create log file but don't show debug messages.

  "-dbg 1" - create log file and show debug messages. "-dbg -1" - no log file and no debug messages.

-logfile debug log file name. After restart, miner will append new log data to the same file. If you want to clear old log data, file name must contain "noappend" string.

  If missed, default file name will be used.

-logsmaxsize maximal size of debug log files, in MB. At every start the miner checks all files in its folder, selects all files that contain "_log.txt" string and removes oldest files if summary files size is larger than specified value.

  Specify "-logsmaxsize 0" to cancel old logs removal. Default value is 1000 (i.e. about 1GB of log files are allowed).

-nofee set "1" to cancel my developer fee at all. In this mode some optimizations are disabled so mining speed will be slower by about 4%.

  By enabling this mode, I will lose 100% of my earnings, you will lose only 2-3% of your earnings.
  So you have a choice: "fastest miner" or "completely free miner but a bit slower".
  If you want both "fastest" and "completely free" you should find some other miner that meets your requirements, just don't use this miner instead of claiming that I need 
  to cancel/reduce developer fee, saying that 1-2% developer fee is too much for this miner and so on.

-benchmark benchmark mode, specify "-benchmark 1" to see hashrate for your hardware. You can also specify epoch number for benchmark, for example, "-benchmark 110".

-li low intensity mode. Reduces mining intensity, useful if your cards are overheated. Note that mining speed is reduced too.

  More value means less heat and mining speed, for example, "-li 10" is less heat and mining speed than "-li 1". You can also specify values for every card, for example "-li 3,10,50".
  Default value is "0" - no low intensity mode.

-lidag low intensity mode for DAG generation, it can help with OC or weak PSU. Supported values are 0, 1, 2, 3, more value means lower intensity. Example: "-lidag 1".

  You can also specify values for every card, for example "-lidag 1,0,3". Default value is "0" (no low intensity for DAG generation).

-ejobtimeout job timeout for ETH, in minutes. If miner does not get new jobs for this time, it will disconnect from pool. Default value is 10.

-djobtimeout job timeout for second coin in dual mode, in minutes. If miner does not get new jobs for this time, it will disconnect from pool. Default value is 30.

-tt set target GPU temperature. For example, "-tt 80" means 80C temperature. You can also specify values for every card, for example "-tt 70,80,75".

  You can also set static fan speed if you specify negative values, for example "-tt -50" sets 50% fan speed. Specify zero to disable control and hide GPU statistics.
  "-tt 1" (default) does not manage fans but shows GPU temperature and fan status every 30 seconds. Specify values 2..5 if it is too often.
  Note: for NVIDIA cards only temperature monitoring is supported, temperature management is not supported.
  Note: for Linux gpu-pro drivers, miner must have root access to manage fans, otherwise only monitoring will be available.

-ttdcr reduce Decred/Siacoin/Lbry/Pascal intensity automatically if GPU temperature is above specified value. For example, "-ttdcr 80" reduces Decred intensity if GPU temperature is above 80C.

  You can see current Decred intensity coefficients in detailed statistics ("s" key). So if you set "-dcri 50" but Decred/Siacoin intensity coefficient is 20% it means that GPU currently mines Decred/Siacoin at "-dcri 10".
  You can also specify values for every card, for example "-ttdcr 80,85,80". You also should specify non-zero value for "-tt" option to enable this option.
  It is a good idea to set "-ttdcr" value higher than "-tt" value by 3-5C.

-ttli reduce entire mining intensity (for all coins) automatically if GPU temperature is above specified value. For example, "-ttli 80" reduces mining intensity if GPU temperature is above 80C.

  You can see if intensity was reduced in detailed statistics ("s" key).
  You can also specify values for every card, for example "-ttli 80,85,80". You also should specify non-zero value for "-tt" option to enable this option.
  It is a good idea to set "-ttli" value higher than "-tt" value by 3-5C.

-tstop set stop GPU temperature, miner will stop mining if GPU reaches specified temperature. For example, "-tstop 95" means 95C temperature. You can also specify values for every card, for example "-tstop 95,85,90".

  This feature is disabled by default ("-tstop 0"). You also should specify non-zero value for "-tt" option to enable this option.
  If it turned off wrong card, it will close miner in 30 seconds.
  You can also specify negative value to close miner immediately instead of stopping GPU, for example, "-tstop -95" will close miner as soon as any GPU reach 95C temperature.

-tstart set start temperature for overheated GPU that was previously stopped with "-tstop" option. For example, "-tstop 95 -tstart 50" disables GPU when it reaches 95C and re-enables it when it reaches 50C.

  You can also specify values for every card, for example "-tstart 50,55,50". Note that "-tstart" option value must be less than "-tstop" option value.
  This feature is disabled by default ("-tstart 0"). You also should specify non-zero value for "-tt" option to enable this option.

-fanmax set maximal fan speed, in percents, for example, "-fanmax 80" will set maximal fans speed to 80%. You can also specify values for every card, for example "-fanmax 50,60,70".

  This option works only if miner manages cooling, i.e. when "-tt" option is used to specify target temperature. Default value is "100".
  Note: for NVIDIA cards this option is not supported.

-fanmin set minimal fan speed, in percents, for example, "-fanmin 50" will set minimal fans speed to 50%. You can also specify values for every card, for example "-fanmin 50,60,70".

  This option works only if miner manages cooling, i.e. when "-tt" option is used to specify target temperature. Default value is "0".
  Note: for NVIDIA cards this option is not supported.

-cclock set target GPU core clock speed, in MHz. If not specified or zero, miner will not change current clock speed. You can also specify values for every card, for example "-cclock 1000,1050,1100,0".

  Note: for some drivers versions AMD blocked underclocking for some reason, you can overclock only.
  Note: this option changes clocks for all power states, so check voltage for all power states in WattMan or use -cvddc option.  
  By default, low power states have low voltage, setting high GPU clock for low power states without increasing voltage can cause driver crash.
  Note: for NVIDIA cards this option is not supported.

-mclock set target GPU memory clock speed, in MHz. If not specified or zero, miner will not change current clock speed. You can also specify values for every card, for example "-mclock 1200,1250,1200,0".

  Note: for some drivers versions AMD blocked underclocking for some reason, you can overclock only.
  Note: for NVIDIA cards this option is not supported.

-powlim set power limit, from -50 to 50. If not specified, miner will not change power limit. You can also specify values for every card, for example "-powlim 20,-20,0,10".

  Note: for NVIDIA cards this option is not supported.

-cvddc set target GPU core voltage, multiplied by 1000. For example, "-cvddc 1050" means 1.05V. You can also specify values for every card, for example "-cvddc 900,950,1000,970". Supports latest AMD 4xx cards only in Windows.

  Note: for NVIDIA cards this option is not supported.

-mvddc set target GPU memory voltage, multiplied by 1000. For example, "-mvddc 1050" means 1.05V. You can also specify values for every card, for example "-mvddc 900,950,1000,970". Supports latest AMD 4xx cards only in Windows.

  Note: for NVIDIA cards this option is not supported.

-mport remote monitoring/management port. Default value is -3333 (read-only mode), specify "-mport 0" to disable remote monitoring/management feature.

  Specify negative value to enable monitoring (get statistics) but disable management (restart, uploading files), for example, "-mport -3333" enables port 3333 for remote monitoring, but remote management will be blocked.
  You can also use your web browser to see current miner state, for example, type "localhost:3333" in web browser. 
  Warning: use negative option value or disable remote management entirely if you think that you can be attacked via this port!
  By default, miner will accept connections on specified port on all network adapters, but you can select desired network interface directly, for example, "-mport 127.0.0.1:3333" opens port on localhost only.

-mpsw remote monitoring/management password. By default it is empty, so everyone can ask statistics or manage miner remotely if "-mport" option is set. You can set password for remote access (at least EthMan v3.0 is required to support passwords).

-colors enables or disables colored text in console. Default value is "1", use "-colors 0" to disable coloring. Use 2...4 values to remove some of colors.

-v displays miner version, sample usage: "-v 1".

-altnum alternative GPU indexing. This option does not change GPU order, but just changes GPU indexes that miner displays, it can be useful in some cases. Possible values are:

  0: default GPU indexing. For example, if you specify "-di 05" to select first and last GPUs of six GPUs installed, miner will display these two selected cards as "GPU0" and "GPU1".
  1: same as "0", but start indexes from one instead of zero. For example, if you specify "-di 05" to select first and last GPUs of six GPUs installed, miner will display these two selected cards as "GPU1" and "GPU2".
  2: alternative GPU indexing. For example, if you specify "-di 05" to select first and last GPUs of six GPUs installed, miner will display these two selected cards as "GPU0" and "GPU5".
  3: same as "2", but start indexes from one instead of zero. For example, if you specify "-di 05" to select first and last GPUs of six GPUs installed, miner will display these two selected cards as "GPU1" and "GPU6".
  Default value is "0".

-platform selects GPUs manufacturer. 1 - use AMD GPUs only. 2 - use NVIDIA GPUs only. 3 - use both AMD and NVIDIA GPUs. Default value is "3".

-checkcert only for SSL connection: verify pool certificate. Default value is "1" (verify), use "-checkcert 0" to skip certificate verification.

~$ sudo vim /opt/claymore11.5/start.bash
#!/bin/sh
./ethdcrminer64 -wd 1 -r 1 -epool ssl://us1.ethermine.org:5555 -ewal 0x28122ca4c6dd16c1dc113f6c4965fa36da329817 -eworker ncwp-benchminer -erate 1 -esm 0 -epsw x -allpools 1 -asm 1 -mport -3333

That should be it. Try it out:

~$ /opt/claymore11.5/start.bash 

����������������������������������������������������������������ͻ
�                Claymore's Dual GPU Miner - v11.5               �
�              ETH + DCR/SIA/LBC/PASC/BLAKE2S/KECCAK             �
����������������������������������������������������������������ͼ

ETH: 1 pool is specified
Main Ethereum pool is us1.ethermine.org:5555
DCR: 0 pool is specified
At least 16 GB of Virtual Memory is required for multi-GPU systems
Make sure you defined GPU_MAX_ALLOC_PERCENT 100
Be careful with overclocking, use default clocks for first tests
Press "s" for current statistics, "0".."9" to turn on/off cards, "r" to reload pools, "e" or "d" to select current pool, "x" to select GPU, "z" to find best -dcri values
OpenCL initializing...

AMD Cards available: 2
GPU #0: Ellesmere (AMD Radeon (TM) RX 470 Graphics), 4082 MB available, 32 compute units (pci bus 2:0:0)
GPU #0 recognized as Radeon RX 470/570
GPU #1: Ellesmere (AMD Radeon (TM) RX 470 Graphics), 4082 MB available, 32 compute units (pci bus 3:0:0)
GPU #1 recognized as Radeon RX 470/570
POOL/SOLO version
GPU #0: algorithm ASM 1
GPU #1: algorithm ASM 1
No NVIDIA CUDA GPUs detected.
Total cards: 2
AMD ADL library not found.
No pool specified for Decred! Ethereum-only mining mode is enabled
ETHEREUM-ONLY MINING MODE ENABLED (-mode 1)
ETH: eth-proxy stratum mode
"-allpools" option is set, default pools can be used for devfee, check "Readme" file for details.
Watchdog enabled
Remote management (READ-ONLY MODE) is enabled on port 3333

You did not specify -dcri values directly, so they will be detected automatically
Automatic detection of best -dcri values started, please wait...

ETH: Stratum - connecting to 'us1.ethermine.org' <18.219.59.155> port 5555 (SSL/TLS)
SSL/TLS encryption is enabled
Pool certificate verified successfully
ETH: Stratum - Connected (us1.ethermine.org:5555) (SSL/TLS)
ETH: Authorized
Setting DAG epoch #175...
Setting DAG epoch #175 for GPU0
Create GPU buffer for GPU0
Setting DAG epoch #175 for GPU1
Create GPU buffer for GPU1
GPU0 DAG creation time - 3753 ms
Setting DAG epoch #175 for GPU0 done
GPU1 DAG creation time - 3763 ms
Setting DAG epoch #175 for GPU1 done
ETH: 03/18/18-09:58:23 - New job from us1.ethermine.org:5555
ETH - Total Speed: 59.849 Mh/s, Total Shares: 0, Rejected: 0, Time: 00:00
ETH: GPU0 29.928 Mh/s, GPU1 29.921 Mh/s
GPU #0: apply best detected -dcri value: 6
GPU #1: apply best detected -dcri value: 6
Automatic detection of best -dcri values completed
ETH: 03/18/18-09:58:29 - SHARE FOUND - (GPU 1)
ETH: Share accepted (58 ms)!
GPU0 t=58C fan=43%, GPU1 t=49C fan=35%
ETH: 03/18/18-09:58:36 - SHARE FOUND - (GPU 1)
ETH: Share accepted (43 ms)!
ETH: 03/18/18-09:58:57 - SHARE FOUND - (GPU 1)
ETH: Share accepted (38 ms)!
GPU0 t=61C fan=52%, GPU1 t=52C fan=40%
ETH: 03/18/18-09:59:16 - New job from us1.ethermine.org:5555
ETH - Total Speed: 61.087 Mh/s, Total Shares: 3, Rejected: 0, Time: 00:01
ETH: GPU0 30.540 Mh/s, GPU1 30.547 Mh/s
GPU0 t=62C fan=53%, GPU1 t=54C fan=41%
ETH: 03/18/18-09:59:50 - New job from us1.ethermine.org:5555
ETH - Total Speed: 61.054 Mh/s, Total Shares: 3, Rejected: 0, Time: 00:01
ETH: GPU0 30.504 Mh/s, GPU1 30.550 Mh/s

Running Claymore's Ethereum miner using screen

If you don't want to be logged into the miner 24/7 for it to be mining, an easy solution is to use screen.

~$ screen -d -m -S miner03 /opt/claymore11.5/start.bash

To list all your detached screens:

 ~$ :/opt/claymore11.5$ screen -list
There is a screen on:
	2440.miner03	(03/18/2018 10:34:28 AM)	(Detached)
1 Socket in /var/run/screen/S.

To reattach that screen:

~$ screen -S miner03 -r

To detach the current screen:

 CRTL-A + D

Install and Configure Ethminer

UPDATE: Only use Ethminer if you do not want to use Claymore's Ethereum miner.
Now that we have everything needed to mine, lets install and configure the miner.
Ethminer available from the repository (shown below), is NOT the latest version and GPU mining is discontinued from it.

~$ ethminer -V
ethminer version 1.2.9
Build: Linux/g++/Interpreter/RelWithDebInfo

Instead, you will want to download the latest version from this github project and then unpack it.

~$ wget -O /tmp/ethminer-0.12.0-Linux.tar.gz https://github.com/ethereum-mining/ethminer/releases/download/v0.12.0/ethminer-0.12.0-Linux.tar.gz
~$ sudo tar -xvf /tmp/ethminer-0.12.0-Linux.tar.gz -C /opt/

Now let's create a symbolic link for ease of access to the application.

~$ sudo ln -s /opt/bin/ethminer /usr/bin/ethminer

List all opencl detected devices. you may need to know the deviceID.

~$ ethminer --list-devices

Listing OpenCL devices.
FORMAT: [platformID] [deviceID] deviceName
[0] [0] Ellesmere
	CL_DEVICE_TYPE: GPU
	CL_DEVICE_GLOBAL_MEM_SIZE: 1751240704
	CL_DEVICE_MAX_MEM_ALLOC_SIZE: 1490870272
	CL_DEVICE_MAX_WORK_GROUP_SIZE: 256
  ✘  23:47:52|ethminer  CUDA error: No CUDA driver found

To get a list of options, you can run this command. This may be helpful if you want to specify certain video cards rather than relay on the catch-all built in.:

~$ ethminer --help

Run a benchmark to test your card. This will take a little while.

~$ ethminer -M -G
or in my case
~$ ethminer -M -G --opencl-platform 0 --opencl-devices 0 1 2 3 4

Looking at the results, they should look similar to this:

ethminer -M -G
  ℹ  23:51:29|ethminer  Found suitable OpenCL device [ Ellesmere ] with 4281331712  bytes of GPU memory
Benchmarking on platform: CL
Preparing DAG for block #0
 cl  23:51:29|cl-0      No work. Pause for 3 s.
Warming up...
 cl  23:51:32|cl-0      New work: header #50c856ae… target 0000000000000002000000000000000000000000000000000000000000000000
 cl  23:51:32|cl-0      New seed #00000000…
 cl  23:51:33|cl-0      Platform: AMD Accelerated Parallel Processing
 cl  23:51:33|cl-0      Device:   Ellesmere  / OpenCL 1.2 AMD-APP (2482.3)
 cl  23:51:33|cl-0      Build info:
 cl  23:51:33|cl-0      Creating light cache buffer, size 16776896
 cl  23:51:33|cl-0      Creating DAG buffer, size 1073739904
 cl  23:51:33|cl-0      Loading kernels
 cl  23:51:33|cl-0      Writing light cache buffer
 cl  23:51:33|cl-0      Creating buffer for header.
 cl  23:51:33|cl-0      Creating mining buffer
 cl  23:51:33|cl-0      Generating DAG
 cl  23:51:34|cl-0      DAG 0 %
 cl  23:51:34|cl-0      DAG 6 %
 cl  23:51:35|cl-0      DAG 12 %
 cl  23:51:35|cl-0      DAG 18 %
 cl  23:51:36|cl-0      DAG 25 %
 cl  23:51:36|cl-0      DAG 31 %
 cl  23:51:37|cl-0      DAG 37 %
 cl  23:51:37|cl-0      DAG 43 %
 cl  23:51:38|cl-0      DAG 50 %
 cl  23:51:38|cl-0      DAG 56 %
 cl  23:51:39|cl-0      DAG 62 %
 cl  23:51:39|cl-0      DAG 68 %
 cl  23:51:39|cl-0      DAG 75 %
 cl  23:51:40|cl-0      DAG 81 %
 cl  23:51:40|cl-0      DAG 87 %
 cl  23:51:41|cl-0      DAG 93 %
 cl  23:51:41|cl-0      Switch time 11898 ms / 8898140 us
Trial 1... 18887859
Trial 2... 19624070
Trial 3... 21508713
Trial 4... 21508713
Trial 5... 21508713
  ✘  23:51:59|cl-0      OpenCL Error: clSetKernelArg -49
min/mean/max: 18887859/20607613/21508713 H/s
inner mean: 13710927 H/s

In the above example, my RX580 card is running at 21.5 MH/s, on the factory settings and factory BIOS.

Temperature Monitoring

The easiest way to do this is with lm-sensors

~$ sudo apt install -y lm-sensors 

Once installed, make sure to reboot.
After reboot, verify that sensors can see your VGA card(s).

~$ watch -n 1 'sensors | grep -A 3 "amdgpu*"'                             

amdgpu-pci-0100
Adapter: PCI adapter
fan1:        3152 RPM
temp1:        +49.0°C  (crit =  +0.0°C, hyst =  +0.0°C)
--
amdgpu-pci-0300
Adapter: PCI adapter
fan1:        3175 RPM
temp1:        +57.0°C  (crit =  +0.0°C, hyst =  +0.0°C)
--
amdgpu-pci-0400
Adapter: PCI adapter
fan1:        3223 RPM
temp1:        +54.0°C  (crit =  +0.0°C, hyst =  +0.0°C)
--
amdgpu-pci-0500
Adapter: PCI adapter
fan1:        3104 RPM
temp1:        +49.0°C  (crit =  +0.0°C, hyst =  +0.0°C)
--
amdgpu-pci-0600
Adapter: PCI adapter
fan1:        2884 RPM
temp1:        +44.0°C  (crit =  +0.0°C, hyst =  +0.0°C)

In the above example I can see my GPUs, amdgpu-pci-0x00 (notice the location references).

Actively Monitor GPU Temperature and Clock speeds

Here are (2) ways to actively monitor GPU temperatures and core clock speeds.

Temperatures with lm-sensors

This will query sensors" every second and show you the GPU temp & fan speed, as well as the CPU temperatures.

~$ watch -n 1 "sensors"
Every 1.0s: sensors                                                                      Mon Dec 11 12:43:55 2017

amdgpu-pci-0200
Adapter: PCI adapter
fan1:        1116 RPM
temp1:        +30.0°C  (crit =  +0.0°C, hyst =  +0.0°C)

coretemp-isa-0000
Adapter: ISA adapter
Physical id 0:  +27.0°C  (high = +84.0°C, crit = +90.0°C)
Core 0:         +20.0°C  (high = +84.0°C, crit = +90.0°C)
Core 1:         +27.0°C  (high = +84.0°C, crit = +90.0°C)
GPU Core & Memory clocks, wattage used, GPU temp, and GPU load.

NOTE: This only worked when I had (1) graphics card installed. Once more than one was installed into the system, card "0" did not report properly. The directory for you may be slightly different. Mine was /sys/kernel/debug/dri/1/ while others have reported /sys/kernel/debug/dri/0

~$ sudo watch -n 1 "cat /sys/kernel/debug/dri/1/amdgpu_pm_info | grep -A 10 'GFX Clocks and Power'"
Every 1.0s: cat /sys/kernel/debug/dri/1/amdgpu_pm_info | grep -A 10 'GFX Clocks and ...  Mon Dec 11 12:48:08 2017

GFX Clocks and Power:
        1750 MHz (MCLK)
        300 MHz (SCLK)
        8.155 W (VDDC)
        16.0 W (VDDCI)
        37.1 W (max GPU)
        37.1 W (average GPU)

GPU Temperature: 30 C
GPU Load: 0 %

Fan Control

Before we get into GPU Overclocking, lets quickly visit how to manually set the GPU fan speed. First we need to locate the directory that the fan values are located in, which we can do by looking for one of them.

~$ sudo find / -type f -name pwm1
/sys/devices/pci0000:00/0000:00:1c.0/0000:02:00.0/hwmon/hwmon0/pwm1

So we know that the files we want to read/write are located within /sys/devices/pci0000:00/0000:00:1c.0/0000:02:00.0/hwmon/hwmon0/
For now, there are only (2) files that we are concerned with:

pwm1
shows the current value of the GPU fan speed, based on the pwm1_max value.
pwm1_max
shows the max integer value of the GPU fan speed. You'll use this to determine what value will equal your desired fan speed percentage.

So for example, lets find out what it is currently set at and the max:

~$ cat /sys/devices/pci0000\:00/0000\:00\:1c.0/0000\:02\:00.0/hwmon/hwmon0/pwm1
86
~$ cat /sys/devices/pci0000\:00/0000\:00\:1c.0/0000\:02\:00.0/hwmon/hwmon0/pwm1_max
255

So here we can see that the fan percentage is currently set at 34% (86/255). Thats probably not going to be good enough, so we can manually set it if we want to.

NOTE: By default, the AMD drivers will automatically ramp up the GPU fan speed based on load. If you proceed with manually setting the value, this feature will no longer work until you reboot.

To set it manually to 80%, we're going to set the value to 208 ((255*.8)+4). In my experiments, I always had to add (4) to the value that I wanted, otherwise the resulting value would be 4 below. This may not be the case for you, you'll have to test it.

~$ echo -n "208" > /sys/devices/pci0000\:00/0000\:00\:1c.0/0000\:02\:00.0/hwmon/hwmon0/pwm1

And you should be able to see the fans increase in speed noticeably, but if you want to check, run this:

~$ cat /sys/devices/pci0000\:00/0000\:00\:1c.0/0000\:02\:00.0/hwmon/hwmon0/pwm1
204

Now your fans are statically set to 80% until the next reboot.
If you have more than 1 card, doing this manually for each is cumbersome. Here's a quick script that worked for me which will adjust all fans at once.

#!/bin/bash
tempfile=$(find /sys/devices/pci0000\:00 -type f -name "pwm1")
IFS=' ' read -r -a array <<<$tempfile

for ((i=0;i<=(${#array[@]}-1);i++))
do
        echo -n "208" > "${array[i]}"
        cat "${array[i]}"
done


GPU Performance

In this section we will cover methods for increasing the GPU performance and possibly decreasing power consumption.

Overclocking

With the installed AMD drivers and software, you can adjust the GPU core clock and GPU memory clock fairly easily.
First, determine where the appropriate files live for your card. We'll do a search for the file that controls the memory core clock.

~$ $ sudo find / -type f -name pp_mclk_od
/sys/devices/pci0000:00/0000:00:1c.0/0000:02:00.0/pp_mclk_od

Notice the hardware position referenced: .../0000:02:00.0/... This allows you to determine which card you are modifying.
With the path discovered, let's see which files are available for us to play with:

~$ sudo ls -la /sys/devices/pci0000:00/0000:00:1c.0/0000:02:00.0/pp*
-rw-r--r-- 1 root root 4096 Dec 11 20:14 /sys/devices/pci0000:00/0000:00:1c.0/0000:02:00.0/pp_compute_power_profile
-r--r--r-- 1 root root 4096 Dec 11 20:14 /sys/devices/pci0000:00/0000:00:1c.0/0000:02:00.0/pp_cur_state
-rw-r--r-- 1 root root 4096 Dec 11 20:14 /sys/devices/pci0000:00/0000:00:1c.0/0000:02:00.0/pp_dpm_mclk
-rw-r--r-- 1 root root 4096 Dec 11 20:14 /sys/devices/pci0000:00/0000:00:1c.0/0000:02:00.0/pp_dpm_pcie
-rw-r--r-- 1 root root 4096 Dec 11 20:14 /sys/devices/pci0000:00/0000:00:1c.0/0000:02:00.0/pp_dpm_sclk
-rw-r--r-- 1 root root 4096 Dec 11 20:14 /sys/devices/pci0000:00/0000:00:1c.0/0000:02:00.0/pp_force_state
-rw-r--r-- 1 root root 4096 Dec 11 20:14 /sys/devices/pci0000:00/0000:00:1c.0/0000:02:00.0/pp_gfx_power_profile
-rw-r--r-- 1 root root 4096 Dec 11 18:38 /sys/devices/pci0000:00/0000:00:1c.0/0000:02:00.0/pp_mclk_od
-r--r--r-- 1 root root 4096 Dec 11 20:14 /sys/devices/pci0000:00/0000:00:1c.0/0000:02:00.0/pp_num_states
-rw-r--r-- 1 root root 4096 Dec 11 20:14 /sys/devices/pci0000:00/0000:00:1c.0/0000:02:00.0/pp_sclk_od
-rw-r--r-- 1 root root 4096 Dec 11 20:14 /sys/devices/pci0000:00/0000:00:1c.0/0000:02:00.0/pp_table 


Adjusting GPU Core Clock

NOTE: Before you can perform any of the changes below, you must be logged in as root. Elevation through sudo will not work.
The GPU core clock can be adjusted from 0-20% by modifying the value of a single file:

root ~$ echo "1" > /sys/devices/pci0000:00/0000:00:1c.0/0000:02:00.0/pp_sclk_od

In the above example you will have overclocked the GPU core clock by 1%. Now don't freak out if you don't see anything change, the core clock only ramps up when it is under load. So far example, the max GPU clock speed for my RX 580 is 1350mhz, but when I set this overclock to 1%, it increases to 1363mhz (but only shows under load, like during a benchmark).
If you wanted to check what the current "overdriven" value is, you can do this easily:

root ~$ cat /sys/devices/pci0000:00/0000:00:1c.0/0000:02:00.0/pp_sclk_od
1


Recommendation: Only overclock by small percentages (1-2 at a time) and throughly test between each change, making sure to keep a close eye on the temperatures in real time.

Adjusting Memory Core Clock

NOTE: Before you can perform any of the changes below, you must be logged in as root. Elevation through sudo will not work.
The Memory core clock can be adjusted from 0-20% by modifying the value of a single file:

root ~$ echo "1" > /sys/devices/pci0000:00/0000:00:1c.0/0000:02:00.0/pp_mclk_od

In the above example you will have overclocked the Memory core clock by 1%. Unlike the GPU core clock though, you should see this change immediately reflected, not just when it is under load.
If you wanted to check what the current "overdriven" value is, you can do this easily:

root ~$ cat /sys/devices/pci0000:00/0000:00:1c.0/0000:02:00.0/pp_mclk_od
1


Recommendation: Only overclock by small percentages (1-2 at a time) and throughly test between each change, making sure to keep a close eye on the temperatures in real time.

Adjustability

So i'm not sure what all of these mean, but i'll take a stab at some of them based on their values and some google searching of the file names. reference

pp_compute_power_profile
unknown
pp_cur_state (read-only)
This appears to be either a 0 or 1, indicating whether the device is powered on.
pp_dpm_mclk (read-write)
This appears to be the dpm available levels for the memory core clock. It shows which one is selected with an asterisk next to it.
pp_dpm_pcie (read-write)
This appears to show the dpm available levels for the pci-e interface and which speed is currently used; the selection indicated with an asterisk next to it.
pp_dpm_sclk (read-write)
This appears to show the dpm available levels (profiles) for the GPU core clock. it shows which one is selected with an asterisk next to it.
pp_force_state
unknown
pp_gfx_power_profile
unknown
pp_mclk_od (read-write)
This appears to show the percent the memory clock has been "overdriven", by percentage. You can adjust this from 0 (no overclock) all the way up to 20 (you've just created a paperweight).
pp_num_states
unknown
pp_sclk_od (read-write)
This appears to show the percent the gpu core clock has been "overdriven", by percentage. You can adjust this from 0 (no overclock) all the way up to 20 (holy shit its on fire).
pp_table
unknown

Ethereum Pool

You will want to use a pool to mine ethereum unless you have a datacenter sized operation, in which case you won't be using this guide, so if you're reading this, pick a pool.
Here is a quick way to see the distribution of Ethereum pools: https://etherchain.org/statistics/miners. After looking at this and reviewing the pool differences, I went with ethermine.org as they allow for anonymous mining and you can set a very low payout 0.05. Payout minimum is important if you have a low power setup (i.e anything that can't mine 1 ETH in a day) as you want your shares deposited as soon as possible into your wallet.

To configure the payout, you first need to be mining (generally for at least 10-15 minutes). Once you've started, you can input your Ethereum wallet address in the search engine and it will pull up your miner(s) statistic(s). Click on Settings and adjust your payout (I went with the current minimum, 0.05).
Now you can see your average work by visiting this page: https://ethermine.org/miners/28122ca4c6dd16c1dc113f6c4965fa36da329817

Mining

So with the pool picked, you are ready to start mining! You'll need to get some information from your pool, like what their servers are, which ports to use, etc. They will generally give you an example to work off of. In my instance, this is the command that I ended up with:

~$ /opt/bin/ethminer --farm-recheck 200 -RH -G -S us1.ethermine.org:4444 -FS us2.ethermine.org:4444 -O 28122ca4c6dd16c1dc113f6c4965fa36da329817.ncwp-miner02

After I finished installing all the graphics cards, i ended up using this:

/opt/bin/ethminer --farm-recheck 200 -RH -G --opencl-platform 0 --opencl-devices 0 1 2 3 4 -S us1.ethermine.org:4444 -FS us2.ethermine.org:4444 -O 28122ca4c6dd16c1dc113f6c4965fa36da329817.ncwp-miner02

Breaking it down:

--farm-recheck 200
this was a suggestion from my pool.
-RH
this tells ethminer to report the hashrate to the pool (not supported by all pools)
-G
very important, tells ethminer to use OpenCL when mining. Without, your hash rates will be terrible.
-S
sets the primary server for your pool
-FS
sets the secondary server for your pool (failover)
-O
sets the eth wallet address you want eth to be delivered to, along with the name of your miner (prepended by a dot (.))

Final Thoughts

Well, the guide is far from done.

  • I still have to do tweaking to the GPU to extract a few more MH/s as it should be possible to reach 27MH/s or so. So far GPU/Memory tweaks have not had any positive affects on mining rates, only increased temps. maybe new drivers?

UPDATE: (2) things helped me break the 30mh/s barrier. 1) Tweaking the GPU BIOS memory timing with custom timings, such as:

Custom memory timings:

Samsung (UberMix 3.1): 777000000000000022CC1C00AD615C41C0590E152ECC8608006007000B031420FA8900A00300000010122F3FBA354019
Micron: 777000000000000022AA1C0073626C41B0551016BA0D260B006AE60004061420EA8940AA030000001914292EB22E3B16
Elpida: 777000000000000022AA1C00315A5B36A0550F15B68C1506004082007C041420CA8980A9020004C01712262B612B3715
Hynix (only H5GC4H24AJ): 999000000000000022559D0010DE5B4480551312B74C450A00400600750414206A8900A00200312010112D34A42A3816
Hynix (only H5GQ8H24MJ, H5GC8H24MJ): 777000000000000022AA1C00B56A6D46C0551017BE8E060C006AE6000C081420EA8900AB030000001B162C31C0313F17

2) Instead of using Ethminer, I started using Claymore's Ethereum Miner. That gave me a 3-4mh/s bump by itself.

  • There are still (5) more cards to install into this system. Hopefully they go pretty easily, but i'm sure there will be things to figure out, which i'll document.

UPDATE: With the exception of (1) card refusing all BIOS flashes, including a stock one from AMD, the rest of the cards installed fine. There was an issue with the ethernet, but that was figured out.

  • I'd like to create some scripts or find existing tools that dump temp/hashrate/wattage data into influxdb so it can be graphed with grafana or chronograf.
  • it would be awesome to manage this entire thing with puppet.
Personal tools
Namespaces

Variants
Actions
Navigation
Mediawiki
Confluence
DevOps Tools
Open Source Products
Ubuntu
Ubuntu 22
Mac OSX
Oracle Linux
AWS
Windows
OpenVPN
Grafana
InfluxDB2
TrueNas
MagicMirror
OwnCloud
Pivotal
osTicket
OTRS
phpBB
WordPress
VmWare ESXI 5.1
Crypto currencies
HTML
CSS
Python
Java Script
PHP
Raspberry Pi
Canvas LMS
Kaltura Media Server
Plex Media Server
MetaSploit
Zoneminder
ShinobiCE
Photoshop CS2
Fortinet
Uploaded
Certifications
General Info
Games
Meal Plans
NC Statutes
Politics
Volkswagen
Covid
NCDMV
Toolbox