Verhindern, dass die Mouse den Computer aus dem Ruhezustand aufweckt (Windows)

Ich arbeite an vielen Projekten auf meinem Windows 7 Rechner über mehrere Tage hinweg. Den Computer deswegen nachts durchlaufen zu lassen, wäre Energieverschwendung. Ihn jedesmal abends herunterfahren und dann am nächsten Morgen wieder neu zu starten würde mit sich bringen, dass ich alle Programme neu laden und darin die Dateien neu laden müsste, was eine Heidenarbeit wäre. Ganz zu schweigen davon, dass ich mir aufschreiben müsste, wo ich gerade an was arbeite.

Aber Windows hat ja einen Ruhezustand-Modus, in den man den Computer versetzen kann. Auch Hibernate, Sleep Mode oder Energiesparmodus genannt. Seit Windows XP funktioniert der eigentlich auch recht anständig, vorher gab es hier und da noch ein paar kleine Problemchen. Und mit Windows 7 ist er echt brauchbar.

Das Problem

Ich habe mir meinen Einschaltknopf am PC so konfiguriert, dass er bei Druck darauf in den Ruhezustand geht. Und am nächsten Morgen drücke ich wieder auf den Einschaltknopf und tadaaa - das Windows steht innerhalb von Sekunden wieder so da, wie ich am vorherigen Tag aufgehört habe. Wunderbar und so weit so gut.

Jetzt habe ich mir letztens eine neue Mouse gekauft und bei der hatte ich das Problem, dass die wohl ein bisschen "nervös" ist und den Computer, nachdem er in den Sleep Mode gefahren ist (dann fängt bei mir die Power-LED an zu blinken), gleich wieder hochfährt. Erst hatte ich keine Ahnung, woran das liegen mag, aber da eigentlich nur die Mouse neu war, hatte ich die schnel in Verdacht und das Ausschalten des USB-Ports für das Empfangs-Dongles für die Maus gab dann Ruhe. Nun wollte ich aber auch nicht täglich den USB-Port ein- und ausschalten. Dafür musste es doch eine andere Lösung geben.

Die Standardlösung

Und eine andere Lösung gibt es. Und die geht normalerweise so: Man geht in die Systemsteuerung, doppelklickt dort auf Maus und wählt dann den Reiter Hardware aus:



Dort kann man dann einen Doppelklick auf eine Maus machen, dann auf "Einstellungen ändern" klicken und in dem dann erscheinenden Fenster auf den Reiter "Energieverwaltung":



Dort nimmt man dann den Haken bei "Gerät kann den Computer aus dem Ruhezustand aktivieren" heraus und damit sollte das Problem eigentlich gelöst sein. Normalerweise sollte man dann, wenn der Computer im Standby ist, wie wild an der Maus ruckeln können, das aber nicht den Computer aufwecken.

Die erweiterte Lösung

Also machte ich mich auf die Suche, den richtigen Haken zu finden. Das ist gar nicht so einfach, wenn man mehrere Mäuse hat. Denn es ist nicht ausgeschlossen, dass sich die billige China-Maus als "HID-Device" oder "USB-Eingabegerät" ausgibt, einfach weil im Treiber kein Markenname einprogrammiert wurde. Für mich war es darum einfach, über den Geräte-Manager zu gehen. Der ist auch zu finden unter Systemsteuerung bzw. mit den Tasten Windows + Pause erreichbar. Der zeigt einem nämlich alles, was Maus sein könnte unter "Eingabegeräte" an:



Ein Doppelklick auf ein Gerät bringt einen dann direkt zu dem Eigenschaften-Fenster, bei dem auf man "Energieverwaltung" klicken kann und schauen, ob da "Gerät kann den Computer aus dem Ruhezustand aktivieren" angehakt ist oder nicht.

Ich bin alle Geräte durchgegangen und bei allen war kein Haken da. Was nun tun? Das kann doch eigentlich gar nicht sein. Zur Sicherheit nochmal in den Ruhezustand, gewartet, die Maus bewegt - Computer wacht immer noch auf - argh!

Die Expertenlösung

Ich erinnerte mich, dass ich das Problem schon einmal vor Jahren hatte, nur an die Lösung erinnerte ich mich nicht mehr genau, es hatte irgendwas mit der Kommandozeile zu tun... Nach reichlich Suchmaschinenbefragung, durchlesen von vielen weniger relevanten Kommentaren in Foren, die alle die oben beschriebene Normallösung rieten und in meinem speziellen Fall unnütz waren, fiel mein Blick dann auf die Worte "cmd" und "powercfg" in einer Google-Vorschau, bei der es bei mir im Hinterkopf klingelte.

Also eine Eingabeaufforderung aufgemacht und "powercfg -?" eingegeben. Zum Glück ist das mit Windows mitgelieferte Tool redefreudig (ja, fast schon zu redefreudig) und erklärt detailliert, was man mit ihm tun kann.

Wichtig ist erstmal der Befehl: powercfg -lastwake. Der zeigt naämlich an, welches Gerät das letzte mal den Computer aufgeweckt hat. Bei mir war die Antwort darauf "USB\ROOT_HUB20\4&13f07bda&0". Was wohl zu bedeuten hat: das Gerät mit der Adresse 4&13f07bda&0 am USB-Hub mit der Adresse 20 hat den Computer aufgeweckt. "4&13f07bda&0" dürfte also der Übeltäter sein

Der nächste wichtige Befehl ist powercfg -DEVICEDISABLEWAKE "Geraetename". Der macht eigentlich genau das gleiche, wie wir das oben händisch gemacht haben: den Haken bei "Gerät kann den Computer aus dem Ruhezustand aktivieren" herausnehmen, nur halt auf System-Ebene und nicht auf Benutzer-Ebene.

powercfg -DEVICEDISABLEWAKE "USB\ROOT_HUB20\4&13f07bda&0" führte allerdings nur zu einer Fehlermeldung, dass das Gerät nicht gefunden werden könnte. Irgendwie wollte der Befehl also etwas anderes als Gerätename.

Da hilft der Befehl POWERCFG -DEVICEQUERY wake_armed. Der zeigt nämlich an, welche Geräte denn überhaupt noch in der Lage sind, den PC aufzuwecken. Und da bekam ich als Antwort "HID-Tastatur (014)" zurück.

Und powercfg -DEVICEDISABLEWAKE "HID-Tastatur (014)" wurde dann auch ohne weitere Fehlermeldung ausgeführt. Und war erfolgreich, wie ein anschließender kurzer Test zeigte - ich konnte fröhlich die Maus bewegen, der Computer schlief weiter. Prima!

Die Maus hatte sich also als Tastatur ausgegeben. Wahrscheinlich deshalb, weil der chinesische Hersteller sich die Arbeit gespart hatte und einen Standardtreiber benutzt hatte, der halt für Tastaturen, Mäuse und Joypads gleichermaßen funktioniert - und sich immer als Tastatur ausgibt. Dem HID-Interface ist es nämlich eigentlich egal, ob Tastatur, Mouse oder Joystick. Auch eine HID-Mouse kann theoretisch Tastaturanschläge senden - das ist ja auch das Problem, warum es die Sicherheitslücke bei den Logitech-Presentern gab, mit dem man Computer übernehmen kann, aber das ist ein anderes Thema, mit dem ich mich mit einem anderen Blogeintrag beschäftige.

Ich weiß jetzt auch nicht mehr, ob ich denn auch alle Tastaturen auf einen Haken gecheckt habe und mir die Maus deswegen durchgegangen ist. Aber das ist ja jetzt auch egal, wo das Problem gelöst ist. Auf jeden Fall findet man mit dem powercfg-Tool sehr viel schneller den Verursacher, als zig Eigenschaftenseiten und Energieverwaltungsreiter einzeln anzuklicken und sich durchzuschauen.

Und damit ich das nächste mal nicht wieder eine halbe Ewigkeit in immer unübersichtlicher werdenden Suchergebnissen suchen muss, habe ich mir gleich ein kleines Script geschrieben, dass mir für das nächste mal den Großteil der Arbeit abnimmt, sollte ich mir in ein paar Jahren wieder eine Mouse kaufen, die ähnlich rumzickt. Und natürlich für Alle, die das hier lesen, nachdem sie sich dumm und dämlich nach einer Lösung gesucht haben. Ich habe dem Script mal einen sprechenden Namen gegeben, damit ich es auch wiederfinde.

verhindern-das-mouse-computer-aus-ruhezustand-aufweckt.cmd: @echo off echo folgende Geraete koennten den Rechner aufwecken: POWERCFG -DEVICEQUERY wake_armed echo das letzte Aufwecken geschah durch das Geraet: powercfg -lastwake echo . echo powercfg -DEVICEDISABLEWAKE "GERAET aus wake_armed" verhindert, dass das wieder geschieht Einfach den Code in einen Texteditor kopieren und als irgendwas.cmd auf dem Computer speichern. Einen Download einer .cmd-Datei gibt es absichtlich nicht, denn .cmd-Dateien sollte man grundsätzlich nicht downloaden und ausführen, ohne vorher in den Inhalt herein geguckt zu haben. Es könnte sich ja auch um einen Virus oder Trojaner handeln.

Und dann in der Eingabeauffordung im richtigen Pfad ausführen. Die Ausgabe sollte dann so ähnlich aussehen: d:\Batches >> mouse-weckt-rechner-auf-abstellen.cmd folgende Geraete koennten den Rechner aufwecken: HID-Tastatur (014) das letzte Aufwecken geschah durch das Geraet: USB\ROOT_HUB20\4&13f07bda&0 powercfg -DEVICEDISABLEWAKE "GERAET aus wake_armed" verhindert, dass das wieder geschieht Dann muss man noch den Befehl powercfg -DEVICEDISABLEWAKE "GERAET aus wake_armed", wobei als "GERAET aus wake_armed" ein Gerätename aus der ersten Liste (folgende Geraete koennten den Rechner aufwecken) angegeben werden muss. Ein Gerätename aus der zweite Liste (das letzte Aufwecken geschah durch das Geraet) hatte bei mir nicht funktioniert. Also richtig wäre dann: powercfg -DEVICEDISABLEWAKE "HID-Tastatur (014)".

Falls das noch nicht weiterhilft, dann mit "powercfg /?" die weiteren Funktionen ausgeben und die Optionen checken. Aber eigentlich sollte obiges ausreichen. Und bitte auch nicht wild alle Befehle von powercfg ausprobieren, damit kann man nämlich noch viel mehr machen und das kann die Energie-Konfiguration eures Computers ganz schön durcheinanderbringen.

Weiterführende Informationen

Vielleicht nur noch schnell ein paar Befehle, die im Zusammenhang mit dem Aufwecken stehen:

powercfg -DEVICEENABLEWAKE "Geraetename" kann benutzt werden, damit das Gerät den Computer wieder aufwecken kann, nachdem es dafür deaktiviert wurde. Für den Fall, dass ihr das falsche Gerät erwischt habt, weil mehrere in der ersten Liste standen, ihr aber trotzdem noch mit Knopfdruck auf die Tastatur euren PC aufwecken wollt.
Es empfiehlt sich also, die Gerätenamen, die man abschaltet irgendwo in einem Texteditor zwischenzuspeichern, damit man das eventuell schnell wieder rückgängig machen kann. Ansonsten müsste man wieder in der Systemsteuerung auf die Suche nach dem richtigen Haken gehen.

Oder sich mit powercfg -devicequery "wake_programmable" alle Geräte anzeigen lassen, für die es überhaupt einen Haken bei "Gerät kann den Computer aus dem Ruhezustand aktivieren" geben kann, weil diese hardwaretechnisch im Stande sind, ein Aufweck-Signal zu senden. In dieser Liste müsste sich dann aus die versehentlich "stummgeschaltete" Mouse befinden.

powercfg -devicequery "all_devices_verbose" ist für Leute, die es ganz genau wissen wollen und gibt eine Liste aller Geräte aus und führt für jedes Gerät auch auf, ob es im Stande ist, den PC aufzuwecken, allerdings in englisch (). Bei mir war die Liste aber sehr lang. Für mich eine Information Overdose.

powercfg -waketimers hilft eventuell, wenn der PC wie von Geisterhand zu einer bestimmten Uhrzeit aufwacht. Der Befehl listet alle sogenannten "Aktivierungszeitgeber" auf. Hinter dem sperrigen Wort verstecken sich einfach Wecker, bei denen der PC aufwacht.