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

Enregistrer 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 STM32 Utiliser le ST-LINK V2 d'une carte NuclĂ©o avec un autre STM32 Hello, 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

Coder en C sur un Lopy (Pycom)

Présentation du matériel Hello ! Dans cet article je vais vous parler de mes premiers pas en dĂ©veloppement embarquĂ© d'ESP32 en utilisant du matĂ©riel de chez Pycom. N'hĂ©sitez pas Ă  me faire part de vos remarques et suggestions dans les commentaires ! Voici le sommaire : PrĂ©sentation du matĂ©riel Cartes de dĂ©veloppement Cartes d'extension Pourquoi ? MatĂ©riel utilisĂ© Installation du framework ESPRESSIF pour ESP32 DĂ©marrer un projet existant Liaison sĂ©rie CĂąblage du module Configuration du projet Flasher le programme Monitor Conclusions PrĂ©sentation du matĂ©riel Cartes de dĂ©veloppement Lopy est un microcontrĂŽleur qui embarque un micro systĂšme Python, finement appelĂ© MicroPython . Ce systĂšme lĂ©ger permet de faciliter l'accĂšs au dĂ©veloppement embarquĂ©, en utilisant un langage de programmation facile d'accĂšs et qui possĂšde une communautĂ© importante (ce qui permet de trouver facilement de l'aide), j'ai nommĂ© Python !

MicroPython sur NUCLEO-F411RE

MicroPython sur NUCLEO-F411RE MicroPython sur NUCLEO-F411RE Aujourd'hui, j'ai dĂ©cidĂ© de tester MicroPython sur une carte STM32 que j'avais sous la main : la Nucleo-64 version STM32F411 . Pour les spĂ©cifications : ARM Cortex M4 Ă  100 MHz 512k de mĂ©moire flash, 128k de SRAM 2 extensions de connecteurs aux formats Arduino Uno et ST morpho. Quand je penses que c'est la frĂ©quence d'horloge d'un de mes premiers ordinateurs... đŸ˜„ Nostalgie, quand tu nous tiens. Bref, voyons voir comment fait-on tourner un MicroPython sur la bĂȘte ! MicroPython sur NUCLEO-F411RE Flasher la carte En mode DFU En mode hexadĂ©cimale Utiliser MicroPython sur STM32 Connexion sĂ©rie LED Conclusion Flasher la carte En mode DFU ⚠️ Attention ⚠️ cette manipulation nĂ©cessite soit une carte type USB breakout , soit de sacrifier un cĂąble USB en dĂ©nudant la partie opposĂ©e Ă  celle connectĂ©e sur l'ordinateur, soit de faire un peu de soudure avec une