|
|
BTCMiner - Bitcoin-Miner für ZTEX FPGA-Boards
BTCMiner ist eine Bitcoin-Miner-Software, welche es ermöglicht, Geld mit ZTEX USB-FPGA-Modulen zu verdienen.
Da diese FPGA-Boards ein USB-Interface besitzen, ist keine zusätzliche Hardware (wie JTAG-Programmiergeräte) erforderlich.
Mittels Standard-USB-Hubs können kostengünstige FPGA-Cluster aufgebaut werden.
Eigenschaften
- Unterstützte FPGA-Boards:
- Dynamische Frequenz-Einstellung / Overclocking auf Basis von Fehlerraten-Messung, d.h. BTCMiner bestimmt automatisch die Frequenz mit der höchsten Rate gültiger Hashes.
- Cluster-Modus: eine Software-Instanz kann viel FPGA Board steuern (bis zu mehrere hundert, begrenzt durch die Anzahl der USB-Controller)
- Hot-Plugging: neue Geräte können währen der Laufzeit hinzugefügt / entfernt werden.
- Verringerung der Stales durch Long-Polling und Block-Überwachung
- Backup-Server / Mining-Pools
- Möglichkeit der Nummerierung der FPGA-Boards und Cluster-Partitionierung mittels dieser Gerätenummern
- Stromsparmodus nach 5min Inaktivität oder per Kommando
- Überhitzungsschutz durch Abschaltung bei starken Fehleranstieg
- Ereignisaufzeichnung (Logging)
- Paket ist quelloffen
- Fertig übersetzte Bitstreams d.h. es wird keine Xilinx-Software oder -Lizenz benötigt
Benutzung
Alle benötigten Dateien befinden sich in einen einzigen JAR-Archiv, welches im Download-Abschnitt heruntergeladen werden kann
und welches unter Linux and Windows läuft. Windows-Nutzer müssen den libusb-Treiber des SDK's installieren.
Weitere Details und Software-Voraussetzungen befinden sich im Running an Example Tutorial.
Für Mac-Nutzer gibt es eine Portierung als Nutzerbeitrag: Wiki: MacOS-Portierung.
Allgemeines
Um Rechen-Arbeit zu erhalten und die Resultate zu versenden muss BTCMiner mit einem bitcoin-Server oder Mining-Pool verbunden werden:
java -cp ZtexBTCMiner-<release>.jar BTCMiner [-host <host url>] -u <username> -p <password> \
[-b <host url> <username> <password> [-b ...]] \
[-l <log file>] [-bl <submitted blocks log file>]
|
Dabei bezeichnet:
| <release> |
die Versionsnummer (siehe Download-Abschnitt) |
| <host url> |
die URL des Servers mit dem verbunden werden soll ist. Die URL muss das Protokoll und die Port-Nummer enthalten und sieht
gewöhnlich wie folgt aus: http://<hostname>:8332. Die URL eines lokalen Servers ist http://127.0.0.1:8332 (Voreinstellung). |
| <username> |
einen Benutzernamen für den Server |
| <password> |
ein Passwort für den Benutzer |
| <log file> |
einen Dateinamen für eine Datei, in der Meldungen aufgezeichnet werden. (optional) |
| <submitted blocks log file> |
einen Dateinamen für eine Datei, in der die eingereichten Blöcke aufgezeichnet werden. (optional) |
Mit -host, -u und -p werden die Zugangsdaten für den primären Server / Mining-Pool angegeben, mit -b können Backup-Server / -Pools definiert werden.
Mehrere alternative Adressen können durch mehrmalige Angabe von -b festgelegt werden. Die Backup-Zugänge werden verwendet, wenn der Zugriff zum primären Server / Mining-Pool gestört ist.
Eine Liste aller möglichen Parameter wird durch
|
java -cp ZtexBTCMiner-<release>.jar BTCMiner -h
|
ausgegeben.
Betrieb eines einzelnen FPGA-Boards
Der Befehl, um eine einzelnen FPGA-Miner zu starten, lautet:
java -cp ZtexBTCMiner-<release>.jar BTCMiner -host <host url> -u <username> -p <password> \
[-b <host url> <username> <password> [-b ...]] \
[-l <log file>] [-bl <submitted blocks log file>] \
[-f <firmware file>] [-d <device number;]
|
Dabei bezeichnet
| <firmware file> |
eine Firmware-Datei aus der Firmware-Liste. Dieser Parameter wird nicht benötigt, wenn die Firmware im EEPROM installiert wurde. |
| <device number> |
Sind mehrere FPGA-Boards am USB, kann des Gerät mit dieser Nummer angegeben werden. Eine Liste der verfügbaren
Geräte kann mittels der Option -i ausgegeben werden. |
Beispiel:
java -cp ZtexBTCMiner-120417jar BTCMiner -host "http://pool.net:8443" -u me -p topsecret \
-f ztex_ufm1_15d4.ihx
|
Betrieb eines FPGA-Clusters
Im Cluster-Modus scannt BTCMiner den USB nach FPGA-Boards mit installierter Firmware und startet diese. Deshalb
muss die Firmware zuvor im EEPROM mittels des Programmier-Modus installiert werden:
java -cp ZtexBTCMiner-<release>.jar BTCMiner -m p -f <firmware file> \
[-s <serial number string>] [-pt <string>] [-ps <serial number string>]
|
Dabei bezeichnet
| <firmware file> |
eine Firmware-Datei aus der Firmware-Liste |
| <serial number string> |
eine Serien-Nummer. Das kann eine beliebige Zeichenfolge mit bis zu 10 Buchstaben sein.
Standardmäßig hat jedes FPGA-Board eine eindeutige Seriennummer. Größere Cluster sind aber handlicher,
wenn diese Nummer durch einen geeigneteren Wert überschrieben wird. |
Wenn weder -pt noch -ps angegeben werden, programmiert BTCMiner nur unkonfigurierte FPGA-Boards. Um Geräte erneut zu programmieren,
können mittels der Parameter -pt und -ps FPGA-Boards nach Typ (siehe Firmware-Liste)
oder nach Serien-Nummer selektiert werden. In allen Modi können einzelne Geräte von der Geräteliste (siehe -i)
mittels -d gewählt werden. Wird dieser Parameter nicht angegeben werden alle passenden FPGA-Boards programmiert.
Beispiel:
|
java -cp ZtexBTCMiner-120417.jar BTCMiner -m p -f ztex_ufm1_15d4.ihx -s 01-02-01
|
programmiert ein USB-FPGA-Modul 1.15d (mit XC6SLX150) das erste Mal.
|
java -cp ZtexBTCMiner-120417.jar BTCMiner -m p -ps 01-02-01 -f ztex_ufm1_15d4.ihx
|
programmiert das FPGA-Board aus dem vorherigen Beispiel neu.
|
java -cp ZtexBTCMiner-120417.jar BTCMiner -m p -pt ztex_ufm1_15d4 -f ztex_ufm1_15d4.ihx
|
programmiert alle FPGA-Boards, welche zuvor mit ztex_ufm1_15d4.ihx beschrieben wurden, neu.
Nachdem auf allen FPGA-Boards Firmware installiert wurde, kann der Cluster wie folgt gestartet werden:
java -cp ZtexBTCMiner-<release>.jar BTCMiner -host <host url> -u <username> -p <password> \
[-b <host url> <username> <password> [-b ...]] \
[-l <log file>] [-bl <submitted blocks log file>] \
-m c [-n <Number of devices per thread>]
|
Dabei bezeichnet
| <Number of devices per thread> |
die maximale Anzahl von FPGA-Boards je Thread. Voreinstellung ist 10. |
Im Cluster-Modus wird ein Thread je Bus gestartet. Wenn die Anzahl der FPGA-Boards an einem Bus größer als der mit -n angegebene Wert ist,
werden zusätzliche Threads gestartet. Ein Wert zwischen 5 und 20 wird empfohlen, wenn BTCMiner über das Internet verbunden ist (Mining-Pools).
Für eine Lokale Konfiguration wird der Wert 127 (=maximale Anzahl der Geräte pro Bus) empfohlen.
Im Cluster-Modus können neue FPGA-Boards im laufenden Betrieb angesteckt werden. Ein erneuter Scan des Busses wird mit dem Kommando r initiiert.
Firmware- und FPGA-Board-Übersicht
| Firmware-Datei |
FPGA-Board |
FPGA-Typ |
Typ (für -pt benutzt) |
Frequenz-Schritte |
Minimale Hash-Rate |
Typische Hash-Rate |
Energieverbrauch |
| ztex_ufm1_15y1.ihx |
USB-FPGA-Modul 1.15y |
Vier Xilinx Spartan 6 XC6SLX150-N3 |
ztex_ufm1_15y1 |
4 MHz |
770 MH/s |
850 MH/s |
38 W @ 210 MHz |
| ztex_ufm1_15d4.ihx |
USB-FPGA-Modul 1.15d und USB-FPGA-Module 1.15x |
Xilinx Spartan 6 XC6SLX150-3/-N3 |
ztex_ufm1_15d4 |
4 MHz |
190 MH/s |
210 MH/s |
9.4 W @ 210 MHz |
| ztex_ufm1_15b1.ihx |
USB-FPGA Module 1.15b |
Xilinx Spartan 6 XC6SLX75-3 |
ztex_ufm1_15b1 |
8 MHz |
84 MH/s |
90 MH/s |
5.0 W @ 184 MHz |
| ztex_ufm1_15d.ihx |
USB-FPGA-Modul 1.15 und USB-FPGA-Module 1.15x |
Dummy-Firmware: Ermöglicht BTCMiner das Gerät zu Identifizieren und automatisch die aktuelle Firmware zu laden. |
| ztex_ufm1_15y.ihx |
USB-FPGA-Modul 1.15y |
Dummy-Firmware: Ermöglicht BTCMiner das Gerät zu Identifizieren und automatisch die aktuelle Firmware zu laden. |
Der Energieverbrauch der USB-FPGA-Module 1.15b and 1.15d wurde mit einem Experimentier-Board 1.3 bei einer
externen Versorgungsspannung von 12V gemessen. USB-FPGA-Module 1.15x und 1.15y haben On-Board-Spannungsregler. Der Energieverbrauch dieser FPGA-Boards wurde bei 12V
Eingangsspannung gemessen.
Kühlung uns Stromverbrauch
Der Energieverbrauch ist in der Tabelle oben aufgelistet.
Um Überhitzung zu vermeiden ist die Verwendung der mit den FPGA-Boards gelieferten Kühlkörper sowie ein geringer Luftstrom ist erforderlich.
Gibt is keine Gehäuselüfter können größere Kühlkörper für das USB-FPGA-Modul 1.15b (LX75)
oder Kühlkörper mit 25mm Lüfter für das USB-FPGA-Modul 1.15d (LX150) erworben werden.
USB-FPGA-Module 1.15x (LX150) und
USB-FPGA-Module 1.15y (4 × LX150) werden mit 40mm Lüftern ausgeliefert.
Downloads
|