59 lines
1.5 KiB
Python
59 lines
1.5 KiB
Python
import serial
|
|
import time
|
|
import glob
|
|
import binascii
|
|
import sys
|
|
|
|
# Gridseed Befehle (Hex Strings)
|
|
# Scrypt Reset: 55AA1F2816000000 + 55AA1F2817000000
|
|
# SHA256 Reset (Vermutung/Standard): 55AA1F2800000000
|
|
# Init: 55AAC000C0C0C0C00500000001000000
|
|
|
|
CMDS = {
|
|
"1": ("SHA256 Force (00)", "55AA1F2800000000"),
|
|
"2": ("Scrypt Force (16)", "55AA1F2816000000"),
|
|
"3": ("Dual/Unkown (04)", "55AA1F2804000000"),
|
|
"4": ("Reset Chip", "55AAC000808080800000000001000000"),
|
|
"5": ("Full Init", "55AAC000C0C0C0C00500000001000000")
|
|
}
|
|
|
|
def send_command(port, hex_cmd):
|
|
try:
|
|
ser = serial.Serial(port, 115200, timeout=1)
|
|
cmd_bytes = binascii.unhexlify(hex_cmd)
|
|
print(f"Sending to {port}: {hex_cmd}")
|
|
ser.write(cmd_bytes)
|
|
time.sleep(0.1)
|
|
ser.close()
|
|
return True
|
|
except Exception as e:
|
|
print(f"Error on {port}: {e}")
|
|
return False
|
|
|
|
def main():
|
|
print("=== Gridseed Mode Switcher ===")
|
|
print("Miner MUSS gestoppt sein!")
|
|
|
|
ports = glob.glob('/dev/ttyACM*')
|
|
if not ports:
|
|
print("Keine Gridseeds gefunden (/dev/ttyACM*)")
|
|
return
|
|
|
|
print(f"Gefundene Geräte: {ports}")
|
|
|
|
print("\nWähle Befehl:")
|
|
for k, v in CMDS.items():
|
|
print(f"{k}: {v[0]}")
|
|
|
|
choice = input("Auswahl (1-5): ")
|
|
|
|
if choice in CMDS:
|
|
desc, cmd = CMDS[choice]
|
|
print(f"Sende {desc}...")
|
|
for port in ports:
|
|
send_command(port, cmd)
|
|
else:
|
|
print("Ungültige Auswahl")
|
|
|
|
if __name__ == "__main__":
|
|
main() |