miércoles, 18 de mayo de 2016

Tutorial Ethminer headless

Como ejecutar Ethminer en Ubuntu 15.10 sin pantalla y sin esfuerzo

El objetivo de esta guía es tener un sistema donde poder ejecutar Ethminer sin pantalla y poder controlarlo remotamente
Requisitos necesarios:
  • Ubuntu 15.10 Desktop instalado
  • GPU ATI + drivers Oficiales instalados
  • Conocimientos basicos de unix shell
Obviamente para poder instalar el sistema necesitamos un display para introducir los comandos necesarios, luego de acabar con el procedimiento podemos quitarlo y usar el sistema en modo Headless
Notas: se puede instalar Ubuntu sin pantalla, pero requiere de un conocimiento avanzado "https://help.ubuntu.com/community/Installation/NetworkConsole"

Paso 1 - instalacion de paquetes necesarios

sudo apt-get install openssh-server
sudo apt-get install tmux
sudo add-apt-repository -y ppa:ethereum/ethereum
sudo apt-get update
sudo apt-get install ethminer

Paso 2 - configuracion de permisos Xserver

Lo que vamos a configurar es el acceso de nuestros comandos al display que tiene abierto el servicio LightDM arrancado por defecto en Ubuntu Desktop, ya que dicho servidor X se ejecuta como root, tenemos que obtener permiso para poder conectarlos a el como usuario no privilegiado, asumimos que el nombre del usuario es "minero".
Notas: el usuario es el que hemos creado durante la instalacion

Configuramos el acceso al usuario minero al comando xauth sin password

sudo echo "minero ALL = NOPASSWD: /usr/bin/xauth" > /etc/sudoers.d/xauth
Notas: si no funciona el comando, crear el fichero manualmente e introducir la linea.

Esto nos permite ejecutar xauth como root y poder obtener y manipular las ACL del servidor X, deberemos poder ejecutar sin requerir la password.
sudo xauth list

Añadir las siguientes lineas al fichero .bashrc del usuario minero

vi .bashrc
...
cookie=`sudo xauth -f /var/lib/lightdm/.Xauthority list | cut -d " " -f 5`
xauth add :0 MIT-MAGIC-COOKIE-1 $cookie
...
Con esto autorizamos al usuario "minero" a usar el display :0 del servidor X arrancado por LightDM, podemos lanzar "xclock" para comprobar que no se muestran errores de autorización.
Notas: hay que volver a entrar con el usuario para que se activen los cambios, o ejecutar desde la shell "source .bashrc"

Paso 3 creacion del script para ethminer

crear un fichero bash script con vi, joe, gedit o similar vi minar.sh
#!/bin/bash
DISPLAY=:0
//parametros de aticonfig para Overclock de R9 390
//aticonfig --adapter=0 --od-setclocks=1150,1600

ETH_ADDRESS="0x4e4d31efaec6ad09759578fe9f43455854cfb9b4"
MINER_PATH="ethminer"
MINER_NAME="ethminer1"
MINER_PARAMS="-G -v 9 -F http://eth1.nanopool.org:8888/$ETH_ADDRESS/$MINER_NAME"

tmux new-session -d
tmux rename-session 'mining-session'
tmux split-window
tmux split-window -h
tmux split-window -t 0 -h

tmux send-keys -t 0 "$MINER_PATH $MINER_PARAMS" enter
Este script lanza un proceso de "tmux" en background ejecuta el comando de ethminer con la configuracion de pool y direccion Podemos recuperar la sesion de tmux con
tmux attach
Notas: podemos encontrar infinidad de tutoriales sobre tmux en https://www.google.es/search?q=tmux+tutorial+español&oq=tmux+tutorial

Ruegos y preguntas

... ...

lunes, 4 de enero de 2016

Arduino + Modulo Wifi ESP8266

Este pequeño tutorial pretende servir de introducción al manejo del modulo Wifi ESP8266 con Arduino IDE sin depender de librerías ni herramientas externas

Modulo ESP8266 (ESP-12)















Notas: Aunque en algunos modulos vienen con la etiqueta de certificacion FCC, solo algunos realmente la poseen, en este caso el modulo ESP-12, si parece complir con esta normativa, ver https://fccid.io/2ADUIESP-12#axzz3Wd49oIRfhttp://www.esp8266.com/wiki/doku.php?id=esp8266-module-family

Para este caso vamos a trabajar con el modulo ESP12, que tiene todos los puertos GPIO disponibles, como contrapartida, este modulo viene en formato SMD, con lo cual hay que fabricar un adaptador para poder usarlo en la protoboard.

- Esquema Adaptador ESP-12












Los modulos ESP8266 tienen dos modos de funcionamiento, "normal mode" y "flash mode" este depende de una configuracion de los pines GPIO0 y GPIO2 como se puede ver en este esquema:

(MTDO es GPIO15).

MTDOGPIO0GPIO2ModeDescription
LLHUARTDownload code from UART
LHHFlashBoot from SPI Flash
HxxSDIOBoot from SD-card
* Informacion obtenida de https://github.com/esp8266/esp8266-wiki/wiki/Boot-Process#esp-boot-modes

Para nuestro caso necesitamos GPIO15-> GND y GPIO0->GND, GPIO2 tiene un pull up interno y no necesita conectarse

La conexión mas correcta para nuestro modulo seria:

GPIO0->Resistor 10K a  GND ( Flash Mode )
GPIO2->Resistor 10K a VCC ( 3v3 )
GPIO15->Resistor 10K a GND


- Instalar las herraminta de compilacion desde el board manager

Para instalar el soporte de la placa ESP8266 y similares en Arduino hay que entrar en "Archivo->Preferencias" y configurar una URL extra para el manejo de boards:

La dirección en cuestión es "http://arduino.esp8266.com/stable/package_esp8266com_index.json"


A continuación entramos en "Herramientas->Placa*->Gestor de tarjetas" e instalamos el soporte para "esp8266"


La descarga de las herramientas son mas de 100MB...

Por ultimo para comprobar que tenemos todo preparado nos vamos a "Herramientas->Placa:*->Generic ESP8266 Module" o el modulo que nos interese.

El único valor de los que viene por defecto que nos interesa cambiar, es el "Upload Speed" que cambiaremos de "9600" a "115200" para no desesperarnos entre los Uploads de los sketchs.


Ahora abriremos un Sketch de ejemplo en "Archivo->Ejemplos->ESP8266->Blink", para nuestra versión de board, modificaremos el ejemplo y cambiaremos el valor BUILTIN_LED por el puerto que nos interese, el modulo ESP-12 tiene conectado el GPIO2 al led azul de manera interna.



Aqui se aprecia el mapeo de pins GPIO entre el modulo ESP-12 y Arduino:























Notas: los GPIO son tolerantes a 5v input, pero se recomienda usar siempre 3v3 


Success!!!

Enlaces de interés: