26
DOMOTIQUE Sniffeur Communication NRF24 Ref : NT_207 Iss/Rev : 1.0 Date : 30/09/2018 Page : 1 / 26 Auteur : Gerard Cassette Nom Fichier : NT_217_Sniffer_Communication_NRF24__V1-0.doc Date Fichier : 1er octobre 2018 Suivi des versions : Version Date Commentaire 1.0 30/09/18 Création

Auteur : Gerard Cassette Nom Fichier : NT 217 Sniffer Communication NRF24 V1-0 · 2018. 10. 1. · Les prérequis pour ce sniffeur : - Connaissance de base des communications. - Connaissance

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Auteur : Gerard Cassette Nom Fichier : NT 217 Sniffer Communication NRF24 V1-0 · 2018. 10. 1. · Les prérequis pour ce sniffeur : - Connaissance de base des communications. - Connaissance

DOMOTIQUE Sniffeur Communication NRF24

Ref : NT_207

Iss/Rev : 1.0

Date : 30/09/2018

Page : 1 / 26

Auteur : Gerard Cassette

Nom Fichier : NT_217_Sniffer_Communication_NRF24__V1-0.doc

Date Fichier : 1er octobre 2018

Suivi des versions :

Version Date Commentaire

1.0 30/09/18 Création

Page 2: Auteur : Gerard Cassette Nom Fichier : NT 217 Sniffer Communication NRF24 V1-0 · 2018. 10. 1. · Les prérequis pour ce sniffeur : - Connaissance de base des communications. - Connaissance

DOMOTIQUE Sniffeur Communication NRF24

Ref : NT_207

Iss/Rev : 1.0

Date : 30/09/2018

Page : 2 / 26

Sommaire

1 INTRODUCTION ............................................................................................................................................. 3

1.1 REMERCIEMENTS .......................................................................................................................................................................... 3

1.2 DOCUMENTATION .......................................................................................................................................................................... 3

1.3 PRÉREQUIS ..................................................................................................................................................................................... 3

2 LA THEORIE ................................................................................................................................................... 4

2.1 INTRODUCTION ............................................................................................................................................................................... 4

2.2 NRF24 RENIFLANT ....................................................................................................................................................................... 4

2.3 FORMATS DE PAQUETS ................................................................................................................................................................ 4

2.4 RÉCEPTION ..................................................................................................................................................................................... 5

2.5 LIMITES ............................................................................................................................................................................................. 6

3 LA RÉALISATION HW ET SW ...................................................................................................................... 7

3.1 LE MONTAGE HW ......................................................................................................................................................................... 7

3.1.1 Schéma Théorique .......................................................................................................................................................................... 7

3.1.2 Réalisation HW en pratique .......................................................................................................................................................... 8

3.2 LOGICIEL .......................................................................................................................................................................................... 9

3.2.1 Introduction .................................................................................................................................................................................... 9

3.2.2 Téléchargement et Installation ......................................................................................................................................................... 9

3.2.2.1 Compilation et Installation ARDUINO : ........................................................................................................................................ 10

3.2.2.2 Installation NRF24Sniff.exe : ............................................................................................................................................................. 10

3.2.2.3 Installation de Wireshark et des dissecteurs : .................................................................................................................................. 12

4 L’EXECUTION DES PROGRAMMES ET LE DECODAGE DES MESSAGES ........................................ 15

4.1 LA PLATEFORME DE TEST .......................................................................................................................................................... 15

4.2 SÉQUENCE DE DÉMARRAGE ..................................................................................................................................................... 15

5 INVESTIGATION SUR NOTRE MAQUETTE .............................................................................................. 19

5.1 INTRODUCTION ............................................................................................................................................................................ 19

5.2 ANALYSE DES MESSAGES REÇUS ................................................................................................................................................ 19

5.3 BLINDAGE SIMPLE ET ANALYSE DES MESSAGES REÇUS ........................................................................................................ 19

5.4 BLINDAGE COMPLETS ET ANALYSE DES MESSAGES REÇUS .................................................................................................. 20

5.5 CONCLUSIONS : ............................................................................................................................................................................. 21

6 PRÉSENTATION RAPIDE DES FONCTIONS UTILES DE WIRESHARK ............................................... 22

6.1 UTILISATION DE BASE DE WIRESHARK .................................................................................................................................. 22

6.2 FILTRAGE ....................................................................................................................................................................................... 23

6.3 GRAPHIQUE IO ET STATISTIQUES ........................................................................................................................................... 24

6.4 DISSECTEUR MYSENSOR .......................................................................................................................................................... 25

Page 3: Auteur : Gerard Cassette Nom Fichier : NT 217 Sniffer Communication NRF24 V1-0 · 2018. 10. 1. · Les prérequis pour ce sniffeur : - Connaissance de base des communications. - Connaissance

DOMOTIQUE Sniffeur Communication NRF24

Ref : NT_207

Iss/Rev : 1.0

Date : 30/09/2018

Page : 3 / 26

Page 3

1 INTRODUCTION

La réalisation de notre maquette Jeedom DOMO200 nous a mis en évidence des problèmes de communication entre les différents éléments : certaines informations ne passaient manifestement pas entre les capteurs et le gateway !

Reste à savoir pourquoi !? et mettre en évidence le problème.

Donc pas facile !

Comme toujours, pas mal d’information sur le net ; mais rarement complètement traitées et parfois contradictoires :

a) Certains disent que c’est des problèmes sur l’alimentation en 3v3 du NRF24

b) D’autres parlent de composant NRF24 bas de gamme.

c) D’autres de problème de blindage du NRF24.

Et certains n’ont aucun problème avec les mêmes montages, les mêmes composants et les mêmes SW.

Donc la brasse coulée, jusqu’au moment où j’ai trouvé un article intéressant parlant de « sniffeur » les communications… et le petit plus : compris les messages en erreur de CRC !

Le problème : le Post date de 2010, donc vieux de 8 ans (donc version de SW caduque) et aucun nouveau post sur le forum de 2016. Une tentative de post ne m’a amené aucune réponse.

Mais le ciel a été avec moi :

a) J’ai réussi à faire fonctionner avec les versions de SW actuelles (Windows 2010, mysensor 2.3, etc.)

b) Ce « sniffeur » a permis de comprendre complètement les problèmes de communication de notre maquette DOMO200 et de les résoudre.

1.1 Remerciements

Cette réalisation a été possible grâce au post réalisé le forum suivant :

https://www.mysensors.org/controller/sniffeur

http://yveaux.blogspot.com/2014/07/nrf24l01-sniffeur-part-1.html

http://yveaux.blogspot.com/2014/07/nrf24l01-sniffeur-part-2.html

http://yveaux.blogspot.com/2014/07/nrf24l01-sniffeur-part-3.html

Que j’ai traduit, simplifié, complété, détaillé et testé.

1.2 Documentation

La documentation utilisée pour la construction de cette alarme est la suivante :

RD1 : NT30 MANUEL COMPLET DE FABRICATION DE LA PLATEFORME DOMOTIQUE DOMO_100 V1.3.1 – Gerard Cassette

1.3 Prérequis

Les prérequis pour ce sniffeur :

- Connaissance de base des communications.

- Connaissance des montage sous Mysensor

- Maquette de base avec ARDUINO et NRF24.

Page 4: Auteur : Gerard Cassette Nom Fichier : NT 217 Sniffer Communication NRF24 V1-0 · 2018. 10. 1. · Les prérequis pour ce sniffeur : - Connaissance de base des communications. - Connaissance

DOMOTIQUE Sniffeur Communication NRF24

Ref : NT_207

Iss/Rev : 1.0

Date : 30/09/2018

Page : 4 / 26

Page 4

2 LA THEORIE

2.1 Introduction

Le but du sniffeur est d'inspecter les données brutes des messages. Dans l’utilisation standard, ces puces réseau acceptent uniquement les messages qui leur sont directement adressés, mais la plupart supportent également un mode dit « de promiscuité ». Ce mode permet à la puce réseau de capturer et de surveiller tout le trafic réseau, et pas seulement le trafic adressé à un nœud.

2.2 NRF24 reniflant

La puce sans fil 2.4GHz (ou NRF24 en abrégé) ne prend cependant pas en charge le mode promiscuité, ce qui en théorie rend impossible la capture du trafic réseau entre différents nœuds sur un réseau. Mais, avec quelques astuces (dont une consistant à réduire la longueur de l'adresse réseau d'un NRF24), on arrive à capturer le trafic non directement adressé à cette puce.

Le sniffeur, présenté dans cet article, réalise cela sous certaines conditions et avec les moyens suivants :

• Capture de trafic pour un réseau avec des paramètres connus (canal, débit en bauds, adresse de base)

• Analyse à l'aide de l’analyseur de protocole réseau Wireshark

2.3 Formats de paquets

Un paquet régulier est envoyé par le NRF24 au format suivant :

Paquet NRF24 régulier

Chaque message commence par un préambule, que la Puce radio utilise pour identifier les paquets entrants. L'adresse du nœud cible suit et peut être spécifiée entre 3 et 5 octets. Vient ensuite la charge utile de taille fixe, suivie d'un CRC facultatif pour vérifier l'intégrité du message après réception. Le CRC est calculé sur l'ensemble du message, à l'exclusion du préambule et du CRC lui-même. La longueur de la charge utile doit être indiquée à la radio, car un paquet normal ne contient aucune indication de la longueur.

Lorsqu'un message reçu correspond à l'adresse du récepteur de la Puce radio et que le CRC est trouvé valide ou désactivé, la Puce radio stockera la charge utile dans un FIFO interne pour la réception par l'hôte (microcontrôleur ou autre appareil connecté au NRF24 via SPI).

Les modules NRF24L01 + prennent en charge un mode appelé « Enhanced Shockburst » qui présente un certain nombre d’avantages par rapport à un usage normal (incomplet) :

• Les longueurs de charge utile peuvent être définies dynamiquement et font partie du message

• Le nœud récepteur peut automatiquement envoyer un accusé de réception à l'expéditeur pour indiquer que le message a été reçu correctement. L'expéditeur réessayera automatiquement la transmission un certain nombre de fois lorsque l'accusé de réception n'est pas reçu dans un délai imparti configurable (Nordic appelle ceci "Gestion automatique des transactions par paquets").

Des messages « Enhanced Shockburst »sont envoyés par liaison radio dans le format suivant (extrait de la fiche technique) :

Paquetage amélioré NRF24 Shockburst

Page 5: Auteur : Gerard Cassette Nom Fichier : NT 217 Sniffer Communication NRF24 V1-0 · 2018. 10. 1. · Les prérequis pour ce sniffeur : - Connaissance de base des communications. - Connaissance

DOMOTIQUE Sniffeur Communication NRF24

Ref : NT_207

Iss/Rev : 1.0

Date : 30/09/2018

Page : 5 / 26

Page 5

Comme vous pouvez le voir, un champ de contrôle des paquets de 9 bits a été ajouté pour stocker la longueur de la charge utile (en octets), un identificateur de paquet (PID) pour détecter les retransmissions et un indicateur pour supprimer l'envoi des paquets par paquet. Le CRC n'est plus optionnel.

Comme avec les paquets réguliers, un message reçu doit correspondre à l'adresse du récepteur de la Puce radio et le CRC doit être valide pour que la charge utile soit stockée dans le FIFO interne, sinon le message sera ignoré.

2.4 Réception

Lors de la création d'un réseau sans fil de nombreux nœuds, vous choisissez un canal RF unique sur lequel tous les nœuds fonctionneront. De plus, chaque nœud doit avoir une adresse unique dans le réseau (sauf si vous ne faites que diffuser). Chaque nœud peut avoir une adresse arbitraire, mais vous choisissez normalement une adresse de base identique pour tous les nœuds et une adresse de nœud unique pour chaque nœud. Combinés ceux-ci forment l’adresse :

Adresse composée d'une adresse de base de 4 octets et d'une adresse de nœud à un octet

Cet exemple de schéma d'adressage (4 + 1) est utilisé par la bibliothèque Mysensor et permet d’adresser 255 nœuds uniques (le nœud 255 est utilisé pour l'adressage de diffusion). Si le NRF24 prend en charge un adressage non sélectif, l'adresse de base doit alors être configurée dans la puce et il faut indiquer que l'adressage de nœud est constitué d'un octet. Le NRF24 commencerait alors à écouter les messages. Tous les messages avec l'adresse de base correspondante et le CRC valide seraient alors stockés ... Mais le NRF24 ne prend pas en charge l'écoute de manière non scrupuleuse. Avec quelques astuces, nous pouvons cependant lui demander de capturer tous les messages pour une certaine adresse de base, y compris ceux avec des CRC invalides ! La configuration suivante de la Puce radio renifleur NRF24 est requise :

• Définissez l'adresse du récepteur NRF24 uniquement sur l'adresse de base

• Désactiver Shockburst amélioré

• Désactiver la vérification du CRC

• Configurer une taille de charge utile fixe

Les 3 premiers éléments obligeront le NRF24 à capturer tout ce qui correspond à l'adresse de base du réseau que nous détectons. Lorsque Enhanced Shockburst est désactivé, la Puce radio ne déterminera plus la taille de la charge utile du message et il ne nous reste plus qu'à stocker une quantité fixe de données à partir de l'adresse du nœud. Nous faisons semblant que le message reçu est un paquet normal, alors qu’il s’agit en fait d’un paquet Shockburst amélioré !

La vérification du CRC doit évidemment être désactivée, car le NRF24 ne connaît plus la longueur de la charge utile et le calcul du CRC échoue, rejetant tous les messages.

Le processus est illustré par l'image ci-dessous (encore une fois, en prenant le schéma d'adressage 4 + 1 comme exemple) :

Page 6: Auteur : Gerard Cassette Nom Fichier : NT 217 Sniffer Communication NRF24 V1-0 · 2018. 10. 1. · Les prérequis pour ce sniffeur : - Connaissance de base des communications. - Connaissance

DOMOTIQUE Sniffeur Communication NRF24

Ref : NT_207

Iss/Rev : 1.0

Date : 30/09/2018

Page : 6 / 26

Page 6

Capture du paquet Shockburst amélioré en tant que paquet régulier

La charge utile reçue commencera avec l'adresse de nœud à laquelle le paquet a été transmis, si bien que nous avons créé un NRF24 d’écoute !

Comme le NRF24 ne disséquera plus le paquet pour nous, nous devrons le faire nous-mêmes (laisser Wireshark le faire pour nous). La longueur d'origine de la charge utile doit être extraite (longueur de la charge utile de 6 bits), l'adresse complète recréée et le CRC calculé sur les données reçues. Lorsque le CRC est invalide, le message peut être marqué, ce qui nous donne une bonne indication de la qualité du lien. Comme l'en-tête NRF24 n'est pas un multiple de 8 bits, tous les octets de charge utile et de CRC seront décalés directement au niveau du champ de contrôle des paquets. Cela est gênant lors de l'inspection des octets bruts dans un paquet, mais Wireshark résoudra ce problème pour nous.

2.5 Limites

Il existe cependant certaines limitations à cette méthode :

La longueur maximale d'une charge utile est limitée par le NRF24 à 32 octets. Lorsque nous « décalons » la réception de la charge utile vers le début du paquet et que nous voulons également inclure le CRC dans la charge utile, la taille effective des données utiles capturées diminuera d’un nombre d’octets. Le montant dépend du nombre d'octets dans l'adresse du nœud, du champ de contrôle de paquet fixe et de la longueur du CRC.

Lorsque la taille de la charge utile fixe du renifleur est définie sur une valeur (beaucoup) supérieure à la taille réelle de la charge utile dans le paquet, les paquets suivants peuvent être manqués. Lorsque le NRF24 capture toujours la charge utile de taille fixe et qu'un nouveau paquet arrive, cela ne sera pas détecté. Les paquets d'acquittement automatique qui peuvent être activés en mode Shockburst amélioré sont un bon exemple. Une fois que le nœud cible a reçu le paquet (et qu'il connaîtra la taille réelle de la charge utile beaucoup plus rapidement que le renifleur), il passe de la réception au mode de transmission uniquement dans 130us.

Ensuite, il envoie le paquet d'accusé de réception. La réception de 32 octets à 1 Mb / s prend 32 * 8us = 256us, donc la reconnaissance d'un message court sera définitivement manquée. Pour accuser réception des paquets ce n’est pas un problème car le transmetteur essaiera de retransmettre le message identique quand il n’y a pas d’accusé de réception reçu et nous connaitrons l'accusé de réception manquant.

Cette méthode fonctionne bien pour les packages Shockburst améliorés, car ils ont la taille de la charge utile incorporée dans le message. Pour les messages réguliers, la longueur devra être connue ou peut être déterminée en testant différentes longueurs jusqu'à ce que le CRC corresponde. Avec CRC désactivé, la taille de la charge utile ne peut être que devinée.

Le schéma d'adressage doit utiliser une adresse de base dans le ou les octets d'adresse haute, et l'adresse de nœud dans le ou les octets inférieurs, comme expliqué.

Page 7: Auteur : Gerard Cassette Nom Fichier : NT 217 Sniffer Communication NRF24 V1-0 · 2018. 10. 1. · Les prérequis pour ce sniffeur : - Connaissance de base des communications. - Connaissance

DOMOTIQUE Sniffeur Communication NRF24

Ref : NT_207

Iss/Rev : 1.0

Date : 30/09/2018

Page : 7 / 26

Page 7

3 LA REALISATION HW ET SW

3.1 Le Montage HW

3.1.1 Schéma Théorique

Le montage est un classique montage de NRF24 comme déjà présenté dans la réalisation de la centrale DOMO100 (Voir RD1) à la différence que nous câblons la pin 8 qui est le traitement des interruptions afin de gagner en rapidité.

Les 5 lampes permettent de mieux connaitre l’état du sniffeur une fois lancé :

LED_PIN_LISTEN A0

LED_PIN_RX A1

LED_PIN_TX A2

LED_PIN_CONFIG A3

LED_PIN_BUFF_FULL A4

Page 8: Auteur : Gerard Cassette Nom Fichier : NT 217 Sniffer Communication NRF24 V1-0 · 2018. 10. 1. · Les prérequis pour ce sniffeur : - Connaissance de base des communications. - Connaissance

DOMOTIQUE Sniffeur Communication NRF24

Ref : NT_207

Iss/Rev : 1.0

Date : 30/09/2018

Page : 8 / 26

Page 8

3.1.2 Réalisation HW en pratique

Un sniffeur rapide peut être fait avec des connecteurs DuPont :

Pour ma part, j’ai fait une version plus pérenne avec une carte de montage enfichable directement sur l’Arduino Uno ; ce qui permet de ne pas bloquer un Arduino.

J’ai monté le NRF24 sur un morceau de PCB ainsi que les 5 LED et leurs résistances afin de faciliter et simplifier le cablage.

Le support NRF 24 :

Et le support LED

Page 9: Auteur : Gerard Cassette Nom Fichier : NT 217 Sniffer Communication NRF24 V1-0 · 2018. 10. 1. · Les prérequis pour ce sniffeur : - Connaissance de base des communications. - Connaissance

DOMOTIQUE Sniffeur Communication NRF24

Ref : NT_207

Iss/Rev : 1.0

Date : 30/09/2018

Page : 9 / 26

Page 9

3.2 Logiciel

3.2.1 Introduction

3 logiciels sont utilisés pour ce montage :

• Le logiciel exécuté sur l'Arduino qui configure le NRF24 et lit tous les messages reçus. Il détermine la taille réelle de la charge utile pour chaque message et ajoute un horodatage d’une résolution microseconde. Les messages sont mis en mémoire tampon dans le processeur et envoyés à PC via une connexion série. Il garde la trace du nombre de messages perdus lorsque le tampon est plein( si le PC ne lit pas ou pas assez vite)

• Une application sur le PC appelé « NRF24Sniff.exe » qui envoie les données de configuration au programme de l’Arduino et lit les paquets capturés à partir de l'esquisse, via une connexion série. Les paquets reçus sont transférés au format libpcap vers un canal nommé. Le logiciel Wireshark aura pour instruction de capturer à partir de ce canal

• Le logiciel Wireshark pour visualiser les paquets capturés, les filtrer et effectuer des statistiques.

Wireshark est à compléter avec un ou plusieurs plugins (appelés dissecteurs, actuellement uniquement précompilés pour Windows) qui reconnaissent le format de paquet NRF24 et le décompose. Les protocoles qui utilisent le NRF24 comme couche de transport (par exemple, Mysensor) nécessitent un dissecteur séparé.

3.2.2 Téléchargement et Installation

Les logiciels pour l’Arduino, le Sniffeur et les plugins Wireskark viennent du post et sont disponibles sur le lien suivant en un seul fichier zip :

https://github.com/Yveaux/NRF24_Sniffeur

Il y a les sources et les exécutables. Il faut dézipper le fichier (avec 7zip, par exemple)

Vous allez récupérer les répertoires suivants ; à chaque fois, vous avez les sources, les executavles pour du 32 bits et du 64 bits.

Page 10: Auteur : Gerard Cassette Nom Fichier : NT 217 Sniffer Communication NRF24 V1-0 · 2018. 10. 1. · Les prérequis pour ce sniffeur : - Connaissance de base des communications. - Connaissance

DOMOTIQUE Sniffeur Communication NRF24

Ref : NT_207

Iss/Rev : 1.0

Date : 30/09/2018

Page : 10 / 26

Page 10

3.2.2.1 Compilation et Installation ARDUINO :

Allez dans le répertoire dézippé :

1. Déplacez le contenu du répertoire 'Arduino' vers le répertoire des utilisateurs Arduino

Documents \Arduino

Attention, la bibliothèque RF24 utilisé est modifiée par rapport à celle de Mysensor.

2. Créer un dossier avec le fichier ino et h.

3. Lancer le Compilateur ARDUINO

4. Chargez le programme NRF24_sniff,

5. Choisissez la configuration matérielle UNO,

6. Compilez et téléchargez l‘exécutable dans l’Arduino.

3.2.2.2 Installation NRF24Sniff.exe :

Allez dans le répertoire dézippé ; vous allez trouver l’exécutable.

Créer un répertoire dans votre dossier utilisateur et copier NRF24Sniff.exe dans ce répertoire.

Je n’ai pas essayé de recompiler le programme ; à tester ultérieurement.

Le programme NRF24sniff.exe doit être démarré en mode administrateur et à partir d'une fenêtre de commande DOS afin de lui préciser un certain nombre de paramètres en ligne de commande qui contrôlent son comportement (affichez-les à l'aide de « NRF24Sniff.exe -h ») :

Page 11: Auteur : Gerard Cassette Nom Fichier : NT 217 Sniffer Communication NRF24 V1-0 · 2018. 10. 1. · Les prérequis pour ce sniffeur : - Connaissance de base des communications. - Connaissance

DOMOTIQUE Sniffeur Communication NRF24

Ref : NT_207

Iss/Rev : 1.0

Date : 30/09/2018

Page : 11 / 26

Page 11

Le logiciel NRF24Sniff.exe va mémoriser les données capturées seront dans le répertoire 'SerialToPipe / bin / Win32'.

Dans notre cas, la ligne de commande sera : (avec le sniffeur sur le port USB Com 3)

NRF24Sniff.exe -P3 -c76 -r2 -l5 -p4 -a0xA8A8E1FC00 -C2

La longueur de l'adresse est fixée à 5 octets (-l5), dont 4 octets sont utilisés comme adresse de base (-p4) (Voir le chapitre 1 pour une description des schémas d'adressage).

Comme la plupart des paramètres ne sont pas défaut, on peut simplifier la ligne de commande par :

NRF24Sniff.exe -P3 -r2 -a0xA8A8E1FC00

Pour simplifier le lancement et éviter les erreur, le mieux est de faire un fichier batch (.bat) ; voici un exemple (je change de répertoire, puis je lance la commande :

cd C:\Users\DOMOTIC\Documents\__Sniffeur

Nrf24Sniff.exe -P3 -r2

Pour exécuter directement ce batch en mode exécuteur sans devoir le dire à chaque fois, il faut attribuer ce mode au fichier batch ; pour cela :

a) Créer un raccourci pour le fichier batch sur le bureau

b) Faire un clic droit et sélectionner « Propriété »

c) Sélectionner « avancé »

d) Cliquer la case « Exécuter en mode administrateur » puis OK, Puis OK.

Raccourci sur le bureau ; puis faire un clic droit et propriétés

Page 12: Auteur : Gerard Cassette Nom Fichier : NT 217 Sniffer Communication NRF24 V1-0 · 2018. 10. 1. · Les prérequis pour ce sniffeur : - Connaissance de base des communications. - Connaissance

DOMOTIQUE Sniffeur Communication NRF24

Ref : NT_207

Iss/Rev : 1.0

Date : 30/09/2018

Page : 12 / 26

Page 12

3.2.2.3 Installation de Wireshark et des dissecteurs :

Nota :

Pour Wireshark, impossible d’utiliser les dissecteurs avec la dernière version de Wireshark car l’interface pour installer les Protocoles en plugins a changé. J’ai donc rechargé la version 1.10.8 en version portable (pour ne pas écraser ma version en cours) : Je n’ai pas encore tenté de recompiler les sources des plugins pour les utiliser avec la dernière version ; à tester ultérieurement

Téléchargement :

a) Télécharger la version portable de Wireskark en version 32 bits sur le site suivant (je ne l’ai trouvé que sur du 32 bits ; ce qui simplifie encore les choix

https://www.wireshark.org/download/win32/all-versions/

b) Créer un répertoire et installer votre version (dezippage)

Lancement

Il vous faudra lancer Wireskark avec les options pour lui indiquer le chemin du pipe. Donc à partir d’une fenêtre de commande Dos (via le cmd de Windows)

Le mieux est de faire un fichier batch (.bat) ; voici un exemple (dans mon cas, Wireskark est installé sur le disque E : ; donc je change d’abord de disque, puis de répertoire, puis je lance la commande :

E:

cd E:\23_Wireshark_portable

WiresharkPortable.exe -k -i \\.\pipe\wireshark

Il faudra aussi exécuter ce script en mode Administrateur ; donc mettre ce mode sur le fichier .bat comme expliqué auparavant.

Installation des dissecteurs

Aller dans le répertoire de Wireskark/bin/Win32 et récupérer les 3 disséqueurs (tout sauf mysensors1.dll)

Copiez ces 3 fichiers (tout sauf mysensors1.dll)dans le répertoire des plug-ins Wireshark :

<Votre répertoire Wireskark>\ plugins\ 1.10.8 \

Page 13: Auteur : Gerard Cassette Nom Fichier : NT 217 Sniffer Communication NRF24 V1-0 · 2018. 10. 1. · Les prérequis pour ce sniffeur : - Connaissance de base des communications. - Connaissance

DOMOTIQUE Sniffeur Communication NRF24

Ref : NT_207

Iss/Rev : 1.0

Date : 30/09/2018

Page : 13 / 26

Page 13

Paramétrage de Wireshark :

Il faut paramétrer Wireshark pour utiliser ces dissecteurs :

Lancer Wireshark

Cliquer sur Edit -> Préférences.

Dans la fenêtre des préférences, ouvrez l’arborescence des protocoles, faites défiler vers le bas et sélectionnez DLT_USER (attention, il y a aussi DTL et non DLT !)

Appuyez sur le bouton "Encapsulations table : EDIT »

Page 14: Auteur : Gerard Cassette Nom Fichier : NT 217 Sniffer Communication NRF24 V1-0 · 2018. 10. 1. · Les prérequis pour ce sniffeur : - Connaissance de base des communications. - Connaissance

DOMOTIQUE Sniffeur Communication NRF24

Ref : NT_207

Iss/Rev : 1.0

Date : 30/09/2018

Page : 14 / 26

Page 14

Cliquer sur NEW

Entrez les données comme ci-dessous :

Page 15: Auteur : Gerard Cassette Nom Fichier : NT 217 Sniffer Communication NRF24 V1-0 · 2018. 10. 1. · Les prérequis pour ce sniffeur : - Connaissance de base des communications. - Connaissance

DOMOTIQUE Sniffeur Communication NRF24

Ref : NT_207

Iss/Rev : 1.0

Date : 30/09/2018

Page : 15 / 26

Page 15

4 L’EXECUTION DES PROGRAMMES ET LE DECODAGE DES MESSAGES

4.1 La plateforme de test

La plateforme de test est composée de 3 éléments :

a) Le sniffeur relié à un PC.

b) Le gateway de notre plateforme DOMO200 (relié à un port USB juste pour l’alimentation) ; pas de connexion vers Jeedom.

c) Un capteur en base de nRF24+ Arduino pro mini qui a des soucis pour se connecter sur le gateway.

4.2 Séquence de démarrage

Le montage va être démarré de la manière suivante :

a) Connection du sniffeur sur le port PC : Attention, connecter le sur le même port que celui indiqué dans le script de lancement de NRF24Sniff.exe.

b) Lancement du SW NRF24Sniff.exe sur le PC

c) Lancement de Wireshark

Attention :

➢ Le gateway n’envoie aucun message ! donc n’essayez pas de tester le montage avec le gateway

seulement 😊

➢ L’ordre de démarrage est assez important ; sinon cela ne fonctionne pas.

➢ Assurez-vous que le moniteur série de l'IDE Arduino ne fonctionne pas car il bloquera l'accès au port série.

Page 16: Auteur : Gerard Cassette Nom Fichier : NT 217 Sniffer Communication NRF24 V1-0 · 2018. 10. 1. · Les prérequis pour ce sniffeur : - Connaissance de base des communications. - Connaissance

DOMOTIQUE Sniffeur Communication NRF24

Ref : NT_207

Iss/Rev : 1.0

Date : 30/09/2018

Page : 16 / 26

Page 16

Démarrage du sniffeur ARDUINO

Connecter le sniffeur au PC sur le port USB prévu dans les scripts (voir après)

Le sniffeur doit se mettre en attente de lecture (lampe A0 allumée)

Démarrage NRF24sniff.exe

Lancez le batch défini auparavant.

Le logiciel se met en attente de Wireskark

Démarrage Wireshark

Lancez le batch défini auparavant.

Cela demande à Wireshark de commencer à capturer depuis l'interface (-i) \\. \ Pipe \ Wireskark (c'est le canal nommé sur lequel NRF24Sniff.exe va écrire) et de commencer à capturer immédiatement (-k). Vous trouverez d'autres options de ligne de commande pour Wireshark dans la documentation de Wireshark

Une fois que Wireshark se connecte au Pipe, la fenêtre de la console NRF24Sniff affiche un message "Attendre que le renifleur redémarre" pendant quelques secondes (au maximum) ; puis OK.

Puis, dès que l’init est terminé des 2 cotés, le logiciel affiche son état, les caractéristiques de la connexion et le nombre de paquets reçus et perdus.

Page 17: Auteur : Gerard Cassette Nom Fichier : NT 217 Sniffer Communication NRF24 V1-0 · 2018. 10. 1. · Les prérequis pour ce sniffeur : - Connaissance de base des communications. - Connaissance

DOMOTIQUE Sniffeur Communication NRF24

Ref : NT_207

Iss/Rev : 1.0

Date : 30/09/2018

Page : 17 / 26

Page 17

Vous avez donc 2 fenêtres DOS comme ci-dessous

Attention :

a) Si, après le lancement du script, vous n’obtenez rien, c’est que vous avez surement oublié de lancer en mode administrateur.

b) Si le script s’arrête, c’est que vous n’avez pas connecté le sniffeur (ou pas le bon port).

c) Si cela se bloque, reinit de l’Arduino avec le bouton reset.

Démarrage du capteur qui émet des messages

La lampe rx (A1) du sniffeur doit s’allumer sur réception de message.

La console NRF24Sniffeur.exe affiche le nombre de paquets capturés et perdus :

Page 18: Auteur : Gerard Cassette Nom Fichier : NT 217 Sniffer Communication NRF24 V1-0 · 2018. 10. 1. · Les prérequis pour ce sniffeur : - Connaissance de base des communications. - Connaissance

DOMOTIQUE Sniffeur Communication NRF24

Ref : NT_207

Iss/Rev : 1.0

Date : 30/09/2018

Page : 18 / 26

Page 18

Et Wireshark affiche les messages reçus, et effectue le décodage selon le Protocol NRF24.

Voila ! le système fonctionne !

Page 19: Auteur : Gerard Cassette Nom Fichier : NT 217 Sniffer Communication NRF24 V1-0 · 2018. 10. 1. · Les prérequis pour ce sniffeur : - Connaissance de base des communications. - Connaissance

DOMOTIQUE Sniffeur Communication NRF24

Ref : NT_207

Iss/Rev : 1.0

Date : 30/09/2018

Page : 19 / 26

Page 19

5 INVESTIGATION SUR NOTRE MAQUETTE

5.1 Introduction

Je vous trace ici les investigations faites sur ma maquette de test DOMO200 :

Le problème est le suivant

a) Certains capteurs ont du mal à se connecter au gateway (on ne les voit pas apparaitre dans Jeedom)

b) Certains ordres ne passent manifestement pas entre les capteurs et le gateway : exemple : un relais ne met pas à ON.

5.2 Analyse des messages reçus

Apres démarrage du sniffeur comme expliqué ci-dessus, le capteur et le gateway sont démarrés.

Immédiatement, les messages apparaissent dans Wireshark ; et mettent en évidence de problème de transmission : CRC error !

5.3 Blindage simple et Analyse des messages reçus

Comme je suspecte des problèmes de blindage, je pose (ne me demander pas comment l’idée m’est venue) une pièce de monnaie sur le NRF24 ! Immédiatement, le nombre de crc error diminue.

Page 20: Auteur : Gerard Cassette Nom Fichier : NT 217 Sniffer Communication NRF24 V1-0 · 2018. 10. 1. · Les prérequis pour ce sniffeur : - Connaissance de base des communications. - Connaissance

DOMOTIQUE Sniffeur Communication NRF24

Ref : NT_207

Iss/Rev : 1.0

Date : 30/09/2018

Page : 20 / 26

Page 20

Un essai avec un blindage par feuille d’aluminium sur le NRF24 ne donne pas de meilleurs résultats.

5.4 Blindage complets et Analyse des messages reçus

Je fais le test avec un blindage par feuille d’alu sur l’ensemble du capteur sauf, bien sur l’antenne du NRF24

Résultat : plus aucun Crc error

Vous pouvez voir dans l’exemple ci-dessous, l’ensemble des informations disponibles dans l’écran Wireshark.

Page 21: Auteur : Gerard Cassette Nom Fichier : NT 217 Sniffer Communication NRF24 V1-0 · 2018. 10. 1. · Les prérequis pour ce sniffeur : - Connaissance de base des communications. - Connaissance

DOMOTIQUE Sniffeur Communication NRF24

Ref : NT_207

Iss/Rev : 1.0

Date : 30/09/2018

Page : 21 / 26

Page 21

5.5 Conclusions :

Il semble que la solution de blindage résout le problème ; pour ma part, j’ai collé une feuille d’aluminium ménager sur le couvercle du capteur (sans couvrir l’antenne du NRF24) et cela donne de bon résultat.

Il reste à tester si cela améliore ou réduit la distance de portée du capteur.

Et n’oubliez pas que le sniffeur NRF24 ne fait que capturer les paquets sur les ondes. Parfois, il pourrait détecter des erreurs CRC, tandis qu'un autre nœud pourrait recevoir le paquet correctement et vice versa.

Attention ; si vous voulez faire un blindage par feuille sur un capteur, ceci peut provoquer un court-circuit sur le capteur car la feuille est conductrice. Une solution est de coller la feuille Alu sur une feuille papier puis de faire le blindage.

Reste à savoir pourquoi nous avons un parasitage du montage est sur quelle partie ; d’autres montages n’ont pas ce parasitage.

Peut-être est-ce dû au fait que nous avons un montage dont le câblage est fait avec des fils volants ? une version en PCB n’aurait peut-être pas ce problème. A investiguer !

Une solution aussi serait d’utiliser une NRF24 avec un blindage comme présenté ci-dessous ; 5 fois plus cher que notre NRF24 actuel mais beaucoup plus « secure »… à suivre..

https://fr.aliexpress.com/item/1-pc-Long-Range-E01-ML01DP5-Ebyte-20dBm-2100m

Le but de ce document n’est pas de trouver la solution mais de vous montrer l’intérêt d’un tel montage : On « voit » enfin ce que « l’on ne pouvait pas voir » !

Nous allons poursuivre l’expérience en « sniffant » l’ensemble de notre maquette, faire des essais de porter des capteurs , tester des capteurs sur PCB, tester une solution NRF24 avec blindage … A suivre !

Page 22: Auteur : Gerard Cassette Nom Fichier : NT 217 Sniffer Communication NRF24 V1-0 · 2018. 10. 1. · Les prérequis pour ce sniffeur : - Connaissance de base des communications. - Connaissance

DOMOTIQUE Sniffeur Communication NRF24

Ref : NT_207

Iss/Rev : 1.0

Date : 30/09/2018

Page : 22 / 26

Page 22

6 PRESENTATION RAPIDE DES FONCTIONS UTILES DE WIRESHARK

Cette partie détaille les possibilités de Wireshark

6.1 Utilisation de base de Wireshark

Les explications sont données pour l’exemple suivant :

L'écran de capture est divisé en trois parties : les paquets capturés, les détails du paquet sélectionné et les données brutes du paquet et de la charge utile.

Les paquets capturés ont chacun un numéro séquentiel et un horodatage (capturé avec une résolution en microseconde par le renifleur). Ceux-ci sont affichés dans les deux premières colonnes de la liste de paquets nommée No. et Heure. Suivant deux colonnes contiennent la source adresse de nœud et destination adresse de nœud (l'adresse de base a été omis). Comme les paquets NRF24L01 + contiennent uniquement une adresse de destination, l'adresse source affichera un point d'interrogation. Plus tard, nous verrons que lorsqu'un protocole de niveau supérieur contient l'adresse du nœud source, il sera rempli. Suivant est le protocole colonne. Lors de la capture de la capture, seul le dissecteur NRF24 était installé (NRF24.dll dans le répertoire des plug-ins Wireshark), Wireshark ne reconnaît donc que les paquets NRF24. En ajoutant des dissecteurs supplémentaires (par exemple pour Mysensor), il reconnaîtra également les protocoles utilisant le NRF24 comme moyen de transport. La colonne suivante est la longueur totale du paquet, en octets suivie de la colonne Info qui contient une courte description textuelle des données du paquet. Le développeur a choisi d'afficher l'adresse complète (base + nœud), la longueur de la charge utile, pid et ack-flag (NO_ACK inversé).

Les paquets de longueur 0 sont interprétés par le NRF24 comme des paquets d'accusé de réception.

Le dissecteur NRF24 calcule la valeur CRC de chaque paquet. Cette valeur doit correspondre au CRC stocké dans le paquet. Le CRC pour le paquet 165 a apparemment échoué, par conséquent il est marqué comme « erreur CRC » dans la colonne d'informations et son contenu ne peut pas être approuvé.

Lorsqu'un paquet est sélectionné, ses détails apparaissent dans la section ci-dessous. Ici, vous pouvez voir, petit à petit, comment le paquet est disséqué.

Cliquez sur l'un des champs et son emplacement dans le paquet de données brutes sera affiché dans la section en bas. Lorsqu'un paquet contient une charge utile pouvant être disséquée, ses données brutes sont affichées dans un onglet distinct (par exemple, « Frame (22 octets) » pour les données brutes et « NRF24 Payload Data (12 octets) » pour les données utiles.

Cette observation est importante car le NRF24 a un en-tête qui n'est pas un multiple de 8 bits. Tous les octets stockés en tant que charge utile apparaîtront décalés dans les données « Frame », mais seront affichés sous forme d'octets réguliers dans les « données de charge utile NRF24 ». 7

Page 23: Auteur : Gerard Cassette Nom Fichier : NT 217 Sniffer Communication NRF24 V1-0 · 2018. 10. 1. · Les prérequis pour ce sniffeur : - Connaissance de base des communications. - Connaissance

DOMOTIQUE Sniffeur Communication NRF24

Ref : NT_207

Iss/Rev : 1.0

Date : 30/09/2018

Page : 23 / 26

Page 23

6.2 Filtrage

L'une des fonctionnalités les plus puissantes de Wireshark est le filtrage. Les paquets capturés peuvent être filtrés en utilisant des expressions sur les détails des données de paquet. Le dissecteur NRF24 reconnaît les mots-clés suivants du filtre :

• NRF24.node - adresses de nœud complètes, y compris l'adresse de base

• NRF24.ctrl - Valeur du champ de contrôle

• NRF24.ctrl.len - longueur de la charge utile

• NRF24.ctrl.pid - valeur pid

• NRF24.ctrl.noack - Indicateur NO_ACK

• NRF24.crc - Valeur CRC

• NRF24.crcvalid - Indicateur indiquant si le CRC est valide ou non

Les expressions de filtre sont entrées dans la boîte d'édition "Filtre :" en haut de l'écran. Maintenant, permet d'afficher tous les paquets capturés avec des erreurs CRC :

Entrez 'NRF24.crcvalid == false' et appuyez sur Apply.

Pour filtrer sur tous les paquets avec une charge utile de 22 octets ou plus, et CRC valide :

Pour la syntaxe du filtre, reportez-vous au guide de l'utilisateur Wireshark .

Page 24: Auteur : Gerard Cassette Nom Fichier : NT 217 Sniffer Communication NRF24 V1-0 · 2018. 10. 1. · Les prérequis pour ce sniffeur : - Connaissance de base des communications. - Connaissance

DOMOTIQUE Sniffeur Communication NRF24

Ref : NT_207

Iss/Rev : 1.0

Date : 30/09/2018

Page : 24 / 26

Page 24

6.3 Graphique IO et statistiques

Une autre fonctionnalité intéressante pour la capture à long terme est le graphique IO, disponible via le menu Statistics -> IO Graph.

Après avoir capturé pendant un certain temps et déplacé le nœud du capteur un peu, le graphique ressemblait à ceci :

La ligne noire indique le nombre de paquets par 10 secondes sur un laps de temps d'un peu plus de 700 secondes. Lorsque le nœud de détection a démarré, le nombre de paquets a culminé à env. 200 paquets. Il s'est ensuite installé à environ 40, pour augmenter à nouveau après 450 secondes.

Le « graphique 2 » correspond à l'expression invalide CRC explorée précédemment, qui est dessinée sous forme de barres rouges dans le graphique. Apparemment, l'endroit où le nœud du capteur a été déplacé après 450 secondes conduit à une nette augmentation des erreurs CRC !

Page 25: Auteur : Gerard Cassette Nom Fichier : NT 217 Sniffer Communication NRF24 V1-0 · 2018. 10. 1. · Les prérequis pour ce sniffeur : - Connaissance de base des communications. - Connaissance

DOMOTIQUE Sniffeur Communication NRF24

Ref : NT_207

Iss/Rev : 1.0

Date : 30/09/2018

Page : 25 / 26

Page 25

6.4 Dissecteur Mysensor

Avec le dissecteur NRF24, il existe aussi un dissecteur pour le protocole Mysensor : mysensors2.dll.

Ci-dessous une capture d'écran d'une capture de communication Mysensor 1.4, entre les nœuds 0 (passerelle) et 124 (capteur) :

Dans le paquet sélectionné, un accusé de réception d'une valeur de température est envoyé par la passerelle au nœud du capteur. Notez que les deux sources et destination des adresses de nœud sont maintenant définies pour les paquets du mysensor Protocole.

Les filtres suivants sont pris en charge :

• mysensors.paylen - Longueur de la charge utile, en octets

• mysensors.datatype - Type de données

• mysensors.cmdtype - Type de commande

• mysensors.ack - Ack flag

• mysensors.sender - Adresse du nœud émetteur

• mysensors.last - Adresse du dernier nœud

• mysensors.dest - Adresse du nœud de destination

• mysensors.type - Type

• mysensors.sensor – Sensor

Page 26: Auteur : Gerard Cassette Nom Fichier : NT 217 Sniffer Communication NRF24 V1-0 · 2018. 10. 1. · Les prérequis pour ce sniffeur : - Connaissance de base des communications. - Connaissance

DOMOTIQUE Sniffeur Communication NRF24

Ref : NT_207

Iss/Rev : 1.0

Date : 30/09/2018

Page : 26 / 26

Page 26

La capture de tous les messages à la passerelle (dest == 0) pour le capteur 3 (ChildId 3) génère l'affichage suivant :