Bitcoin a spuštění Antmineru U1 na Raspberry

Na úvod by se hodilo říci pár slov o tom, co to vlastně ten Bitcoin je. Bitcoin je měna, která vznikla jako alternativní prostředek ke všem ostatním měnám a hlavním cílem při vytváření měny byla nezávislost.  Bitcoin je navržen tak, aby nikdo, ani autor nebo jiní jednotlivci, skupiny či vlády, nemohl měnu ovlivňovat, padělat, zabavovat účty, ovládat peněžní toky nebo způsobovat inflaci. Jsou zde jasně daná pravidla, která definují fungování měny a i počet jednotlivých Bitcoinů. Pokud o této měně slyšíte poprvé, tak je potřeba to více prostudovat. Můžete začít například na wiki http://cs.wikipedia.org/wiki/Bitcoin.

Když jsem o tom četl poprvé, tak mě velice zaujal způsob fungování a nutnost zařízení, které provádějí výpočty pro ověření transakcí, a které se nazývají težaři (Miner). Těžaři hledají specifickou Hash, která splňuje určité podmínky. Za tuto práci jsou odměněni určitým obnosem bitcointů. Jelikož nalezení správného výsledku je dosti náročné, využívá se při těžbě tzv. poolů, kde se schází více těžařů a případnou odměnu si jednotlivý těžeři rozdělí. V tomto článku se nechci zabývat popisem protokolů a fungováním Bitcoinu, ale chci zde uvést postup pro instalaci USB AntMineru U1 na Raspberry, kde jsem s tím trochu bojoval. Tento miner či celou sadu můžete koupit u nás na eshopu http://eshop.raspishop.cz/bitcoin-c-9.html?from=0. Hlavním problémem byla chyba zápisu do paměti, která na mě vyskočila při spuštění cgmineru, ale pojďme pěkně od začátku.

Příprava Raspberry

Nejdříve si připravíme operační systém pro raspberry. Já jsem vyšel z poslední verze NOOBS dostupné na http://www.raspberrypi.org/downloads. V době mé instalace je poslední verze 1.3.4 a proto jsem stáhnul soubor NOOBS_v1_3_4.zip. Soubor stačí rozbalit a nakopírovat na prázdnou SD kartu.
SD kartu strčíme do raspberry, připojíme klávesnici a monitor a po krátkém startu dostaneme na výběr z několika distribucí. Vybral jsem osvědčený a doporučovaný raspbian a spustil jsem instalaci. Instalace systému chvilku trvá. Po instalaci se objeví konfigurační nabídka raspi-config. Já většinou povolím jen SSH server v nabídce Advance options, abych se mohl k raspberry připojit vzdáleně například přes program putty. Konfigurace je pro mě potom jednoduší. Jméno a heslo v defaultu je pi/raspberry.

Připojíme se tedy k raspberry a jdeme instalovat potřebné aplikace. Jako první proveďme pro jistotu nejprve aktualizaci systému:

	sudo apt-get update
	sudo apt-get upgrade 

Pro těžbu využijeme program cgminer, který je velice rozšířený a hojně využívaný. Tento program se pořád rozvíjí a lze najít spoustu různých verzí. My využijeme tento zdroj https://github.com/bitmaintech/cgminer který obsahuje správné ovladače pro antminer U1. Nejdříve je ale nutné nainstalovat všechny podpůrné programy.

	sudo apt-get install autoconf libtool libncurses-dev yasm curl libcurl4-openssl-dev pkg-config git libudev-dev 

Dále se přepneme do adresáře opt a vytvoříme si kopii cgmineru.

	cd /opt/
        sudo git clone https://github.com/bitmaintech/cgminer.git 

Poté už by mělo stači se přepnout do adresáře cgminer a spustit konfiguraci a instalaci s danými parametry. Takto to uvádí většina návodů, co se mi podařilo najít. Po instalaci cgminer fungoval, ale po připojení antmineru U1 došlo vždy k pádu aplikace s chybovou hláškou ohledně přístupu do paměti. Zkoušel jsem různé způsoby a hledal řešení, až se mi podařilo na jednom fóru najít změnu kódu v souboru ovladače daného zařízení. Je potřeba provést změnu v souboru driver-bmsc.c, který najdete v adresáři cgmineru. Tedy provést toto:

	cd cgminer
        sudo nano driver-bmsc.c
        a najít a nahradit řádek memcpy((char *)&nonce, nonce_bin, sizeof(nonce_bin));
        za memcpy((char *)&nonce, nonce_bin, sizeof(nonce));

Vlastně ani není potřeba celý řádek nahrazovat, jen je potřeba na správném místě umazat _bin. Poté uložte změněný soubor a můžeme pokračovat. Je možné, že tato změna bude v dohledné době již zapracována a v době vaší instalace nebudete muset tento bod nijak řešit. Klidně tuto úpravu zkuste při první instalaci přeskočit a případně se k ní vrátit pokud něco nebude fungovat.

Pojďme dále na instalaci. Nacházíme se v adresáři /opt/cgminer. Zadáme příkaz na konfiguraci cgmineru s parametrem správných driverů. V případě, že budete mít nějaký jiný bitcoin mineru, je potřeba ho přidat do tohoto seznamu.

	sudo ./autogen.sh --enable-bmsc --enable-bitmain

Mě to při spuštění tohoto příkazu vypisovalo upozornění na špatné nastavení jazyka, ale to nemá vliv na výslednou konfiguraci. Tento proces bude chvíli trvat. Neměl by se objevit žádný error a výsledkem by měla být úspěšná konfigurace. Následně provedeme instalaci:

	sudo make install

Dále je ještě nutné přidat následující příkazy, které Vás přiřadí do skupiny plugdev, aby bylo možné přistupovat k mineru bez sudo a zkopírovat pravidla pro připojení zařízení do systému. Skupina plugdev už bude pravděpodobně existovat, tak první příkaz není nutný.

	sudo groupadd plugdev
        sudo usermod -G plugdev -a `whoami`
        sudo cp 01-cgminer.rules /etc/udev/rules.d/

Poté je nutné provést restart raspberry. Nyní je všechno připravené a pokud jste ještě nepřipojili antminer U1, tak to můžete provést.  Pokud jste již zaregistrování na nějakém poolu, tak se můžete pustit do spuštění cgmineru. K poolu se dostaneme níže. Pro spuštění jsou důležité následující parametry.

	cgminer --bmsc-options 115200:20 -o stratum.bitcoin.cz:3333 -u jmeno.worker1 -p heslo --bmsc-freq 0781

Bmsc-options a bmsc-freq definují nastavení mineru. Bmsc-freq udává rychlost těžby a jednotlivé možnosti jsou uvedeny v následující tabulce. Pokud budete využívat miner ve vyšších frekvencích, což moc nedoporučuji, tak je dobré to nějakým způsobem chladit.

Frequency Hash Rate (GH/s) bmsc-freq Setting
200 1,6 0781 – Default
225 1,8 0881
250 2,0 0981
275 2,2 0A81

Další parametry specifikují pool, kam se má cgminer přihlásit a následuje jméno a heslo. Dále se ještě dostaneme ke tvorbě skriptu, který zajistí automatické spuštění. Teď si ještě popíšeme zmíněný pool.

cgminer

 

Registrace k poolu

Jak už bylo nazančeno na začátku článku, pooly byly vytvořeny za účel spojení více těžařů a tedy ke zvýšení pravděpodobnosti nalezení správné hashe. Pokud se budete o těžbu pokoušet samostatně, tak se může stát, že budete čekat velmi dlouho, než se Vám podaří nalést alespoň jednu. Proto je dobré se zaregistrovat například na českém poolu http://mining.bitcoin.cz/. Po registraci a přihlášení můžete přidávat jednotlivé težaře a v sekci můj účet uvidíte jméno a heslo, které zadáváte při spuštění cgmineru, tak jak bylo uvedeno výše. Url poolu je  stratum.bitcoin.cz:3333.

Jako další pool, který jsem vyzkoušel je https://cex.io V sekci GHash.io můžete pěkně sledovat práci vašich těžařů. Url serveru je  stratum+tcp://uk1.ghash.io:3333 a jako jméno se používá vaše přihlašovací jméno + tečka + nějaký název. Heslo je jim také jedno. Na tomto serveru se dají dělat i další věci, například koupit si určitý výkon, ale to už nacháme třeba na někdy jindy.

Konfigurační skript a automatické spuštění

Abychom nemuseli při spuštění zadávat spoustu parametrů, je dobré si vytvořit konfigurační skript. Vratmě se do domovského adresáře a vytvořme zde soubor cgminer.conf.

	cd ..
        nano cgminer.conf

Do souboru nakopírujeme následující kód. Je potřeba upravit url poolu, jméno a heslo. Ostatní měnit nemusíte.

	{
        "pools" : [
           {
                "url" : "stratum.bitcoin.cz:3333",
                "user" : "jmeno.worker1",
                "pass" : "heslo"
           }
        ]
        ,
        "api-listen" : true,
        "api-port" : "4028",
        "expiry" : "120",
        "failover-only" : true,
        "log" : "5",
        "no-pool-disable" : true,
        "queue" : "2",
        "scan-time" : "60",
        "worktime" : true,
        "shares" : "0",
        "kernel-path" : "/usr/local/bin",
        "api-allow" : "0/0",
        "bmsc-options" : "115200:10",
        "bmsc-freq" : "0781"
        }

Nálsedně spuštění cgmineru je možné provést pomocí příkazu

	cgminer --config /home/pi/cgminer.conf

My si ještě vytvoříme spouštěcí skript, který zajistí běh cgmineru na pozadí.

	nano spustcgminer.sh

Soubor naplníme následujícím obsahem.

	#!/bin/bash
        sudo killall cgminer
        nohup cgminer --config /home/pi/cgminer.conf --real-quiet --sharelog /var/log/sharelog.log > /dev/null 2>&1 &
        sudo echo $! > /var/run/cgminer.pid

Dále změníme práva, abychom mohli tento skript spustit.

	sudo chmod +x spustcgminer.sh

Spuštění skriptu můžeme provést pomocí sudo ./spustcgminer.sh a následně si ověřit funkčnost ve výpisu spuštěných procesů například přes htop. Funkčnost poznáte i pohledem na antminer, kde problikává zelená ledka, která signalizuje určitou komunikaci.

Posledním bodem je přidání spuštění skriptu do rc.local, aby došlo ke spuštění cgmineru po startu. Přidejme tedy před exit 0  příkaz sudo sh /home/pi/spustcgminer.sh

	sudo nano /etc/rc.local

Výsledek mého funkčního zapojení je zde. USB hub jsem použil i k napájení raspberry. To lze pokud máte připojen jen jeden usb miner a zmíněný usb hub defender to utáhne. Při zapojení více mineru doporučuji použít samostatný zdroj pro raspberry či využít lepší hub například D-Link.

Aktualizace 1.5.2014:

Při dlouhodobém sledování jsem zjistil, že občas dochází k zaseknutí raspberry. Co jsem se dočetl, tak za to může nějaká chyba v kernelu. Lze to odstranit přidáním jednoho parametru slub_debug=FP na konec prvního řádku v souboru /boot/cmdline.txt. Editaci souboru provede například pomocí

	sudo nano /boot/cmdline.txt

antminer

Příspěvek byl publikován v rubrice Články a jeho autorem je Michal Pravda. Můžete si jeho odkaz uložit mezi své oblíbené záložky nebo ho sdílet s přáteli.

8 komentářů u „Bitcoin a spuštění Antmineru U1 na Raspberry

  1. Dobrý den,
    chci se zeptat jestli jde použít tohle zapojení i na minery s vyšší výpočtouvou rychlostí? Děkuji za odpověď. Ondřej Kulich

    • Také s tím nemám žádnou zkušenost nicméně tuším, že v případě použití jiného mineru by se uvedený postup lišil především v bodě týkajícím se vlastní konfigurace aplikace – spouštění skriptu „autogen.sh“. Použitelná zařízení lze vytušit z přehledu sekce „CGMiner specific configuration options:“ souboru README na URL https://github.com/ckolivas/cgminer

  2. Potvrzuji … Jasně a srozumitelně napsáno tak aby mohl realizovat i úplný začátečník s Raspberry Pi. Myslím, že sám jsem toho důkazem. S uživatelskou příručkou k Raspberry Pi v ruce, informacemi z Internetu a samozřejmě za pomoci tohoto návodu jsem rozběhl. Jako začátečník jsem akorát narazil na níže uvedené problémy, které ale ne vždy souvisí s popisem. Určitě v řadě případů s mojí neznalostí:

    1.) Moje první pokusy jejichž výsledek byl na začátku nejistý jsem s úsporných důvodů započal s SD kartou o kapacitě 4GB. Zde jsem ale narazil …
    Zjistil jsem, že na kartu této kapacity se poslední verze NOOBS spolu s Raspbianem již nevejde. Proto jsem na kartu překlopil pouze holý obraz Raspbianu. Jelikož jsem se nechtěl vzdát GUI a dalších pomůcek jako XRDP, MC a podobně záhy jsem kartu zaplnil a systém mě díky tomu přestal startovat. Vše vyřešilo pořízení karty o kapacitě 8GB. Zároveň jsem si uvědomil, že jsem možná
    udělal chybu v tom že jsem systémovou partition neroztáhl na maximum možného. S větší kartou jsem si toto již pohlídal.

    2.) POZOR !!! Snažil jsem si maximálně pomáhat tím, že jsem vybrané příkazy kopíroval přímo z browseru do terminálu. Dost často to byl zdroj problémů. Platí i např. pro konfigurační soubor cgmineru. Vysvětluji si tím, že se z browseru spolu s kopírovaným textem dostávaly i asi skryté značky a spol. Takže leckdy se vyplatí instrukce pečlivě opsat.

    3.) Popsaná chyba ve zdrojovém kódu ovladače pořád i v poslední verzi cgmineru 4.6.1 trvá. Je třeba každopádně dle návodu opravit !!!

    4.) Nevím od které verze cgmineru platí nicméně mnou použitá poslední verze 4.6.1 má už k dispozici trochu jinou skupinu parametrů než je popisováno. Například použitý –bmsc-freq už není podporován. V tomto směru ještě tápu a laboruji. Aplikace se totiž bez tohoto parametru evidentně chová tak, že Antminer dynamicky přetaktovává. Pro Antminer U1 by frekvenci HW měl určovat snad parametr –anu-freq. Neměl jsem čas ale vypozorovat jestli skutečně má ten správný efekt.

    Přivítám jakékoliv informace ohledně parametrů použitelných ve spojení s Antminerem U1. Při těchto pokusem se mě nelíbilo jak moc se ASIC zahřívá. Chlazení této verze HW je opravdu poddimenzované. Plánuji ještě alespoň minimální vylepšení chlazení abych hardwaru odlehčil.

    • Děkuji za podrobný komentář a jsem rád že to funguje. Zaujal mě bod 4 tak k tomu něco málo doplním. Zkusil jsem zmíněný parametr -anu-freq a opravdu moje stará verze 3.8.5 ho nezná. Nicméně také se mi zdá, že to rozložení výkonu hodně kolísá. Průměrně to ale je okolo nastavené hodnoty. To dynamické přetaktování je ve zmíněném případě dlouhodobé? Myslím jestli to pořád jede na plný výkon? Asi bych měl taky upgradovat na vyšší verzi.

      • Byla zase chvilka na nějaké ty experimenty. Zatím jsem dospěl ke stejnému výsledku jako Vy. Bez ohledu na nastavení parametrů (zkoušel jsem jak „–anu-freq“ tak i kombinaci „–bitmain-auto“ + „–bitmain-freq“) se mě to chovalo tak, že po nějaké době provozu cgmineru se výkon stejně ustálil na obvyklých průměrných cca 1,6GH/s. Na Internetu jsem náhodou ve spojení s výše uvedeným parametrem „–anu-freq“, který je specielně pro Antimery U1 určen, narazil na poznámku v tom smyslu že by to snad takto opravdu mělo fungovat. To znamená, že cgminer volí pro HW optimální frekvenci tak aby byla těžba nejoptimálnější a HW mineru nechyboval. Je pravda, že výkyvy směrem nahoru měl a to vždy pokud zrovna řešil dílčí úlohu s vyšší obtížností. Jestli teda umím správně interpretovat výpis cgmineru. Zároveň to bylo znát i fyzicky vyšší teplotou na chladiči. Jinak jsem zjistil, že už vyšla nová verze 4.7.0. Třeba by stálo za pokus vyzkoušet i ji. Co se týče úpravy chlazení mám odzkoušenu jednoduchou a levnou úpravu, která U1-ku vylepší na úroveň U2-ky s tím, že lze při stejném mechanickém uspořádání volit jednoduché nebo dvojité navýšení chladící plochy (aktivní chlazení se mě nelíbí). Samozřejmě na úkor prostoru okolo mineru a nemožnosti tak osadit všechny porty USB hubu. Až bude chvilka ofotím a popis úpravy Vám v případě zájmu zašlu e-mailem.

        • Fotky uvítám a můžeme je zde případně i vystavit… Já pro chlazení používám malý větráček napájený přímo z usb.

Napsat komentář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *

Connect with Facebook

Ochrana proti spamu * Time limit is exhausted. Please reload the CAPTCHA.