Abo
  • Services:
Anzeige
Lüfter vor Analysetool
Lüfter vor Analysetool (Bild: Matthias Riegler)

Microsoft hilft mit

Grundsätzlich kann jede ausführbare Datei mit Hilfe eines Decompilers analysiert und in eine lesbare Programmiersprache zurückübersetzt werden. Bei .NET geht es sogar einen Schritt weiter: Der ursprüngliche Quellcode lässt sich mit Ausnahme der Kommentare fast vollständig wiederherstellen.

Ich entscheide mich, mein Glück mit dem .NET Decompiler ILSPY zu versuchen. Nach dem Öffnen der DLL in ILSPY werde ich mit einer Vielzahl an Klassen begrüßt - und lande einen Volltreffer: GridPlusControl. Das klingt nach dem, was ich suche!

Anzeige
  • NZXT Grid+ (Bild: Matthias Riegler)
  • Steuerplatine, Frontseite (Bild: Matthias Riegler)
  • Steuerplatine, Rückseite (Bild: Matthias Riegler)
  • ILSpy (Bild: Matthias Riegler)
ILSpy (Bild: Matthias Riegler)

Die Drehzahl steuern

Während ich den Quellcode überfliege, werde ich auf die Funktion SetGridPlusVoltage() aufmerksam. Es werden zwei Funktionen aus weiteren Klassen aufgerufen, die ich mir daraufhin anschaue. Was zunächst komplex aussieht, stellt sich als simpel heraus. Zunächst wird eine ID gesendet, darauf ein Index, gefolgt von dem Dezimalwert 192, gefolgt von zwei Null-Bytes. Warum 192 gesendet wird, ist mir nicht ganz klar, auch die beiden Null-Bytes irritieren mich. Anschließend wird eine Spannung übermittelt. Insgesamt ergibt sich also folgende Kette (hier für 12,4 Volt):


[ID, index ,192, 0, 0, 12, 40]

Die Eingangsspannung liegt in einem Intervall von 0 bis 12,4 Volt. Um diese zu übertragen, wird das vorletzte Byte auf den Wert vor dem Komma gesetzt. Das letzte Byte wird in zwei 4-Bit Blöcke unterteilt, welche die erste und zweite Nachkommastelle aufnehmen.

Die 0,01 Volt-Schritte verwerfe ich, so genau muss ich die Lüfter nicht steuern können. Sauber aufgeschrieben sieht die Prozedur in Python so aus:

  1. def set_voltage(index , voltage):
  2. vsteps = int(voltage*10)
  3. return [ID_SET_VOLTAGE, index
  4. , 192, 0, 0, (vsteps/10), ((vsteps % 10) << 4)]

Die Drehzahl auslesen

Die Drehzahl kann ich über die Spannung regeln. Wenn der Computer unter dem Schreibtisch steht, ist es mühselig, jedes Mal die Verkleidung zu öffnen und zu schauen, ob meine neuen Einstellungen übernommen wurden. Ich schaue mir wieder die Klasse an und finde die Funktion mit dem Namen GetAllRPM(). Das scheint genau das zu sein, was ich brauche. Eine zwei Byte lange Anfrage resultiert in einer fünf Byte langen Antwort.

Die Anfrage:


[ID_GET_RPM, 1]

Drei der fünf Byte scheinen fix zu sein - 60 Prozent Überschuss ist schon eine Leistung! Auswertung der Antwort:

  1. def get_rpm_cmd(index):
  2. return [138, index]
  3. def get_rpm_response(response):
  4. return (int(response[3]) << 8) + int(response[4])

 NZXT: Lüfter auch unter Linux steuernDas Programm testen 

eye home zur Startseite
captain_spaulding 27. Mär 2017

Da dieses Teil einen ganz normalen Serial Port benutzt, macht zumindest dieser Teil keine...

Themenstart

aha47 26. Mär 2017

Welche jetzt konkret? Stimmt, leider sind die "meisten Linux User" offenbar aus der...

Themenstart

scheuerseife 25. Mär 2017

Eine Alternative Java Software für das NZXT Grid+ Hat RoelGo schon 2016 unter der MIT...

Themenstart

1ras 24. Mär 2017

Ja, kenne ich. Von den USB nach RS-232 Wandlern gibt es leider ziemlich viele...

Themenstart

neocron 23. Mär 2017

was hat der hier legale Teil "Reverse Engineering" mit dem resultierenden Code zu tun...

Themenstart

Kommentieren



Anzeige

Stellenmarkt
  1. über HRM CONSULTING GmbH, Saarbrücken
  2. arago GmbH, Frankfurt am Main
  3. Robert Bosch GmbH, Plochingen
  4. ifm electronic gmbh, Tettnang, Essen


Anzeige
Blu-ray-Angebote
  1. (u. a. Spaceballs, Training Day, Der längste Tag)
  2. 23,99€ (Vorbesteller-Preisgarantie)
  3. 29,99€ (Vorbesteller-Preisgarantie)

Folgen Sie uns
       


  1. Cloud Native Con

    Kubernetes 1.6 versteckt Container-Dienste

  2. Blizzard

    Heroes of the Storm 2.0 bekommt Besuch aus Diablo

  3. APT29

    Staatshacker nutzen Tors Domain-Fronting

  4. Stellenanzeige

    Netflix führt ausgefeilten Kampf gegen illegale Kopien

  5. Xbox One

    Neue Firmware mit Beam und Erfolgsmonitoring

  6. Samsung

    Neue Gear 360 kann in 4K filmen

  7. DeX im Hands On

    Samsung bringt eigene Desktop-Umgebung für Smartphones

  8. Galaxy S8 und S8+ im Kurztest

    Samsung setzt auf langgezogenes Display und Bixby

  9. Erazer-Serie

    Medion bringt mehrere Komplett-PCs mit AMDs Ryzen heraus

  10. DJI

    Drohnen sollen ihre Position und ihre ID funken



Haben wir etwas übersehen?

E-Mail an news@golem.de


Anzeige
Vikings im Kurztest: Tiefgekühlt kämpfen
Vikings im Kurztest
Tiefgekühlt kämpfen
  1. Nier Automata im Test Stilvolle Action mit Überraschungen
  2. Torment im Test Spiel mit dem Text vom Tod
  3. Nioh im Test Brutal schwierige Samurai-Action

WLAN-Störerhaftung: Wie gefährlich sind die Netzsperrenpläne der Regierung?
WLAN-Störerhaftung
Wie gefährlich sind die Netzsperrenpläne der Regierung?
  1. Telia Schwedischer ISP muss Nutzerdaten herausgeben
  2. Die Woche im Video Dumme Handys, kernige Prozessoren und Zeldaaaaaaaaaa!
  3. Störerhaftung Regierung will Netzsperren statt Abmahnkosten

In eigener Sache: Golem.de sucht Marketing Manager (w/m)
In eigener Sache
Golem.de sucht Marketing Manager (w/m)
  1. In eigener Sache Golem.de geht auf Jobmessen
  2. In eigener Sache Golem.de kommt jetzt sicher ins Haus - per HTTPS
  3. In eigener Sache Unterstützung für die Schlussredaktion gesucht!

  1. Re: Das Problem ist nur...

    m9898 | 00:47

  2. Re: Und nach 1,5 Jahren auch wieder Schrott wegen...

    DerSkeptiker | 00:44

  3. Re: Auch für RC-Helikopter?

    m9898 | 00:36

  4. Re: Scheint so als würde denen das Geld langsam...

    Vaako | 00:33

  5. Re: Was wurde eigentlich aus dem HDMI-In?

    Hellsingexe | 00:30


  1. 18:40

  2. 18:19

  3. 18:01

  4. 17:43

  5. 17:25

  6. 17:00

  7. 17:00

  8. 17:00


  1. Themen
  2. A
  3. B
  4. C
  5. D
  6. E
  7. F
  8. G
  9. H
  10. I
  11. J
  12. K
  13. L
  14. M
  15. N
  16. O
  17. P
  18. Q
  19. R
  20. S
  21. T
  22. U
  23. V
  24. W
  25. X
  26. Y
  27. Z
  28. #
 
    •  / 
    Zum Artikel