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.

samedi 13 février 2016

Ecouter le Dstar, DMR, Mototrbo .. sans clef rtl ou dongle

A partir du moment où vous disposez de la sortie discriminateur sur votre récepteur, vous pourrez, à l'aide de DSD, décoder plusieurs formats radio numérique tel que le DMR, le P25, le Dstar... La méthode que je vais donner ci-dessous est réalisée sous Ubuntu 14.04 et fonctionne parfaitement. 
Tout d'abord, il va falloir récupérer les différents paquets dont on aura besoin, à savoir : 

>sudo apt-get install gcc libsndfile1-dev fftw3-dev liblapack-dev portaudio19-dev

Une fois tout ceci installé, il va falloir récupérer la dernière version d'IT++ comme ceci :

>wget -o itpp-latest.tar.bz2 http://sourceforge.net/projects/itpp/files/latest/download?source=files
>tar xjf itpp-latest.tar.bz2
>cd itpp-*
>mkdir build && cd build
>cmake ..
>make -j
>sudo make install

Nous sommes prêt à installer DSD ainsi que ses librairies Mbelib. Les sources sont à récupérer sur le github de Jared Szechy à cette adresse : https://github.com/szechyjs ou en exécutant les commandes suivantes :

>git clone git@github.com:szechyjs/mbelib.git
>cd mbelib
>mkdir build && cd build
>cmake ..
>make
>sudo make install
>cd \
>git clone git@github.com:szechyjs/dsd.git
>cd dsd
>mkdir build && cd build
>cmake ..
>make
>sudo make install

Voilà, tout est installé.  Mettez votre récepteur sur une fréquence utilisant un des protocoles numérique à décoder puis lancez DSD avec cette petite ligne de commande : 

>padsp dsd

Vous pourrez choisir un protocole précis à décoder en rajoutant :
-fa pour l'auto détection du mode
-fd pour le Dstar
-fr pour le dmr ....
exemple : >padsp dsd -fr    #pour décoder le dmr uniquement 

Toute l'aide sera accessible en tapant : dsd -h