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.
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,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.
root
, dans un terminal en ligne de commande.
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
.
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.
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: ».
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 ».
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.
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.
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.
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.
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.
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
.
Éditez le fichier nvram-wakeup.conf approprié selon votre configuration :
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
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.
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.
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.
Le problème est que chaque type de BIOS a ses propres algorithmes de calcul de la somme de vérification. Le chipset demandé au premier lancement de guess-helper
sert précisément à trouver l'algorithme à utiliser. Il ne me restait plus qu'à tous les tester. Ma première MythBox étant une Shuttle également, et utilisant l'option [3], j'ai donc effacé les répertoires ~/guess-*
, puis j'ai recommencé en mettant « 3 » au lieu de « U » (les autres options étant « i » et « v »).
Et contre toute attente, j'ai alors obtenu un fichier de configuration valide du premier coup, qui permet de mettre l'heure du BIOS à l'heure pour un Shuttle SG33G5M (et à fortiori pour un SG33G5) :
################################################ ## 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_chk_h = 0x6F addr_chk_l = 0x70
Ayant utilisé l'option de calcul de somme de vérification des Shuttle, je suis sujet au comportement indiqué précédemment (réveil programmé 5 minutes plus tôt, donc à 5 minutes au lieu de 10 avec mon test). Cela n'a pas d'importance.
Pour parer à toute éventualité, et comme ma MythBox sera de toutes façons réveillée tous les jours, je commente la valeur « addr_day », de façon à ce que seule l'heure soit mise à jour par nvram-wakeup. Puis dans le BIOS, je place le jour à « 0 », ce qui correspond à n'importe quel jour (selon les BIOS, pour certains il faut mettre 32). Ainsi, si une coupure de courant ou autre empêche le réveil, la machine se réveillera au pire le jour suivant.
Si tout fonctionne, vous avez réussi à tout configurer, et vous avez la commande nécessaire pour MythTV, qui est de la forme :
nvram-wakeup [-A|--directisa] -C /etc/nvram-wakeup.conf -s $time
en utilisant time_t
pour $time
.
À noter, pour ceux qui l'ont remarqué, que l'on peut utiliser -A
au lieu de --directisa : cela correspond à la même chose.
Ookaze (31/08/2008)