Donate VRC/VRM for the Wiki to VBzaNDExHyFpnNvYc5QH5e4ipBZqxxPnKJ . Thank you, Joe.

Joes Mining Walkthrough

From VeriCoin & Verium Wiki
Jump to: navigation, search

While I am learning to mine Verium I decided to put a wiki together. My main source is [birtys guide], which is wonderfully detailed. I have linked some other references and also have copied advices from the Slack channel.

Overview

 - You need a wallet software where your Verium is stored.
 - You need a mining software to mine Verium and store it in your wallet.

Before you start you should make sure you have a rough plan about what you want to do. The wallet should run 24/7 to keep the network stable. Thus an energy efficient device is mandatory these days. It doesn't need much computing power. For the beginning I used a Raspberry Pi 3 as it is a nice platform to try around and learn. Of course the Pi is not a powerful mining machine but it can run the mining software and serve as energy efficient wallet.

Wallet Installation

Updated for Version 1.1

First step is the choice of an image for the RPi, the current "stretch" images do not work. Raspbian Jessie is what works [Raspbian Jessie].

The whole thing as a script: [Download Shell script], thanks to [mining-pool.ovh]

 wget https://raw.githubusercontent.com/DJoeDt/verium/master/install_Verium_Wallet.sh
 chmod +x install_Verium_Wallet.sh
 ./install_Verium_Wallet.sh

It will do what is described in the step-wise manual wallet installation .

In case you see ERRORS like -No such file... - it actually helps to run the script again since probably the installation of the dependencies failed.

Get in touch

While this is running it might be worth visiting the official website: [Vericoin & Verium] (you can find GUI Wallets for Windows, Mac OS,... there)

A more detailed guide can be found [here] .

And in the meantime the Forum is another interesting place: [Forium]

Again it is time to browse around [Verium Slack Channel invite]...

Wallet Configuration & Usage

The wallet should run now, but we need to go to its directory

 cd verium/wallet/src

and get info about this by:

 ./veriumd getinfo 

Now stop the wallet

 ./veriumd stop

It is configured in

 nano verium.conf

scroll to its very end, the lines to configure are rpcuser=YourSoloMiningName rpcpassword=YourSoloMiningPassword rpcallowip=YourAccessIP rpcallowip=localhost You have to configure the IPs of the machines that should be able to connect. If you mine solo you have to come up with a username and a password for your miners to access the wallet.

Now start the wallet again

 ./veriumd 

The most important thing right now is your wallets address gotten by

  ./veriumd getaddressesbyaccount ""

Finally backup by

 cp ~/.verium/wallet.dat somewhere/save/wallet.dat

To restore your wallet just do a fresh installation and replace the new wallet.dat with your saved one.

Store & Secure both VeriCoin & Verium in One Paper Wallet [Paper Wallet Link]

Learn how to use the Verium Daemon

 ./veriumd help

will print a wall of text with commands and

 ./veriumd help [command]

explains each further. further wallet commands

Miner Installation

The Mining software can be installed on the Pi in the same way it works on the Odroid XU4 (a high end SBC) - similarly on other Linux systems.

The whole thing as a script (RPi & ARM version): [Download Shell script]

 wget https://github.com/DJoeDt/verium/raw/master/install_Verium_Miner_ARM.sh
 chmod +x install_Verium_Miner_ARM.sh
 ./install_Verium_Miner_ARM.sh

It will do what is described in the following stepwise manual way.

In a Terminal start with (you need internet access)

 sudo apt-get update && sudo apt-get upgrade -y && sudo apt-get dist-upgrade -f -y

During the download you could check out a [Mining Pool].

The Miner needs this

 sudo apt-get install git automake autoconf pkg-config libcurl4-openssl-dev libjansson-dev libssl-dev libgmp-dev

Special thanks go to birty again for his [guide].

Clone the verium Miner

 git clone https://github.com/effectsToCause/veriumMiner

Again time, so maybe check your wallet, the blocks and your wallets address.

For the RPi the Miner needs configuration. On a standard Linux machine just GOTO build.sh. Configure RPi here:

 nano veriumMiner/algo/scrypt.c

Find:

 ARM_NEON

and change the succeeding lines (First into second)

 #define SCRYPT_MAX_WAYS 3
 #define SCRYPT_MAX_WAYS 1
 #define HAVE_SCRYPT_3WAY 1
 //#define HAVE_SCRYPT_3WAY 1
 #define scrypt_best_throughput() 3
 #define scrypt_best_throughput() 1
 void scrypt_core_3way(uint32_t *X, uint32_t *V, int N);
 void scrypt_core     (uint32_t *X, uint32_t *V, int N);

By this the settings are changed from 3-way to 1-way which uses less RAM per thread (128MB instead of 384, RPi can run 4 threads and only has 1GB RAM).

Now the second configuration is done in here

 nano veriumMiner/build.sh

and add -mfpu=neon

 ./configure --with-crypto --with-curl CFLAGS="-O2 $extracflags -DUSE_ASM -pg"
 ./configure --with-crypto --with-curl CFLAGS="-O2 $extracflags -DUSE_ASM -mfpu=neon -pg”

This enables the use of the ARM CPU feature NEON.

Finally it is time to build the miner (Linux GOTO here)

 cd veriumMiner
 ./build.sh
 

Ready to mine! Mine! Mine! But oh no, the blockchain download is not yet complete...

To start right away a pool is very helpful at this time.

To directly test the miner you can start with the following command, but be aware: it will mine for me ;)

 ./cpuminer -o stratum+tcp://pool-eu.bloxstor.com:3003 -u VEXMki29ycW5vSt3MmdM5iwHqsHux91EMr.Guide -p GuidePwd

Of course you want to mine for yourself, but you may consider that testline as a donation for this guide. Let's get you up and running, you need to know your wallets address, in the command above the cryptical sting after '-u ' is my wallets address. If you run your wallet by the verium deamon (veriumd) you run

 ~/verium/src/veriumd getaddressesbyaccount ""

and your address is in the reply.

At first you might want to watch the miners output in an ssh window. The second step would be to use nohup or tmux to suppress the output and run the miner in background. Finally you can add the command to /etc/rc.local (no nohup needed there).

Veriumvaultaddress 0.png

If you run the wallet on e.g. Windows you open your Verium Vault and click on Receive in the menu to the left. On the right side your address will appear.


Once you got your address (I assume you have copied it) you are ready to choose a mining pool. The Bloxstor mining pool was my choice mainly because it has a very user friendly tool to get started. [Bloxstor Getting Started] It will guide you through the setup even better than I can and at the end it simply outputs your personal mining command.

Other Mining software:

 Slack: !tools

[@darkwofultima's GUI Miner ]

[@yatteers's Window's Miner]

 Slack: !conf

[Technical support files]

Mining Solo/Pool

Rumours advice to have at least 15000 H/min for solo mining.

 Slack: !hashcomp

[Spreadsheet]

 Slack !hashcomp2

[Verium Hashrate Comparison (solo mining only)]

Using Ubuntu instead of Windows can increase your Hashrate by 10-20% .

 Slack: !pools
 

[beertendr]

[bloxstor]

[mining-pool.ovh]

[poolinat0r 1]

[poolinat0r 2]

[poolium]

[poolsloth]

Reminder: when solomining there is zero downtime, zero pool fees, zero withdrawal fees, zero trust, zero dependency, plus all transaction fees per block!

For solo mining read

 Slack: !solo

[Birty's Guide]

[Drawde's Guide]


Odroid XU4 specials

The whole thing as a script (ARM Miner + XU4 Setup): [Download Shell script]

 wget https://github.com/DJoeDt/verium/raw/master/1wayARM_XU4_VeriumMiner_install.sh
 chmod +x 1wayARM_XU4_VeriumMiner_install.sh
 ./1wayARM_XU4_VeriumMiner_install.sh
 

Image for XU4

I have tested like 6 different images that are available for the XU4 platform.

For the beginning I recomment the [DietPi image] because its included diet-config tool already supports lots of the configurations you want to set. [Direct Link to image]

For best performance I use [Odroids minimal image] or [Armbians headless 3.x kernel].

Special images by Odroid God birty: [XU4 Miner images]

Official Images

Downclocking (yes, down!) the XU4 CPU

To prevent throttleing due to heat it may actually increase your hashrate if the CPU doesn't run at 2 GHz (max). Even if you can prevent throttleing at 2GHz it is anyhow now worth it: you might get 10-15 H/m more but it costs about 2 Watts (out of 12) to get this last increase - so it won't pay back, for Details: [HC1 power benchmark].

Install the utility (or use DieuPi config)

 sudo apt-get install cpufrequtils

use it directly

 sudo cpufreq-set -c 7 -u 1.9GHz -r

and make the change permanent by creating a config file

 sudo nano /etc/default/cpufrequtils 

with the following settings

 ENABLE="true"
 GOVERNOR="performance"
 MAX_SPEED=1900000
 MIN_SPEED=1900000

Now the CPU should always run at constant speed. This also saves a reasonable amount of power.

Overclocking the XU4 RAM

On the boot-FAT-Partition edit the boot.ini

 sudo nano boot.ini

Find

 ddr_freq

and change the value to 933

 # DRAM Frequency
 # Sets the LPDDR3 memory frequency
 # Supported values: 933 825 728 633 (MHZ)
 setenv ddr_freq 933

Make sure before bootz to

 # set DDR frequency
 dmc ${ddr_freq}  
 

Downclocking the XU4 GPU

Install this utility

 sudo apt-get install sysfsutils
 

Then edit

 sudo nano /etc/sysfs.conf
 

and insert the following line

 # Put GPU into powersave mode (= Downclocking it)
 devices/platform/11800000.mali\:/devfreq/11800000.mali\:/governor = powersave
 

then start the service

 sudo service sysfsutils start

Effect: reduced the power consumption by 0.7 – 0.8W, SOC will be 1-3°C cooler 

[GPU for headless]

Another way might be

 sudo nano /etc/rc.local

and add this line before exit 0

 echo powersave > /sys/devices/platform/11800000.mali\:/devfreq/11800000.mali\:/governor

Swapfile

Verium is memory intensive, so we increase the swap file (or use DieuPi config)

 sudo fallocate -l 1G /var/swapfile
 sudo chmod 600 /var/swapfile
 sudo mkswap /var/swapfile
 sudo swapon /var/swapfile

check it with

 free -h

and configure that permanently

 sudo echo "/var/swapfile    none    swap    sw    0    0" >> /etc/fstab

Processes

Further optimization can be done by checking the process tree

 pstree -p

and disable/deinstall stuff that isn't needed. KILL 'EM ALL!

I did not find it yet but if you come across ads7846 remove it.

 modprobe -r ads7846
 tee /etc/modprobe.d/blacklist-ads7846.conf <<< "ads7846"

XU4 hardware

The key is to exchange the thermal tape of the heatsink with some good thermal paste, decreases the temperature by 10 degrees (C) using same testing conditions. Also get the under side cooled as well.

To save electricity you may turn down the power supplies voltage with a screw driver.

Check sd card slot heat.

Getting the last Hash out of your Odroid

Download this image now. It is the official one ubuntu-16.04.3-4.9-minimal-odroid-xu4-20170824.img .

The Goal

Verium mining is a lot about RAM, so you want to maximize the memory usage.

 How does that work?

The [veriumMiner] can be configured to use a different amount of RAM per thread. So the idea is to use 2 different miner compilations and make use of the 2GB LPDDR3 RAM @ 933Mhz the Odroid has.

Plus: do that wisely to also benefit from the big.LITTLE cores of the Samsung Exynos5422 Cortex™ ARM Cortex-A15 (2.0Ghz) / Cortex-A7 (1.4 Ghz) Octa core CPUs

Technical details

The miner settings are called 1 way or 3 way (or Nway) where

 1 way => 128 MB   per mining thread 
 3 way => 384 MB   per mining thread 

The #way of the miner is configured in

 nano veriumMiner/algo/scrypt.c

Now you can calculate around for yourself or just trust me that you want those two miner configurations and then run

 5 threads @ 1 way =  640 MB 
 3 threads @ 3 way = 1152 MB  
                     1792 MB total RAM

The system needs some memory, too and with this setting there is only around 60 MB left free - but only if you use the image linked above ( I have tested 6 different ones, only this works with -t 5 & -t 3 ).

A 2 way compilation might be interesting as well, but my compilation try didn't work (only boooo's).

Easy Installation

I have prepared two scripts on my [git repository] (no warranty whatsoever)

 * 1wayARM_XU4_VeriumMiner_install.sh
 * 3wayARM_XU4_VeriumMiner_install.sh

which install the miners into

 ~/verium/1wayminer/
 ~/verium/3wayminer/
How to run them

Having both compilations at hand we need to manage them properly. Besides the threads there are two things to configure

 # the big.little core
 # the API Port
big cores -t 3

Thy big cores shall run the 3 way miner on the standard port 4048 with high priority

 --cpu-priority 4
 --cpu-affinity 0x00FF 
 -b 4048
 --api-bind 0.0.0.0:4048

those are the options to be set. About using cpu-affinity.

This is the complete line from my /etc/rc.local

 # 3way -t 3 big
 /root/verium/3wayminer/cpuminer -o stratum+tcp://pool-eu.bloxstor.com:3003 -u VEXMki29ycW5vSt3MmdM5iwHqsHux91EMr.Guide -p GuidePwd --cpu-priority 4 -t 3 --cpu-affinity 0x00FF --api-bind 0.0.0.0:4048 &

Just copy it and give it a try as donation ;) .

little cores -t 5

The little core shall run the 1 way miner on API Port 4049 with lower priority

 --cpu-priority 1
 -b 4049
 --api-bind 0.0.0.0:4049

where I just don't touch --cpu-affinity and thus the remaining 4 little + 1 big cores are used.

This is the complete line from my /etc/rc.local

 # 1way -t 5 little
 /root/verium/1wayminer/cpuminer -o stratum+tcp://pool-eu.bloxstor.com:3003 -u VEXMki29ycW5vSt3MmdM5iwHqsHux91EMr.Guide -p GuidePwd --cpu-priority 1 -t 5 -b 4049 --api-bind 0.0.0.0:4049 &
Monitoring

If you use the API you need to configure both ports. My workaround with birtys <3 webscripts looks like this:

So far I have copied index_monitor.php to index_monitor4049.php, reconfigured

 defined('API_PORT') || define('API_PORT', 4049);

in it, and just included it by adding

 <?php include 'index_monitor4049.php';?>

to the index.php.

The Result

Some remarks before we look at H/m:

  1. again: only the image linked above worked for me, but not even by default
  2. you still have to create a swap file (included in my scripts)
  3. I lied about the lines in my rc.local, I actually mine on two different pools. Decentralize it! ;)
Hashrate Numbers!!11

Originally I ran birtys miner configuration which actually is the 1 way configuration. Without any -t option it just starts 8 threads and with pool mining i got an average of

 395 H/m   = 1 way -t 8

The two miners put out like

 195 H/m   = 1 way -t 5
 250 H/m   = 3 way -t 3

Happy adding! :)

I wonder how this performs when solo mining?

Update to fireworm miner & hugepages

Setup: birtys hugepages minimal image: [drive]

 sudo nano /etc/sysctl.conf
 vm.nr_hugepages=579

Change host, dram_freq=933 & pwd

 nano /etc/hostname
 nano /etc/hosts
 nano /media/boot/boot.ini
 passwd

Reboot before going on

 reboot

Install 3way miner

 wget https://github.com/DJoeDt/verium/raw/master/3wayARM_HC1_fireworm_install.sh
 chmod +x 3wayARM_HC1_fireworm_install.sh
 ./3wayARM_HC1_fireworm_install.sh

Get names right:

 mv veriumMiner/ verium/1wayminer/

Autostart config

 nano /etc/rc.local
 
nice --15 /root/verium/3wayminer/cpuminer -o stratum+tcp://eu.vrm.mining-pool.ovh:3032 -u joe_rondx.HC1 -p verium --cpu-priority 1 -t 3 --cpu-affinity 0x00F0 --api-bind 0.0.0.0:4048 --no-color >> /root/verium/3wayminer/mine.log &

sleep 5

nice --5 /root/verium/1wayminer/cpuminer -o stratum+tcp://pool-eu.bloxstor.com:3003 -u VEXMki29ycW5vSt3MmdM5iwHqsHux91EMr.Guide -p Guidepwd --cpu-priority 0 -t 5 --api-bind 0.0.0.0:4049 -b 4049 --no-color >> /root/verium/1wayminer/mine.log &
  

Run

 -t 3 on 3way

first !! First because it should make use of hugepages.

Secondly run

 -t 5 on 1way

which runs without hugepages

Memory Details

Memory usage of nway miner

 nway -1 6 -t 2
    VIRT
 1711256

Memory usage old config:

 5 threads 1way = 
   VIRT         RES
 749732      656488
 3 threads 3way =
    VIRT         RES
 1255584      1.126g

top total

 57644 free 1877996 used

Odroids latest

kill &

 rm -rf verium/3wayminer/
 sudo nano /etc/sysctl.conf
 vm.nr_hugepages=839
 nano /etc/rc.local
 nice --15 /root/verium/3wayminer/cpuminer \
 -o 192.168.0.54:33987 -O veriumuser:joesveripass --randomize \
 -t 3 -1 4 --cpu-affinity-stride 1 --cpu-affinity-default-index 5 --cpu-affinity-oneway-index 1 --cpu-priority 4  \
 --api-bind 0.0.0.0:4048 --no-color >> /root/verium/3wayminer/mine.log &
 /root/verium/1wayminer/cpuminer \
 -o 192.168.0.54:33987 -O veriumuser:joesveripass --randomize \
 -t 1 --api-bind 0.0.0.0:4049 -b 4049 --no-color >> /root/verium/1wayminer/mine.log &

final version:

 vm.nr_hugepages=644
 -t 3 -1 1 --cpu-affinity 0x00F0
 -1 4
 => 400 + 130 = 530 H/m @ 1.9 GHz

Random links

miner logs

miner monitor

script Colors nice

useful commands in this context