Einleitung/Infos:Da ich noch recht neu im Umgang mit den Bitaxen bin und weiß, dass
jeder Bitaxe durch leicht unterschiedliche Komponenten, Verarbeitung, Netzteil, Kühlung und Standort auch demzufolge ein
anderes Ergebnis/Performance bietet, wollte ich bei meinen Voltage/Frequencie Änderungen alles möglichst gut überwachen und messen können.
Da stieß ich auf u.a. Seite/Python-Script
Bitaxe-Hashrate-Benchmark und war überrascht, dass ich nur einen einzigen Treffer im Forum hier fand, nämlich den von
brun0 hier (
https://bitcointalk.org/index.php?topic=5477020.1540 ).
Mein Ziel ist
bislang ohne kritisches OC im Bereich der Standard-Werte in den AxeOS-Settings die für meinen Bitaxe
effektivsten Werte (Efficiency und Hashrate) zu finden. Ich verwende noch die Standardkühler und 30W PSU/Netzteile, da ist dann später noch mehr machbar, aber hier soll es nur um das
Automatische finden der besten Core Voltage/Frequency gehen.
Hinzu kommt noch, dass meine Miner woanders stehen und ich dies
bequem vom PC machen kann, ohne auch nur ein Kabel zu verbinden!
Los gehts:
Skript:
https://github.com/WhiteyCookie/Bitaxe-Hashrate-BenchmarkMein Skript-Config: <<< für
Bitaxe Supra - Firmware v2.5.1 >>>
# Configuration
bitaxe_ip = "
http://192.168.xxx.xxx"
core_voltages = [1100, 1150, 1166, 1200, 1250, 1300]
frequencies = [400, 425, 450, 475, 490, 500, 525, 550, 575]
cool_down_voltage = 1166
cool_down_frequency = 400
cool_down_time = 30 # set x time in seconds
benchmark_time = 300 # set x time in seconds
sample_interval = 30 # set x time in seconds
max_temp = 66
max_allowed_voltage = 1300
max_allowed_frequency = 575
Den
Sleeptimer im Script habe ich bei 120 Sekunden gelassen, nachdem ich 60 und 90 Sekunden ausprobiert habe, dies ist die Zeit, die der Benchmark nach dem Restart wartet. Wir haben ja alle schon bemerkt, dass am Anfang manchmal sehr hohe oder sehr niedrige Werte kommen, daher bin ich bei den 12ß Sekunden geblieben auch wenns beim Zuschauen nervt, aber die Werte sind dann gleichmäßiger.
Bei
Voltage und Frequency habe ich ALLE genommen, die standardmäßig im AxeOS auswählbar sind, da ich ziemlich sicher bin, dass das keine gefährlichen Werte sind.
Jedes einzelne
Hashrate notieren passiert alle 30 (sample_interval) Sekunden.
Ein Lauf (benchmark) einer einzelnen Voltage/Frequency-Kombination geht 300 (benchmark_time) Sekunden, dies endet darin, dass es 10x Hashrate notieren alle 30 Sekunden (300/30=10) gibt.
Meine Testen sieht also so aus:
1. Ich starte das Skript
2. Skript setzt Volt./Frequ. und restarted den Bitaxe.
3. 120 Sekunden abwarten (kann man im Bitaxe-Dashboard verfolgen)
4. Alle 30 Sekunden werden jetzt
Hashrate und
Temperature protokolliert.
5. Nach den 10 Messungen gibt das Skript die nächsthöhere Frequenz an bis alle durch sind und geht dann erst auf die nächste Core Voltage.
6. Wenn alle Läufe durch sind wird ein JSON File erstellt, indem
alle Ergebnisse (1 Durchschnitsswert je 10 Läufe)
plus Efficiency stehen.
Danach kille ich im Windows TaskManager den Prozess Python, damit das cmd-Fenster noch bleibt.
Ich habe zum erstmaligen Testen nur 2x Voltage und 2x Frequency genommen zum Testen, kann ich empfehlen!Wenn ihr eure gewollten Voltages und Frequencies ALLE im Test eingeplant habt, dann seid ihr jetzt schon durch, wenn es euch "nur" um die höchste Hashrate ging, diese wählt das Skript nämlich am Ende automatisch aus und stellt den Bitaxe darauf ein. Also Praktisch ein Fire and Forget, sehr schön!Ich habe mir aber extra z.B. einen
BM1368 (Bitaxe Supra) geholt aufgrund der
hohen Effizienz, d.h. ich will nur eine hohe Hashrate, wenn sie nicht exorbitant Watt zieht.
Dies regele ich im folgenden wie folgt:
Ich baute
ein Sheet mit folgendem Aufbau aufgrund der o.a. Settings für den
Supra:
https://www.talkimg.com/images/2025/02/09/e5tsP.jpegDann f
üllte ich die Werte aus dem JSON File (bis auf Power, da ist ne Formel, siehe Bild).
Danach sortierte ich jede Spalte und habe die
Top und Low 5 mit je grün für gut und rot für schlecht zum Visualisieren gekennzeichnet und letztlich nach Efficiency sortiert, da für mich mit am wichtigsten.
Siehe die nächsten beiden Bilder:
https://www.talkimg.com/images/2025/02/09/e5z7q.jpeghttps://www.talkimg.com/images/2025/02/09/e5Naj.jpegJetzt müsste ich von der Effizienz 400/1166 nehmen, ABER natürlich will ich auch was Hashen, daher springt mir nun direkt 550/1250 ins Auge, den das Skript eh als besten (höchster Hash) auswählte, der aber noch akzeptabel niedriger ist von der Efficiency.
Daher mache ich jetzt exakt den gleichen Ablauf wie oben, grenze aber mein Ziel nun ein und kann auch Werte nehmen, die nicht im Pulldown im AxeOS vorgegeben werden und versuche es nun mit:
core_voltages = [1235, 1245, 1255, 1265]
frequencies = [535, 545, 555,565]
Alle anderen Settings bleiben gleich.
Ich habe also 2x Volt unter 1250 und 2x drüber genommen. Das gleiche bei der Frequenz 550. Da ich deren Werte ja schon habe, habe ich mal um 5 Werte verschoben.
Nach diesem finalen Lauf, der nun bedeutend kürzer ist, kam bei mir folgendes raus und
mein Gewinner ist:
"coreVoltage": 1255,
"frequency": 555,
"averageHashRate": 816.3942947891234,
"averageTemperature": 44.9,
"efficiencyJTH": 20.133653552091754
Der
Gewinner aus dem "Alle" groben
ersten Lauf war:
"coreVoltage": 1250,
"frequency": 550,
"averageHashRate": 755.8281173844159,
"averageTemperature": 44.5,
"efficiencyJTH": 21.368614463973458
Durch diese gesamte Prozedur komme ich nun
schnell und einfach, wie ich finde, zum besten Ergebnis ohne an der Hardware was zu ändern, was man ja auch noch machen kann.
Ich denke es wird bei den anderen Bitaxen auch so gehen, aber achtet auf die Angaben und wie immer alles auf eigene Gefahr, wobei bei mir wie o.a. alles ohne Probleme klappte. Besonders auf Hitze und 12V (Bitaxe Hex, QAxe+ etc) achten.
Aber mindestens für die normalen Single-Chip-Bitaxe scheint das super zu klappen!Beste Grüße
USt0ne