Antminer S9 mit Braiins OS Automation – Automatische Leistungsbegrenzung für den Antminer S9 mit Braiins OS (Schutz vor Überlastung)

Beim Betrieb eines Antminer S9 mit Braiins OS kann es vorkommen, dass durch externe Skripte oder Automatisierungen (z. B. zur Steuerung über Solarüberschuss) zu hohe Leistungswerte in die Konfiguration geschrieben werden. Dies kann die Hardware überlasten und Schäden verursachen.

Das Skript /root/power_limit_check.sh dient als zusätzlicher Schutzmechanismus, indem es regelmäßig überprüft, ob die Parameter power_target oder psu_power_limit zu hoch gesetzt wurden. Falls ein zu hoher Wert erkannt wird, setzt das Skript diesen automatisch auf einen sicheren Maximalwert zurück (1200 W statt 1420+ W).

Funktionsweise:

  • Liest die aktuellen Werte aus der Konfigurationsdatei /etc/bosminer.toml
  • Prüft, ob power_target oder psu_power_limit über der zulässigen Grenze liegen
  • Falls nötig, korrigiert es den Wert auf 1200 W
  • Falls BOSminer läuft, wird dieser nach der Anpassung automatisch neugestartet

Das Skript kann über Crontab oder das Braiins OS Webinterface periodisch ausgeführt werden, um die Miner-Einstellungen kontinuierlich zu überwachen und zu schützen.

🔹 Vorteile des Skripts:
✅ Schutz vor fehlerhaften oder manipulierenden Konfigurationen
✅ Automatische Korrektur bei kritischen Einstellungen
✅ Verhindert Überlastung der Hardware
✅ Integration in bestehende Automatisierungen (z. B. Solarstromoptimierung)

Automatisiert kann der Check durch periodischen Aufruf via Cronjob erfolgen. Folgenden Code in ein neues Shell Skript einfügen, anschließend ausführbar machen, testen und abschließend als Cronjob entweder über Braiins OS oder direkt über crontab in Konsole aufnehmen.

#!/bin/sh
# Script prüft, auf Antminer S9 mit Braiins OS ob in Konfiguration eine höhere Leistung voreingestellt wurden
# als maximal vorgesehen. Dient als zusätzlichen Schutz gegen versehentliche Falschkonfiguration durch
# beispielsweise automatisiertes Anpassen der Bosminer Konfig durch Fremdskripte
#(z.B. aus Automationen, wie bei z.B. Solarüberschuss Werte, welche ferngesteuert in die Konfig als Ziel Leistung übergeben werden, usw.)

#Wenn zu hoch gesetzter Wert im Parameter power_target bzw. power_target erkannt wurde, dann wird dieser Wert
#automatisch mit dem vordefinierten sicheren Pauschalwert überschrieben.
#Wenn der Mining Prozess gerade läuft, dann wird anschließend der Miner neu gestartet, damit die geänderte Konfig aktiv wird.

#Skript mus ausführ gemacht sein: chmod +x /root/power_limit_check.sh
#Manueller Testlauf: /root/power_limit_check.sh

#Skript kann beispierlsweise periodisch über Crontab oder z.B. Cronjob Verwaltung auch im Braiins OS Webinterface aufgerufen werden
#Crontab Beispiel:
# crontab -e
# */5 * * * * /root/power_limit_check.sh >> /var/log/power_check.log 2>&1

CONFIG_FILE="/etc/bosminer.toml"
MAX_POWER_LIMIT=1420
SAFE_POWER_LIMIT=1200

echo "bosminer check auf zu hoch gesetzte Target Werte..."

 

# Aktuelle Werte aus bosminer.toml auslesen
CURRENT_POWER_TARGET=$(grep -E '^\s*power_target\s*=' "$CONFIG_FILE" | awk -F'=' '{print $2}' | tr -d '[:space:]"')
CURRENT_PSU_LIMIT=$(grep -E '^\s*psu_power_limit\s*=' "$CONFIG_FILE" | awk -F'=' '{print $2}' | tr -d '[:space:]"')

FIXED=false

# Funktion zum Prüfen, ob eine Variable eine Zahl ist
is_number() {
[ "$1" -eq "$1" ] 2>/dev/null
}

# Prüfung von power_target
if is_number "$CURRENT_POWER_TARGET"; then
if [ "$CURRENT_POWER_TARGET" -gt "$MAX_POWER_LIMIT" ]; then
echo "WARNUNG: power_target zu hoch ($CURRENT_POWER_TARGET W). Reduziere auf $SAFE_POWER_LIMIT W."
sed -i "s/power_target = .*/power_target = $SAFE_POWER_LIMIT/" "$CONFIG_FILE"
FIXED=true
else
echo "Check Parameter [power_target] : OK ($CURRENT_POWER_TARGET W)."
fi
else
echo "Check Parameter [power_target] : Parameter nicht gefunden. Keine Anpassung notwendig."
fi

# Prüfung von psu_power_limit
if is_number "$CURRENT_PSU_LIMIT"; then
if [ "$CURRENT_PSU_LIMIT" -gt "$MAX_POWER_LIMIT" ]; then
echo "WARNUNG: psu_power_limit zu hoch ($CURRENT_PSU_LIMIT W). Reduziere auf $SAFE_POWER_LIMIT W."
sed -i "s/psu_power_limit = .*/psu_power_limit = $SAFE_POWER_LIMIT/" "$CONFIG_FILE"
FIXED=true
else
echo "Check Parameter [psu_power_limit] : OK ($CURRENT_PSU_LIMIT W)."
fi
else
echo "Check Parameter [psu_power_limit] : Parameter nicht gefunden. Keine Anpassung notwendig."
fi

# Falls Änderungen vorgenommen wurden, BOSminer nur neu starten, wenn er lief
if [ "$FIXED" = true ] && [ "$BOSMINER_RUNNING" = true ]; then
# Überprüfen, ob bosminer läuft
if pgrep -x "bosminer" > /dev/null; then
BOSMINER_RUNNING=true
echo "bosminer ist aktiv."
else
BOSMINER_RUNNING=false
echo "bosminer läuft nicht."
fi

echo "Änderungen vorgenommen. Starte BOSminer neu..."
/etc/init.d/bosminer restart
elif [ "$FIXED" = true ]; then
echo "Änderungen vorgenommen, aber bosminer war nicht aktiv – kein Neustart notwendig."
fi

Veröffentlicht in Antminer S9, Hausautomation.

Ralf Bösenberg

Als gelernter Fachinformatiker begeistere ich mich für viele aktuelle IT Themen. Ich befasse mich mit Programmierung unter VB.Net, VB6, Linux, verbringe viel Zeit mit der Gestaltung und Administration von Internet Servern und Web Seiten und bin gerne und jederzeit ein freundlicher und kompetenter Ansprechpartner für Kunden und Interessenten.

www.Ralf.Bösenberg.info

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert