Aller au contenuGuide cadeaux hacker · Noël 2026

Analyseur logique USB : décoder UART, I2C et SPI avec PulseView

Tuto analyseur logique USB 8 canaux : installer PulseView, décoder l'UART d'un Arduino, l'I2C d'un capteur et le SPI d'une flash. Clone ou Saleae ?

Publié le 10 min de lecture

Un analyseur logique USB, c'est un petit boîtier qui enregistre l'état haut ou bas de plusieurs fils à la fois et les affiche sur votre ordinateur. Avec le logiciel libre PulseView, il traduit ces signaux en octets lisibles : texte d'un port série, registres d'un capteur, commandes d'une mémoire flash. Un modèle 8 canaux à environ 20 € suffit pour apprendre, à condition de bien régler l'échantillonnage.

Ce tutoriel installe PulseView sur Windows, Linux ou macOS, puis propose trois exercices reproductibles sur du matériel qui vous appartient : un Arduino, un capteur I2C et une mémoire flash SPI.

Analyseur logique vs oscilloscope

Les deux instruments affichent des signaux dans le temps, mais ils ne répondent pas à la même question.

Analyseur logiqueOscilloscope
Ce qu'il mesureHaut ou bas (0/1)La tension réelle, en continu
Nombre de voies8, 16 ou plus2 ou 4 en général
Durée d'enregistrementLongue (secondes, voire minutes)Courte
Décodage de protocolesNatif (UART, I2C, SPI, CAN…)Selon le modèle, souvent en option
Question type« Qu'est-ce que ces puces se disent ? »« Ce signal est-il propre ? »
Prix d'entrée≈ 20 €≈ 300 € et plus

Pour lire ce qui circule sur un bus série, l'analyseur logique est le bon outil. L'oscilloscope devient indispensable quand on soupçonne un problème électrique : fronts lents, parasites, niveaux de tension incorrects.

Le principe à retenir pour l'analyseur : il échantillonne. Il regarde chaque fil à intervalles réguliers. Échantillonnez au moins 4 fois, et idéalement 10 fois, plus vite que le signal le plus rapide, sinon des fronts passent entre deux mesures et le décodage échoue.

Installer PulseView/sigrok (pilotes fx2lafw)

sigrok est une suite libre d'outils pour instruments de mesure. PulseView est son interface graphique. La plupart des analyseurs 8 voies bon marché reposent sur une puce Cypress FX2. sigrok les pilote avec fx2lafw, un firmware libre chargé dans l'appareil à chaque branchement. Il n'y a rien à flasher de façon permanente. Ces modules sont donnés pour 8 voies à 24 MHz maximum. En pratique, le débit réel dépend du nombre de voies actives et du port USB.

Windows

  1. Téléchargez l'installeur PulseView sur la page de téléchargement de sigrok. Le projet recommande les versions nightly, plus à jour que la dernière version stable, 0.4.2.
  2. Branchez l'analyseur.
  3. Lancez Zadig, fourni avec l'installeur et accessible depuis le menu Démarrer.
  4. Sélectionnez l'analyseur dans la liste. Selon le modèle et l'état du firmware, il peut s'afficher sous un nom générique ou « fx2lafw ». Choisissez le pilote WinUSB et installez-le. Si la liste est vide, cochez Options → List All Devices, puis sélectionnez uniquement l'analyseur.
  5. Si PulseView ne trouve toujours pas l'appareil, recommencez l'étape Zadig. La documentation de sigrok indique que certains appareils changent d'identifiant USB une fois le firmware chargé et demandent donc le pilote deux fois.

Linux

Les paquets des distributions conviennent :

sudo apt install pulseview sigrok-cli sigrok-firmware-fx2lafw
sigrok-cli --scan

sigrok-cli --scan doit lister un appareil fx2lafw. S'il n'apparaît pas, débranchez et rebranchez l'analyseur pour que les règles d'accès USB (udev) s'appliquent. Consultez sinon la page Linux de sigrok. Si les paquets de votre distribution sont trop anciens, le projet propose aussi une version AppImage de PulseView.

macOS

Téléchargez l'image disque nightly sur la page de téléchargement. Elle est compilée pour les processeurs Intel : sur un Mac Apple Silicon, elle passe par Rosetta 2. Aucun pilote n'est à installer. Les recettes Homebrew existantes ne sont pas maintenues par le projet, qui recommande ses propres binaires.

Premier lancement

Dans PulseView, cliquez sur la liste des appareils, choisissez fx2lafw puis Scan for devices. L'analyseur apparaît avec ses voies D0 à D7. Réglez le nombre d'échantillons (samples) et le taux d'échantillonnage dans la barre d'outils, puis cliquez sur Run.

Branchez toujours la masse (GND) de l'analyseur sur la masse du circuit avant les voies de signal. Sans masse commune, les mesures n'ont aucun sens.

Exercice 1 : décoder l'UART d'un Arduino

L'UART est le port série le plus simple : un fil par sens, pas d'horloge. Les deux côtés s'accordent à l'avance sur une vitesse en bauds. C'est aussi lui qu'on cherche en priorité sur un appareil qu'on démonte, comme l'explique notre guide UART c'est quoi ? Trouver le port série d'un appareil.

Le montage (Arduino Uno ou Nano) :

AnalyseurArduino
GNDGND
D0Broche 1 (TX)

Le programme :

void setup() {
  Serial.begin(9600);
}

void loop() {
  Serial.println("Bonjour PulseView");
  delay(500);
}

La capture :

  1. Taux d'échantillonnage : 1 MHz, largement plus de 10 fois 9600 bauds. Nombre d'échantillons : 1 M, soit une seconde.
  2. Cliquez sur Run. Des paquets de créneaux apparaissent sur D0 toutes les 500 ms.
  3. Ajoutez le décodeur : icône Add protocol decoder, tapez UART. Réglez TX sur D0, Baud rate sur 9600, le format sur 8N1 (8 bits de données, pas de parité, 1 bit d'arrêt), puis l'affichage (data format) sur ascii.

Le texte « Bonjour PulseView » s'affiche au-dessus des créneaux, caractère par caractère.

Pour aller plus loin : passez à Serial.begin(115200), gardez le décodeur à 9600, et observez les caractères incohérents qui apparaissent. C'est exactement ce que l'on voit face à un appareil inconnu dont on ignore la vitesse. Mesurez ensuite la durée du bit le plus court avec les curseurs de PulseView : 1 / durée donne le débit en bauds.

Exercice 2 : I2C d'un capteur

L'I2C relie un microcontrôleur à plusieurs composants avec deux fils, SCL (horloge) et SDA (données). Chaque composant a une adresse. Nous utilisons un capteur BME280 (température, humidité, pression), très répandu sur de petites cartes à quelques euros. Vérifiez que votre module accepte le 5 V : beaucoup intègrent un régulateur, mais pas tous. Sinon, utilisez une carte en 3,3 V.

Le montage :

AnalyseurArduino UnoBME280
GNDGNDGND
D1A5 (SCL)SCL
D2A4 (SDA)SDA

Alimentez le capteur en VIN/VCC selon votre module.

Le programme lit le registre d'identification de la puce, à l'adresse 0xD0. Sur un BME280, il contient toujours 0x60, selon la fiche technique de Bosch.

#include <Wire.h>

const uint8_t ADDR = 0x76;   // 0x77 sur certains modules

void setup() {
  Serial.begin(9600);
  Wire.begin();
}

void loop() {
  Wire.beginTransmission(ADDR);
  Wire.write(0xD0);              // registre "chip id"
  Wire.endTransmission();
  Wire.requestFrom(ADDR, (uint8_t)1);
  if (Wire.available()) {
    Serial.println(Wire.read(), HEX);   // attendu : 60
  }
  delay(1000);
}

La capture :

  1. Taux d'échantillonnage : 2 MHz ou plus. L'I2C de l'Arduino tourne à 100 kHz par défaut.
  2. Déclencheur (trigger) : front descendant sur D2 (SDA), pour démarrer la capture au début d'une transaction.
  3. Ajoutez le décodeur I²C : SCL sur D1, SDA sur D2.

Vous lisez la conversation en clair : Start, Address write: 76, Data write: D0, Start repeat ou Stop, Address read: 76, Data read: 60, Stop.

Si rien ne répond (NACK après l'adresse), essayez l'adresse 0x77. Et si votre capteur renvoie 0x58, c'est un BMP280, son cousin sans mesure d'humidité. C'est une confusion fréquente chez les vendeurs.

Exercice 3 : SPI d'une mémoire flash

Le SPI est plus rapide que l'I2C. Il utilise quatre fils : CS (sélection), SCK (horloge), MOSI (maître vers esclave) et MISO (esclave vers maître). On le retrouve sur les mémoires flash qui stockent le firmware de la plupart des objets connectés. Les observer est la première étape avant d'en extraire le contenu.

Attention aux tensions : les mémoires flash SPI courantes, comme les Winbond W25Qxx, fonctionnent en 3,3 V. Ne les reliez pas directement aux broches 5 V d'un Arduino Uno. Utilisez une carte en 3,3 V, par exemple une carte à base d'ESP32 ou de RP2040, ou un convertisseur de niveaux.

Le montage (adaptez les numéros de broches SPI à votre carte) :

AnalyseurSignal SPI
GNDGND
D3CS
D4SCK
D5MOSI
D6MISO

Le programme envoie la commande standard 0x9F (JEDEC ID) et lit trois octets : le fabricant, le type et la capacité.

#include <SPI.h>

const int CS_PIN = 5;   // à adapter à votre carte

void setup() {
  Serial.begin(115200);
  pinMode(CS_PIN, OUTPUT);
  digitalWrite(CS_PIN, HIGH);
  SPI.begin();
}

void loop() {
  SPI.beginTransaction(SPISettings(1000000, MSBFIRST, SPI_MODE0));
  digitalWrite(CS_PIN, LOW);
  SPI.transfer(0x9F);
  uint8_t m = SPI.transfer(0);
  uint8_t t = SPI.transfer(0);
  uint8_t c = SPI.transfer(0);
  digitalWrite(CS_PIN, HIGH);
  SPI.endTransaction();
  Serial.printf("%02X %02X %02X\n", m, t, c);
  delay(1000);
}

Serial.printf existe sur les cartes ESP32 et RP2040. Sur d'autres cartes, remplacez-le par trois Serial.print(…, HEX).

La capture :

  1. Horloge SPI à 1 MHz, donc échantillonnage à 8 MHz ou plus. Si l'analyseur perd des données, désactivez les voies inutilisées (D0–D2, D7) pour réduire le débit USB.
  2. Déclencheur : front descendant sur D3 (CS).
  3. Ajoutez le décodeur SPI (CS = D3, CLK = D4, MOSI = D5, MISO = D6, mode 0), puis empilez dessus le décodeur SPI flash.

PulseView affiche Read JEDEC ID et les trois octets. Sur une puce Winbond, le premier vaut EF, l'identifiant du fabricant. Comparez les deux autres avec la fiche technique de votre puce pour retrouver sa capacité.

C'est le même geste, observer avant d'agir, que l'on applique ensuite à la mémoire d'un appareil que l'on possède et que l'on étudie.

Clone 8 canaux vs Saleae : lequel acheter ?

Clone 8 voies (fx2lafw)Saleae Logic 8
Prix≈ 10–25 €499 $ (relevé octobre 2026)
Échantillonnage numériqueJusqu'à 24 MHz annoncés, moins en pratique sur 8 voies100 MS/s
Entrées analogiquesNonOui (10 MS/s)
LogicielPulseView / sigrok (libre)Logic 2 (Saleae), très abouti
Protection des entréesVariable selon le fabricantDocumentée
DécodeursPlus de 100 dans sigrokNombreux, plus extensions

Notre avis :

  • Pour apprendre, pour les CTF hardware et pour la plupart des objets du quotidien, le clone suffit largement. UART, I2C et SPI lents représentent l'essentiel de ce que vous croiserez au début.
  • Le Saleae vaut son prix si vous déboguez du matériel professionnellement : bus rapides, signaux analogiques, logiciel plus confortable, fiabilité. Saleae propose aussi des remises pour les étudiants, les enseignants et les amateurs, selon sa page dédiée.
  • Ce qu'il ne faut pas faire : utiliser un clone avec le logiciel Saleae. Logic 2 ne prend en charge que le matériel Saleae, et PulseView fait le travail légalement et gratuitement.

Notre analyseur logique 8 voies, à 19,90 €, est un module de ce type, compatible sigrok et PulseView. Il reviendra bientôt en boutique : inscrivez-vous pour être prévenu. Pour mettre ces gestes en pratique sur un défi conçu pour cela, sans rien souder, notre puzzle Firmware Dump, prévu pour 2028, est en liste d'attente. Le reste du matériel est dans la boutique.

Questions fréquentes

Un analyseur logique à 20 € suffit-il pour débuter ?

Oui, pour l'UART, l'I2C et le SPI lents à modérés, soit l'essentiel de l'apprentissage et de nombreuses cartes du quotidien. Ses limites apparaissent sur les bus rapides, au-delà de quelques mégahertz, et sur les signaux analogiques.

Quel taux d'échantillonnage choisir ?

Au moins 4 fois, idéalement 10 fois, la fréquence du signal le plus rapide. Par exemple 1 MHz pour un UART à 115 200 bauds, 2 à 4 MHz pour un I2C à 400 kHz, 8 MHz ou plus pour un SPI à 1 MHz.

Puis-je brancher l'analyseur sur une carte en 5 V ?

Beaucoup de modules 8 voies acceptent les niveaux 3,3 V et 5 V, mais vérifiez la fiche de votre modèle. Ne dépassez jamais la tension indiquée et reliez toujours la masse de l'analyseur à celle du circuit.

Le logiciel Saleae Logic 2 fonctionne-t-il avec un clone ?

Non. Utilisez PulseView et sigrok, libres et gratuits, qui prennent en charge ces modules grâce au firmware fx2lafw.

Articles liés

UART c'est quoi : le port série caché sur les cartes électroniques. Repérer TX, RX et GND, trouver le baudrate et lire la console de démarrage de votre appareil.
Balise BLE pour débutant : comprendre le Bluetooth Low Energy, lire une trame d'advertising, décoder iBeacon et Eddystone avec nRF Connect, Wireshark, Python.
CTF hardware : radio, NFC, BLE, bus série, firmware, side-channel. Les familles d'épreuves, des write-ups publics commentés et le kit minimum pour s'y préparer.