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