mercredi 11 février 2015

[SDR] Initiation à Linux

Bonjour, 

Ma dernière bidouille est purement logiciel : j'ai fais de mon RaspberryPi un décodeur POCSAG qui filtre les trames reçus pour ne m'afficher que les messages texte sans doublons.
Pour ça, j'ai du me pencher sur quelques commandes Linux que je vais vous présenter ici.

Pour commencer, il faut demander à notre SDR de se caler sur la bonne fréquence :
$ rtl_fm -f 466.175M -s 22.05k -p 9

rtl_fm = logiciel à utiliser, suivis des différentes options
-f 466.175M = Fréquence de travail
-s 22.05k = Sample rate (par défaut, il est à 24kHz, mais Multimon-ng n'acceptera que 22.05k)
-p 9 = Correction de votre SDR (cf Calibrer sa clé SDR)

Voilà pour la première partie. 

On veut maintenant utiliser le résultat de cette commande pour alimenter Multimon-ng (le programme qui nous permettra de décoder les trames reçus).
Pour celà, nous uiliserons un "pipe" (aussi appelé "tube") et qui ressemble à ça " | " (alt gr + 6).
Exemple : cmd1 | cmd2 
                 Le résultat de cmd1 sera utiliser par cmd2.

Voyons maintenant la commande du décodeur :
$ multimon-ng -a POCSAG1200 -f alpha -t raw /dev/stdin
Je ne vais pas la détailler complètement, mais on peut remarquer l'option -a POCSAG1200 qui est le décodeur qu'on souhaite activer.
Pour connaitre la liste des décodeurs dispo, je vous invite à regarder l'aide de Multimon-ng avec la commande :
$ multimon-ng -h

Il nous reste plus qu'à assembler le décodeur avec le récepteur à l'aide du pipe, soit :
$ rtl_fm -f 466.175M -s 22.05k -p 9 - | multimon-ng -a POCSAG1200 -f alpha -t raw /dev/stdin

A ce point, les trames décodées s'afficheront dans le terminal de commande.
(ctrl + c pour stopper)

C'est bien beau tout ça, mais j'aimerai bien récupérer les trames dans un fichier texte pour travailler dessus !
Et bien c'est tout simple grace à la commande >> qui permet d'envoyer le résultat de la commande précédentes dans le fichier qui suit.
Exemple : cmd >> /home/user/fichier.txt
Dans notre cas :
$ rtl_fm -f 466.175M -s 22.05k -p 9 - | multimon-ng -a POCSAG1200 -f alpha -t raw /dev/stdin >> /home/utilisateur/pocsag_brut.txt

Voilà pour cette première partie !
Je vous invite à vous renseigner sur la commande "grep" (que je détaillerai dans un futur billet) qui nous permettra de faire un peu de tri dans notre fichier pocsag_brut.txt

A bientôt, 

Jérôme, 
F4GMU

samedi 7 février 2015

[SDR] Calibrer sa clé SDR

Bonjour,

Je vais vous présenter ici un petit tuto bien pratique pour connaitre la correction à apporter aux logiciels que l'on utilise avec nos tuner TNT SDR pour être bien calé sur la fréquence sur laquelle on travaille.

Pour connaitre cette correction (ppm), j'utilise Kalibrate.

Commençons par l'installation :
$ cd
Intallation des dépendances :

$ sudo apt-get install libtool autoconf automake libfftw3-dev
Installation du programme :
$ git clone https://github.com/asdil12/kalibrate-rtl.git
$ cd kalibrate-rtl
$ git checkout arm_memory
$ ./bootstrap
$ ./configure
$ make
$ sudo make install
Utilisation (si possible, utiliser une antenne taillé pour la bande des 900MHz) :
$ kal -s GSM900
 Le logiciel va scanner la GSM900 et nous donnera un résultat du genre :
Using device 0: Terratec Cinergy T Stick RC (Rev.3)
Found Elonics E4000 tuner
Exact sample rate is: 270833.002142 Hz
kal: Scanning for GSM-900 base stations.
GSM-900:
    chan: 6 (936.2MHz - 9.750kHz)    power: 223752.35
    chan: 16 (938.2MHz - 9.716kHz)    power: 316504.95
    chan: 81 (951.2MHz - 9.608kHz)    power: 1674966.33
    chan: 84 (951.8MHz - 10.696kHz)    power: 1140067.68
    chan: 119 (958.8MHz - 9.594kHz)    power: 2244737.70
    chan: 121 (959.2MHz - 9.632kHz)    power: 412691.29
Pour connaitre le ppm, utiliser la commande suivante :
$ kal -c 16 #choix parmis les cannaux reçus
Résultat :
 Using device 0: Terratec Cinergy T Stick RC (Rev.3)
Found Elonics E4000 tuner
Exact sample rate is: 270833.002142 Hz
kal: Calculating clock frequency offset.
Using GSM-900 channel 119 (958.8MHz)
average        [min, max]    (range, stddev)
- 9.496kHz        [-9514, -9481]    (33, 8.253447)
overruns: 0
not found: 1
average absolute error: 9.904 ppm
Et voilà ! Il ne reste plus qu'à utiliser cette valeur dans vos logiciels favoris.
Par exemple avec  rtl_fm, ajouter : -p votre_ppm :
$ rtl_fm -f 466.175M -s 22.05k -p 9
 Amusez vous bien,

Jérôme,
F4GMU.