Projets:Lab:2011:GHPSDR3-Alex

From Electrolab
Revision as of 09:39, 9 April 2013 by Marc (Talk | contribs)

Jump to: navigation, search
QTRadio, interface d'émission/réception et de de pilotage à distance des appareils connectés au serveur de flux GHPSDR3-Alex

Cékoidon

Ce projet s'inscrit en droite ligne de l'esprit Electrolab. Il associe informatique libre et bidouilles sauvages au fer à souder, construction de radios logicielles et concentration de leurs ressources. En d'autres termes, il s'agit d'installer, de configurer et d'équiper de ses périphériques un serveur d'émission/réception de type "Web SDR" ou "IP SDR", universel, reposant une plateforme GNU, indépendante du type de matériel radio ou de l'architecture des postes clients qui s'y connecteront.Ce serveur a pour nom GHPSDR.

Il est surtout le résultat de plusieurs projets Electrolab convergents, à commencer par le « gros » chantier du MSA, appareil de mesure et d’analyse des signaux radios.

Il procède également de l’intérêt croissant de beaucoup envers le hack des clefs USB de réception TV par le groupe Osmocom http://sdr.osmocom.org/trac/wiki/rtl-sdr -lequel a d’ailleurs généré à son tour un « mini-projet de demi-journée » (un « upconverter » pour l’écoute des bandes décamétriques).

Il est enfin la suite logique d'un « group build » organisé il y a peu autour de la construction de la SDR Widget, une carte de traitement de signal spécifiquement étudiée pour piloter et traiter les information provenant d’une radio logicielle.

On pourrait ajouter que ce projet se situe dans une mouvance technique quasi prévisible : la disparition –ou la diminution progressive- des récepteurs de radiodiffusion dédiés au profit de centres multimédias capables de distribuer un contenu via réseau. Que l’on parle de télévision, de radio « broacast », voir de systèmes plus exotiques tels qu’une installation radioamateur, il est pratiquement certains qu’à terme, la partie réception –donc purement électronique- sera concentrée en un seul point, un serveur de flux, flux qui sera lu par des terminaux ou postes clients polyvalents –tablette, diffuseurs vidéo, ordinateurs, smartphones etc. Une évolution rendue possible grâce à l’apparition d’une part des SDR et d’autre part des réseaux locaux à large bande passante.

De manière plus générale, le remplacement progressif des systèmes de liaison radio traditionnels par des outils autoreconfigurables par logiciel commence à ouvrir la porte à des infrastructures réseau « agiles » et « autoadaptatives » (ou, selon l’expression de leur inventeur Joseph Mitola, des réseaux cognitifs) considérablement plus sûres (mais pas inviolables) que les réseaux radio traditionnels constitués d’un bric à brac de technologies, de protocoles, de liens et de passerelles plus ou moins biens adaptés. Commencer à comprendre dès aujourd’hui, même par une approche simple, comment fonctionneront ces réseaux constitués d’un maillage SDR est une quasi nécessité pour le hacker contemporain. Le SDR est aux réseaux sans fil (dont font partie les grands réseaux d’opérateurs) ce que Wireshark, Nessus et Nmap sont aux réseaux filaires.

Passons aux choses concrètes. Nous partons du principe que toute personne intéressée par ce genre de projet possède déjà un récepteur ou un émetteur-récepteur logiciel. Les gros salaires peuvent dépoussiérer leurs USRP2, les hackers prolétaires brandiront d’un poing rageur leurs clefs DVB-T âprement achetées 7 dollars (port compris) sur les étals des ebayeurs de l’Empire du Milieu. Quant aux radioamateurs, ils dépoussièreront leurs Softrock, Perseus, UHFSDR, SDR-iq, HiQSDR et luxueux HPSDR et prouveront que leur ADN de hacker avant l’heure et leur passion de la communication et de la transmission du savoir ne sont pas de vains mots. Poil au dos.

 Note importante : Il va sans dire, mais cela ira mieux en l'écrivant, que l'usage de tout
  matériel d'émission en dehors des fréquences "sans licence" est soumis à des contraintes
  légales très strictes. Il est également important de préciser que l'utilisation à
  distance d'un émetteur du service amateur via le réseau public est strictement interdit
  en France. Lorsque nous parlons de transmission via protocole TCP/IP, cela s'entend dans
  le cadre précis du réseau local de l'exploitant. Le présent projet ne constitue en aucun
  cas une incitation à contourner la loi.

Les principaux conseils que vous trouverez sur ces pages reflètent essentiellement le fruit du travail et de l'expérience de Sid Boyce, G3VBV, qui anime la communauté Softrock depuis ses toutes premières heures.

Qu'est-ce que GHPSDR3-Alex

L'ensemble softrock 6.3, Mobo 4.3, SDR-Widget 3.0, l'un des très nombreux SDR supporté par le serveur de streaming)

GHPSDR3-Alex est une évolution de GHPSDR de John Melton. Il s'agit d'un ensemble de logiciels capables de "servir" des flux radio reçus par des radios logicielles (SDR). Il peut piloter des émetteurs-récepteurs à distance via réseau, et partager les ressources de un à quatre récepteurs ou tranceivers SDR entre plusieurs usagers... en fonction des capacités et de la bande passante des segments de réseau IP utilisés, et bien entendu de la puissance CPU disponible coté serveur.


Attention : lorsque nous parlons de flux, il ne s'agit pas du simple streaming d'une seule et unique communication, mais d'une portion de spectre de 200 kHz -donc potentiellement plus de 150 stations radio-, portion de spectre pouvant être "positionnée" sur n'importe quelle fréquence située dans la plage du récepteur utilisé (en général, de 1,8 à 30 MHz avec un Softrock, mais pouvant couvrir de 3 à 700 MHz avec une tête UHFSDR, voir plus -22 à 1700 MHz par exemple si l'on connecte une clef DVB-T)

GHPSDR est constitué de trois parties : un frontal chargé d'interfacer l'électronique (radiorécepteur ou émetteur-récepteur), un serveur de flux -qui convertit le spectre reçu en trames IP- et un client local ou distant qui décodera le signal, sera chargé des changements de bande ou de fréquence etc. C'est la partie la plus visible de l'iceberg des "web-sdr".

La partie serveur n'existe que sous Linux. Les poste clients, en revanche, ont été compilés sous Linux, Windows, Android, JVM...

Plus d'informations sont disponibles sur le site GHPSDR3-Alex

Les sources des programmes sont accessibles sur github

Une cartographie en temps réel des serveurs accessibles sur Internet est hébergée sur le serveur Web d'Andréa Montefusco IW0HDV. Avant de vous lancer dans une telle réalisation, installez GLSDR sur votre tablette Android ou smartphone, et balayez les bandes... vous vous rendrez vite compte que cela n'a rien a voir avec le Web-SDR de l'Université de Twente, remarquable précurseur monté par PA3FWM

Le socle matériel historique est constitué d'un émetteur-récepteur Softrock 6.3NG, d'une extension associant filtres et commande de fréquence, la "mobo 4.3", et une interface de commande et de traitement de signal ayant déjà fait l'objet d'un projet de construction au sein de l'Electrolab, la SDR-Widget. C'est cette plateforme qui nous servira d'exemple d'application, mais nous tenterons également de fournir les paramètres pour les plateformes "clef DVB-T RTL 2832U" et UHFSDR.

Quelle version choisir

Il existe de nombreuses instructions d'installation.

- Notamment une édition "live USB" du serveur, qui n'accepte manifestement pas de fonctionner avec une SDR-Widget dotée d'un firmware récent

- une version "PPA nobrainer ubuntu" au format DEB conçue par Andréa Montefusco, mais qui ne semble plus maintenue depuis 2 ans.

- Par ailleurs, N8MDP a rédigé deux très longs et très détaillés "how to"... le tout pour installer un code qui ne parvient pas toujours à tomber en marche, car lié à des versions de bibliothèques, de noyau ou de code source relativement figés

C'est principalement la raison pour laquelle il nous a semblé nécessaire d'écrire ce guide d'installation rapide qui part des codes source principaux, ceux écrits par Alex, et donc la dernière versions stable connue.

Pour demeurer le plus orthodoxe possible, nous avons basé ce guide en prenant pour base un noyau Debian Squeeze. Plus "puritaine" qu'une ubuntu, si vous résolvez un problème sur ce noyau, toutes les versions dérivées de Debian pourront suivre votre exemple. L'inverse n'est pas toujours vrai.

Attention : sous Debian, contrairement à Ubuntu, le compte root est actif par défaut. Il est plus facile d’effectuer les installations avec ce privilège. Que les puritains de la sécurité en soient pour leurs frais, de toute manière, il est aussi simple d’effectuer des bêtises avec un « sudo su » ou un « sudo » qu’avec un login root.

Si vous partez d’une installation Debian Ubuntu, il est souhaitable tout d’abord de débloquer le compte root avec les opérations suivantes :

 sudo passwd root

Le système va demander deux fois de suite un nouveau mot de passe pour le compte root (à ne jamais oublier). Le déblocage du compte s’effectue ensuite par la commande

 sudo passwd –u root 

Il suffit de se déloguer puis de se reloguer avec le compte root et le mot de passe que l’on vient de choisir (et que l’on n’oublie pas !)(j'ai parfois l'impression de me répéter...)

Il est tout à fait possible d’effectuer la totalité des opérations suivantes avec un compte « user ». Il faudra cependant faire précéder tous les ordres "apt-get", "git clone" ou "make" par l’ordre sudo. Pas de "sudo" nécessaire pour les autres commandes du genre "cd" ou "./configure".

L'ordre sudo est la contraction de "super user do" (le super-utilisateur fait...). Super-user était le nom réservé généralement à l'Administrateur sur les systèmes Unix au début des années 80. On se doute qu'avec un surnom aussi mégalomaniaque, ce "super-user" possède des droits que le vulgum pecus ne peut espérer obtenir un jour. Revers de la médaille, une erreur de manipulation effectuée avec des droits de super-user (ou "root") font potentiellement plus de dégâts car susceptibles de s'étendre à tout le système ou presque.

Mais revenons à notre sudo


Ex :

 sudo apt-get install mc

sous Ubuntu, alors que sous Debian sous compte root

 apt-get install mc

Cette commande installe Midnight Commander, une version « linuxisée » du Norton Commander, interface de manipulation de fichiers en mode caractère conçue pour DOS par John Socha, qui fut également le créateur du tout premier tableur sur microordinateur : Visicalc

Récupération des libs nécessaires

Si cela n’a pas déjà été fait (installation de TVHeadend par exemple)

 apt-get install build-essential git pkg-config libssl-dev bzip2 wget
 apt-get install zlib1g-dev

puis

 apt-­get install libqt4-­opengl-­dev glutg3-­dev libusb-­0.1­-4
 apt-­get install libfftw3­-dev portaudio19-­dev libpulse­-dev
 apt­-get install libsamplerate0­-dev libusb­-1.0­-0­-dev libconfig8­-dev
 apt­-get install autoconf
 apt-­get install libtool
 apt­-get install libusb-­dev
 apt­-get install libjack­-dev
 apt-get install libgsl0-dev
 apt-get install libgtk2.0-dev
 apt-get install libortp-dev
 apt-get install git-core
 apt-get install subversion


A noter :

  • - le gsl de la "libgsl0-dev" s'écrit "golf sierra lima" et non "golf sierra Unité Zéro".
  • - le libusb-dev par défaut risque de ne pas convenir sur certains noyaux (Ubuntu) : voir ci-après

Ces deux dernières installations permettent d’aller récupérer les versions les plus récentes des bibliothèques de fonctions “stables” sur les dépots Github et SVN, c'est à dire avec d'autres outils que les traditionnels aptitude/apt-get/dpkg utilisés par défaut sous Gnu-Linux-Debian-Unix-Like-but-not-Unix-dérivé-de-system-V (ironique, moi ? mais non, voyons)

Il est conseillé d’effectuer les différentes opérations dans le répertoire « home » de l’utilisateur principal (et non sur le répertoire "privé" de root)

Récupération du dernier source en date de ghpsdr3-Alex

cd /home/nomutilisateur
git clone git://github.com/alexlee188/ghpsdr3-alex.git

Récupération de 4 « libs » "à la main"

Ces bibliothèques de fonctions (Codec2-dev, Libevent et ortp) ne sont a priori pas accessibles depuis un noyau Pure Debian Squeeze. Elles sont en revanche directement disponibles avec un simple "apt-get install" sous Ubuntu.

Codec2-dev

Se trouve sur un dépôt Subversion

 svn co https://freetel.svn.sourceforge.net/svnroot/freetel/codec2-dev codec2-dev
 cd codec2-dev
 ./configure
 make
 make intall
 ldconfig
 make clean
 cd ..

Libevent

Par défaut, libevent de Debian Squeeze en est resté à une version 1.4, il nous faut une version 2.0 Cette fois, le dépôt est sur Github

 git clone git ://github.com/libevent/libevent.git
 cd libevent
 ./autogen.sh
 ./configure
 make
 make install
 make clean
 cd ..

ortp-dev Si l’on ne parvient pas à la descendre libortp-dev avec apt-get ou synaptic... ceci n'est pas très clair dans la config du rédacteur de ces lignes

 git clone https://github.com/avis/ortp.git
 cd ortp
 ./autogen.sh
 ./configure
 make 
 make install
 make clean
 cd ..


Libusb

Certains noyaux Ubuntu utilisent par défaut une bibliothèque usb qui ne convient pas à GHPSDR3-Alex. Il faut alors récupérer la dernière version en date de libusb-1 qui ne figure pas dans les dépots par défaut

 wget http://sourceforge.net/projects/libusb/files/libusb-1.0/libusb-1.0.9/libusb-1.0.9.tar.bz2/download

décompacter le fichier

 sudo bunzip2 libusb-1.0.9.tar.bz2
 sudo tar xvf libusb-1.0.9.tar
 cd libusb-1.0.9/
 sudo ./configure
 sudo make
 sudo make install
 sudo make clean

(le "sudo" d'élévation de privilèges a été conservé ici car il semblerait que seules les Ubuntu soient frappées par de défaut)

Ceci fait, on peut passer à l'installation du programme serveur GHPSDR3 à proprement parler

Compilation de GHPSDR3-Alex

 cd ghpsdr3-alex
 autoreconf –i
 ./configure
 make all
 make install

L’on obtient alors trois elements clef de la suite de programmes

 ghpsdr3-alex/trunk/src/QtRadio/QtRadio
 ghpsdr3-alex/trunk/src/dspserver/dspserver
 ghpsdr3-alex/trunk/src/server/hpsdr-server


Si vous allez dans

 /home/esh/ghpsdr3-alex/trunk/src/monitor

Vous pouvez lancer ¨make¨. ¨monitor" le binaire résultant, est expédié dans ghpsdr3­alex/trunk/bin Si vous allez dans

 /home/esh/ghpsdr3-alex/trunk/src/bandscope

Vous pouvez lancer ¨make¨.¨bandscope", le binaire résultant, est expédié dans ghpsdr3­alex/trunk/bin Si vous allez dans

 /home/esh/ghpsdr3-alex/trunk/src/receiver

Vous pouvez lancer ¨make¨. ¨ghpsdr¨, le binaire résultant, est expédié dans ghpsdr3­alex/trunk/bin

Enfin, si vous possédez une plateforme Softrock/Mobo, vous pouvez lancer un "make" dans le répertoire

 /home/esh/ghpsdr3-alex/trunk/src/softrock

softrock, le binaire résultant, est expédié dans ghpsdr3­alex/trunk/bin

Pour vérifier la validité des options de compilation, vous pouvez exécuter

 softrock --toto

qui vous répondra

 root@GHPSDR:/home/marc/ghpsdr3-alex/trunk/src/softrock# softrock --toto
 softrock: unrecognized option '--toto'
 invalid argument
 Usage options:
       -s= or --samplerate
       -d= or --device (OSS audio device)
       -i= or --input (Port Audio device for input)
       -o= or --output (Port Audio device for output)
       --iq or --qi (to swap I and Q channels)
       --si570 (to use a unit having a Si570 oscillater)
       -v or --verbose
       -f= or --startupfreq (set Si570 startup frequency)
       -m= or --multiplier (set Si570 multiplier)
       --correctedfreq (set Si570 corrected frequency)
       --serialid
       --record filename (record to this file)
       --playback filename (playback this file)
       --receivers (number of receivers)
       -j or --jack (use Jack Audio Connection Kit for audio in/out)
 root@GHPSDR:/home/marc/ghpsdr3-alex/trunk/src/softrock#

Un exécutable qui rouspète, c'est un exécutable qui fonctionne. On peut passer au branchement des différents appareils et entamer les premiers tests.

D’autres indications peuvent être obtenues sur le réflecteur hpsdr ainsi que sur

 https://github.com/alexlee188/ghpsdr3-alex/blob/master/README
 http://napan.ca/ghpsdr3/index.php/Main_Page