Configuration du Raspberry Pi
Préambule
Si vous êtes un nouveau venu à Linux, vous allez vite réaliser qu'il existe souvent plusieurs moyens sous ce système pour mettre en place une fonctionnalité. Donc dans tout ce qui suit, les solutions présentées ne sont pas uniques. Les solutions que je vous propose me semble être les plus "durables". En effet, les choses évoluent... Vous devez vous rappeler que l'interface graphique que vous voyez sur votre Raspberry Pi ne fait pas partie du système Linux. Linux n'a pas d'interface graphique. Il est capable d'en utiliser des différentes. Celle par défaut se nomme "LXDE". Et ces interfaces changent assez souvent. A chaque nouvelle version de Linux Raspbian, pas mal d'utilitaires évoluent. C'est pourquoi les solutions présentées ici ne sont pas necessairement les plus simples, mais, elles sont, je pense, les plus durables.
L'objectif principal de cette procédure est de configurer tout ce qui est nécessaire sur le Raspberry Pi pour vous permettre d'y accèder depuis votre PC. Les rubriques de cette page sont les suivantes :
- Configuration de base
- Configuration de la résolution du moniteur
- Configuration Réseau
Configuration de base
Pour mettre en place la configuration de base nous allons utiliser un programme nommé "raspi-config". Pour cela, nous devons ouvrir un terminal.
Pour cela cliquez sur l'icone "Terminal" dans la barre de menu principale du bureau :

Vous verrez alors s'ouvrir la fenêtre suivante :

Cette fenêtre est peut-être la plus importante sous Linux. Elle vous donne accès à toutes les commandes Linux, ce que l'interface graphique ne fait pas, ou fait moins bien. Des commandes Linux, il y en a pléthore. J'en ai jamais fait le tour. Donc cette fenêtre est un "Must". Elle vous indique que vous êtes l'utilisateur "pi" et que vous êtes connecté sur la machine "raspberrypi". Et elle attend vos commandes...
Si vous entrez la commande "raspi-config", vous allez recevoir une erreur : "Script must be run as root. Try 'sudo raspi-config'". Première chose, "raspi-config" n'est pas une commande linux. C'est un script qui lance un programme. C'est souvent le cas sous Linux. L'erreur indique simplement que ce script ne peut être exécuter que par un utilisateur du type "root". Vous ne l'êtes pas. Mais vous pouvez le devenir, au moins, pour cette commande. Il suffit pour cela de faire précéder la commande "raspi-config" de la commande "sudo". Cette commande vous autorise à exécuter un programme, une commande, un script, normalement réservé à "root". "sudo" cela veut dire "Super User Do". Entrez donc la commande suivante :
sudo raspi-config
La fenêtre suivante est affichée dans le terminal :

A l'aide des flêches du clavier, sélectionnez l'option "Interface Options" :

Nous allons modifier les options : SSH, VNC, SPI, I2C et Serial Port. Sauf pour l'option Serial Port, à chaque fois que vous mettrez en service une de ces options, le programme vous ramènera au premier écran. Il faudra à chaque fois, resélectionner "Interface Options".
SSH
Si vous venez du monde Windows, il y a de fortes chances que SSH vous soit inconnu. Pour la bonne raison que Microsoft ne distribue pas SSH en standard avec Windows. La meilleure introduction à SSH, je l'ai trouvé sur le site Le Mag IT.
Voila leur introduction. SSH, cela veut dire Secure Socket Shell. C'est un protocole réseau qui permet aux administrateurs d'accéder à distance à un ordinateur, en toute sécurité. SSH désigne également l'ensemble des utilitaires qui mettent en oeuvre le protocole. Le protocole Secure Shell assure une authentification forte et des communications de données chiffrées sécurisées entre deux ordinateurs connectés sur un réseau peu sûr, tel qu'Internet. SSH est largement utilisé par les administrateurs réseau pour gérer à distance les systèmes et les applications, car il leur permet de se connecter à un autre ordinateur sur un réseau, d'exécuter des commandes et de déplacer des fichiers d'un ordinateur à un autre.
La première réaction serait de se dire : "Pourquoi ai-je besoin de ce truc pour simplement faire causer mon Raspberry avec mon PC à la maison?". C'est censé. Il y a deux raisons à cela. La première c'est qu'avec SSH, vous pourrez contrôler votre Raspberry pi depuis l'extérieur de la maison en toute sécurité. La seconde, et sans doute la plus importante est que la prochaine option que nous allons mettre en service VNC s'appuie sur ce protocole.
Donc pour mettre en service SSH, éséectionnez sa ligne, appuyez sur la touche "Entrée". Dans l'écran suivant sélectionnez "Oui" et appuyez sur "Entrée". Vous allez voir un retour au terminal, puis au premier menu, resélectionnez "Interface Options", etc...
Exécutez la même procédure pour VNC, SPI et I2C.
VNC
VNC de RealVNC est un logiciel de prise de contrôle et d'accès à distance. Un truc du genre "Bureau à distance" qui existait sur les anciennes versions de Windows. Que Microsoft a retiré de la version 11, sauf si vous disposez de la version PRO. Bref, avec VNC, vous pourrez utiliser votre Raspberry Pi depuis le moniteur, le clavier et la souris de votre PC comme si vous êtiez directement branché sur le Raspberry Pi. Cool, vous pourrez retirer tout ce qui est branché sur le Raspberry Pi.
SPI et I2C
SPI et I2C sont des bus série à courte portée utilisés par des milliers de composants électronique pour les interfacer avec des microprocesseurs ou des microcontroleurs. A titre d'exemple, si vous souhaitez développer une petite station météo, vous aurez surement besoin d'une petite carte équipée d'un BME280. Ce composant s'interface en I2C. Si vous souhaitez afficher vos mesures météo sur un petit LCD, vous pouvez utiliser celui-la. Il s'interface en SPI. Vous pourrez connecter, tout ce petit monde à ces bus via la prise GPIO 40 broches du Raspberry Pi ou ils sont disponibles.
Serial Port
Un bus série classique, aussi accessible via la prise GPIO du Raspberry Pi. Ici la procédure de mise en service est un peu différente. Lorsque vous sélectionnez l'option "Serial Port", vous verrez une première fenêtre :

Sélectionnez la réponse "Non". Un nouvelle fenêtre apparait :

Sélectionnez la réponse "Oui". Revenez à l'écran principal de raspi-config et sélectionnez la commande "Finish".
Nous venons d'activer deux services importants afin que le Raspberry Pi puisse être contrôlé par un autre PC de votre réseau local. SSH et VNC. Vous devriez désormais voir en haut à droite de votre moniteur, un nouvel icône "Vnc" comme suit :

Configuration de la résolution du moniteur
Si, comme moi, vous décidez d'utiliser votre Raspberry Pi en le contrôlant depuis votre PC via le couple SSH/VNC (Voir rubrique précédente), votre Raspberry Pi n'aura plus besoin ni de souris, ni de clavier, ni de moniteur. L'absence de moniteur peut poser un problème. Si le Raspberry ne trouve pas de moniteur au démarrage, il démarre avec sa résolution d'écran la plus faible (640 X 480 pixels). Il y a de fortes chances que vous souhaitiez utiliser une meilleure résolution. Il faut donc forcer une résolution
La méthode à employer pour forcer la résolution dépend de votre version de Linux Raspbian. Jusqu'à présent et sur toutes les versions précédentes de Linux Raspbian la première méthode présentée ci-dessous fonctionnait parfaitement. Sur la dernière verion nommée "bullseye" elle semble ne plus fonctionner. Du moins chez moi... sur un Raspberry Pi IIIB+. Alors qu'elle fonctionne toujours sur un Raspberry 4 !!!
Bref, si vous utilisez un Raspberry Pi IIIB+ et que vous avez une version de Linux Raspbian nommée "bullseye", utilisez la seconde méthode. Sinon la première méthode devrai fonctionner sur toutes les autres installations.
Pour savoir quelle version de linux Raspbian vous utilisez, il y a une commande simple. Dans un terminal, entrez la commande suivante :
cat /etc/os-release
Vous obtenez ce type de résultat :
PRETTY_NAME="Raspbian GNU/Linux 11 (bullseye)"
NAME="Raspbian GNU/Linux"
VERSION_ID="11"
VERSION="11 (bullseye)"
VERSION_CODENAME=bullseye
ID=raspbian
ID_LIKE=debian
HOME_URL="http://www.raspbian.org/"
SUPPORT_URL="http://www.raspbian.org/RaspbianForums"
BUG_REPORT_URL="http://www.raspbian.org/RaspbianBugs"
Ici, il s'agit bien de la version "bullseye".
Première méthode
La modification de la résolution impose que vous ayez les droits de l'utilisateur "root". Nous allons donc utiliser "sudo" comme au paragraphe précédent. Ce réglage de résolution se fait en modifiant certains paramètres du fichier "config.txt" situé dans le répertoire "/boot". Pour modifier ce fichier, nous allons utiliser le programme "nano" qui est un petit éditeur de texte fonctionnant dans le terminal. Nous en profiterons pour faire quelques autres modifications dans ce fichier.
Ouvrez un terminal comme décrit à la rubrique précédente et entrez la commande suivante :
sudo nano /boot/config.txt
Avec les flêches du clavier, localisez la ligne :
dtparam=audio=on
Cette ligne met en service la sortie audio du Raspberry Pi. Hors, sur certaines versions de Linux Raspbian il a été détecté des plantages lorsque l'audio est active et qu'un programme utilise en même temps la broche 18 du connecteur GPIO 40 broches pour générer un signal PWM (Pulse Width Modulation). Donc si vous n'utilisez pas l'audio sur votre Raspberry Pi, il est conseillé de commenter cette ligne. Pour cela il suffit de faire précéder la ligne du caractère "#" :
#dtparam=audio=on
Un autre pépin est apparu dans certains cas. Lorsque des programmes utilisent certaines lignes d'entrées ou sorties numériques du connecteur GPIO, des crash sont survenus. Il existe un moyen de contrer ce problème en ajoutant dans le fichier en cours d'édition ("config.txt") la ligne suivante (Vous pouvez l'ajouter ou vous voulez, le plus pratique c'est quand même à la fin du fichier !) :
dtoverlay=gpio-no-irq
Enfin, nous allons forcer la résolution. Il y aura 3 lignes à ajouter. Quelques explications sur ces lignes :
- hdmi_force_hotplug=x : Cette ligne, lorsque son paramètre x est réglé à 1 force le démarrage des sorties HDMI, même s'il n'y a pas de moniteur connecté.
- hdmi_group=x : Cette ligne, précise quel standard HDMI vous souhaitez utiliser. Lorsque le paramètre x est à 1, vous utilisez le standard CEA (Consumer Electronics Association) Lorsque ce paramètre est à 2, vous utilisez le standard DMT (Display Monitor Timing). En fonction de ce paramètre, le paramètre suivant ne prendra pas la même valeur. Voir la suite...
- hdmi_mode=x : Cette ligne, via la valeur de son paramètre x, impose une résolution, un ratio d'aspect et une fréquence de rafraichissement.
Ci-dessous un tableau qui résume les résolutions, ratios d'aspect et fréquences de rafraichissement en fonction des valeurs données aux paramètres "hdmi_group et hdmi_mode" :
| hdmi_group | hdmi_mode | Resolution | Aspect | Fréquence |
| 1 | 1 | 640X480 | 4:3 | 60 Hz |
| 1 | 2 | 720X480 | 4:3 | 60 Hz |
| 1 | 4 | 1280X720 | 16:9 | 60 Hz |
| 1 | 16 | 1920X1080 | 16:9 | 60 Hz |
| 1 | 95 (*) | 3840X2160 | 16:9 | 30 Hz |
| 1 | 97 (**) | 3840X2160 | 16:9 | 60 Hz |
| 2 | 2 | 640X480 | 4:3 | 60 Hz |
| 2 | 9 | 800X600 | 4:3 | 60 Hz |
| 2 | 16 | 1024X768 | 4:3 | 60 Hz |
| 2 | 85 | 1280X720 | 16:9 | 60 Hz |
| 2 | 35 | 1280X1024 | 5:4 | 60 Hz |
| 2 | 51 | 1600X1200 | 4:3 | 60 Hz |
| 2 | 82 | 1920X1080 | 16:9 | 60 Hz |
(*) : Seulement pour Pi 4. Mode réservé lorsque 2 moniteurs sont reliés au Raspberry Pi.
(**) : Seulement pour PI 4. Impose le paramètre hdmi_enable_4kp60=1 dans config.txt.
A partir de tout cela, pour, a titre d'exemple, forcer une résolution de 1920X1080 en 16:9 on ajoutera au fichier les lignes suivantes :
hdmi_force_hotplug=1
hdmi_group=2
hdmi_mode=82
Une fois vos modifications effectuées, sauvez le fichier en utilisant la combinaison de touches "Ctrl+O", puis sortez de nano en utilisant la combinaison de touches "Ctrl+X". Si vous souhaitez appliquer ces paramètres immédiatement, entrez dans le terminal la commande suivante :
reboot
Seconde méthode
Méthode recommandée pour un Raspberry Pi II ou III en version Linux Raspbian "bullseye".
Ouvrez un terminal comme décrit à la rubrique précédente et entrez la commande suivante :
sudo nano /boot/config.txt
Avec les flêches du clavier, localisez la ligne :
dtoverlay=vc4-kms-v3d
Modifiez cette ligne comme suit :
dtoverlay=vc4-kms-v3d,nocomposite
Une fois vos modifications effectuées, sauvez le fichier en utilisant la combinaison de touches "Ctrl+O", puis sortez de nano en utilisant la combinaison de touches "Ctrl+X". Si vous souhaitez appliquer ces paramètres immédiatement, entrez dans le terminal la commande suivante :
reboot
Après redémarrage, dans le menu principal, sélectionnez : "Préférences/Configuration du Raspberry Pi". Dans la fenêtre de configuration, sléectionnez l'onglet "Display". A la ligne "Headless Resolution", sléectionnez la résolution que vous souhaitez lorsqu'aucun moniteur n'est relié. Puis cliquez sur "Valider".
L'image suivante montre ce choix pour une résolution de 1920X1080 pixelks :

Configuration Réseau
Sur un réseau, toutes les machines ont une adresse composée de 4 chiffres compris entre 0 et 255 (donc, codés sur 8 bits) et séparés par un point. On appelle cela une adresse IP. Si une machine possède plusieurs interfaces réseaux (c'est le cas du Raspberry Pi), chacune d'elle doit avoir une adresse IP spécifique qui n'est attribuée à aucune autre interface sur le réseau local.
En général, on ne s'occupe pas de définir ces adresses réseau nous même. C'est votre box internet qui met en place un service nommé DHCP qui attribue elle même une adresse IP unique à chaque interface qu'elle trouve sur le réseau. Dans la plupart des cas, ce fonctionnement est idéal car vous n'avez pas à vous soucier de l'adresse IP de votre ordinateur. Mais dans certains cas, cela peut devenir gênant. Pour éviter cela vous pouvez forcer l'adresse IP de votre Raspberry Pi sans que le DHCP de la box ne la modifie. Ainsi, si vous cliquez sur l'icône réseau en haut à droite de la barre supérieure, vous verrez apparaître une information comme celle-ci :

Il est bon de se rappeler que votre carte réseau filaire par câble Ethernet a pour nom "eth0", et que celle du réseau WIFI se nomme "wlan0". Ces informations sont importantes pour ce qui va suivre.
Tout cela est parfait, sauf que vous ne pouvez pas être sûr que ces adresses IP de eth0 et wlan0 resteront toujours les mêmes. A chaque démarrage de votre Raspberry Pi, le serveur DHCP peut décider de modifier leurs adresses IP. Hors, et nous le verrons par la suite, pour certaines fonctionnalités, comme la prise de contrôle à distance ou l'échange de fichiers, il est plus pratique de s'assurer que l'adresse IP n'est jamais modifiée. En d'autres termes, il est préférable de définir une adresse IP fixe pour votre Raspberry Pi. Cela n'a pas d'influence sur son fonctionnement sur Internet, car ce que vois votre fournisseur Internet est l'adresse IP de votre box et non pas celles des ordinateurs reliés à votre box. Je vous suggère donc de fixer l'adresse IP de votre Raspberry Pi.
Pour pouvoir donner des adresses IP fixes à l’un, l’autre ou les deux ports réseau, relancer une fenêtre Terminal. Dans cette fenêtre, entrez la commande suivante, suivie de la touche entrée :
sudo nano /etc/dhcpcd.conf
Cette commande ouvre l'éditeur de texte "Nano" et édite le fichier "dhcpcd.conf" situé dans le répertoire "/etc." Dans l'éditeur en utilisant la flèche pointant vers le bas de votre clavier, repérez les lignes suivantes :
# Example static IP configuration :
#interface eth0
#static ip_address=192.168.0.10/24
#static routers=192.168.0.1
#static domain names servers=192.168.0.1
Le caractère "#" en tête de ligne indique que la ligne est un commentaire et n'est pas prise en compte. Pour fixer une adresse IP fixe, nous devons les activer et modifier les paramètres :
- Le paramètre static ip_address recevra l'adresse IP fixe que vous choisirez.
- Les paramètres static routers et static domain names servers devront recevoir l'adresse IP de votre box. Pour connaître cette adresse, vous devez accéder aux pages de configuration de votre box. A titre d'exemple, sur une Freebox, ce paramètre est accessible via la page http://mafreebox.freebox.fr/ sur l'icône Paramètres de la Freebox.
Pour activer une adresse IP fixe sur l'interface "eth0" (L'interface par câble Ethernet), vous devez modifier ces lignes comme suit :
# Example static IP configuration :
interface eth0
static ip_address=192.168.0.100/24
static routers=192.168.0.254
static domain names servers=192.168.0.254
Dans cet exemple, la box se situe à l'adresse 192.168.0.254 et l'interface eth0 se situe à l'adresse 192.168.0.100. C'est le même principe pour la liaison WIFI nommée "wlan0". Si vous êtes relié en WIFI et non pas en câble Ethernet vous pouvez modifier le fichier comme suit :
interface wlan0
static ip_address=192.168.0.101/24
static routers=192.168.0.254
static domain names servers=192.168.0.254
Et si vous deux cartes réseaus sont actives, vous pouvez modifier les deux interfaces comme ceci :
# Example static IP configuration :
interface eth0
static ip_address=192.168.0.100/24
static routers=192.168.0.254
static domain names servers=192.168.0.254
interface wlan0
static ip_address=192.168.0.101/24
static routers=192.168.0.254
static domain names servers=192.168.0.254
Dans cet exemple, la box se situe à l'adresse 192.168.0.254, l'interface eth0 se situe à l'adresse 192.168.0.100 et l'interface WIFI wlan0 à l'adresse 192.168.0.101. Une fois vos modifications faites, appuyez sur "Ctrl+O"" pour sauver ces modifications, puis sur "Ctrl+X" pour quitter l'éditeur Nano. De retour dans le terminal, entrez la commande suivante pour redémarrer votre Raspberrry Pi avec cette nouvelle configuration :
reboot
Après redémarrage, si vous déplacez la souris vers l'icône réseau en haut à droite de l'écran, vous verrez que les adresses ont été prises en compte :

La prochaine étape : Horloge temps réel.