f0fyf

f0fyf

dimanche 24 juin 2018

Script Pocsag vers fichier texte

Malgré le manque de temps en ce moment et comme le pocsag revient au goût du jour, avec le dapnet notamment, je me suis fait un petit script en python qui pourra devenir évolutif avec le temps. Pour l'instant, il récupère les données via la clé rtl-sdr puis place le tout dans un fichier en prenant soin de ne garder que l'essentiel. 
J'ai commencé par les pocsag des pompiers en VHF basse, à savoir le 85.955 Mhz mais en allant modifier la fréquence et le ppm de la clé, il est possible de décoder le réseau E-message sur 466 ou autre.
Les indispensables : 
Python  => 2.7 : https://www.python.org/

Voici donc le script en question :
#!/usr/bin/python
#coding: utf-8

import os
import sys, getopt
import subprocess
import collections
import time

print "***********************************"
print "*                                 *"
print "* Décodage pocsag Sapeur-Pompiers *"
print "*                                 *"
print "***********************************"

# creation d'une variable qui va stocker tous les messages identiques
ident = collections.deque(maxlen=10)
#on efface l'écran
os.system("clear")
# on lance le programme multimon ( on converti au bon format pour multimon via sox )
flux = "rtl_fm -f 85.955e6 -M fm -s 200000 -r 48000 -p 66 - | sox -traw -r48000 -es -b16 -c1 -v1 - -traw -es -b16 -c1 -r 22050 - | multimon-ng -a POCSAG512 -f alpha -t raw /dev/stdin -"
# on affiche la commande du programme
print flux
# on lance le traitement du programme
mm  = subprocess.Popen(flux,shell=True,stdout=subprocess.PIPE)
# dès qu'un message est reçu, il est traité
while mm.poll() is None:
  msg = mm.stdout.readline()
# si le message ne contient aucun texte, rien ne se passe
  if "Alpha: " not in msg:
   continue  
# sinon on continue la procédure
# on enlève tous les messages contenant des NUL ou vides
  msg = msg.replace("<NUL>", "")
# on récupère le message seul situé après la balise Alpha
  msg = msg.split("Alpha:",1)[1]
# on supprime l'espace devant le message
  msg = msg.strip()
# Si le message fait moins de 3 caractères, rien ne se passe
  if len(msg)<3:
   continue
# sinon on continue
# on vérifie que le message n'est pas déjà passé en comparant les 15 derniers caratères à notre variable ident
  if msg[-15:] in ident:
# si les caractères sont déjà présent, rien ne se passe
   continue
# sinon
# on va stocker les 15 derniers caractères du message dans notre variable
  ident.append(msg[-15:])
# on affiche notre message
  print msg
# on ouvre notre fichier poc.txt en mode ajout de texte
  fichier = open("poc.txt", "a")
# on écrit le message reçu
  fichier.write(msg+"\n")
# on referme notre fichier
  fichier.close() 
# et on revient au début du traitement 
Avant toute chose, il est important de créer dans le répertoire ou le script sera sauvegardé, un fichier vide nommé poc.txt . En rouge dans le script, se trouve la fréquence d'écoute et le ppm de la clé, à modifier à votre convenance.

En considérant que le script est sauvegardé sous le nom de pager.py , pour le lancer, on ouvre un terminal et l'on va entrer la commande :
> python pager.py
Le fichier poc.txt se remplira alors par le décodage effectué par multimon-ng

(112DEPART) VSAV 01 / CHUTE D'UNE PERSONNE DE - 3 M(112DEPART) DECLENCHEMENT SYSTEMATIQUE DEPART : VSAV 01 - CHUTE D'UNE PERSONNE DE - 3 M (ANNECY - xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx)
(800DEPART) VLM 02 / DIFFICULTE RESPIRATOIRE SEVERE
(198DEPART) VTU HR 01
(800DEPART) DECLENCHEMENT SYSTEMATIQUE DEPART : VLM 02
(198DEPART) 282DEPART
(198DEPART) DECLENCHEMENT SYSTEMATIQUE DEPART : VSAV 01
(112DEPART) VSAV 01 / MALADIE
(112DEPART) DECLENCHEMENT SYSTEMATIQUE DEPART : VSAV 01 - MALADIE (EPAGNY METZ-TESSY - ***************************** ) 

les adresses sont volontairement enlevées 

On pourra très bien envisagé par la suite, l'envoi des données, non pas vers un fichier mais ver un téléphone via un sms (via la commande urllib.urlopen ) ou vers une adresse mail ...

Petit rappel, gardez les décodages pour vous et ne les divulguez pas  :)  

 

lundi 7 mai 2018

PLSDR, récepteur SDR simplissime

Dans la même lignée que CubicSDR ou GQRX, voici un petit récepteur SDR vraiment très simple crée par Paul Lutus https://arachnoid.com/PLSDR/index.html basé sur une architecture Python. Son site est d'ailleurs gorgé d'infos diverses toutes aussi interressantes et reprends un minimum à savoir sur les ondes et les modes .. à visiter sans modération .. 
Concernant PLSDR, celui-ci fonctionne sous Linux mais également sous windows et reprends presque tous les types de SDR disponibles.

On commence par installer les pré-requis :

$ sudo apt-get install gnuradio gr-osmosdr python-pyqt5

Puis on récupère les sources :

$ git clone https://github.com/lutusp/PLSDR.git

Ensuite, on installe l'icône du programme :

$ cd PLSDR/scripts/
$ sudo sh create_linux_desktop_icon.sh 
 

Et voilà, Il ne restera plus qu'à lancer le programme en cliquant sur l'icône crée sur le bureau et vous devriez alors voir apparaître cette fenêtre :


Avant tout, une petite configuration de base s'impose pour que tout fonctionne bien :
  • Dans l'onglet Control
Device : votre type de sdr
LNA Gain : au minimum à moitié
IF Bandwidth : Mettre sur M ( médium ) pour commencer
  • Dans l'onglet Configure  
Core PPM : la valeur du ppm de votre SDR
Sample Rate : 2 Mhz pour un petit stick rtl classique
Audio Rate : Celui de votre carte audio
Audio Device : votre carte son


Vous pouvez maintenant cliquer sur Start/Stop pour démarrer votre SDR et rélger l'AF Gain à votre convenance.
Pour le traitement des signaux ( CW/AfskDstar ...etc ...) il faudra passer par un pont de la carte audio sur le logiciel de décodage car il n'existe pas pour l'instant de transfert udp mais comme PLSDR en est à ses début, il ne peut que s'améliorer avec le temps !


Edit : Une personne a fait remarquer que cela ne fonctionnait pas, que les sources n'étaient pas à jour, que cela fait 10 ans que ce monsieur est sous linux .. etc .. 
Ma version de Python est la 3.6.5 sous Xubuntu 18.04 Lts
Petite capture vidéo de la méthode ci-dessus ( sauf pour la création de l'icone ) pour montrer à ce monsieur que tout fonctionne :

 

dimanche 8 avril 2018

Un peu de FT8

Depuis quelques jours, j'ai mis en place sous les combles, un petit rapsberry-pi avec MSHV installé dessus raccordé à un petit récepteur 2m USB câlé sur 144.175 Mhz, le tout relié à un simple doublet vhf et connecté à PskReporter. Je ne pensais pas avoir de si bons résultats...  





Comme je vais avoir besoin de mon rspi pour d'autres utilisations, le système ne sera pas en place 24/24 mais vous pouvez toujours m'envoyer un petit mail pour que je mette tout en route afin que vous puissiez faire quelques essais :) 




mardi 3 avril 2018

Réception ISS en SSTV


http://www.ariss-f.org/


Ces deux derniers jours, l'ISS a envoyé des images SSTV et il devrait y en avoir d'autres du 11/04 au 14/04.
J'ai utilisé pour la réception :
  • Yaesu FT897 ( 145.800Mhz - NFM )
  • Groupement 2x4 élements croisés 
  • Gpredict pour le contrôle de l'antenne et du TRX
  • Qsstv pour le décodage ( mode PD120 )

dimanche 25 mars 2018

HamRadioDeluxe et Linux




Des personnes se retrouvent confrontés à de petits désagréments lorsqu'ils choisissent de passer sous Linux en gardant certains soft windows. La gestion des ports com n'a plus rien à voir. HamRadioDeluxe est pour certains, irremplaçable ( alors qu'il y a FLDigi et sa suite ) et la plupart du temps, la reconnaissance du trx est confronté au problème d'accès aux ports.
La manipulation reste pour autant, toute simple .. 

dimanche 4 mars 2018

PK232 et linux



J'ai ressorti du placard, mon vieux PK232, histoire de voir comment le faire revivre. Les systèmes d'exploitations ayant évolués depuis le célèbre DOS, il me fallait un petit programme permettant de piloter via usb, un port série. CuteCom, présent dans les dépôts ubuntu fait très bien l'affaire.

$ sudo apt-get install cutecom

mercredi 21 février 2018

Recevoir et décoder PicSat sous Linux

F4GKR, Sylvain a réalisé une petite application sous linux qui permet d'écouter et de décoder la télémétrie envoyée par le nano satellite PicSat .  
Il s'agit de PicTalk, qui va écouter la fréquence beacon sur 435.525 Mhz puis décoder les paquets reçus afin de pouvoir les partager avec les concepteurs du satellite. Pour l'instant, le programme utilise les rtlsdr et sdrplay. Les funcubes sont bien pris en charge mais ne fonctionnent pas correctement.
Avant toute chose, il faudra installer les prérequis afin de pouvoir utiliser, c'est à dire : 

- Python 3.5
- Spicy
- Numpy
- Request
- Hidapi ( 0.7 minimum )
- ZeroMQ
- Qt5

dimanche 28 janvier 2018

Premiers pas en VDL sous Linux

Auparavant, j'aimais bien faire de la réception d'Acars ( sortes de messages codés envoyés entre un avion et le sol ) en vhf. Depuis peu, je me suis lancé dans la réception VDL, quelque peu semblable à l'acars en général mais techniquement plus pointue car si les acars sont compris dans les données envoyées en VDL, celles-ci sont complétés par d'autres, utiles au sol.
Il existe 3 types de VDL mais le petit programme que je vais présenter décode le VDL 2 basé sur une modulation en D8PSK avec détection de porteuse. Je ne rentrerais pas dans les détails technique de ce mode, le web est fourni d'explications.
Pour écouter le VDL, il faudra caler le récepteur sur des fréquences comprises entre 136.7 et 137 Mhz avec des canaux de 25Khz
 
Les deux fréquences les plus utilisées en Europe sont le 136.775 et 136.875Mhz. Pour les décoder, il faudra donc utiliser le petit soft de Thierry Leconte, vdlm2dec avec soit un petit Rtl soit un Airspy.
On récupère donc les sources :

>git clone https://github.com/TLeconte/vdlm2dec.git

On compile
  • pour un rtl :       >make -f Makefile.rtl
  • pour un airspy : >make -f Makefile.air
Rien de plus. Pour lancer le programme, il suffira d'entrer cette commande :

>./vdlm2dec -r [numéro du dongle, si unique : 0] -p [valeur ppm] fréquence en Mhz
par exemple ./vdlm2dec -r 0 -p 62 136.775 136.875

Vous commencerez alors à voir les trames des avions vous survolant de ce genre :
[#1 (F:136.975 P:-14.6) 28/01/2018 16:03:27.463 --------------------------------
Response from Aircraft: 406ADF to 266677
Frame-S: Nr:1 RR

[#1 (F:136.975 P:-13.7) 28/01/2018 16:03:59.575 --------------------------------
Command from Aircraft: 4B17FE to 1090AA
Frame-I: Ns:1 Nr:3
unknown data
1b ff e1                                           |................|

[#1 (F:136.975 P:-14.2) 28/01/2018 16:04:03.458 --------------------------------
Command from Aircraft: 4073D0 to 23D837
Frame-I: Ns:2 Nr:7
unknown data
1b ff ca 1b 28 f6 41 00 24 19 60 03 3f 00 00 00    |....(.A.$.`.?...|
03 00 03 8c 08 00 00 00 03 00 00 00 0f 08 04 69    |...............i|
c5 cc 26 0f 60 03 3f 00 00 00 03 00 03 08 04 73    |..&.`.?........s|
39 d4 51                                           |9.Q.............|

 

Vous pourrez aussi, en ajoutant l'option -l envoyer les données vers un fichier qui se réinitialisera à chaque lancement du programme d'où la necessité de le copier à un autre emplacement après l'arrêt du programme.
 


jeudi 4 janvier 2018

SDRAngel sous linux ( 64bits seulement )

Dans le monde du SDR, il existe un petit nouveau qui va plaire à beaucoup : SDRAngel développé par F4EXB, Edouard. Un petit récepteur pour diverses plateformes et OS en 64bits seulement capable de faire tout aussi bien de la réception que du décodage. Il peut également servir en emission à condition d'utiliser le bon sdr ( HackRF, LimeSDR, USRP.. )
Pour l'instant, sont supportés : Airspy, BladeRF, HackRF, LimeSDR, PlutoSDR, RTL-SDR, SDRplay RSP1 et FunCube
Les modes possibles sont : 
  • AM
  • NFM
  • WFM + RDS
  • ATV
  • LoRa
  • SSB 
  • Analyseur 
et sous réserve d'avoir DSD d'installé :
  • DMR/MOTOTRBO
  • dPMR
  • D-Star
  • Yaesu System Fusion ( YSF )

 Pour l'installation sous ubuntu, la méthode est assez simple à condition d'avoir les bonnes librairies :

$ sudo apt-get install pavucontrol libgles2-mesa-dev cmake g++ pkg-config libfftw3-dev libqt5multimedia5-plugins qtmultimedia5-dev qttools5-dev qttools5-dev-tools libqt5opengl5-dev qtbase5-dev libusb-1.0 librtlsdr-dev libboost-all-dev libasound2-dev pulseaudio libnanomsg-dev libopencv-dev libsqlite3-dev libxml2-dev
$ git clone https://github.com/f4exb/sdrangel.git
$ mkdir build && cd build
$ cmake ..
$ make
$ sudo make install
$ sudo ldconfig

Un petit exemple de vue en déodage DMR


*!* il se peut que la librtlsdr-dev fasse défaut, dans ce cas, si votre sdr fonctionne déjà, il est inutile de chercher à la réinstaller *!*




Bonne année 2018

Je vous présente tous mes voeux pour cette nouvelle année !  Qu'elle soit belle et remplie de joie et bonheur