Le Raspberry Pi Zéro W (que je vais appeler rpi0w) est un modèle minimaliste du célèbre mini-ordinateur Raspberry Pi. La version minimaliste se distingue par son nombre plus faible de ports (pas d’USB-A ni de port ethernet, par exemple), sa taille plus réduite ainsi qu’une puissance diminuée par rapport à son grand frère.

Je vais expliquer ici comment le configurer pour qu’il se connecte directement au réseau wifi afin qu’on puisse s’y connecter en SSH dès qu’il est démarré.

Sommaire

Préparation de la carte SD

Pour commencer, il faut installer raspbian sur la carte SD. Vu que le rpi0 est moins puissant que le gros modèle, il faut prendre la version Lite de raspbian, qui se trouve ici.

Attention à bien prendre la version compatible avec votre rpi. Pour ma part, ayant le modèle 1, j’ai du prendre la version 32 bits, et non la version 64 bits.

Pour installer Raspbian, j’utilise le logiciel Balena Etcher. Celui-ci est simple à utiliser et fonctionne très bien.

Attention à choisir la bonne destination pour l’image de Raspbian, au risque de perdre vos données !

Balena Etcher usage

Une fois la carte SD flashée avec le système d’exploitation, on verra apparaitre 2 nouveaux disques dans l’explorateur de fichiers : Boot et un autre disque qui n’arrive pas à être monté dans Windows. C’est tout à fait normal.

Accès SSH

L’accès SSH doit être activé afin de ne pas avoir à brancher de clavier et d’écran pour effectuer la configuration du rpi. Afin d’activer le service SSH, il suffit de créer un fichier vide, appelé ssh, dans la partition « Boot » de la carte SD.

Accès wifi

Vu qu’il n’est pas possible de choisir un SSID et d’entrer un mot de passe en SSH que le rpi soit déjà connecté au réseau, il faut indiquer le SSID et le mot de passe à utiliser au démarrage. Pour faire cela, il faut créer un fichier wpa_supplicant.conf dans la partition « Boot » de la carte SD. Ce fichier doit avoir le contenu suivant, en n’oubliant pas de remplacer your_ssid et your_password par les informations de connexion à votre réseau.

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=FR

network={
ssid="your_ssid"
psk="your_password"
key_mgmt=WPA-PSK
}

Mot de passe par défaut

Depuis avril 2022, les identifiants par défaut présents auparavant dans raspbian ont été supprimés (Source). De manière similaire à SSH ou à la connexion wifi, il faut donc indiquer un nom d’utilisateur et un mot de passe dans un fichier userconf de la partition « Boot » de la carte SD. Ce fichier doit contenir le nom d’utilisateur suivi d’un double point, suivi du mot de passe désiré, chiffré.

username:encrypted-password

Pour générer le mot de passe chiffré, on peut utiliser la commande suivante sous linux en prenant soin de remplacer mypassword par le mot de passe souhaité.

echo 'mypassword' | openssl passwd -6 -stdin

On peut également utiliser ce site pour générer le mot de passe chiffré.

Une fois que ces informations ont été fournies, on peut démonter la carte SD, l’insérer dans le rpi et le démarrer. Celui-ci se connectera automatiquement au réseau wifi indiqué dans le fichier wpa_supplicant.conf. On peut ensuite s’y connecter en ssh en utilisant l’identifiant et le mot de passe indiqués dans le fichier userconf, avec la commande suivante.

ssh username@raspberrypi

Configuration supplémentaire

Il est possible que le rpi plante lors de l’installation de mises à jour (avec la commande sudo apt upgrade) et qu’il faille le redémarrer manuellement. Si ce cas se présente, c’est à cause d’un problème d’implémentation de la pile IPv6 dans raspbian. Il faut donc désactiver IPv6 pour corriger ce problème.

Pour vérifier qu’IPv6 est activé, il faut que la ligne suivante soit présente lorsqu’on tape la commande ifconfig.

This image has an empty alt attribute; its file name is image-1.png

Désactiver IPv6

  1. Éditer le fichier /etc/sysctl.conf
$ sudo nano /etc/sysctl.conf
  • Ajouter ces lignes à la fin du fichier
net.ipv6.conf.all.disable_ipv6=1
net.ipv6.conf.default.disable_ipv6=1
net.ipv6.conf.lo.disable_ipv6=1
net.ipv6.conf.eth0.disable_ipv6 = 1
  • Sauvegarder et fermer le fichier
  1. Éditer le fichier /etc/rc.local
$ sudo nano /etc/rc.local
  • Ajouter cette ligne à la fin du fichier (mais avant exit 0)
service procps reload
  • Sauvegarder et fermer le fichier
  1. Redémarrer le rpi
  2. Vérifier avec la commande ifconfig que l’adresses IPv6 a bien disparue, comme ci-dessous
This image has an empty alt attribute; its file name is image-2.png