Projet Radio Wifi – Etape 2 : Automatiser le démarrage

Vous avez suivi :

Mais vous n’avez logiquement pas envie de vous connecter à chaque fois pour démarrer la musique.

Solution

Nous allons automatiser le démarrage.

On a déjà fait un gros morceau du boulot. Passons à la phase suivante pour faire en sorte que quand on branche le Raspberry sur le courant, il y ait rapidement de la musique qui sorte sur les enceintes. Cela suppose que l’étape 1 soit réalisée.

Qu’est-ce qui nous manque ? Un démarrage automatique de la radio une fois que le Raspberry est lui-même démarré.

Il y a une version simple, mais je vais préférer la version « propre » : créer un fichier dvgb-radio dans le répertoire /etc/init.d/ qui est un peu le répertoire « Démarrer » de Windows, les scripts qu’il contient seront exécutés au démarrage.

sudo vi /etc/init.d/dvgb-radio

Nous voilà dans l’éditeur de texte vi. Nous ne rentrerons pas aujourd’hui dans l’usage facile de cet outil, on va plutôt faire du didactique. Il faut donc appuyer sur la touche « i » pour passer en mode insertion et coller le texte ci-dessous

#! /bin/sh
# /etc/init.d/dvgb-radio

### BEGIN INIT INFO
# Provides: DaVinGhiBlog
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start radio via mpc at boot time
# Description: Start the first radio wich is listen on mpc
### END INIT INFO

# La description est faite ci-dessus, nous pouvons maintenant traiter les differents cas
case "$1" in
 start)
 # Au demarrage, on souhaite ce mode de fonctionnement (boot y compris)
 mpc play 1
 ;;
 stop)
 # A l'arrête, on souhaite cette action (arrêt du système y compris)
 mpc stop
 ;;
 reload|restart)
 # Si l utilisateur demande de redemarrer le service, on arrete et on demarre
 $0 stop
 $0 start
 ;;
 *)
 echo "Usage: $0 start|stop|restart|reload"
 exit 1
esac
exit 0

Une fois la copie faite, il faut quitter le mode insertion avec la touche « Echap » de votre clavier, puis saisir « :w », ce qui va sauvegarder (write) votre fichier, avant de quitter avec « :q ».

Par curiosité, allons dans le répertoire où nous venons de créer ce fichier pour s’assurer qu’il est bien là.

cd /etc/init.d

et listons son contenu

ls

Nous constatons rapidement que le fichier est présent… surtout que le Raspberry le met en blanc alors que les autres sont en vert. Elle est sympa cette framboise.

une liste toute simple
une liste toute simple

En fait, oui et non… Elle met en avant le script que nous venons de créer car il n’est pas tout à fait pareil que ses copains. Rejouons une nouvelle commande :

ls -lrt

Cette commande liste le contenu d’un répertoire comme « ls », mais en précisant plus de choses, y compris les droits (l’ajout de la lettre « l »), en les triant selon leur date de modification (l’ajout de la lettre t) en allant du plus ancien au plus récent (l’ajout de la lettre r).

Une liste classée et détaillée
Une liste classée et détaillée

 

Détaillons une de ces lignes pour le fichier « udev » par exemple :

-rwxr-xr-x 1 root root  6581 Jul 24 16:55 udev

On retrouve dans cette ligne, de droite à gauche :

  • le nom du fichier « udev« 
  • la date de dernière modification « Jul 24 16:55 » (le 24 juillet de cette année puisque l’heure est indiquée : 16h55; sinon vous auriez « Jul 24 2015 » par exemple)
  • la taille du fichier en octet « 6581« 
  • le propriétaire du fichier et le groupe auquel il appartient « root root« 
  • le nombre de lien vers ce fichier « 1« 
  • les droits du propriétaire, du groupe et des autres sous la forme « rwxr-xr-x« 
  • le type d’objet «  » pour un fichier (« l » pour un lien, « d » pour un répertoire, par exemple)

Ce qui nous intéresse le plus pour le moment, ce sont les droits. Cette chaîne est constituée toujours des 3 mêmes lettres, toujours dans le même sens :

  • r pour lecture (Read)
  • w pour l’écriture (Write)
  • x pour l’exécution (eXecute)

Il faut comprendre que ce bloc de 3 caractères est répété 3 fois.

  • les trois premiers indiquent les droits pour le propriétaire « rwx » qui a ici le droit de lire, écrire et exécuter le fichier.
  • les trois suivants indiquent les droits pour les autres utilisateurs du groupe auquel appartient le fichier « r-x » qui ont alors ici le droit de lire et d’exécuter (le w est remplacé par un -)
  • les trois derniers indiquent les droits pour tous les autres utilisateurs « r-x » qui ont donc également le droit de lire et d’exécuter.

Ces droits permettent donc à n’importe quel utilisateur de lire le fichier « udev » et de l’exécuter, mais seul root peut le modifier.

Notre script dvgb-radio a une situation bien différente. Les droits en lecture et en écriture sont similaires à tous ces copains, mais personne n’a le droit de l’exécuter… c’est dommage pour un script.

-rw-r--r-- 1 root root   812 Oct 12 22:17 dvgb-radio

Pour faire évoluer les droits, nous allons jouer la commande suivante qui permet de modifier les droits sur un fichier :

sudo chmod 755 dvgb-radio

De la même façon que tout à l’heure, un chiffre correspond à 3 lettres :

  • le premier indique les droits pour le propriétaire
  • le suivant indique les droits pour les autres utilisateurs du groupe auquel appartient le fichier
  • le dernier indique les droits pour tous les autres utilisateurs

Et en terme de chiffre :

  • 0 : aucun droit (—)
  • 1 : exécution uniquement (–x)
  • 2 : écriture uniquement (-w-)
  • 3 (= 1 + 2) : exécution et écriture (-wx)
  • 4 : lecture uniquement (r–)
  • 5 (= 1 + 4) : lecture et exécution (r-x)
  • 6 (= 2 + 4) : lecture et écriture (rw-)
  • 7 (= 1 + 2 + 4) : lecture, écriture et exécution (rwx)

Maintenant que les droits sont posés, au prochain redémarrage, ça devrait être bon !

Testons notre script en demandant l’exécution du script en mode « start » :

sh -x dvgb-radio start

Miracle, la musique refonctionne 🙂

Il faut maintenant que le script fonctionne à chaque démarrage :

sudo update-rc.d dvgb-radio defaults
sudo update-rc.d dvgb-radio enable
Activer le démarrage automatique
Activer le démarrage automatique

et si vous en avez marre que la radio démarre en même temps que le Raspberry :

sudo update-rc.d dvgb-radio remove

On teste en redémarrant le Raspberry

reboot

Choisissez l’utilisateur qui demande le redémarrage puis saisssez le mot de passe quand demandé. Normalement, le Raspberry redémarre, et la musique avec. J’ai mesuré 20 secondes entre le moment où je valide le reboot d’un Raspberry Pi 3 et le moment où j’entends à nouveau la musique, 17 secondes entre le moment où je branche le Raspberry Pi 3 et où j’entends la musique

Après le reboot, pensez à relancer votre connexion à Kitty / Putty car la fenêtre est sûrement toujours ouverte mais la connexion n’est plus active.

Amusez-vous bien, nous verrons plus tard comment couper le fil Ethernet par du WiFi et le fil Jack par du Bluettoth. A bientôt !

Laissez un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *