Les cartes Raspberry Pi actuelles sont dépourvues de tout moyen de sauvegarde de la date et de l’heure comme ceux présents sur les ordinateurs classiques. La synchronisation se fait à chaque démarrage via la connexion internet et un serveur NTP. Cependant cela peut devenir un problème si le montage est destiné à être utilisé dans un environnement dépourvu d’une connexion internet et dont la date et l’heure sont nécessaires au fonctionnement du système (horodatage, monitoring…). La solution consiste à installer via les ports GPIO un module permettant d’ajouter cette fonctionnalité.
Il existe différents modules permettant d’ajouter la fonctionnalité RTC sur Raspberry (Petit comparatif sur Framboise314). La procédure suivante se basera sur le « RTC Module » de CJEmicros disponible sur Ebay autour d’une dizaine d’euros.
Mise en place physique
L’installation physique est aisée. Il suffit simplement de glisser la pile dans son logement puis d’enficher le module sur les ports GPIO qui sont à l’extrémité de la carte Raspberry.
Le module une fois en place rentre dans la plupart des boitier pour Raspberry.
Mise en place logicielle
Le grand avantage de cette carte est le support natif de celle-ci par le système Raspbian via le protocole i2c.
Pour activer le support de RTC sur les Distribution Raspbian ‘Wheezy’ (2012-10-28 et après), il suffit d’ajouter les lignes suivantes dans le fichier /etc/rc.local avant la ligne exit0 (avec les permissions root) :
nano /etc/rc.local
modprobe i2c-bcm2708 echo ds1307 0x68 > /sys/class/i2c-adapter/i2c-1/new_device modprobe rtc-ds1307 hwclock -s
Si votre Rpi est un version 1, la ligne à ajouter au rc.local est différente, il faut remplacer i2c-1 par i2c-0 .
En cas de difficultés, ne pas hésiter à rajouter ces deux lignes au fichier /etc/modules :
i2c-bcm2708 rtc-ds1307
Quelques commandes pour interagir avec l’heure :
- date : afficher la date et l’heure actuelle du système
- date -s HH:MM:SS : changer uniquement l’heure du système
- date -s MM/JJ/AAAA : changer uniquement la date du système
- hwclock -r : lire la date et l’heure du module RTC
- hwclock -w : copie de la date et heure du système vers le module RTC
- hwclock -s : copie de la date et heure du module RTC vers le système
Pour mettre à jour l’heure via un serveur NTP (nécessite une connexion internet) :
apt-get install ntpdate ntpdate fr.pool.ntp.org
Vous voilà en posséssion d’une carte Raspberry qui sera à l’heure en toute condition, que ce soit avec ou sans connexion internet !
[EDIT 14/01/2016]
Depuis un certain temps (changement de noyau Linux) cette méthode n’était plus fonctionnelle. C’est le cas si vous obtenez ce type d’erreur à l’exécution de la commande sudo i2cdetect -y 1 ou sudo i2cdetect -y 0 (pour la rev1) :
Error: Could not open file `/dev/i2c-1′ or `/dev/i2c/1′: No such file or directory
Pour que le module RTC soit de nouveau opérationnel il est nécessaire d’ajouter les lignes suivantes au fichier /boot/config.txt :
device_tree=bcm2708-rpi-b.dtb device_tree_param=i2c1=on device_tree_param=spi=on
Salut les loulous, c’est burbr (ou ba(r)bar pour les intimes).
Petits détails :
Si votre Rpi est un version 1, la ligne à ajouter au rc.local est différente, il faut remplacer « i2c-1 » par « i2c-0 ».
En cas de difficultés, ne pas hésiter à rajouter ces deux lignes au fichier /etc/modules :
I2c-bcm2708
Rtc-ds1307
Vous devriez ajouter aussi les info pour le mettre à l’heure avec un NTP :
sudo apt-get install ntpdate
sudo ntpdate ntp.ubuntu.com (pour le ntp ubuntu)
Bisous partout ! <3
Merci Burbr !
Tes infos ont été ajouté à l’article !
Bonjour,
Est-ce la même méthode pour installer avec un système Ubuntu ?
Théoriquement la distribution Ubuntu étant basée sur Debian la méthode devrait fonctionner, mais n’ayant jamais testé en pratique je ne peux pas le garantir.