dimanche 21 février 2016

Décodage POCSAG via Gqrx ( Linux )

Depuis quelques temps, je cherchais un moyen de décoder les trames Pocsag utilisées par E-Message pour son service de messagerie sur 'pagers' personnels. tout en ayant une vue sur le spectre avoisinant, le tout, avec ma petite clé rtl. 
Les fréquences sont généralement : 
  • 466.025 Mhz
  • 466.050 Mhz
  • 466.075 Mhz
  • 466.175 Mhz 
  • 466.20625 Mhz
  • 466.23125 Mhz
La méthode la plus facile consiste à entrer une ligne de code dans une fenêtre "terminal" afin de décoder plusieurs fréquences à la fois, et éventuellement d'avoir la possibilité disposer d'une vue "scope" afin de bien étudier les variations du signal reçu. Pour cela, il faut disposer, en plus des utilitaires de gestion du rtl, du logiciel multimon que l'on peut trouver à cette adresse : https://github.com/EliasOenal/multimon-ng . Un fois, téléchargé, on extrait le contenu puis on l'installe avec ces quelques lignes de commande : 
 
>cd multimon-ng
>mkdir build && cd build
>qmake ../multimon-ng.pro
>make
>sudo make install

Le logiciel multimon est maintenant installé. Pour l'utiliser directement, il faudra ouvrir un terminal et entrer la ligne de code suivante ( pour décoder du pocsag par exemple ) :

>rtl_fm -f 466.050e6 -s 200000 -r 48000 -p XXX | multimon-ng -a POCSAG1200 -f alpha -t raw /dev/stdin

XXX correspond au décalage ( en ppm ) de votre clé .. que vous pouvez trouver facilement à l'aide de Kalibrate

Au bout de quelques instants, vous devriez commencer à décoder quelques trames. Pour ma part, cette méthode me donnait de piètre résultat car je devais, soit être sur une fréquence décalée, soit sur une fréquence peu utilisée. C'est pourquoi, j'ai décidé d'utiliser Gqrx afin de voir où était les trames et de jouer avec le gain du rtl. 
Pour installer, Gqrx, vous aurez besoin de beaucoup de dépendances mais si gnu-radio et les librairies rtl-sdr d'osmoSDR sont sur votre machine, tout devrait fonctionner. Ouvrez un terminal et entrez ces commandes : 

>git clone https://github.com/csete/gqrx.git gqrx.git
>cd gqrx.git
>mkdir build && cd build
>qmake ..
>make

Pour lancer Gqrx, dans une fenêtre terminal, lancez simplement la commande gqrx. 
Vous devrez configurer votre rtl ( généralement, tout est mis par défaut ) dans le premier écran. Afin de limiter la gourmandise du logiciel en ram, ne mettez pas une bande passante trop importante .. limitez à 2Mhz
 

Si tout est bien configuré, lancez la réception en cliquant sur le bouton marche/arrêt en haut à gauche  : 


Vous devriez alors voir apparaître le signal reçu avec en dessous, le waterfall des 2Mhz de bande passante :


Il va falloir maintenant récupérer le son de Gqrx et le réinjecter à multimon. Pour cela, juste en dessous de la barre de gain ( à droite ) se trouve un petit icône avec 2 petits ordinateurs dessus. Il faudra cliquer dessus pour activer l'envoi du son vers le port UDP localhost ( 7355 par défaut ), réglages que l'on retrouve en cliquant sur l'icône tout à droite, avec des outils dessus et en allant dans l'onglet Network :




Tout en gardant Gqrx ouvert, lancez une seconde fenêtre terminal pour exécuter multimon en tapant la commande un peu barbare suivante :

>nc -l -u 7355 | sox -t raw -esigned-integer -b16 -r 48000 - -esigned-integer -b16 -r 22050 -t raw - | multimon-ng -t raw -a SCOPE -a POCSAG512 -a POCSAG1200 -a POCSAG2400 -f alpha -

Bien tenir compte des majuscules, espaces, tirets ... En fait, cette commande va par l'intermédiaire de sox, transformer ce qui arrive en localhost en signal reconnaissable par multimon afin d'être décodé soit en pocsag 512, soit en pocsag 1200 ou 2400. Au bout de quelques instants, vous devriez déjà recevoir des données du genre : 

multimon-ng  (C) 1996/1997 by Tom Sailer HB9JNX/AE4WA
             (C) 2012-2014 by Elias Oenal
available demodulators: POCSAG512 POCSAG1200 POCSAG2400 FLEX EAS UFSK1200 CLIPFSK FMSFSK AFSK1200 AFSK2400 AFSK2400_2 AFSK2400_3 HAPN4800 FSK9600 DTMF ZVEI1 ZVEI2 ZVEI3 DZVEI PZVEI EEA EIA CCIR MORSE_CW DUMPCSV SCOPE
Enabled demodulators: POCSAG512 POCSAG1200 POCSAG2400 SCOPE
POCSAG1200: Address: 1008831  Function: 3
POCSAG1200: Address: 1008831  Function: 3
POCSAG1200: Address: 1008831  Function: 3
POCSAG1200: Address: 1008831  Function: 3
POCSAG1200: Address: 1008831  Function: 3
POCSAG1200: Address: 1008831  Function: 3
POCSAG1200: Address: 1008831  Function: 3
POCSAG1200: Address:   34940  Function: 3  Alpha:   MERCI DE RAPPELER LE STANDARD<EOT><EOT>
POCSAG1200: Address: 1008831  Function: 3
POCSAG1200: Address: 1008831  Function: 3 

Pas de panique si rien ne se passe au début, il faudra peut-être aller jouer avec le filtre au dessus du mode de réception de Gqrx et lui donner une valeur plus large ( user ) 



 Amusez-vous bien ! Les limites n'existent plus vraiment et vous pourrez décoder plein de modes variés :

  • POCSAG512 POCSAG1200 POCSAG2400
  • FLEX
  • EAS
  • UFSK1200 CLIPFSK AFSK1200 AFSK2400 AFSK2400_2 AFSK2400_3
  • HAPN4800
  • FSK9600
  • DTMF
  • ZVEI1 ZVEI2 ZVEI3 DZVEI PZVEI
  • EEA EIA CCIR
  • MORSE CW
Bien entendu, ces décodages ne se font qu'à titre d'expérimentation et uniquement pour vos oreilles, toute divulgation étant bien entendue interdite.

6 commentaires:

  1. Après avoir réalisé la bibande vhf uhf pour le mobile je vais tester ça sur linux !! Merci

    RépondreSupprimer
  2. Bonjour à tous, merci pour vos tutos simples, clairs et qui fonctionnent :) Une question, j'ai beau réinstaller plusieurs Multimon-ng (suite à nettoyage et réinstallation complète de mon PC (Windows et Ubuntu)), j'ai le pb suivant que je n'arrive pas à résoudre, au lancement de Multimon qui fonctionne, par ailleurs très bien(décodage OK), l'écran qui s'ouvre simultanément reste désespérément blanc alors qu'avant réinstallation de mon PC, j'avais les signaux de bruit ou décodage?? Pouvez-vous m'aider, ai-je oublié une dépendance ?? Cdt Merci pour vos retours

    RépondreSupprimer
    Réponses
    1. Bonsoir
      Si c'est sous windows, il faut penser à mettre à jour Qt-MinGW, Cygwin et VisualStudio/MSVC
      Mais je ne comprends pas votre histoire d'écran blanc .. êtes vous sous linux, quelle est votre configuration, pouvez vous faire des copies d'écran ?
      73 - Jeff - F0FYF

      Supprimer
    2. Bonjour, je suis sous Ubuntu 16/04, je parle de l'écran du Multimon Scope Display (ex: à cette adresse : http://zr6aic.blogspot.fr/2013/05/how-to-do-afsk-and-psk-demodulation.html) qui s'ouvre bien au lancement de la commande (décodage POCSAG terminal ok) mais reste blanc càd sans signaux de modulation. Cela marchait bien avant de réinstaller mon Ubuntu (sur même PC, même .iso Ubuntu) je ne comprends pas, j'ai investigué sur Internet, ça tournerait autour du Server X, mais je n'ai pas tout compris, avez-vous une piste ? (SCOPE: - show samples in a rudimentary oscilloscope display on an X server).
      NB: comment vous envoyer des copies d'écran par votre mail ?
      Merci pour vote aide

      Supprimer
  3. Re-bonsoir
    Je viens de réaliser que la dernière version de multimon-ng ne laissait rien voir sur le scope sauf si l'entrée est un fichier wav. Le problème à l'air d'être connu car vu sur 2-3 forums. Je pense que c'est la dernière mise à jour qui bug et qu'il faut attendre une nouvelle sortie. En attendant, vous pouvez enlever le "-a SCOPE" dans la ligne de commande afin d'éviter d'ouvrir cette fenêtre.
    73 - Jeff - F0FYF

    RépondreSupprimer
  4. Merci pour votre retour, je suis repassé à la version antérieure 1-1-3 et Scope fonctionne correctement (dernière release 1-1-4 actuellement). On va attendre la 1-1-5 en espérant qu'elle embarque ce correctif :) cdt

    RépondreSupprimer