Programmgesteuert auf die integrierte Lüftersteuerung des Laptops zugreifen?

Lesezeit: 3 Minuten

Benutzer-Avatar
stefan.at.wpf

Ich möchte auf den eingebetteten Controller meines (Windows-)Laptops zugreifen, um die Lüftergeschwindigkeit zu steuern. Derzeit mache ich das manuell mit RW Alles – Wie kann ich zB mit C auf den Embedded Controller zugreifen? Danke für jeden Hinweis!

Bitte beachten Sie: Mir ist bewusst, dass RW Everything von der Kommandozeile aus verwendet werden kann, aber es jede Sekunde aufzurufen, um ein Register zu lesen, ist nicht so schön …

  • Schauen Sie sich stackoverflow.com/q/485448/1098754 an – scheint ein guter Ausgangspunkt zu sein.

    – David Zeiger

    21. Februar 2012 um 21:17 Uhr


  • danke david. Schade, dass es unter Windows so kompliziert ist. unter linux ist es wirklich einfach, schätze ich sollte linux auf meinem laptop installieren 😀

    – stefan.at.wpf

    21. Februar 2012 um 21:34 Uhr

  • mögliches Duplikat von Wie kann ich die Lüftergeschwindigkeit meines PCs mit C++ in Vista steuern?

    – Clifford

    26. März 2012 um 8:59 Uhr

  • Darf ich fragen, warum Sie den Lüfter steuern müssen?

    – LastStar007

    25. Juli 2012 um 18:35 Uhr

  • Vielleicht passt Speedfan zu dem, was du vorhast, hast du es dir angeschaut? Geschwindigkeitsfan

    – rx_tx

    26. Juli 2012 um 2:25 Uhr


Wenn Sie RWEverything verwenden, um einfach Bits an physischen Speicheradressen zu ändern, können Sie den physischen Speicher immer zuordnen, um den lokalen Speicherplatz zu verarbeiten, indem Sie MmMapIoSpace oder eine der anderen Windows-API-Funktionen verwenden, die Ihnen RW-Zugriff auf den physischen Speicher geben. Nachdem Sie den Raumbereich zugeordnet haben, auf den Sie Zugriff benötigen, können Sie ihn direkt ansprechen und ändern.

Ich habe diese Methode immer nur zum Schreiben auf den parallelen Port unter Windows verwendet, aber ich habe ähnliche Lösungen für andere Projekte unter Linux verwendet.

Benutzer-Avatar
Lewis Kelsey

Programmgesteuert müssten Sie einen Kernelmodustreiber erstellen, der MmMapIoSpace verwendet und IOCTLs von der Hauptfunktion IRP_MJ_CONTROL verarbeitet, und dann StartServiceManager, CreateService und StartService darauf aufrufen und dann IOCTLs mit DeviceIoControl senden, um Aufgaben auszuführen, die den zugrunde liegenden physischen Speicher / E/A-Bereich bearbeiten / MSRs. Siehe: https://stackoverflow.com/a/40449498/7194773. Sie können den Lüfter nicht mehr programmieren. Beachten Sie Margarets Antwort:

Es ist erwähnenswert, dass 9 Jahre später die SuperIOs in Laptop-Systemen verschwunden sind und durch die ECs ersetzt wurden. ECs haben ihre Firmware und verwenden die PECI-Schnittstelle, um den DTS der CPU auszulesen. Auf die PWM-HW des EC kann nur vom EC aus zugegriffen werden, das Betriebssystem hat keine Kontrolle mehr über den CPU-Lüfter, es sei denn, es wird die CPU-Drosselungsrichtlinie festgelegt.

Früher konnten Sie ein logisches SuperIO-Gerät auswählen, indem Sie 07h auf den E/A-Port 2Eh (Indexregister) schreiben, wodurch die Southbridge LPC-Zyklen generiert, die den SIO veranlassen, das LDN-Register auszuwählen (bei Offset 07h im generischen Bereich: Offsets 00h–30h) und dann den LDN auf Port 2Fh (Datenregister) schreiben, um LPC-Zyklen zu generieren, die bewirken, dass der SIO diesen LDN auswählt. Dies würde dazu führen, dass der Konfigurationsraum des LDN bei Offset 30h–FFh an den Ports abgebildet wird, auf die dann unter Verwendung des Index zugegriffen werden kann und dann in das Datenregister gelesen/geschrieben werden kann. Ein Bit in der LPC-Brücke auf dem PCH wird verwendet, um auszuwählen, ob die Ports 2F/2E oder 4F/4E freigelegt werden.

Bei den ECs wurden die Register in eine Host-Ansicht und eine EC-Ansicht getrennt. Alle PWM- und PECI-Register sind keine logischen Geräte mehr und ihre Register werden nur in den MMIO-Bereich der integrierten EC-CPU abgebildet, sodass nur wenige generische Register im regulären IO-Bereich für den Host sichtbar bleiben. Einige LDNs legen IO-Basisadressregister in ihrem eigenen Bereich (Offset 30h–FFh) offen, wodurch zusätzliche Register abgebildet werden können. Die Firmware des EC verwendet den PECI-Bus, um die DTSs der CPU zu lesen und die Lüftergeschwindigkeiten bei bekannten Register-Offsets entsprechend anzupassen seinen MMIO-Raum.

1228190cookie-checkProgrammgesteuert auf die integrierte Lüftersteuerung des Laptops zugreifen?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy