Bitcoin Forum
July 28, 2025, 04:51:30 AM *
News: Latest Bitcoin Core release: 29.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1]
  Print  
Author Topic: Bitaxe Supra (Ultra, Gamma) automatisch Optimieren  (Read 312 times)
USt0ne (OP)
Newbie
*
Offline Offline

Activity: 18
Merit: 6


View Profile
February 09, 2025, 01:05:43 AM
Merited by Buchi-88 (1), unpainted (1)
 #1

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-Benchmark

Mein 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.jpeg


Dann 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.jpeg
https://www.talkimg.com/images/2025/02/09/e5Naj.jpeg


Jetzt 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
Keule
Newbie
*
Offline Offline

Activity: 2
Merit: 2


View Profile
April 27, 2025, 07:19:41 PM
Last edit: April 27, 2025, 07:37:11 PM by Keule
Merited by MaxMueller (1)
 #2

Hi,

ich habe mir gerade mal dein tolles script geladen und ausprobiert.

ich habe den Gamm 601 und die aktuellste Firmware v2.6.5 drauf.

Er haut mir direkt folgenden Fehler raus:



Code:
C:\>python bitaxe_hashrate_benchmark.py
Traceback (most recent call last):
  File "C:\bitaxe_hashrate_benchmark.py", line 1, in <module>
    import requests
ModuleNotFoundError: No module named 'requests'

C:\>


Haste ne Idee was ich falsch mache?

Sorry, bin da nicht so bewand in dem script Bereich.

Hab den Befehl in der Eingabeaufforderung, im Powershell und im pyton mit run probiert.

Config sieht so aus:

Code:
# Configuration
bitaxe_ip = "http://192.168.178.50"
core_voltages = [1150, 1200, 1250] #[1100, 1150, 1166, 1200, 1250, 1300]
frequencies = [550, 575, 600] #[400, 425, 450, 475, 490, 500, 525, 550, 575]
cool_down_voltage = 1166
cool_down_frequency = 400
cool_down_time = 300  # set x time in seconds
benchmark_time = 9000  # set x time in seconds
sample_interval = 150  # set x time in seconds
max_temp = 66
max_allowed_voltage = 1300
max_allowed_frequency = 600

Gruß, Marc


EDIT:

hab den ersten Befehl mal ausgeblendet, dann spuckt er mir das aus:

Code:
=================== RESTART: C:\bitaxe_hashrate_benchmark.py ===================
Traceback (most recent call last):
  File "C:\bitaxe_hashrate_benchmark.py", line 1, in <module>
    import requests
ModuleNotFoundError: No module named 'requests'

=================== RESTART: C:\bitaxe_hashrate_benchmark.py ===================
An unexpected error occurred: name 'requests' is not defined
No valid benchmarking results found. Applying predefined default settings.
No valid benchmarking results found. Applying predefined default settings.
Traceback (most recent call last):
  File "C:\bitaxe_hashrate_benchmark.py", line 44, in fetch_default_settings
    response = requests.get(f"{bitaxe_ip}/api/system/info", timeout=10)
NameError: name 'requests' is not defined. Did you mean: 'results'?

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\bitaxe_hashrate_benchmark.py", line 206, in <module>
    fetch_default_settings()  # Fetch the default settings dynamically at the start
  File "C:\bitaxe_hashrate_benchmark.py", line 52, in fetch_default_settings
    except requests.exceptions.RequestException as e:
NameError: name 'requests' is not defined. Did you mean: 'results'?

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\bitaxe_hashrate_benchmark.py", line 101, in set_system_settings
    response = requests.patch(f"{bitaxe_ip}/api/system", json=settings, timeout=10)
NameError: name 'requests' is not defined. Did you mean: 'results'?

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\bitaxe_hashrate_benchmark.py", line 229, in <module>
    set_system_settings(default_voltage, default_frequency)
  File "C:\bitaxe_hashrate_benchmark.py", line 106, in set_system_settings
    except requests.exceptions.RequestException as e:
NameError: name 'requests' is not defined. Did you mean: 'results'?

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\bitaxe_hashrate_benchmark.py", line 101, in set_system_settings
    response = requests.patch(f"{bitaxe_ip}/api/system", json=settings, timeout=10)
NameError: name 'requests' is not defined. Did you mean: 'results'?

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\bitaxe_hashrate_benchmark.py", line 239, in <module>
    set_system_settings(default_voltage, default_frequency)
  File "C:\bitaxe_hashrate_benchmark.py", line 106, in set_system_settings
    except requests.exceptions.RequestException as e:
NameError: name 'requests' is not defined. Did you mean: 'results'?
Cricktor
Legendary
*
Offline Offline

Activity: 1204
Merit: 2710



View Profile
April 27, 2025, 08:02:08 PM
Merited by Buchi-88 (1)
 #3

~~~
Wie hast du denn dein Python installiert bzw. eingerichtet. Auf den ersten Blick ist das Problem, daß das Python-Modul "Requests" nicht gefunden wird. Das gehört aber meines Wissens, bin nicht so der Python-Experte, zum Standard-Umfang bzw. muss eben mit- oder zusätzlich installiert werden.

Ich benutze Python unter Windows ziemlich wenig, kann daher mit Installationstipps nicht weiterhelfen.

unpainted
Full Member
***
Offline Offline

Activity: 182
Merit: 144


A voice for open source


View Profile WWW
April 27, 2025, 08:17:57 PM
Merited by Buchi-88 (1), Cricktor (1)
 #4

Versuche es mal mit

Code:
pip install requests

Open Source Firmware for the Lucky Miner LV07
https://github.com/un-painted-org/ESP-Miner/wiki
Keule
Newbie
*
Offline Offline

Activity: 2
Merit: 2


View Profile
May 04, 2025, 07:04:54 AM
Last edit: May 04, 2025, 07:15:21 AM by Keule
Merited by Cricktor (1)
 #5

~~~
Wie hast du denn dein Python installiert bzw. eingerichtet. Auf den ersten Blick ist das Problem, daß das Python-Modul "Requests" nicht gefunden wird. Das gehört aber meines Wissens, bin nicht so der Python-Experte, zum Standard-Umfang bzw. muss eben mit- oder zusätzlich installiert werden.

Ich benutze Python unter Windows ziemlich wenig, kann daher mit Installationstipps nicht weiterhelfen.

Habe nur den Installer von der HP geladen und installiert.


Versuche es mal mit

Code:
pip install requests

Sieht glaube ich ganz gut aus, dann probiere ich mal.

Code:
C:\WINDOWS\system32>pip install requests
Collecting requests
  Downloading requests-2.32.3-py3-none-any.whl.metadata (4.6 kB)
Collecting charset-normalizer<4,>=2 (from requests)
  Downloading charset_normalizer-3.4.2-cp313-cp313-win_amd64.whl.metadata (36 kB)
Collecting idna<4,>=2.5 (from requests)
  Downloading idna-3.10-py3-none-any.whl.metadata (10 kB)
Collecting urllib3<3,>=1.21.1 (from requests)
  Downloading urllib3-2.4.0-py3-none-any.whl.metadata (6.5 kB)
Collecting certifi>=2017.4.17 (from requests)
  Downloading certifi-2025.4.26-py3-none-any.whl.metadata (2.5 kB)
Downloading requests-2.32.3-py3-none-any.whl (64 kB)
Downloading certifi-2025.4.26-py3-none-any.whl (159 kB)
Downloading charset_normalizer-3.4.2-cp313-cp313-win_amd64.whl (105 kB)
Downloading idna-3.10-py3-none-any.whl (70 kB)
Downloading urllib3-2.4.0-py3-none-any.whl (128 kB)
Installing collected packages: urllib3, idna, charset-normalizer, certifi, requests
Successfully installed certifi-2025.4.26 charset-normalizer-3.4.2 idna-3.10 requests-2.32.3 urllib3-2.4.0

[notice] A new release of pip is available: 25.0.1 -> 25.1.1
[notice] To update, run: python.exe -m pip install --upgrade pip

C:\WINDOWS\system32>




Klasse, nun läuft das Skript. Vielen Dank für die Kompetente Hilfe!!!
Pages: [1]
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!