Accéder au contenu principal

Utiliser un raspberry pi en mode headless

20191016-headless_raspberry_pi
Un raspberry pi sans tĂȘte đŸ˜±
Un raspberry pi sans tĂȘte đŸ˜±

(C'est Ă  dire sans Ă©cran ni clavier)

Pourquoi faire ça ? En fait, parfois (ou mĂȘme souvent), on a bien envie que notre petit Raspberry Ă  tout faire soit mis dans un coin et qu'il fasse ce qu'on lui demande. Ça marche souvient bien, mais quand mĂȘme, des fois, il faut bien s'y connecter pour mettre Ă  jour le systĂšme ou voir pourquoi ça ne fait pas ce qu'on veut. Et si vous ĂȘtes un peu feignant comme moi (comme tout bon informaticien qui se respecte en fait), vous avez forcĂ©ment la flemme de sortir l'Ă©cran, le cĂąble HDMI et de tout connecter. Nous allons donc voir deux mĂ©thodes qui permettent de s'en passer.

Matériel nécessaire

SSH

Oui, bon, celle lĂ , elle est facile. On fait quand mĂȘme un point vite fait, histoire de revoir les bases (et, j'avoue, ça me fera mon mini how-to pour la prochaine fois).

Pour se connecter en SSH, il y a deux cas : on connait l'adresse IP de la bĂȘte ou pas. Voyons les deux possibilitĂ©s.

Il faut Ă©galement que notre PC soit connectĂ© sur le mĂȘme rĂ©seau local (typiquement, connectĂ© sur la mĂȘme box internet Ă  la maison).

Je connais mon adresse IP

Ça, c'est le cas oĂč on a dĂ©marrĂ© notre petit Rasp avec un Ă©cran, un clavier et peut ĂȘtre mĂȘme une souris. Depuis la ligne de commande, j'ai donc rĂ©cupĂ©rĂ© l'adresse IP (pour mĂ©moire, c'est avec ip a que vous l'aurez).

Je peux maintenant passer sur la machine depuis laquelle je veux me connecter au raspberry. LĂ , pas de surprise, depuis mon client prĂ©fĂ©rĂ© (Putty sous Windows, ligne de commande en Linux et Mac, client dĂ©diĂ© - il y en a mĂȘme sous Android et IOS), on se connecte directement (je fais la version ligne de commande, adaptez Ă  votre logiciel) :

ssh pi@192.168.0.34

Là, je suis parti du principe que vous avez gardé le compte par défaut. Du coup, votre mot de passe est raspberry.

Si vous voulez faire quelque chose d'un peu plus "propre" d'un point de vue sécurité informatique, commencez par changer le mot de passe du compte par défaut (voire créez un autre compte et interdisez l'accÚs SSH au compte pi). Vous pouvez également vous connectez à l'aide d'une clé SSH. C'est un peu plus long à mettre en place mais c'est plus robuste et plus simple par la suite. En effet, si vous choisissez d'utilisez une clé privée sans mot de passe (bon, faut pas la perdre celle-là..), vous allez pouvoir vous connectez directement par ssh sans taper de mot de passe. Je fait court sur ce point mais ssh, c'est vraiment puissant, il y a pas de chose pour se sécuriser et se simplifier la vie d'administrateur.

Je ne connais pas mon adresse IP

Bon, ben, va falloir la trouver... ^^. Je ne compte pas la possibilitĂ© de garder un Ă©cran et un clavier connectĂ©, ce n'est pas ce qu'on cherche Ă  faire ici. En revanche, vous pouvez utiliser un scanner de ports (l'orthographe est importante 😋), celui que je prĂ©fĂšre est nmap. Depuis votre PC, vous allez chercher un port ouvert sur votre rĂ©seau. Il suffit de savoir que le numĂ©ro de port du protocole ssh est 22 et la commande Ă  taper est :

nmap -p 22 192.168.1.0/24

(ps : c'est Ă  adapter Ă  votre rĂ©seau. Moi je sais que mon adressage est de la forme 192.168.1.xxx mais chez vous ça peut ĂȘtre 192.168.0.xxx ou 10.xxx.yyy.zzz)

Et vous devriez alors obtenir quelque chose du genre :

Starting Nmap 7.80 ( https://nmap.org ) at 2019-10-28 09:25 CET
Nmap scan report for box (192.168.1.1)
Host is up (0.0026s latency).

PORT   STATE    SERVICE
22/tcp filtered ssh

Nmap scan report for raspberrypi (192.168.1.31)
Host is up (0.0075s latency).

J'ai donc bien identifié l'adresse IP de mon raspberry à 192.168.1.31. Je n'ai plus qu'à m'y connecter en ssh.

Connexion serial

C'est ici qu'on va se servir de l'adaptateur USB - TTL (ou série, ou UART).

Tout d'abord, il faut activer la console sur le port série du raspberry. Pour ça, on a deux solutions.

Activer la console série

Via /boot/config.txt

Il faut modifier le fichier /boot/config.txt qui est présent sur la carte SD. On doit donc la lire avec un autre ordinateur et ouvrir le fichier config.txt puis ajouter tout en bas la ligne enable_uart=1.

On remet la carte SD dans le raspberry et on le rallume. (J'explique plus loin comment brancher l'adaptateur puis se connecter Ă  la console).

Via l'outil raspi-config

Si votre raspberry est connecté à un écran, c'est assez facile. Vous lancez la commande :

sudo rasp-config

Vous allez dans Interfacing Options puis Serial. A la question Would you like a login shell to be accessible over serial? répondez Yes puis rebootez le raspberry.

Connecter l'adaptateur USB - série

Maintenant que l'option console via le port série est active, nous pouvons connecter notre adaptateur. Il y a en tout quatre cùbles à brancher mais deux sont optionnels.

Cùbles pour la liaison série

Les deux premiers cĂąbles Ă  brancher sont ceux connectĂ©s aux broches RX et TX. LĂ  il faut juste saisir la logique du systĂšme pour ne pas se tromper. En effet, sur le raspberry la broche RX (rĂ©ception donc) attend des donnĂ©es. Ces donnĂ©es doivent donc ĂȘtre Ă©mise depuis l'adapteur par la broche TX (transmission) car c'est lui qui va envoyer les informations.

Les broches des raspberry sont définies selon la photo ci-dessous :

Broches Raspberry Pi 2 & 3
Broches Raspberry Pi 2 & 3

Source : Microsoft - Raspberry Pi 2 & 3 Pin Mappings

Donc il faut brancher un cĂąble entre la broche RX de notre adaptateur et la broche TX du raspberry (broche numĂ©ro 08 sur la photo). De mĂȘme pour l'autre cĂąble, TX de l'adaptateur vers RX (broche numĂ©ro 10).

Avec ces deux cĂąbles, vous rebranchez tout et vous pourrez avoir accĂšs Ă  votre console. Mais on peut faire un peut mieux ! En effet, l'adaptateur USB-TTL possĂšde Ă©galement une broche GND et +5v (normalement, c'est trĂšs souvent le cas). Et avec ces deux broches, on peut alimenter notre rasp !

CĂąble pour l'alimentation

Comme dit juste au-dessus, on peut alimenter notre raspberry avec notre adaptateur. Il suffit de connecter la broche GND de notre adaptateur à une des broches GND du rasp, il y en a plein, par exemple la numéro 06. Puis il faut connecter le +5v de l'adaptateur à un pin identique du nano ordinateur, la 02 ou la 04.

Et voilĂ  ! Tout devrait se lancer correctement, avec trĂšs peu de cĂąble au final đŸ€—.

Connection Ă  la console

La vitesse par défaut est de 115200 bauds.

Pour se connecter, ça dépend de votre systÚme d'exploitation. Pour Windows, Putty sera le plus pratique, c'est l'outil le plus utilisé. Il faut choisir le bon port COM correspondant à son adaptateur et choisir la bonne vitesse.

Pour Linux et Mac, moi j'utilise l'utilitaire screen, c'est pratique et lĂ©ger mais il faut aimer la ligne de commande 😉. Mais une fois qu'on connaĂźt deux-trois trucs, c'est un peu comme vim, on s'y fait et on l'apprĂ©cie. Pour ma part (sous Mac), pour accĂ©der Ă  la console il me suffit de faire :

screen /dev/cu.SLAB_USBtoUART 115200

Si vous avez l'impression qu'il ne se passe rien, appuyez sur la touche Entrée et le prompt devrait apparaßtre pour accéder au systÚme.

Toujours sous Mac, pour quitter une session screen je fait Ctrl A puis je tape :quit et je valide avec EntrĂ©e. Ca peut servir de le savoir 😉.

Voilà le résultat chez moi :

Console via le port série
Console via le port série

Conclusion

On a fait un tour rapide des diffĂ©rentes maniĂšres de se connecter Ă  un raspberry pi sans Ă©cran. Moi ma mĂ©thode prĂ©fĂ©rĂ©e reste celle avec l'adaptateur USB, on a beaucoup moins de cĂąble mais on a quand mĂȘme besoin d'un PC Ă  proximitĂ©. La solution en SSH conviendra aux boĂźtes que l'on veut plus cacher (genre derriĂšre la tĂ©lĂ© ^^).

Commentaires

  1. Raspbian activant mDNS par défaut, on peut se connecter à une RPi dont on ne connait pas L'IP au moyen de :
    ssh @.local
    (ex: ssh raspberry.local si on a laissé le hostname par défaut)

    RĂ©pondreSupprimer
    RĂ©ponses
    1. Merci pour l'info ! Pas eu l'occasion d'utiliser la version DNS mais toujours bon Ă  savoir :)

      Supprimer
  2. Je ne comprend pas l'intĂ©rĂȘt !? Pourquoi ne pas simplement se connecter en SSH sur le raspberry pi par le rĂ©seaux ?

    RĂ©pondreSupprimer
    RĂ©ponses
    1. ça sert justement quand il n'y a pas de rĂ©seau (ou un problĂšme de connexion). ça peut servir quand tu fais ton propre Linux (avec Yocto ou Buildroot par exemple) pour debugger. Il y a Ă©galement le cas oĂč le raspberry est connectĂ© avec un autre type de liaison (LoRa, Sigfox, etc).
      Bref, pas mal de cas d'usage au final ;)

      Supprimer
    2. Merci pour cet Ă©clairage ;)

      Supprimer

Publier un commentaire

Posts les plus consultés de ce blog

Utiliser le ST-LINK V2 d'une carte Nucléo avec un autre STM32

Utiliser le STLINK-V2 d'une carte Nucléo avec un autre STM32Utiliser le ST-LINK V2 d'une carte NuclĂ©o avec un autre STM32Hello,
Comme c'Ă©tait NoĂ«l, je me suis offert un lot de STM32f103c8t6, Ă©galement appelĂ©e Blue Pill (achetĂ© sur Amazon pour bĂ©nĂ©ficier de la livraison Prime mais vous l'aurez pour moins cher sur eBay, Ă  condition d'attendre le dĂ©lai de livraison de plusieurs semaines...), ainsi que le livre Beginning STM32 qui explique comment mettre en oeuvre ces petites cartes avec des outils uniquement Open Source.DĂšs le premier chapitre, l'auteur nous explique qu'il nous faut un ST-Link V2 pour programmer la Blue Pill. Argh ! Dans ma prĂ©cipitation Ă  passer ma commande, je n'ai pas vu cette subtilitĂ©... Qu'Ă  cela ne tienne, j'ai dĂ©jĂ  une carte Nucleo qui, comme toute les cartes de ce type, intĂšgre un programmateur ST-Link V2.Voyons comment mettre en oeuvre tout ça.Utiliser le ST-LINK V2 d'une carte NuclĂ©o avec un autre STM32PrĂ©sentation …

DĂ©buter avec Lopy 4

Débuter avec Lopy 4 Débuter avec Lopy 4 Je profites de cette période de confinement pour ressortir de mon placard mon Lopy4 qui trainait dans un tiroir. J'ai avec une carte d'extension Pytrack. A noter qu'il est bien pratique d'avoir une des cartes d'extension pour pouvoir s'y connecter facilement. Les barbus pourront toujours s'y connecter directement avec un adaptateur USB-série, mais ici on fait la méthode simple, on prend une des cartes d'extension.
Mettre à jour la carte d'extension Bon, comme je ne sais plus dans quel état j'ai laissé mon matos, une (re)mise à jour s'impose. On commence par le Pytrack, la page officielle est bien faite. Je résume pour tous ceux (comme moi) qui auront la flemme de tout lire, surtout si ça se passe bien.
Installer dfu-util : sudo apt install dfu-util Mettre Ă  jour :
DĂ©branchez le cĂąble de la carteAppuyez et maintenez le bouton (S1 pour l'expansion board)Branchez le cĂąble USB et attendez une seconde av…