Wiki

Outils pour utilisateurs

Outils du site


nvram-wakeup

nvram-wakeup : installation et configuration

ATTENTION : le projet nvram-wakeup n'est plus actif depuis 2009. Il est donc conseillé de privilégier la méthode de l'ACPI plutôt que celle-ci. Elle reste la seule utilisable pour des PC qui ne supporte pas l'ACPI (très rare de nos jours)


Introduction

L'objectif de ce tutoriel est de décrire l'installation et la configuration de l'outil nvram-wakeup. Cet outil est étroitement lié à l'utilisation de votre MythBox comme un magnétoscope. Il vous permet en effet de configurer l'heure de réveil de votre boîtier.

Vous devrez avoir pris connaissance du document UTILISER VOTRE ORDINATEUR COMME UN MAGNETOSCOPE.Il résume les principes à respecter pour implémenter cette fonction.

L'autre méthode communément utilisée est le réveil par l'ACPI. Cependant, il y a des différences entre les deux méthodes, qui apportent chacune leur lot d'avantages et d'inconvénients :

  • nvram-wakeup doit être installé. La gestion de l'ACPI est déjà incluse dans votre noyau Linux,
  • nvram-wakeup touche directement à la NVRAM (mémoire vive non volatile) de votre machine, donc avant son utilisation (et non pas lors de sa configuration), il convient de bien vérifier que le bon paramétrage a été trouvé (pas d'inquiétude, c'est expliqué ci-dessous et vous serez averti), car cela peut bousiller votre NVRAM (mémoire vive non volatile). Cela n'a normalement pas d'incidence sur les BIOS récents, car on peut les remettre à zéro par jumper ou simple bouton, mais il vaut mieux être prévenu. La modification par l'ACPI n'a pas cet inconvénient,
  • nvram-wakeup ne nécessite pas de modifier les fichiers de configuration de votre système d'exploitation, contrairement au fonctionnement par l'ACPI bien souvent,
  • il n'y a pas besoin de script supplémentaire comme pour le réveil par l'ACPI,
  • nvram-wakeup permet de choisir les valeurs à mettre à jour.

L'utilitaire mythwelcome (qui sert à utiliser votre MythBox comme un magnétoscope) a été réalisé à la base pour nvram-wakeup, ce qui explique qu'il soit plus facile de l'y intégrer.

Toutes les opérations qui suivent doivent être réalisées par l'utilisateur privilégié root, dans un terminal en ligne de commande.

Installation

Un exemple basique d'installation à partir des sources (la version 0.97 est la dernière version stable) est donné ici :

cd <votre_répertoire_de_compilation>
wget http://downloads.sourceforge.net/nvram-wakeup/nvram-wakeup-0.97.tar.bz2
tar xf nvram-wakeup-0.97.tar.bz2
cd nvram-wakeup-0.97
make prefix=/usr
make prefix=/usr MANDIR=/usr/share/man install-strip

Plusieurs outils sont alors installés, dont nvram-wakeup, biosinfo et guess-helper.

Vérification de votre installation

Pour vérifier votre installation, il suffit de lancer la commande suivante :

nvram-wakeup

Trois affichages différents peuvent découler de cette commande :

  • All values are displayed as they are stored in the nvram/rtc.
    (and do not correspond necessarily to the system date/time)
    
    WakeUp  : Enabled (0xFF)
    Hour    : 18 (0x12)
    Minute  : 33 (0x21)
    Second  : 00 (0x00)
    Checksum: 0x16DB

Ceci est excellent et indique que tout fonctionne déjà. Votre installation est terminée, inutile de suivre le reste de ce tutoriel.

  • nvram-wakeup: addr_stat (0xD2) is beyond the end of nvram
    nvram-wakeup: You might want to use the --directisa command line option.

Ceci est encourageant. Comme indiqué, lancez alors nvram-wakeup --directisa, et vérifiez à nouveau ce que vous obtenez. Vous ne retomberez pas sur le cas présent. Si cela fonctionne avec cette option, n'oubliez pas de noter qu'il faut rajouter --directisa lors de toute utilisation de nvram-wakeup.

  • nvram-wakeup: Your mainboard is currently not supported.
    nvram-wakeup: Please try determining the addresses and sending the following
    nvram-wakeup: information back to the maintainers:
    nvram-wakeup:  - The addresses you found out (read README.mb)
    nvram-wakeup:  - Mainboard vendor:   Shuttle Inc
    nvram-wakeup:  - Mainboard type:     FG33
    nvram-wakeup:  - Mainboard revision: V10
    nvram-wakeup:  - BIOS vendor:        Phoenix Technologies, LTD
    nvram-wakeup:  - BIOS version:       6.00 PG
    nvram-wakeup:  - BIOS release:       04/25/2008

Vous aurez probablement un affichage de ce type, indiquant que votre carte mère n'est pas reconnue. Cependant, toutes les informations DMI (Mainboard vendor, type, …) de votre carte mère doivent être indiquées comme ci-dessus. Dans ce cas, voyez la suite du tutoriel. Dans le cas contraire, abandonnez nvram-wakeup !

Le dernier cas présenté ci-dessus sera probablement le vôtre. Dans ce cas, il va falloir que nvram-wakeup ait un descriptif de votre NVRAM. La procédure est très simple, mais un peu longue et nécessite d'être attentif, car elle nécessite plusieurs redémarrages de votre machine, ainsi que des moficiations à effectuer dans votre BIOS.

Surtout, si vous avez dû ajouter --directisa à la commande nvram-wakeup pour arriver au dernier affichage, n'oubliez pas qu'il faudra toujours le rajouter par la suite, donc lorsqu'il sera indiqué nvram-wakeup par la suite, vous devrez entrer nvram-wakeup --directisa.

Configuration de nvram-wakeup

Préparez votre machine, de façon à ce que vous puissiez la rebooter et accéder à votre BIOS dès que vous le voulez. Vous aurez besoin de connaître votre chipset. Pour cela, entrez la commande suivante :

lspci | grep Host 

Votre chipset sera indiqué derrière « Host bridge: ».

Premier lancement de guess-helper

Une fois prêt, lancez la commande suivante :

guess-helper

Un texte explique alors à peu près ce qui a été dit dans ce tutoriel. Il vous demande si la première étape peut être lancée. Étant donné que vous êtes prêt, vous pouvez entrer « y » puis valider (avec Entrée).

Plusieurs choix vont vous être proposés quant à votre chipset. Cependant, le vôtre ne sera probablement pas dans le lot, même si c'est un chipset Intel. Dans le doute, entrez « U ». Vous pouvez tenter d'entrer « i » si vous avez un chipset Intel, mais cela n'est pas recommandé, entrez « U » plutôt.

Dans tous les cas, si vous reconnaissez votre carte, entrez la lettre ou le chiffre indiqué entre crochets, sinon, entrez « U ».

Certaines configurations contiennent des gardes-fous (ou peut-être que ce sont des bugs) qui, par exemple pour « v », inscriront l'heure de réveil avec 5 minutes d'avance. Donc, si vous voulez placer l'heure actuelle + 10 minutes, il sera placé l'heure actuelle + 5 minutes. Il suffit de le prendre en compte lors de votre configuration de MythTV.

Validez. L'outil va alors vous indiquer les valeurs à entrer dans votre BIOS, qui sont les suivantes :

Day       = 31
Hour      = 23
Minute    = 59
Second    = 59
Enabled   = Yes

Ceci correspond à : jour = 31, Heure = 23, Minute = 59, Secondes = 59, Activé = Oui. Vous n'aurez peut-être pas toutes les options nécessaires dans votre BIOS, mais ce n'est pas grave. Vous avez maintenant la possibilité de tout annuler ou de redémarrer. Il faut redémarrer, donc entrez « r » et validez.

La machine va redémarrer au bout de 10 secondes. Votre commande shutdown demandera peut-être une information (en affichant « Why? ». Dans ce cas, validez et votre machine va rebooter.

Vous devez entrer dans votre BIOS au redémarrage

Première modification du BIOS

Durant chaque modification du BIOS, vous ne devez modifier QUE ce qui concerne l'heure de réveil, rien d'autre. Si vous modifiez quoi que ce soit d'autre, recommencez la procédure depuis le début, car l'outil sera perdu. Effacez auparavant les répertoires qu'il utilise : rm -fr /root/guess-*.

Les informations diffèrent selon les BIOS. Pour prendre le mien en exemple, un BIOS Phoenix Award pour Shuttle, l'option de réveil se trouve dans « Power Management Setup », sous une option « Resume by Alarm ». je place donc cette option à « Enabled ». je peux alors modifier le jour du mois, l'heure, les minutes et les secondes, que je place aux valeurs ci-dessus. Puis je valide et laisse la machine redémarrer sur l'OS.

Deuxième lancement de guess-helper et modification du BIOS

De retour dans notre terminal sous root, nous pouvons à nouveau lancer :

guess-helper

qui va nous afficher les prochaines infos à entrer dans notre BIOS :

Day       = 11
Hour      = 12
Minute    = 13
Second    = 14
Enabled   = Yes

Entrez « r » et validez pour redémarrer et entrer dans le BIOS.

Entrez vos valeurs dans le BIOS, puis validez les modifications et laissez la machine redémarrer sur votre système d'exploitation.

Troisième lancement de guess-helper et modification du BIOS

De retour dans notre terminal sous root, nous pouvons à nouveau lancer :

guess-helper

qui va nous afficher les prochaines infos à entrer dans notre BIOS :

Day       = 01
Hour      = 00
Minute    = 00
Second    = 00
Enabled   = Yes

Entrez « r » et validez pour redémarrer et entrer dans le BIOS.

Entrez vos valeurs dans le BIOS, puis validez les modifications et laissez la machine redémarrer sur votre système d'exploitation.

Quatrième lancement de guess-helper et modification du BIOS

De retour dans notre terminal sous root, nous pouvons à nouveau lancer :

guess-helper

qui va nous afficher les prochaines infos à entrer dans notre BIOS :

Day       = 01
Hour      = 00
Minute    = 00
Second    = 00
Enabled   = No

Entrez « r » et validez pour redémarrer et entrer dans le BIOS.

En clair, il s'agit simplement de désactiver le réveil dans votre BIOS, puis validez les modifications et laissez la machine redémarrer sur votre système d'exploitation.

Cinquième lancement de guess-helper

C'est le dernier lancement :

guess-helper

Il va effectuer les dernières modification, et vous indiquer le reste de la marche à suivre. Tout d'abord, selon que vous ayez besoin de directisa ou non, vous devrez soit chercher votre fichier de configuration dans ~/guess-directisa, soit dans ~/guess-nvram-module. Chacun de ces répertoires contient un fichier nvram-wakeup.conf.

Modification du fichier nvram-wakeup.conf

Éditez le fichier nvram-wakeup.conf approprié selon votre configuration :

  • pas besoin de --directisa : ~/guess-nvram-module/nvram-wakeup.conf
  • --directisa nécessaire : ~/guess-directisa/nvram-wakeup.conf

S'il n'y a qu'une valeur pour chaque élément, il n'y a pas eu de souci, et vous pouvez copier ce fichier dans “/etc”.

Sinon, pour chaque valeur en double, il faut commenter les valeurs en double (en rajoutant un dièse en début de ligne), et tester à chaque fois pour vérifier que l'on obtient les bonnes informations.

</note important>Certains BIOS nécessitent que le réveil soit désactivé dans le BIOS, pour pouvoir être modifié ailleurs. C'est la configuration actuelle, donc cela ne pose pas de souci. Cependant, lorsque c'est le cas, il faut bien faire attention à toujours désactiver le réveil lorsque l'on fait une modification dans le BIOS.</note>

Par exemple, le fichier de configuration pour ma carte mère contenait les informations suivantes :

################################################
##  Mainboard autodetection information:
##
##    - Mainboard vendor:   "Shuttle Inc"
##    - Mainboard type:     "FG33"
##    - Mainboard revision: "V10"
##    - BIOS vendor:        "Phoenix Technologies, LTD"
##    - BIOS version:       "6.00 PG"
##    - BIOS release:       "04/25/2008"

addr_stat        = 0x46
addr_day         = 0x47
addr_hour        = 0x48
addr_min         = 0x49
addr_sec         = 0x4A
addr_stat        = 0x70   # but differs somewhere else
shift_stat       = 2

Malheureusement pour moi, on peut voir que addr_stat y apparaît deux fois. C'est la pire valeur qui puisse être en double, puisqu'elle indique l'état du réveil (désactivé ou non), et est donc plus difficile à vérifier. Quoi qu'il en soit, je commente la seconde valeur :

addr_stat        = 0x46
addr_day         = 0x47
addr_hour        = 0x48
addr_min         = 0x49
addr_sec         = 0x4A
#addr_stat        = 0x70   # but differs somewhere else
shift_stat       = 2

Copiez votre fichier de configuration dans /etc selon votre cas :

cp ~/guess-directisa/nvram-wakeup.conf /etc
ou
cp ~/guess-directisa/nvram-wakeup.conf /etc

Vérification du fichier de configuration

Afin de tester le fichier, lancez la commande suivante (rajoutez --directisa si nécessaire) : nvram-wakeup -C /etc/nvram-wakeup.conf

Vous devez voir apparaître les dernières informations entrées dans le BIOS (réveil désactivé, premier jour du mois et tout le reste à minuit). Si ce n'est pas le cas, changez les valeurs commentées et relancez la commande de vérification.

une fois les valeurs correctes obtenues, il reste la dernière étape.

Dernière validation

ATTENTION : cette étape peut détruire votre configuration de BIOS et par conséquent vous empêcher de démarrer votre machine. Si vous n'avez pas obtenu toutes les bonnes valeurs du premier coup, ou si vous aviez des valeurs en double, assurez-vous de pouvoir remettre la configuration de votre BIOS à zéro le cas échéant.

C'est le moment du test. Pour cela, c'est très simple, nous allons programmer un réveil dans 10 minutes. Certains BIOS nécessitent 10 minutes au minimum (600 secondes) avant un réveil. nvram-wakeup ne vous autorisera pas à mettre moins de 10 minutes de toutes façons. C'est à prendre en compte pour la configuration de MythTV. N'oubliez pas d'ajouter --directisa pour ceux qui en ont besoin :

nvram-wakeup -C /etc/nvram-wakeup.conf -s $(($(date +%s) + 600))

Puis rebootez la machine. Vous pouvez éventuellement aller dans votre BIOS au redémarrage, et vérifier que tout a bien été activé (réveil activé, jour du mois correspondant à la date, heure différente de minuit), mais n'enregistrez pas de modification.

Si votre NVRAM est abîmée, la machine ne rebootera pas de toutes façons : il faut remettre le BIOS à zéro.

Ne laissez pas le système rebooter complètement, éteignez la machine et attendez qu'elle se réveille. Si elle ne se réveille pas, essayez 10 minutes.

Si elle ne se réveille toujours pas, la procédure est plus compliquée. Cette procédure est décrite dans la documentation en anglais, mais ne sera pas reprise ici.

Exemple de la pire situation possible

Dans mon cas, la configuration était mauvaise, donc ma NVRAM a été bousillée. Du coup, j'ai dû reconfigurer le BIOS. Les BIOS actuels, au lieu de ne plus démarrer, se contentent de remettre les valeurs du BIOS à zéro tous seuls. Il a suffit ensuite de modifier la valeur commentée, et d'effectuer le test à nouveau : cela n'a toujours pas fonctionné. En effet, dans les fichiers guess-helper.log qui se trouvent dans les répertoires guess-*, il était clairement indiqué que guess n'avait pas pu trouver l'adresse de la checksum (valeur de vérification de la cohérence) du BIOS. Du coup, même si mes valeurs étaient valides, le BIOS, lui, ne correspondait plus à la valeur de vérification, et du coup, il se remettait à zéro.

nvram-wakeup.txt · Dernière modification: 05/08/2012 par gilles74