lundi 20 novembre 2017

Décodage Tetra sous linux avec Telive


Le mode tétra ( ou Terrestrial Trunked Radio ) est un protocole de communication numérique dont l'ETSI a conçu la norme afin de l'harmoniser sur le plan européen. Le Tétra utilise le mode TDMA : 4 canaux multiplexés espacés de 25Khz à faible débit pour de la communication point à point ou point à multipoints. Ce mode peut-être crypté ou non. La méthode qui suit,concerne pour l'instant, les modes non cryptés. 
Pour trouver une emission tétra, il suffit de scanner entre 426 - 430.0 Mhz, 915- 921 Mhz, 460 - 470 Mhz. Contrairement à d'autres modes, le tétra envoie un signal permanent donc facile à trouver.


Sur le waterfall du SDR, vous devriez apercevoir ceci :

 Ici, 7 trames Tétra sont bien visibles

Afin de décoder tout ceci, il vous faudra le programme de SQ5BPF se nommant Telive. Pour ceux qui espèrent pouvoir décoder les services officiels de l'Etat ( police, gendarmerie ... ), passez votre chemin, il n'y a rien pour vous ici. Ce programme existe sous windows mais très lourd et encore avec quelques bugs. Avant de le récupérer, il nous faudra les prérequis, à savoir la librairie libosmocore, vorbis-tools, sox, libncurses, alsa-utils et gnuradio, de préférence, la version 3.7 ou plus. 

on prépare le système
$ sudo apt-get update       
$ sudo apt-get upgrade

on installe les prérequis  
$ sudo apt-get install sox vorbis-tools libncurses-dev alsa-utils 
$ git clone https://github.com/sq5bpf/libosmocore-sq5bpf
$ cd libosmocore-sq5bpf && autoreconf -i
$ ./configure && make

$ sudo make install
$ sudo ldconfig  
 

on install gnuradio
$ wget http://www.sbrac.org/files/build-gnuradio && chmod a+x ./build-gnuradio && ./build-gnuradio -v all 

On récupère ensuite le script qui permettra d'installer le programme Telive
wget https://raw.githubusercontent.com/sq5bpf/telive/master/scripts/install_telive.sh
On donne au fichier récupéré, le droit d'être exécuté
$ chmod 755 install_telive.sh
On lance l'installation
$ ./install_telive.sh

Le programme est dorénavant installé sur votre machine mais avant tout, il va falloir récupérer le codec à jour de la norme Tétra.

-- edit 09/19 : Le site a fait peau neuve, il faut

Pour cela, il va falloir se rendre sur http://pda.etsi.org . Dans l'onglet en haut, on va sélectionner "Standard" puis dans la fenêtre, on va rechercher "en 300 395-2" puis on clique sur la petite loupe.


Dans la liste trouvée, il faudra aller chercher la norme "REN/TETRA-05059" en faisant une recherche dans le bandeau de gauche.


La liste va s'affiner et il faudra aller cliquer et 

sauvegarder le fichier zip de la liste nommé ETSI EN 300 395-2 V1.3.1 (2005-01) (ou clique droit sur ce lien, succeptible d'être modifié par l'etsi ). Une fois récupéré, placez l'archive dans le répertoire /tetra/osmo-tetra-sq5bpf/etsi_codec-patches/ et ensuite : 
$ unzip -L en_30039502v010301p0.zip
$ patch -p1 -N -E < codec.diff
$ cd c-code && make
$ sudo cp cdecoder sdecoder /tetra/bin

Tout est prêt maintenant pour commencer. Il sera possible de réaliser un petit script afin de lancer toutes les commandes en une seul fois mais pour l'instant, on va réaliser ces étapes pas à pas. Dans un terminal : 
On lance notre décodeur 
$ ~/tetra/osmo-tetra-sq5bpf/src/ ./receiver1 1 
On ouvre ensuite une fenêtre pour lancer le moniteur de canaux
$ /usr/bin/xterm -font fixed -bg black -fg white -geometry 203x60
Et dans cette fenêtre crée : 
$ ~/tetra/telive/ ./rxx
On ouvre un second onglet à notre fenêtre terminal où fonctionne receiver1 et on lance tetrad, qui permettra de faire le lien entre le moniteur et le décodeur
$ cd /tetra/bin/ && ./tetrad
Enfin, dernière étape, on ouvre gnuradio et on va lancer le récepteur 1 canal simple ( qui se trouve dans le répertoire ~/tetra/telive/gnuradio-companion/receiver_pipe )

 
Dans la première fenêtre de receiver1, vous allez alors avoir les infos de synchro qui défileront. Si vous n'êtes pas sur la fréquence correcte, vous n'aurez que des séries comme ci-après qui défileront :

### AFC: 0.665247
### AFC: 0.652904
### AFC: 0.646628

Il vous faudra alors ajuster dans votre fichier grc ( telive_1ch_simple_gr37 ) la fréquence de réception en déplaçant le fine_tune, en modifiant la fréquence, le ppm de votre clé afin d'avoir la synchro qui, dans la fenêtre receiver1, se symbolisera par des séries donnant toutes les infos nécessaire au décodage, par exemple : 

TMV-UNITDATA.ind 27/06/3/000 AACH CRC=1 ACCESS-ASSIGN
ACCESS-ASSIGN PDU: ACCESS2: A/8 DL_USAGE: Assigned control
CRC COMP: 0x1d0f OK
NDB 27/06/3/000 type1: 0000000000010000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
TMV-UNITDATA.ind 27/06/3/000 UNKNOWN CRC=1 RESOURCE
RESOURCE Encr=0, Length=2 Addr=Null PDU() sq5bpf req mle_pdisc=0 req=0
CRC COMP: 0x1d0f OK
NDB 27/06/3/000 type1: 1000010010000010010011000000101001101110011000010101111110111101000000100010000000000000000000101111111111111111110101100101
TMV-UNITDATA.ind 27/06/3/000 UNKNOWN CRC=1 BROADCAST
BNCH SYSINFO (DL 428862500 Hz, UL 418862500 Hz), service_details 0x0d65 LA:2 Hyperframe 5627
    Advanced link: 1
  
    Air encryption: 0  très important, c'est ce qui déterminera que le réseau que vous écoutez n'est pas encrypté
    SNDCP data: 1
    unknown 0x8: 0
    Circuit data: 0
    Voice service: 1
    Normal mode: 1
    Migration supported: 0
    Cell never uses minimum mode: 1
    Priority cell: 0
    De-registration mandatory: 1
    Registration mandatory: 1
Il faudra faire en sorte que sur votre ftt de votre grc, la courbe soit la plus rectangulaire possible.

exemple d'une réception

Quand vous aurez ceci, il vous faudra alors attendre une émission qui s'affichera dans le moniteur Tetra et que vous pourrez alors entendre en clair via vos écouteurs. Par ailleurs, il est possible d'enregistrer en vous mettant sur la fenêtre moniteur et en faisant Shift + r et de logger les SSID ( indicatifs des emetteurs ) ou infos de canal en cliquant sur l ( l'état de ces options est visible dans la ligne du haut avec record:1 et log:1 )


Les fichiers audio sont stockés dans le répertoire : /tetra/out/date_du_jour au format ogg
Le log est stocké dans le répertoire /tetra/log/

Il est possible de basculer la fenêtre monitor afin d'avoir des infos complémentaires en tapant sur la lettre t , vous obtiendrez alors :



Il est également possible de récupérer les messages SDS, genre de sms entre opérateurs via la fenêtre receiver et également plein d'autres choses intéressantes qui feront l'objet d'un nouvel article mais vous avez dorénavant les bases pour débuter vos écoutes .. 




11 commentaires:

  1. Super article bien expliqué !

    En attendant la suite !

    RépondreSupprimer
  2. bonjour, c'est pour cela que je dis il n' y a rien de mieux que linux :)

    RépondreSupprimer
  3. bande de blaireau s'est impossible d'ecouté du digitale ! gros fake et gros mito ! il faut du materiele hyper perfectioné pour pouvoir ecouté . s'est des grosses conneries que tu dis

    RépondreSupprimer
    Réponses
    1. En temps normal, je n'aurais pas pris la peine de répondre et j'aurais supprimé le commentaire ..

      1 - Je ne publie jamais de choses qui ne fonctionne pas, tu peux toujours rechercher sur le net des exemples qui le prouve, ce n'est pas à moi de de le faire pour toi .. Il est parfaitement possible de décoder du tetra, tout comme d'autre modes numérique non crypté, il suffit juste de se donner la peine d'essayer :)

      2 - Il existe un bel ouvrage appelé dictionnaire pour t'aider à avancer dans la vie et également un livre dont tu devrais prendre le temps de comprendre, même si je sais que c'est peine perdue pour toi, qui se nomme "le bescherelle". Ils te rendraient tous deux, d'immenses services !

      Supprimer
    2. [supprimé par F0FYF]

      Supprimer
  4. Bonsoir
    Quelle est le type d'OS installé ( ubuntu, kubuntu, mint ...) ?
    Ensuite, que retourne la commande :
    $ dpkg -s libboost-dev | grep 'Version'

    Si aucun résultat alors faire :

    $ sudo apt-get install libboost-all-dev
    $ sudo ldconfig

    Sinon, quel est le message d'erreur ?

    Jeff

    RépondreSupprimer
  5. BonsoirRémi
    Je pense que c'est l'installation de Boost qui doit poser problème. Que dit la commande : dpkg -s libboost-dev | grep 'Version' ?
    Telive est semi-indépendant. C'est gnuradio qui permet de recevoir le flux et de le retourner soit sur Udp, soit par pipe. Telive n'est utile que pour gérer et démoduler le signal
    Jeff

    RépondreSupprimer
  6. Bonsoir
    Il ne figure pas dans le menu ? ( des fois, l'icone ne figure pas mais en faisant une recherche avec gnuradio, tu le trouve )
    En ligne de commande : $ gnuradio-companion tout simplement

    Que retourne la commande : $ gnuradio-config-info --prefix ?
    Elle doit te donner l'endroit où sont installés tous les packages de gnuradio.
    Donc après, il faut "linker" ton chemin des librairies python vers gnuradio avec :
    $ export PYTHONPATH={ton préfix}/lib64/{la version de ton python}/site-packages:$PYTHONPATH

    Tu trouveras ta version de python avec la commande :
    $ python --version

    jeff



    RépondreSupprimer
  7. oublié

    après, il faut aussi renseigner le chemin de tes librairies :
    $ export LD_LIBRARY_PATH={ton préfix}/lib64:$LD_LIBRARY_PATH

    et ça devrait mieux marcher

    Jeff

    RépondreSupprimer
  8. Bonjour je suis passé en Ubuntu 20.10, gnuradio 3.8.1.0 et Python 3.8.6, plus rien ne fonctionne, savez-vous si un upgrade de ce logiciel a été fait ou comment le modifier ?? Je pense que c'est gnuradio et python qui posent pb, cela marchait impec avant (gnuradio 3.7 et python 3.7) Merci cordialement

    RépondreSupprimer
  9. Bonsoir
    Testé à l'instant sur la 20.10 et aucun soucis particulier avec les dernières version de gnu et python .. Avez-vous des messages d'erreur ? Il n'y a pas d'upgrade étant donné que le plugin de décodage a été ajouté sur SDR#
    Jeff

    Jeff

    RépondreSupprimer