Minar Bitcoin con un Antminer U3 y una Raspberry Pi

El Antminer U3 de bitmain es un modelo que, pese a su simplicidad y su bajo hashrate, ha tenido muy buena acogida por el público, y aunque se ha visto algún rig de locura con esta pequeña pieza de hardware, actualmente es una de las mejores opciones para iniciarse en la minería, sin hipotecarse. Es un aparato que está en torno a los 40 euros, se puede hasta comprar por amazon, consume poco (63W), hace poco ruido, y ocupa poco espacio,  lo que lo convierte en una pieza ideal para iniciarse en la minería. Su capacidad de minado es pequeña, así que es muy posible que acabes gastando más luz que lo generas en bitcoins, por ello que hay quien considera a esta pieza un pequeño juguete de minería, más que una opción real para minar en serio. Por otra parte, es una pieza con un aguante excepcional, que puede estar funcionando 24×7 sin ningún problema.

El aparato en sí, es una versión mini de sus mejores mineros, menos chips de minería pero del mismo tipo. Para ser más exactos, el U3 utiliza 4 de chips BM1382, que hasta no hace mucho eran los más eficientes energéticamente hablando.

u3pi

Pues bien, para ponerlo a minar, vamos a instalar CGminer en una Raspberry Pi, usando el sistema operativo Raspbian (un linux basado en debian, para arquitectura ARM).

1. Conectar el Antminer U3 a la Raspberry Pi

Doy por supuesto que sabemos cómo crear imágenes para Raspberry Pi y que ya tenemos Raspbian corriendo en nuestra Raspberry Pi, de no ser así tendríais que ir antes a la web oficial del proyecto Raspbian, y seguir las instrucciones allí ofrecidas, o seguir cualquier otro tutorial en internet. También doy por hecho que conocemos algún pool ya y tenemos cuenta ( en este tutorial usaremos el pool bitcoinz, o slushpool, el primer pool de bitcoin existente).

El Antminer U3 viene con un sencillo transformador externo para conectarlo a la pared, tipo lo que usan los portátiles, así que tiene dos conexiones: usb y ac.

Lo único que debemos tener en cuenta es que siempre hay que conectarlo en determinado orden: primero el adaptador de corriente, y luego por usb a la raspberry. Esto es muy importante, si lo hacéis al revés no funcionará. En el caso de reinicios de la raspberry, no hay de que preocuparse.

Podemos comprobar que el sistema operativo ha reconocido el minero con un comando lsusb

[email protected]:~# lsusb
Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp.
Bus 001 Device 006: ID 0483:5740 SGS Thomson Microelectronics
Bus 001 Device 007: ID 10c4:ea60 Cygnal Integrated Products, Inc. CP210x UART Bridge / myAVR mySmartUSB light

2. Instalar CGMiner

Una vez instalado el SO y habiendo accedido al shell, hay que actualizar el sistema e instalar las dependencias necesarias, como de costumbre:

sudo apt-get update; sudo apt-get upgrade -f

sudo apt-get install git libusb-1.0-0-dev libusb-1.0-0 libcurl4-openssl-dev libncurses5-dev libudev-dev screen libtool automake pkg-config libjansson-dev screen -y

Ahora hay que descargar cgminer (desde el repositorio de ckolivas), configurarlo para el U3 y compilarlo. Usaremos los siguientes comandos para ello (se omite la salida):

[email protected]~$ git clone https://github.com/ckolivas/cgminer
[email protected]~$ cd cgminer
[email protected]~/cgminer$ ./autogen.sh
[email protected]~/cgminer$ export LIBCURL_CFLAGS=’-I/usr/include/curl’
[email protected]~/cgminer$ CFLAGS="-O2 -Wall -march=native" ./configure --enable-bmsc
[email protected]~/cgminer$ make

Con esto yalo tendríamos compilado y se podría probar. Si queremos instalarlo en el sistema (recomendable), habrá que rematar la instalación:

[email protected]~/cgminer$ sudo make install

Es hora de comprobar que tal funciona, ejecutamos:

[email protected]~/cgminer$ sudo cgminer -o URL_DEL_POOL -u TU_USUARIO_DEL_POOL --bmsc-options 115200:0.57 --bmsc-voltage 0800 --bmsc-freq 1286 

Debería salirnos algo parecido a esto:

cgminer

Si todo ha salido bien, ya deberíamos poder minar y en nada deberíamos empezar a ver cómo el pool acepta nuestras soluciones.

Pero vamos a ir un poco más allá, vamos a programar el sistema para que el minero se inicie cada vez que arranque la raspberry.

3. Ejecutar CGMiner con cada inicio del sistema.

Vamos a crear una estructura de directorios donde guardar nuestros archivos de configuración:

En este ejemplo la haremos en /usr/local/etc/, pero podéis ponerla donde queréis. Así que creamos una carpeta /usr/local/etc/miner/, y dentro un fichero llamado cgminer.conf, con el siguiente contenido:

{
"pools" : [
  {
  "url" : "stratum+tcp://eu.stratum.bitcoin.cz:3333",
  "user" : "usuario.worker",
  "pass" : "x",
  "pool-priority": "0"
  },
  {
  "url" : "stratum+tcp://sha256.eu.nicehash.com:3334",
  "user" : "1direccionbitcoindenicehash",
  "pass" : "x",
  "pool-priority": "1"
  }
],
"failover-only" : true,
}

Hemos definido dos pools de minería en los que tenemos ‘cuenta’. Con el parámetro ‘pool-priority’ elegimos en orden de prioridad, lo aconsejable es tener por lo menos dos pools aquí, uno principal y el otro de backup, por si el principal se cayera.

Hecho esto, creamos un archivo /etc/init.d/cgminer, que será el responsable de arrancar el minero cada vez. Lo creamos con cualquier editor, atención al campo en negrita (poned vuestros valores). Fijaros que utilizaremos screen para lanzar el minero, de forma que esté en background y podamos recuperar la shell del programa cuando queramos.

#!/bin/bash
#/etc/init.d/miner

### BEGIN INIT INFO
# Provides: cgminer
# Required-Start: $all
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Script de arranque automático para cgminer
# Description: Script para arrancar el minero cgminer
### END INIT INFO
# Dependiendo de los parámetros que se le pasen al programa se usa una opción u otra
case "$1" in
 start)
 echo "Arrancando CGMiner..."
 # Podemos iniciar cgminer con el usuario root o con otro usuario del sistema.
 screen -d -m cgminer --config /etc/miner/cgminer.conf --bmsc-options 115200:0.57 --bmsc-voltage 0800 --bmsc-freq 1286
 ;;
 stop)
 echo "Deteniendo CGMiner"
 killall cgminer
 ;;
 *)
 echo "Modo de uso: /etc/init.d/miner {start|stop}"
 exit 1
 ;;
esac

exit 0

Habrá que darle permisos de ejecución al fichero recién creado:

[email protected]:~# chmod +x /etc/init.d/miner

Con el comando update.rc lo añadimos al inicio del sistema y comprobamos que se ejecuta correctamente:

[email protected]:~# update.rc miner defaults
[email protected]:~# service miner restart

Por último, usaremos el programa screen para conectarnos a la interfaz del minero. En primer lugar, obtendremos el id de sesión (-ls), y luego nos conectaremos (-r) :

[email protected]:~# screen -ls
There is a screen on:
5132..gimli     (14/05/16 18:52:01)     (Detached)
1 Socket in /var/run/screen/S-root.

[email protected]:~# screen -r 5132

lo que nos debería llevar a la pantalla que ya vimos antes, de cgminer.

Para salir de la sesión de screen, podemos usar [Ctrl]+[A],[D], o cerrar la ventana si estamos usando putty o conexión remota.

4. Un par de tips si la cosa no funciona

  • CGMiner ha de ejecutarse con el comando root, o con un usuario que pueda hacer sudo.
  • A veces el software no reconocerá el minero, es tan sencillo como apagar y encender (el minero). Quitamos todos los cables, y los ponemos en el orden que toca: primero el primero a la pared al adaptador de corriente, y luego por usb a la raspberry.
  • De vez en cuando le da por quedarse zombie, o sencillamente ‘mueren’ los procesos del minero, así que hay que mantener un ojo siempre puesto sobre el minero.

Esto es todo, buena suerte y feliz minería

2 Comments:

  1. Hola, que tal, gracias por comentar.
    No hace falta que estén los mineros conectados, para compilar e instalar el software.
    Lo suyo sería que copiaras el error exacto que te da el comando, para que lo pudiéramos analizar.
    De todas formas, te comento, el comando que dices en realidad son dos comandos, el primero simplemente para declarar una variable, y el segundo es el típico config pre-make. Quizás la clave esté en el parámetro, –enable-bmsc. Echando mano del README podemos ver qué hace ese parámetro, y otro parámetro similar:
    –enable-bmsc Compile support for BitMain Single Chain(default disabled)
    –enable-bitmain Compile support for BitMain Multi Chain(default disabled)

    Como dices que tienes dos mineros en un hub usb, me voy a tirar a la piscina y decirte que pruebes ./config –enable-bitmain –enable-bmsc (no se si funcionará…)

    Cuando termine el comando config, debería salirte un resumen con los dispositivos habilitados, donde verás
    Bitmain.SingleChain..: Enabled
    Bitmain.MultiChain…: Enabled

    Si esto falla, prueba a ejecutar el config con sudo, aunque no debería hacernos falta sudo hasta llegar al make install.

    Suerte, coméntanos por favor si te ha funcionado, y en caso de que siga el error, si quieres copias el error aquí.

    Un saludo

  2. Buenas, tengo una consulta, tengo dos U3 y mi raspberry es de la primera versión, también tengo un hub usb con alimentación activa para conectar varios dispositivos usb, con el comando lsusb veo el par de U3, pero al correr la línea de comando que esta antes del make, su resultado al final de trabajar es que no hay dispositivos minadores conectados, tienes algún conocimiento de que pueda ser?

Deja un comentario

Tu dirección de correo electrónico no será publicada.

7 + 4 =