Banc d'essai : dongle radio YARD Stick One en dessous de 1 GHz
15 mars 2023
sur
sur
Le YARD Stick One est une « Radio logicielle » compacte qui peut émettre et recevoir dans la bande UHF. Il peut être considéré comme une sorte de carte d'extension, mais avec une interface USB pour permettre l'utilisation sur des hôtes assez grands tels que les PC et les Raspberry Pis. Le Yard Stick One est livré avec un logiciel USB préchargé dans son noyau 8051. La radio est contrôlée en écrivant quelques douzaines de registres de configuration, mais de nombreux détails sont résumés avec le logiciel intermédiaire Python.
Comme toutes les fonctions de bas niveau sont mises en œuvre par une puce CC1111, l'utilisation de la radio est subordonnée à l'écriture correcte des registres de configuration. Le CC1111 est destiné aux protocoles complexes de la couche 2, avec des fonctions telles que les mots de synchronisation, le cadrage, l'entrelacement et l'embrouillage. Le CC1111 étant conçu comme un système sur une puce (SoC) pour les applications RF commerciales, l'utilisation du YARD Stick One pour l'analyse des signaux est très limitée. À moins que le système testé n'utilise un SoC similaire, utiliser une SDR est moins frustrant et moins cher.
Le YARD Stick One n'est pris en charge que par rfcat, un intergiciel (middleware) basé sur Python qui résume les options les plus utilisées dans une sorte de méthodes descriptives. Pour un réglage plus fin, rfcat offre également un accès brut aux registres.
Livré tel quel, l'appareil est une carte nue et doit être traité avec le soin qui s'impose. Des boîtiers tiers sont disponibles.
Le terme "Sub 1 GHz" est un peu large ; le YARD Stick One est limité par la radio TI CC1111, qui couvre les bandes ISM UHF inférieures : 300-928 MHz. Notamment, La bande 13,56 MHz utilisée pour la RFID notamment, n'est pas couverte.
Le fonctionnement du YARD Stick One est légèrement plus stable sous Linux que sous Windows 10. Windows ne reconnaît souvent pas du tout l'appareil, mais Linux s'en sort bien en débranchant et en réinsérant l'appareil à plusieurs reprises.
L'installation de rfcat sur Linux avec Python 3.10 a bien fonctionné. La seule différence avec la documentation est que rfcat doit être démarré avec la commande
En cas d'« erreur dans la réinitialisation() » , débranchez et réinsérez l'appareil.
Windows 10 : n'installez pas Python via l'appstore car cela perturbe les autorisations des fichiers, mais faites une installation manuelle pour tous les utilisateurs. De plus :
Faire l'installation avec les privilèges d'administrateur (voir où les instructions Linux requièrent sudo). Et avoir une VC supérieure à la version 14 d'installée.
Mise au point nécessaire si vous obtenez un message d'erreur à propos de « collections not callable » : ajoutez .abc dans C:\Program Files\Python310\Lib\site-packages\pyreadline\py3k_compat.py ligne 8 :
Il s'avère que pyreadline ne serait nécessaire que pour Windows.
Installez le pilote libusb-win32 ; le plus simple est probablement d'utiliser « Zadig » , qui est généralement fourni avec SDR#. Si le périphérique est absent, vous obtenez l'exception « No Dongle Found » de rfcat.
En cas d'exception « ChipconUsbTimeoutException » , débranchez et réinsérez le dongle.
L'installation et l'utilisation sous Windows 10 sont dans l'ensemble un peu plus délicates que sous Linux.
Le contrôleur utilisé dans le CC1111 est une variante MCS51 et nécessite un compilateur SDCC version 3.5 ou inférieure. Cela nécessite un peu de travail manuel dans l'installation, car la version actuelle est 4.x. Cependant, de nombreux utilisateurs se contenteront d'utiliser le firmware rfcat.
Rfcat est également doté d'un affichage du spectre. Le qualifier d' « analyseur » serait un peu exagéré. La plupart des appareils simples ont une lbande passante et une plage dynamique limitées, contrairement aux célèbres HP141 ou le HP181 qui peuvent afficher une bande passante de 1 GHz avec une plage dynamique de 80 dB.
Pour utiliser le YARD Stick One comme récepteur, les propriétés des couches 1 et 2 doivent être configurées correctement, sinon la radio ignorera le paquet. Pour analyser un signal inconnu, une SDR supplémentaire est nécessaire, le matériel le moins cher étant les dongles RTL. Outre l'utilisation de GNU Radio et d'Audacity comme indiqué dans [3], l'Universal Radio Hacker fournit un flux de travail plus cohérent pour l'analyse et la relecture des signaux.
Autrement, Il est également possible de renifler le réglage de la puce radio appairée depuis l'interface matérielle si l'on connaît le type de puce, comme le montre le document [1].
L'utilisation du YARD Stick One en tant que récepteur générique est assez difficile : lorsque les réglages sont trop basiques, beaucoup de bruit est reçu, alors qu'avec des réglages trop serrés, tout est filtré. Cela pourrait fonctionner avec un atténuateur variable à l'entrée, mais je n'en avais pas sous la main.
L'utilitaire SmartRF Studio de TI aide à configurer les nombreux registres du CC1111. Les valeurs calculées peuvent être écrites sur le YARD Stick One avec la fonction setXxx(value) appropriée.
Le firmware livré avec le YARD Stick One dans la boutique Elektor sert de passerelle entre les registres CC1111 et l'interface USB.
Après une exception Python, le YARD Stick One doit être débranché et réinséré, sinon rflib ne le trouve plus.
Chaque bit de données se compose de quatre symboles, un 0 est transmis sous la forme 1000 et un 1 sous la forme 1110, ce qui doit être envoyé au YARD Stick One sous la forme 8e88888888888888888e8e8e8. Un symbole dure 0,484 ms, le débit en bauds doit donc être fixé à 2744.
Il existe des tutoriels sur Internet, voir par exemple [3] et [4]. Veuillez vous adapter aux règles locales pour la bande ISM.
Le YARD Stick One pourrait être utile si vous vous concentrez sur les protocoles spécifiques supportés par cette famille de SoCs radio (voir [1]) et aussi l'IM-Me comme mentionné sur le site Elektor. Pour des applications dédiées, on peut envisager une carte CC111x de Chine connectée à un Arduino, ce qui évite la communication USB peu commode.
Traduction : Laurent RAUBER
YARD Stick One prend en charge l'émission et la réception de données.
L'avantage principal du YARD Stick One est son prix bas « comparé au HackRF ou au LimeSDR » et qui peut émettre tout en étant plus ou moins « plug and play » . Les dongles courants comme les RTL SDR ne sont utilisables qu'en réception.Comme toutes les fonctions de bas niveau sont mises en œuvre par une puce CC1111, l'utilisation de la radio est subordonnée à l'écriture correcte des registres de configuration. Le CC1111 est destiné aux protocoles complexes de la couche 2, avec des fonctions telles que les mots de synchronisation, le cadrage, l'entrelacement et l'embrouillage. Le CC1111 étant conçu comme un système sur une puce (SoC) pour les applications RF commerciales, l'utilisation du YARD Stick One pour l'analyse des signaux est très limitée. À moins que le système testé n'utilise un SoC similaire, utiliser une SDR est moins frustrant et moins cher.
Le YARD Stick One n'est pris en charge que par rfcat, un intergiciel (middleware) basé sur Python qui résume les options les plus utilisées dans une sorte de méthodes descriptives. Pour un réglage plus fin, rfcat offre également un accès brut aux registres.
Livré tel quel, l'appareil est une carte nue et doit être traité avec le soin qui s'impose. Des boîtiers tiers sont disponibles.
Le terme "Sub 1 GHz" est un peu large ; le YARD Stick One est limité par la radio TI CC1111, qui couvre les bandes ISM UHF inférieures : 300-928 MHz. Notamment, La bande 13,56 MHz utilisée pour la RFID notamment, n'est pas couverte.
Le fonctionnement du YARD Stick One est légèrement plus stable sous Linux que sous Windows 10. Windows ne reconnaît souvent pas du tout l'appareil, mais Linux s'en sort bien en débranchant et en réinsérant l'appareil à plusieurs reprises.
Installation du logiciel
L'utilisation du YARD Stick One nécessite une bonne compréhension des couches OSI 1 et 2. Une certaine connaissance de Python et une familiarité avec le système d'exploitation utilisé sont également bénéfiques pour résoudre les problèmes d'installation. Le logiciel recommandé dans la boutique Elektor a été installé sur Windows 10, Kali et Ubuntu 18.L'installation de rfcat sur Linux avec Python 3.10 a bien fonctionné. La seule différence avec la documentation est que rfcat doit être démarré avec la commande
./rfcat
En cas d'« erreur dans la réinitialisation() » , débranchez et réinsérez l'appareil.
Windows 10 : n'installez pas Python via l'appstore car cela perturbe les autorisations des fichiers, mais faites une installation manuelle pour tous les utilisateurs. De plus :
pip install Cython
Faire l'installation avec les privilèges d'administrateur (voir où les instructions Linux requièrent sudo). Et avoir une VC supérieure à la version 14 d'installée.
Mise au point nécessaire si vous obtenez un message d'erreur à propos de « collections not callable » : ajoutez .abc dans C:\Program Files\Python310\Lib\site-packages\pyreadline\py3k_compat.py ligne 8 :
return isinstance(x, collections.abc.Callable)
Il s'avère que pyreadline ne serait nécessaire que pour Windows.
Installez le pilote libusb-win32 ; le plus simple est probablement d'utiliser « Zadig » , qui est généralement fourni avec SDR#. Si le périphérique est absent, vous obtenez l'exception « No Dongle Found » de rfcat.
En cas d'exception « ChipconUsbTimeoutException » , débranchez et réinsérez le dongle.
L'installation et l'utilisation sous Windows 10 sont dans l'ensemble un peu plus délicates que sous Linux.
Le contrôleur utilisé dans le CC1111 est une variante MCS51 et nécessite un compilateur SDCC version 3.5 ou inférieure. Cela nécessite un peu de travail manuel dans l'installation, car la version actuelle est 4.x. Cependant, de nombreux utilisateurs se contenteront d'utiliser le firmware rfcat.
Utilisation du YARD Stick One
La radio CC1111 fait tout le travail de bas niveau, ajoutant et supprimant les préambules, les mots de synchronisation, le CRC, ainsi que la modulation et la démodulation. La radio doit être entièrement configurée avant d'être utilisée, car la configuration de réinitialisation est inutile. L'écriture d'un petit programme Python tel que décrit dans [5] permet d'économiser beaucoup de saisie et d'erreurs.Rfcat est également doté d'un affichage du spectre. Le qualifier d' « analyseur » serait un peu exagéré. La plupart des appareils simples ont une lbande passante et une plage dynamique limitées, contrairement aux célèbres HP141 ou le HP181 qui peuvent afficher une bande passante de 1 GHz avec une plage dynamique de 80 dB.
Pour utiliser le YARD Stick One comme récepteur, les propriétés des couches 1 et 2 doivent être configurées correctement, sinon la radio ignorera le paquet. Pour analyser un signal inconnu, une SDR supplémentaire est nécessaire, le matériel le moins cher étant les dongles RTL. Outre l'utilisation de GNU Radio et d'Audacity comme indiqué dans [3], l'Universal Radio Hacker fournit un flux de travail plus cohérent pour l'analyse et la relecture des signaux.
Autrement, Il est également possible de renifler le réglage de la puce radio appairée depuis l'interface matérielle si l'on connaît le type de puce, comme le montre le document [1].
L'utilisation du YARD Stick One en tant que récepteur générique est assez difficile : lorsque les réglages sont trop basiques, beaucoup de bruit est reçu, alors qu'avec des réglages trop serrés, tout est filtré. Cela pourrait fonctionner avec un atténuateur variable à l'entrée, mais je n'en avais pas sous la main.
L'utilitaire SmartRF Studio de TI aide à configurer les nombreux registres du CC1111. Les valeurs calculées peuvent être écrites sur le YARD Stick One avec la fonction setXxx(value) appropriée.
Le firmware livré avec le YARD Stick One dans la boutique Elektor sert de passerelle entre les registres CC1111 et l'interface USB.
Après une exception Python, le YARD Stick One doit être débranché et réinséré, sinon rflib ne le trouve plus.
Exemple
L'exemple suivant montre un signal PWM avec une modulation ASK, ce qui est très courant pour les télécommandes simples. Les captures d'écran proviennent de URH.Chaque bit de données se compose de quatre symboles, un 0 est transmis sous la forme 1000 et un 1 sous la forme 1110, ce qui doit être envoyé au YARD Stick One sous la forme 8e88888888888888888e8e8e8. Un symbole dure 0,484 ms, le débit en bauds doit donc être fixé à 2744.
Documentation
La documentation indiquée par la boutique Elektor est très succincte. Le forum indiqué par Great Scott Gadgets est d'une utilité limitée. Le dépôt git rfcat donne beaucoup d'informations sur la construction et le téléchargement du firmware du YARD Stick One.Il existe des tutoriels sur Internet, voir par exemple [3] et [4]. Veuillez vous adapter aux règles locales pour la bande ISM.
Verdict
Le YARD Stick One n'est pas bon marché pour ce qu'il offre et son apprentissage est un chemin escarpé. Le logiciel est instable et insuffisamment documenté. Pour l'analyse uniquement, un simple récepteur SDR serait un bien meilleur choix. Pour l'émission, vous avez un transceiver SDR générique pour 150 € de plus (par exemple HackRF One ou Adalm Pluto).Le YARD Stick One pourrait être utile si vous vous concentrez sur les protocoles spécifiques supportés par cette famille de SoCs radio (voir [1]) et aussi l'IM-Me comme mentionné sur le site Elektor. Pour des applications dédiées, on peut envisager une carte CC111x de Chine connectée à un Arduino, ce qui évite la communication USB peu commode.
Glossaire
Terme | Explication |
ASK | Modulation par déplacement d'amplitude |
ISM | Industriel Scientifique et Medical. Transmetteurs radio pouvant être utilisés sans licence. |
OOK | Modulation tout ou rien, ASK avec 100% de modulation. |
PWM | Modulation de largeur d'impulsion. |
RTL | Realtec |
SDR | Radio logicielle. |
SoC | Système sur une puce. |
UHF | 300 – 3000 MHz |
References
- Radio Communication Analysis using RfCat
- CC1110Fx / CC1111Fx datasheet
- Hacking Everything with RF and Software Defined Radio - Part 1
- Hacking Everything with RF and Software Defined Radio - Part 2
- https://gist.github.com/JamesHagerman/40f414c5f0db8d476d64f78f9dd3a7b6
- Rfcat Helper Scripts in Python 2
Traduction : Laurent RAUBER
Lire l'article complet
Hide full article
Discussion (0 commentaire(s))