Décodage POCSAG, en ligne de commande sous Linux

Le POCSAG est un protocole utilisé par les récepteurs de type Alphapage.
Il est utilisé chez les radioamateurs, dans les entreprises privées, et pour les services de secours.
Dans cette article, je décris comment décoder du Pocsag uniquement en ligne de commande sous linux.

La puissance de linux peux nous permettre d’enregistrer l’activité dans un fichier texte et ensuite vous pourrez y ajouter n’importe quel événement suite à la réception d’un mot ou d’un type d’alerte.

Le matériel nécessaire est simple, pour les tests, j’ai utilisé une clef SDR des plus simple et un Raspberry Pi.
J’ai téléchargé la version Bullseye et mis en oeuvre les lignes de commande ci-dessous.

Voici l’ensemble de la documentation afin d’installer et d’utiliser tout cela.

Installation Raspberry Pi Os ( Legacy 64 bit) sans Desktop sur une carte SD.

mise à jour du systeme:
sudo apt-get update
sudo apt-get upgrade

installation de git:
sudo apt install git-all
Do you want to continue? [Y/n] Y

Installation cmake
sudo apt-get -y install cmake

création d’un dossier rtl:
mkdir rtl
cd rtl

Telechargement de multimon:
git clone https://github.com/EliasOenal/multimon-ng.git

cd multimon-ng/
mkdir build
cd build
cmake ..
make
sudo make install

Installation de rtl-sdr:
sudo apt install rtl-sdr

Utiliser la commande sudo rtl_test -p afin d’obtenir la correction ppm à appliquer.
Il existe aussi Kalibrate comme autre solution: https://github.com/steve-m/kalibrate-rtl

sudo rtl_test -p

real sample rate: 2047704 current PPM: -144 cumulative PPM: -144
real sample rate: 2048097 current PPM: 48 cumulative PPM: -48
real sample rate: 2048091 current PPM: 44 cumulative PPM: -17
real sample rate: 2048089 current PPM: 44 cumulative PPM: -2
real sample rate: 2048097 current PPM: 48 cumulative PPM: 8
real sample rate: 2048265 current PPM: 130 cumulative PPM: 28
real sample rate: 2047927 current PPM: -36 cumulative PPM: 19
real sample rate: 2048097 current PPM: 48 cumulative PPM: 23
real sample rate: 2048091 current PPM: 45 cumulative PPM: 25
real sample rate: 2048092 current PPM: 45 cumulative PPM: 27
real sample rate: 2048264 current PPM: 129 cumulative PPM: 36
real sample rate: 2047926 current PPM: -36 cumulative PPM: 30
real sample rate: 2048101 current PPM: 49 cumulative PPM: 32
real sample rate: 2048258 current PPM: 126 cumulative PPM: 39
real sample rate: 2047921 current PPM: -38 cumulative PPM: 33
real sample rate: 2048101 current PPM: 49 cumulative PPM: 35
real sample rate: 2048106 current PPM: 52 cumulative PPM: 36
real sample rate: 2048089 current PPM: 44 cumulative PPM: 36
real sample rate: 2048082 current PPM: 40 cumulative PPM: 36
real sample rate: 2048102 current PPM: 50 cumulative PPM: 37
real sample rate: 2048090 current PPM: 44 cumulative PPM: 37
real sample rate: 2048109 current PPM: 53 cumulative PPM: 38
real sample rate: 2048076 current PPM: 37 cumulative PPM: 38
real sample rate: 2048096 current PPM: 47 cumulative PPM: 38
real sample rate: 2048095 current PPM: 46 cumulative PPM: 39
real sample rate: 2048101 current PPM: 50 cumulative PPM: 39
real sample rate: 2048259 current PPM: 127 cumulative PPM: 42
real sample rate: 2047925 current PPM: -37 cumulative PPM: 39

Au bout d’un certain temps cela se stabilise, nous utiliserons la valeur 40

real sample rate: 2048097 current PPM: 48 cumulative PPM: 40
real sample rate: 2048093 current PPM: 46 cumulative PPM: 40
real sample rate: 2048114 current PPM: 56 cumulative PPM: 40
real sample rate: 2048073 current PPM: 36 cumulative PPM: 40
real sample rate: 2048101 current PPM: 49 cumulative PPM: 40

Voici la commande pour effectuer le test de réception:
sudo rtl_fm -f XXX.XXXM -s 22.05k -p 40 – | multimon-ng -a POCSAG1200 -f alpha -t raw /dev/stdin

Commande pour decoder vers un fichier /home/pocsag/pocsag.txt avec horodatage:

sudo rtl_fm -f XXX.XXXM -s 22.05k -p 40 – | multimon-ng -a POCSAG1200 -f alpha -t raw /dev/stdin | while IFS= read -r line; do echo “$(date ‘+%Y-%m-%d %H:%M:%S’) : $line”; done | tee -a /home/pocsag/pocsag.txt
remplacer XXX.XXX par la fréquence, ajuster p 40 par la valeur que vous aurez obtenu avec la calibration..

En option vous pouvez installer un lien vers une page web.

Installation serveur web:
sudo apt install apache2 -y
Création d’un lien virtuel:
sudo ln -s /home/pocsag/pocsag.txt /var/www/html/pocsag.txt

En tapant l’adresse <IP du Raspberry>/pocsag.txt vous pourrez accéder aux informations
ex: http://192.168.1.33/pocsag.txt

Vous pouvez recevoir un email dès la parution d’un article sur le Blog F8ASB.COM ainsi que des actualités Tech et radio, entrez votre mail sur la fenêtre à droite et cliquer sur abonnement. Tous les articles en 1 clic ICI
Ce contenu a été publié dans radioamateur, Raspberry, avec comme mot(s)-clé(s) , , , , , , , . Vous pouvez le mettre en favoris avec ce permalien.

2 réponses à Décodage POCSAG, en ligne de commande sous Linux

  1. Jean-Philippe F5GKW dit :

    Pour aller plus loin avec le pocsag, stocker les messages, nommer les capcodes, filtrer etc, le tout sur un raspberry ” pagermon” que j’utilise depuis au moins 5 ans…
    Il est possible d’utiliser plusieurs clefs et par exemple une en VHF, l’autre en UHF ( et même en scannant plusieurs canaux par exemple, multimon le permet)

    https://github.com/pagermon/pagermon

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Time limit is exhausted. Please reload CAPTCHA.

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.