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
lespocky 04. Apr 2017

Der scheinbar komische Wert 192, der fest mitgegeben werden muss, ist vermutlich ein Byte...

captain_spaulding 27. Mär 2017

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

aha47 26. Mär 2017

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

scheuerseife 25. Mär 2017

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

1ras 24. Mär 2017

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



Anzeige

Stellenmarkt
  1. Endress+Hauser Systemplan GmbH, Durmersheim
  2. Information Factory Deutschland GmbH, Nürnberg
  3. CHEFS CULINAR West GmbH & Co. KG, Weeze
  4. headwaypersonal gmbh, Regensburg


Anzeige
Top-Angebote
  1. 184,90€ statt 199,90€
  2. (u. a. Assassins Creed Origins 39,99€, Watch Dogs 2 18,99€, The Division 16,99€, Steep 17...
  3. mit Gutscheincode "PCGBALLZ" (-23%) 45,99€

Folgen Sie uns
       


  1. Festnetz und Mobilfunk

    Telekom kämpft mit Zerstörungen durch den Orkan Friederike

  2. God of War

    Papa Kratos kämpft ab April 2018

  3. Domain

    Richard Gutjahr pfändet Compact-online.de

  4. Carsharing

    Drivenow und Car2Go wollen fusionieren

  5. Autonomes Fahren

    Alstom testet automatisierten Zugbetrieb

  6. Detectron

    Facebook gibt eigene Objekterkennung frei

  7. Mavic Air

    DJI präsentiert neuen Falt-Copter

  8. Apple

    Homepod soll ab Frühjahr 2018 in Deutschland erhältlich sein

  9. 860 Evo und 860 Pro

    Samsungs SSDs sind flotter und sparsamer

  10. Mozilla

    Firefox Quantum wird mit Version 58 noch schneller



Haben wir etwas übersehen?

E-Mail an news@golem.de


Anzeige
Star Citizen Alpha 3.0 angespielt: Es wird immer schwieriger, sich auszuloggen
Star Citizen Alpha 3.0 angespielt
Es wird immer schwieriger, sich auszuloggen
  1. Cloud Imperium Games Star Citizen bekommt erst Polituren und dann Reparaturen
  2. Star Citizen Reaktionen auf Gameplay und Bildraten von Alpha 3.0
  3. Squadron 42 Mark Hamill fliegt mit 16 GByte RAM und SSD

Vorschau Kinofilme 2018: Lara, Han und Player One
Vorschau Kinofilme 2018
Lara, Han und Player One
  1. Kinofilme 2017 Rückkehr der Replikanten und Triumph der Nasa-Frauen
  2. Star Wars - Die letzten Jedi Viel Luke und zu viel Unfug

Preiswertes Grafik-Dock ausprobiert: Ein eGPU-Biest für unter 50 Euro
Preiswertes Grafik-Dock ausprobiert
Ein eGPU-Biest für unter 50 Euro
  1. XG Station Pro Asus' zweite eGPU-Box ist schlicht
  2. Zotac Amp Box (Mini) TB3-Gehäuse eignen sich für eGPUs oder SSDs
  3. Snpr External Graphics Enclosure KFA2s Grafikbox samt Geforce GTX 1060 kostet 500 Euro

  1. Re: Domains zu pfänden sollte verboten sein

    Der Held vom... | 02:24

  2. Re: Heißt der Markt wird geteilt und der Preis...

    sofries | 02:12

  3. Re: Zum IT-Aspekt: Pfändung einer Domäne gehört...

    Iomegan | 02:03

  4. Re: Nutzen?

    CruZer | 02:00

  5. Re: Ich mag Linux ja...

    Seitan-Sushi-Fan | 01:58


  1. 18:19

  2. 18:08

  3. 17:53

  4. 17:42

  5. 17:33

  6. 17:27

  7. 17:14

  8. 16:14


  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