Présentation:

Sysfs (System File System) est un mécanisme du noyau Linux qui permet d’interagir avec les périphériques matériels, comme les GPIO (General Purpose Input/Output), via des fichiers virtuels dans le système de fichiers.

C’est une méthode simple pour apprendre à contrôler les broches GPIO depuis un terminal ou des scripts shell, mais elle est aujourd’hui considérée comme legacy (obsolète) et remplacée par libgpiod dans les nouvelles versions de Linux.

 Structure de Sysfs pour les GPIO

Toutes les opérations se font via des fichiers dans /sys/class/gpio/ :

Fichier/DossierDescription
/sys/class/gpio/exportÉcriture d’un numéro de GPIO pour l’activer
/sys/class/gpio/unexportÉcriture d’un numéro de GPIO pour le désactiver
/sys/class/gpio/gpioXX/Dossier créé pour chaque GPIO exporté (XX = numéro)
direction (in ou out)Définit si la broche est en entrée ou sortie
value (0 ou 1)Lit ou écrit l’état logique de la broche
edge (nonerisingfallingboth)Configure une interruption (pour les entrées)

Exemple Pratique : Allumer une LED (GPIO17)

📌 Configuration initiale

  1. Vérifier que Sysfs est disponible (sur les vieilles versions de Raspberry Pi OS) :
ls /sys/class/gpio/

on doit obtenir quelque chose comme ça:

bruno@rpi364:~/Works/gpio1 $ ls /sys/class/gpio/
export  gpiochip0  gpiochip504  unexport

Exporter la broche GPIO17 :

echo 17 > /sys/class/gpio/export

Crée le dossier /sys/class/gpio/gpio17/.

Configurer en sortie :

echo out > /sys/class/gpio/gpio17/direction

💡 Allumer/Éteindre la LED

En fait la broche GPIO17 va sortir un 1 , ici une tension de 3,3V

echo 1 > /sys/class/gpio/gpio17/value

Éteindre (0V) 

La broche GPIO17 va sortir 0 , ici une tension 0V

echo 0 > /sys/class/gpio/gpio17/value

🔌 Nettoyage (quand terminé)

echo 17 > /sys/class/gpio/unexport

Autre Exemple : Lire un Bouton (GPIO27)

echo 27 > /sys/class/gpio/export
echo in > /sys/class/gpio/gpio27/direction

Lire l’état !

cat /sys/class/gpio/gpio27/value

on a fini ! on débranche

echo 27 > /sys/class/gpio/unexport