Date système invalide

Depuis deux ans maintenant, OLPC France est un centre de réparation officiel OLPC.

Le problème de « date système invalide » est le problème auquel nous avons été confronté le plus souvent: une vingtaine de machines qui sont passées entre nos mains avaient ce problème. Ces machines étaient de provenance très diverses: retour d’acheteurs du G1G1 (ayant déjà utilisé leur machine ou pas) , retour d’une machine de déploiement et même des machines neuves.

Voilà qui méritait bien un article pour détailler ce problème et ses solutions. C’est ce que je vous propose ci-dessous.

Symptôme

Intéressons-nous d’abord au symptôme de ce problème. Il peut apparaître de deux manières:

  • Légère: un message au démarrage de la machine,
  • Lourde: impossibilité de démarrer la machine.

Pour le symptôme léger, un message apparaît quelques secondes en rouge en haut de l’écran (voir photo ci-dessous) au démarrage de la machine. Cela n’empêche généralement pas le boot de la machine mais plutôt que la traditionnelle animation du personnage central, le boot se fait en mode « verbeux »: c’est-à-dire qu’il affiche en mode texte les différentes étapes de lancement du système GNU Linux. Cela peut être perturbant pour l’utilisateur mais une fois le boot passé, le plus souvent Sugar s’exécute correctement et fonctionne alors parfaitement (nous verrons plus loin quoi faire si ce n’est pas le cas).

Pour le symptôme « lourd », il est impossible de démarrer ce qui est hélas bien plus radical. L’utilisateur appuie comme d’habitude sur le bouton démarrage, la petite LED sous le bouton s’affiche mais rien ne se produit sur l’écran et la petite musique familière ne se fait pas entendre. C’est très frustrant et hélas insurmontable pour l’utilisateur.

A noter néanmoins que d’autres causes, bien plus graves que le problème de date système invalide, peuvent être à l’origine de l’impossibilité de démarrer. Il est néanmoins préférable de s’assurer d’abord que cela n’est pas lié au problème de date système invalide.

Pourquoi ?

La cause principale du problème de date système invalide est lié à un tout petit élément qui se trouve dans le XO comme dans les autres ordinateurs du marché: la pile. Et oui, pour ceux qui ne le savent pas, nos ordinateurs abritent au cœur de la carte mère, une petite pile comme celle de vos montres. Voici la photo de celle qui se trouve sur le XO-1 (marquée Panasonic en haut à gauche):


(Source: Wiki OLPC, http://wiki.laptop.org/images/8/86/XO_Motherboard.png)

Cette pile sur la carte mère des ordinateurs sert à alimenter une mémoire qui va conserver différents paramètres systèmes lorsque votre machine n’est pas alimentée par le courant. En particulier, la date et l’heure pour que vous n’ayez pas à la resaisir entre chaque allumage mais aussi des paramètres sur la configuration de la machine (type du disque par exemple).

Le problème de « date système invalide » sur le XO est lié au fait que les valeurs stockées dans cette mémoire interne sont corrompues (format de date invalide par exemple, d’où le nom de ce problème). Cette corruption se produit généralement lorsque la pile n’a pas joué son rôle et que cette mémoire a perdu son alimentation pendant un temps court ou prolongé. Plus rarement il est possible que cette mémoire n’ait pas été initialisée lors de la fabrication de la machine.

Une des causes de perte d’alimentation peut être que la pile s’est échappée de son logement. Notamment lorsque le bord ne l’enferme pas correctement.


(Source: Wiki OLPC, http://wiki.laptop.org/go/File:XO_bad_rtc.jpg)

Il faut remarquer néanmoins qu’une seule des machines que nous avons réparé avait une pile qui était en dehors de son logement à l’ouverture.

Que faire ?

La correction du problème dépend de la gravité du symptôme. Elle est relativement simple pour le symptôme léger (message à l’allumage) et plus technique pour le symptôme lourd (pas de démarrage).

Message à l’allumage mais la machine démarre normalement

Lorsqu’il y a simplement un message à l’allumage mais que la machine démarre normalement, la correction du symptôme nécessite simplement la mise à jour de la date système de la machine. Cela peut se faire directement sur la ligne de commande, en mode administrateur. Pour cela, après le démarrage, vous pouvez:

  • soit sortir de Sugar et passer sur la ligne de commande système en appuyant simultanément sur « ctrl » + « alt » + la touche « vue réseau »,
  • soit lancer l’activité « Terminal » puis exécuter la commande « su » (suivi de « enter »).

Dans les deux cas, il suffit ensuite de lancer la commande (suivi de « enter »):

date --utc -s "2010-09-11 09:44:00"

En remplaçant la date ci-dessus (11 septembre 2010 à 9h44) par la date et l’heure actuelle. Voici ce que cela donne à l’écran.

A noter que, dans l’idéal, il faut fournir l’heure UTC (c’est-à-dire avec une heure de moins qu’en France).
Une fois que l’opération a été réalisée, le message aura disparu au prochain boot de la machine. Prenez quand même un peu de temps pour vérifier la correction en utilisant la procédure décrite à la fin de l’article.

Message à l’allumage mais la machine ne démarre pas

Lorsqu’il y a un message à l’allumage mais que la machine ne démarre pas normalement. Dans ce cas, il n’est pas possible d’accéder à la ligne de commande système de la machine. Il va donc falloir modifier la date système depuis le Firmware ce qui est un peu plus complexe et se fait en deux étapes.

Etape 1: Passer la machine en mode développeur
Pour accéder à la ligne de commande du Firmware, il faut obligatoirement que votre machine soit en mode « développeur ». Le mode « développeur » permet à un XO de faire fonctionner des versions non officielles (ou actuellement en développement) de Sugar. Il permet également d’interrompre la séquence de boot au démarrage, c’est ce qui va nous intéresser ici.

La procédure pour passer en mode « développeur » n’est pas très complexe mais elle nécessite de la PATIENCE. La première chose à faire est d’obtenir une « developer key » en faisant une demande auprès de la fondation. Une « developer key » est un fichier crypté unique identifiant chaque XO. Pour en faire la demande, le plus simple est de se connecter à l’adresse https://activation.laptop.org/devkey/post/ et de remplir le formulaire ci-dessous.

Pour obtenir une clé, vous aurez besoin de fournir le numéro de série de la machine et son UUID (identifiant unique). Vous savez probablement que le numéro de série se trouve sous la batterie. L’UUID lui n’est pas visible directement. En fait ces deux informations sont affichées lors du diagnostic de la machine. C’est le moyen le plus simple de les obtenir.

Pour lancer le diagnostic du XO alors qu’il est éteint: laisser la flèche gauche du pad (à gauche de l’écran) enfoncée alors que vous appuyez sur le bouton d’allumage. Lorsque cela est demandé, lâchez la flèche, le diagnostic démarre. Dés que les informations de l’appareil s’affichent vous pouvez faire une pause en appuyant sur la touche de rotation de l’écran (en bas à gauche de l’écran). Voici une photo qui vous permet d’identifier les deux informations No de série et UUID:

Une fois ces informations obtenues est saisies dans le formulaire, vous devrez attendre 24H. Une fois les 24 heures écoulées, reconnectez-vous à la même adresse. La page vous indique alors une commande qui vous permet d’obtenir la clé. Elle doit ressembler à cela:

wget --no-check-certificate -P /security https://activation.laptop.org/devkey/xxxxxxxx/develop.sig

La commande créé sur la machine où elle s’exécute un fichier « develop.sig » dans le sous répertoire « security » de la racine du disque. « wget » est une commande standard de GNU Linux, si l’ordinateur que vous utilisez n’est pas GNU sur UNIX, il en existe une version Windows ici.

Une fois le fichier « develop.sig » récupéré sur votre ordinateur, recopiez le dans un répertoire « security » à la racine d’une clé USB.

Insérer la clé sur le XO et démarrez-le normalement. Un message s’affiche pendant 2 secondes (il faut être rapide 🙂 vous proposant d’interrompre le démarrage.

Pour cela, il faut appuyer (vite donc !) sur la touche X située en haut à gauche du clavier. Si vous êtes assez rapide, le prompt « ok » du Firmware s’affiche.

Etape 2: Changer la date depuis le firmware

La mise à jour de la date peut alors s’effectuer en lançant une série de commande système. Après chaque ligne, appuyez sur la touche « Enter ». Si vous ne faites pas d’erreur, le Firmware répond « ok » à la fin de chaque ligne (sauf la dernière).

select /rtc
decimal
SEC MIN HOUR DAY MONTH YEAR set-time
reboot

Attention: vous devez remplacer « SEC », « MIN », « HOUR », « DAY », « MONTH » et « YEAR » ci-dessus par la date et l’heure actuelle. Par exemple pour le 11 septembre 2010 à 21:10:00 sur l’exemple ci-dessous.

Après validation de la dernière ligne, la machine redémarre automatiquement. Le problème est alors corrigé. Prenez quand même un peu de temps pour le vérifier en utilisant la procédure décrite à la fin de cet article.

La machine ne s’allume pas

Lorsque la machine ne s’allume pas, la procédure de correction est plus complexe car elle nécessite de démonter le XO et d’utiliser un outillage spécifique, un « serial adapter ».

Comme lorsque la machine s’allume mais ne démarre pas, le principe de la procédure est de remettre à jour la date au niveau du Firmware. Mais ici, comme l’écran ne s’allume pas, il est nécessaire d’utiliser le « déport d’affichage » de débogage de la carte mère.

Etudions à nouveau la carte mère du XO: un peu en dessous à droite de la pile on distingue un petit connecteur blanc de 4 broches.

Le XO utilise ce connecteur comme outil de débogage. C’est-à-dire qu’il va nous permettre, en y connectant un affichage externe, de visualiser toutes les informations de débogage générées par la carte mère au démarrage. Il va aussi permettre, c’est ce qui va nous intéresser ici, d’accéder à la ligne de commande du Firmware.

Pour utiliser ce connecteur, il nous faut posséder un outillage spécifique: un « serial adapter ». Le serial adapter est une petite carte électronique (5 cm à peine) qui va se connecter d’une côté au XO et de l’autre côté au port USB d’un PC. Si vous êtes bricoleur comme Xavier et Nico (qui ont réalisés le premier Serial Adapter d’OLPC France), vous pouvez fabriquer votre Serial Adapter vous-même, les instructions sont décrites ici. Sinon, il est possible d’en demander auprès de la fondation via le Contributor Program.

Voici une photo de 2 serial adapter. La petite protubérance métallique est le connecteur pour le câble USB, les connecteurs à droite de la carte reçoivent le câble qui va se brancher sur le XO. Ce câble est visible sur la photo. La partie noire se branche sur le connecteur noir du serial adapter, la partie blanche se branche sur le connecteur blanc de la carte mère du XO.

A noter que le câble USB à brancher sur le Serial Adapter doit être de type B, du type de ceux utilisés pour les imprimantes.

Prêt à se lancer dans la correction ? Alors allons-y.
Cela se réalise en quatre étapes.

Etape 1: Démonter la partie haute du XO
Première étape: démonter le XO pour accéder à la carte mère. Sur le XO, celle-ci se trouve derrière l’écran, il faut donc démonter toute la partie haute. Inutile de vous effrayer: le XO a été conçu pour être démonté facilement et la partie haute est la partie la plus simple à démonter.

Le processus de démontage en photo est visible ici.

La vidéo ci-dessous vous montre également le démontage en image.

Attention: il faut aller jusqu’au démontage de l’écran pour libérer le cache de dessus du XO (celui sur lequel il y a le petit bonhomme de couleur) qui protège la carte mère puis remonter l’écran (sans remettre le cache).

Etape 2: Connecter le serial adapter
Une fois le XO démonté, branchez le câble entre le XO et le serial adapter et le câble USB entre le serial adapter et le PC. Voici des photos qui vous montrent ce que cela donne.

Etape 3: Lancer la connexion
Une fois connectée, le PC doit être prêt à recevoir la sortie du XO. Le Serial Adapter est reconnu comme un port série. Pour recevoir et envoyer les commandes, il faut donc disposer d’un outil de gestion de terminal. Pour Windows, l’idéal est d’utiliser PuTTY. Une fois lancé, configurer le comme indiqué sur la capture d’écran ci-dessous: 115200 bauds, 8 bits de données, 1 bits de stop, aucune parité, contrôle de flux XON/XOFF.

Vous pouvez désormais allumer le XO normalement. Il va déverser ses informations de débogage. Voici un exemple de ce que vous pouvez obtenir.

A noter que l’affichage du XO reste vide pendant le boot.

Etape 4: Positionner la date système
Comme vous pouvez le constater, le boot s’est arrêté et vous avez accès à la ligne de commande du Firmware du XO que nous pouvons piloté depuis le PC. Nous voilà donc arrivé à ce que nous attendions. La correction est donc désormais identique à celle que nous exposions précédemment.

Il s’agit de lancer la série de commande système ci-dessous. Après chaque ligne, appuyez sur la touche « Entrée ». Si vous ne faites pas d’erreur, le Firmware répond « ok » à la fin de chaque ligne (sauf la dernière).

select /rtc
decimal
SEC MIN HOUR DAY MONTH YEAR set-time
reboot

Attention: vous devez remplacer « SEC », « MIN », « HOUR », « DAY », « MONTH » et « YEAR » ci-dessus par la date et l’heure actuelle. Par exemple le 19 novembre 2009 à 22:53:48, sur la capture d’écran ci-dessous.

Après la dernière commande, la machine redémarre et le problème devrait être corrigé: l’écran du XO doit revenir à la vie ! Il ne vous reste qu’à remonter la machine.
Prenez néanmoins un peu de temps pour vérifier la correction en utilisant la procédure ci-dessous.

Vérification de la correction

Il n’est pas inutile de vérifier que la correction que vous avez effectué (quelque soit la procédure) a fonctionné. Il faut donc se mettre dans une situation où la pile va être sollicitée.

Pour cela, débrancher le XO et enlever la batterie pendant 5 minutes.

Après 5 minutes, remettez la batterie et rebrancher le XO, le problème ne doit pas réapparaitre. S’il réapparait, la procédure est à recommencer 🙁 Il peut également être nécessaire de vérifier que la pile fonctionne et qu’elle est bien fixée.

Pour aller plus loin

Pour plus d’information sur ce problème, vous pouvez consulter la page Wiki de la fondation ici. L’ensemble de la procédure a également été décrite par Kevin Mark dans un graphique que nous avons traduit et qui est disponible ici.

Quoi qu’il en soit si vous rencontrez ce problème n’hésitez pas à faire appel à nous pour une réparation, pour le prêt d’un Serial Adapter ou simplement pour de l’assistance pour réaliser le diagnostic ou la correction. Enfin, si la correction et l’expertise du XO vous intéresse, vous pouvez également vous joindre à nous lors des ateliers de réparation que nous organisons régulièrement.