Les outils de gestion d’énergie/alimentation dans Windows Vista et Windows 2003


Suite aux Microsoft TechDays et à l’offre que notre partenaire ACER a fait sur les machines qu’ils nous ont prêté, j’ai acheté un ACER Power 2000. Très bonne machine, très compacte et très sympa. Elle ne fait pas un bruit, fonctionne super bien avec Vista, bref le bonheur.


Le seul truc, c’est que j’ai joué avec les paramètres d’énergies (et pas à travers les outils de vista) mais à travers un soft qui m’avais permis de régler des problèmes de veille avec Windows XP. En gros, je n’aurais pas dû (c’est comme toujours, on se dit qu’il ne faut pas le faire mais on le fait quand même). Et Murphy obligeant, je ne me suis aperçu des problèmes engendrés que bien plus tard. Trop tard pour faire un point de restauration. Le problème n’est pas bien compliqué : mon ordinateur ne se met pas en veille correctement.


Evidemment, j’ai commencé par regarder dans les paramètres d’alimentation du panneau de configuration.  Tout semblait correct, le mode « normal » était sélectionné par défaut, les veilles étaient positionné correctement. Alors d’où venait le problème ?


Je me suis donc mis à la recherche d’information. A travers http://www.live.com, je suis rapidement arrivé sur la page http://www.microsoft.com/whdc/system/pnppwr/powermgmt/default.mspx et j’ai lu la présentation du WINHEC. C’est un top événement qui a lieu uniquement aux US à destination des développeurs et constructeurs de hardware. A ne pas rater pour tous ceux qui développent drivers, BIOS et autres logiciel de bas niveau. Un peu de lecture rapide et je tombe sur une présentation remarquablement bien faite : Power Management in Windows Vista [WinHEC 2006; 459 KB]. J’y trouve notamment les informations sur les différents modes de veilles, le nom d’un outil en ligne de commande « powercfg.exe », que les infos sont stockées dans le registre sous HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power et aussi que Vista supporte la programmation des modes de veille par GPO. Bref, tout ce qu’il faut pour que je trouve d’où vient le problème.


Je me lance donc à l’attaque de l’outil powercfg avec la base de registre ouverte à côté histoire de voir. La doc complète de powercfg se trouve en tapant « powercfg /? » (dans la langue de l’OS) sinon sur le site TechNet ici (en anglais). L’outil permet en fait d’avoir les principales infos et effectuer des modifications de base. La base de registre est surtout constituée de GUID avec des valeurs de paramétrage. L’utilisation massive de GUID rend la lecture humaine assez difficile.


La base de registre donne ça :


PowerSettings base de registre


Et chaque sous système ressemble à ça (pas super lisible en général, là, c’est assez facile, il s’agit du disque) :


PowerSettings base de registre - détail


Du coup, j’ai utilisé la commande pour avoir la description de tous les GUID : powercfg /aliases


Ca donne la sortie suivante qui fait le lien entre le nom court du périphérique et le GUID


a1841308-3541-4fab-bc81-f71556f20b4a  SCHEME_MAX


8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c  SCHEME_MIN


381b4222-f694-41f0-9685-ff5bb260df2e  SCHEME_BALANCED


fea3413e-7e05-4911-9a71-700331f1c294  SUB_NONE


238c9fa8-0aad-41ed-83f4-97be242c8f20  SUB_SLEEP


29f6c1db-86da-48c5-9fdb-f2b67b1f44da  STANDBYIDLE


9d7815a6-7ee4-497e-8888-515a05f02364  HIBERNATEIDLE


94ac6d29-73ce-41a6-809f-6363ba21b47e  HYBRIDSLEEP


b7a27025-e569-46c2-a504-2b96cad225a1  CRITICALSLEEP


7516b95f-f776-4464-8c53-06167f40cc99  SUB_VIDEO


3c0bc021-c8a8-4e07-a973-6b14cbcb2b7e  VIDEOIDLE


90959d22-d6a1-49b9-af93-bce885ad335b  VIDEOADAPT


0012ee47-9041-4b5d-9b77-535fba8b1442  SUB_DISK


6738e2c4-e8a5-4a42-b16a-e040e769756e  DISKIDLE


4f971e89-eebd-4455-a8de-9e59040e7347  SUB_BUTTONS


7648efa3-dd9c-4e3e-b566-50f929386280  PBUTTONACTION


96996bc0-ad50-47ec-923b-6f41874dd9eb  SBUTTONACTION


5ca83367-6e45-459f-a27b-476b1d01c936  LIDACTION


a7066653-8d6c-40a8-910e-a1f54b84c7e5  UIBUTTON_ACTION


e73a048d-bf27-4f12-9731-8b2076e8891f  SUB_BATTERY


637ea02f-bbcb-4015-8e2c-a1c7b9c0b546  BATACTIONCRIT


9a66d8d7-4ff7-4ef9-b5a2-5a326ca2a469  BATLEVELCRIT


d8742dcb-3e6a-4b3c-b3fe-374623cdcf06  BATACTIONLOW


8183ba9a-e910-48da-8769-14ae6dc1170a  BATLEVELLOW


54533251-82be-4824-96c1-47b60b740d00  SUB_PROCESSOR


bc5038f7-23e0-4960-96da-33abaf5935ec  PROCTHROTTLEMAX


893dee8e-2bef-41e0-89c6-b55d0929964c  PROCTHROTTLEMIN


68f262a7-f621-4069-b9a5-4874169be23c  PROCIDLE


bbdc3814-18e9-4463-8a55-d197327c45c0  PROCPERF


0e796bdb-100d-47d6-a2d5-f7d2daa51f51  CONSOLELOCK


501a4d13-42af-4429-9fd1-a8218c268e20  SUB_PCIEXPRESS


ee12f906-d277-404b-b6da-e5fa1a576df5  ASPM


Ensuite, il est possible de vérifier que chaque valeur ACSettingIndex (sur secteur) et DCSettingIndex (sur batterie) est bien positionnée en fonction de chaque périphérique.


Quand au paramétrage du réveil de l’ordinateur en fonction du périphérique, cela se fait facilement au travers de la commande « powercfg -devicequery wake_armed » qui permet de lister tous les périphériques qui permettent de réveiller le système. Ensuite, il est possible de faire un « powercfg -devicedisablewake "Microsoft USB IntelliMouse Explorer" » pour désactiver la souris par exemple (attention, le nom des périphériques est souvent dans la langue locale de l’OS). Et pour l’activer : « powercfg -deviceenablewake "Microsoft USB IntelliMouse Explorer" »


Après avoir joué un peu, je me suis aperçu que tout était à peu près bien paramétré,  mais que mon problème venait d’un mauvais paramétrage du mode de mise en veille entre mon BIOS (positionné en S1) et le paramétrage de Vista (positionné en S3). Le positionnement en S3 a été fait par l’appli que j’avais utilisé.


Mais je ne me suis pas arrêté là et j’ai testé le paramétrage des modes veilles par les GPO. Un petit coup de gpedit.msc et la console se lance. Rien de bien compliqué, en quelques cliques, on trouve les infos pour la gestion d’alimentation :


GPO base de registre gestion d'alimentation


L’intérêt de l’utilisation des GPO pour gérer les modes de veilles est qu’elle est prioritaire sur la configuration de l’utilisateur. Du coup, cela évite à la maison avec les enfants ou au boulot avec les utilisateurs d’avoir les paramétrages modifiés.


J’ai donc configuré les principaux paramètres directement dans la GPO et maintenant, je suis tranquille J


 

Skip to main content