Projets:Lab:2011:GHPSDR3-Alex

From Electrolab
Jump to: navigation, search

Page référencée dans Passion :
Radio Radios logicielles, transmissions numériques, expérimentations HF

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. Un module spécifique de Ghpsdr3-Alex permet de l'intégrer.

  • Un groupe de discussion en Français, animé par Jacques f1apy, est consacré tout spécialement aux logiciels de pilotage SDR en général à à GHPSDR en particulier. Il s'agit de SDR_Software_FR sur Google groups

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/OM 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 Linux

Ou Des différences génétiques qui caractérisent Linux et Windows

Le caractère très général de ce chapitre et le soucis de ne pas trop alourdir la page principale du projet avec des digressions moins techniques et moins "radio" ont nécessité l'ouverture d'une pages spécifique, intitulée Windows vs Linux

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".

On imagine aisément qu'il existe plusieurs type de frontaux, un par famille de SDR à piloter. Les SDR utilisant un Si570 et les pilotes de DG8SAQ ont besoin d'un programme nommé softrock. Ceux qui utilisent une SDR-Widget emploieront Widget-server, les possesseurs de clefs RTL-SDR lanceront le serveur rtlsdr et ainsi de suite, pour toutes les plateformes acceptées, y compris le HPSDR du radio club de Tucson (tapr), le Perseus, l'USRP etc.

La partie centrale, le pivot du serveur, se nomme dspserver. Elle est commune à toutes les interfaces et est indépendante du type de client utilisé

Le client principale, QtRadio (prononcer "Cute radio") existe en version Windows et Linux (pure Debian, Ubuntu, Fedora) pour plateforme X86, iA64, Raspberry Pi et Odroid X. Mais le client le plus utilisé par les non-OM (téléchargé plus de 12000 fois sur Google Play), c'est Glsdr, qui tourne sur les Smartphones et tablettes sous Android.

Interface du client Android Glsdr. Malgré sont aspect spartiate, il possède les mêmes caractéristiques techniques que son "grande frère" QtRadio : filtres sélectif à largeur variable, sélection du mode de travail (cw, AM, SSB, Digi, FM, DRM....), ajustement de la CAG etc (cliquez deux fois de suite sur l'image pour l'agrandir)


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 versions d'installation de ghpsdr3-Alex.

- L'une des plus intéressante d'un point de vue prospectif est celle de F6EHP. Il s'agit d'une adaptation du programme sur une plateforme ARM quad core Odroid-X (X2 à l'heure ou nous rédigeons ces lignes). Il s'agit d'une carte mère de très petite taille, d'une puissance semblable à celle d'un "gros" smartphone. Cette approche matérielle permet d'imaginer des SDR avec une véritable "intelligence embarquée", et non pas seulement un étage de démodulation reposant sur un DSP ou un microcontroleur spécialisé.

L'ennui, c'est que l'utilisation de ces plateformes minimalistes exige une certaine maitrise de l'installation des noyaux Linux. Il est nécessaire de compiler un noyau sur mesure pour que "tout rentre"... puis d'installer Ghpsdr3-Alex.

Pour épargner ce travail de titan aux débutants, F6EHP propose en téléchargement une image de sa SD-Card, une notice d'installation détaillée et une description de sa station ainsi équipée

- Ile existe également 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 hélas.

- 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.

Les personnes souhaitant obtenir des renseignements plus techniques, but in English, peuvent se reporter à la page Developers's documentation du site Napan.ca, et suivre le "changelog" tenu à jour par les différents développeurs.

Préparation de l'ordinateur

Petit guide à l'usage des habitués de Windows

Pour demeurer le plus orthodoxe possible, nous avons basé ce guide en prenant pour base un noyau Debian Wheezy 7.0.x 64 bits. 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. Ce qui suit a été testé sur 17 installations consécutives, sur trois plateformes matérielles différentes.

A moins que vous ne soyez un dieu des système GNU, évitez d'installer une version "stable" de Debian (6.0.x) qui nécessite trop de travail de préparation. Evitez également, si possible, d'installer un noyau 32 bits, elles entrent parfois en délicatesse avec certaines opérations de compilation. Ne perdons pas de vue que ghpsdr3-Alex est fabriqué avec les outils de développement les plus récents possibles... donc les plus susceptibles.

Maintenant, au boulot

En premier lieu, il est souhaitable de débloquer le compte root avec les opérations suivantes :

Après vous être logué en mode graphique, lancez une fenêtre de terminal X (Xterm par exemple) et entrez la commande

 sudo passwd root

Le système va demander deux fois de suite un nouveau mot de passe pour le compte root (à ne jamais oublier).

Sous Ubuntu,(non nécessaire sous Debian), 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 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.

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 (toujours dans le cadre de la fenêtre Terminal X)

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

mc va nous servir à modifier des fichiers, changer leurs attributs d'exécution et de lecture, les déplacer, les effacer avec parfois plus de souplesse qu'avec les commandes en ligne

Le plus simple, pour les habitués de Windows, et après avoir installé votre noyau Linux Debian, et de se loguer en compte "root" et d'installer un deamon ssh.

Ouvrir tout d'abord un véritable terminal non graphique, et s'authentifier comme administrateur

Control-Alt-F1
MonLinux login : root
Password : monmotdepasse

installation du serveur ssh

 apt-get install openssh-server

il suffit de répondre "oui" à la question que pose le système après avoir fait défilé une bordée d'information, et le logiciel est installé(openssh est installé par défaut en général)

A noter que Debian Wheezy est déjà doté d'un serveur ssh. Ce n'est pas le cas des versions Squeeze par défaut.

On en profite au passage pour augmenter les privilèges de l'utilisateur par défaut (le second compte "simple utilisateur" créé lors de la procédure d'installation)afin de lui octroyer la permission de télécharger et installer des logiciels

adduser nomdutilisateur sudo

Ce pourrait être par exemple "adduser f6itu sudo". Cette élévation de privilège est importante, car par défaut, un utilisateur "normal" n'a aucun droit "sudo" sous Debian... ce qui n'est pas le cas sous Ubuntu, puisque le seul utilisateur par défaut doit bien pouvoir avoir le droit d'installer quelques logiciels.

Il faut ensuite connaitre l'adresse IP de l'ordinateur sous Linux avec la commande ifconfig. Laquelle affichera

 root@ghpsdr4:/# ifconfig
 eth0    Link encap:Ethernet  HWaddr 00:1c:7e:d4:05:a7
         inet adr:192.168.0.223  Bcast:192.168.0.255  Masque:255.255.255.0
        .../...

Notre adresse attribuée par le serveur dhcp de la box ADSL est ici 192.168.0.223, retenons-là, elle nous servira plus tard. Par la suite, il sera préférable d'attribuer (via l'interface graphique de Linux), une adresse IP fixe. Dans un réseau, il est plus pratique de travailler avec des adresses précises. Cela est même obligatoire si l'on souhaite "publier" sa station radio sur Internet pour en faire un Web-SDR.

Il ne reste plus qu'à quitter la session root


 root@MonLinux: logout

ce qui renvoie à l'invite de login. Le retour à la session graphique de démarrage s'obtient avec la séquence

 Control-Alt-F7

A partir de ce moment, la machine Linux est accessible par n'importe quelle autre ordinateur relié au réseau local... y compris ceux sous Windows.

Télécharger sur la machine Windows un programme de communication ssh.Putty est l'un des plus simples et efficace. En inscrivant l'adresse IP de ma machine Linux dans la fenêtre de paramètres, Putty ouvre une session de "prise de contrôle à distance" en mode caractère.

Ouverture d'une session ssh à partir d'une station Windows(cliquez deux fois de suite sur l'image pour l'agrandir)

Il maintenant possible d'effectuer des couper-coller entre l'écran de ce site Web et la fenêtre en mode caractère du client ssh Putty. De cette manière, les probabilités d'erreurs de saisie et de fautes de frappes sont excessivement réduites. Une installation complète du serveur GHPSDR3-Alex avec cette technique ne prend pas plus de 2 heures, café compris.

 Nota bene : une fois que l'on a sélectionné et "copié" une ligne sous Windows, un simple "clic droit" expédie
 le contenu du buffer dans la fenêtre Terminal de Puttty. Il n'y a pas de menu déroulant, pas de commande accessoire
 complémentaire. Si l'on souhaite effectuer une copie de l'écran sous Putty, il suffit de sélectionner la zone 
 en gardant appuyé le bouton gauche de la souris. Le contenu de la zone sélectionnée est automatiquement enregistré
 dans le tampon de copie, et peut être collé dans Notepad sous Windows, par exemple.

Rien n'interdit de procéder de la même manière en ouvrant une session graphique sous Linux, puis une fenêtre en mode terminal (Xterm par exemple) et de procéder à l'installation à grand renforts de couper-coller.

Installation de GHPSDR3-Alex

Récupération des sources et 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 zlib1g-dev


puis

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

Si l'installation s'effectue à partir d'une Debian "Stable/Squeeze", aka Debian 6.x-, il est nécessaire d'installer glutg3-dev plutôt que freeglut3-dev

 apt-get install libqt4-opengl-dev glutg3-dev libusb-0.1-4

A noter :

  • - le gsl de la "libgsl0-dev" s'écrit "golf sierra lima" et non "golf sierra Unité Zéro". (remarque destinée aux personnes n'utilisant pas la technique "couper-coller" et préférant entrer les ordres à la main)
  • - 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 » complémentaires "à 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 parfois disponibles avec un simple "apt-get install" sous Ubuntu. Il est préférable de ne les installer que si le ./configure de ghpsdr3 le demande.

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 install
 ldconfig
 make clean
 cd ..

Libevent

Opération non nécessaire sur Debian Wheezy 7.x et Ubuntu 12.x

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

Note importante!

Il est primordial de supprimer toute ancienne version 1.4 et antérieure de libevent avant que de lancer la compilation du serveur.

 apt-get remove libevent-1.4-2

Si le noyau utilisé est plus ancien que 6.0.7, il se peut que l'immatriculation de la bibliothèque soit différente. Il est dans ce cas plus simple de supprimer le paquet en mode graphique, avec une application comme synaptic.

Suppression de libevent-1.4-2 avec synaptic le gestionnaire de paquets(cliquez deux fois de suite sur l'image pour l'agrandir)

La nouvelle version se récupère comme suit

  • Déterminer et télécharger la dernière version "stable" de la bibliothèque de fonction sur http://libevent.org/
  • la télécharger, décompacter le fichier, pour ensuite lancer la suite d'instructions de compilation dans le répertoire ainsi créé :
 wget https://github.com/downloads/libevent/libevent/libevent-2.0.21-stable.tar.gz
 tar -zxvf libevent-2.0.21-stable.tar.gz
 cd libevent-2.0.21-stable
 ./configure
 make
 sudo make install
 sudo ldconfig


Si l'on n'a pas correctement éliminé l'ancienne version de libevent, il se produit une erreur d'exécution de dspserver (rien de suspect ne survient durant la compilation)

Cette erreur caractéristique est

softrock: error while loading shared libraries: libevent_pthreads-2.1.so.1: cannot open shared object file: No such file or directory

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 ..


Environnement de développement Qt5

Qt5(prononcer « cute 5) est un environnement multiplateforme de développement avec lequel a été développé QtRadio (Cute Radio). Cette installation n'est possible que sur une Debian Wheezy 7.x ou un Ubuntu 12.x. Installer Qt5 sur des version Debian stable 6.x et les Ubuntu d'ancienne génération pose d'innombrables problèmes de dépendances et de mises à niveau complémentaires (gcc, bibliothèques C etc).

passer en mode console graphique locale sur la machine ghpsdr3-Alex (Control-Alt-F7 si ce n'est déjà fait). Loguez vous avec un compte possédant des droits sudo. Lancer un navigateur Web (Epiphany, Firefox..) et dirigez-vous sur la page

 http://qt-project.org/downloads

une liste de fichier apparait. Téléchargez la version adaptée à votre machine -a priori Linux 64 bits-.

Selon toute probabilité, ce fichier va s'enregistrer dans le répertoire "Téléchargement" Il est également possible de télécharger le fichier via la ligne de commande :

 cd /home/nomutilisateur
 wget http://download.qt-project.org/official_releases/qt/5.0/5.0.2/qt-linux-opensource-5.0.2-x86_64-offline.run

(en admettant que qt-linux-opensource-5.0.2-x86_64-offline.run soit la dernière version en date)

Une fois le fichier récupéré -attention, l'opération est assez longue-, il faut :

- déplacez ce fichier dans le répertoire /home/nomutilisateur opération à effectuer soit avec Midnight Commander, soit avec le gestionnaire de fichiers de l'interface graphique, soit en ligne de commande

- changer les attributs du fichier pour qu'il devienne exécutable. Là encore, il est possible d'effectuer ce changement avec l'interface Midnight Commander (F9/menu Fichier/sous-menu Chmod après avoir sélectionné le fichier dans la liste. En ligne de commande, ces deux opérations s'effectuent de la manière suivante :

 cd /home/nomutilisateur/Téléchargement
 mv qt-linux-opensource-5.0.2-x86_64-offline.run .. 
 cd ..
 chmod +x qt-linux-opensource-5.0.2-x86_64-offline.run 

Il ne reste plus qu'à lancer, depuis une fenêtre terminal exécutée depuis l'interface graphique, l'ordre suivant :

 ./qt-linux-opensource-5.0.2-x86_64-offline.run

La suite de l'installation se résume à valider les différents boutons et cases à cocher qui vont s'afficher en mode graphique sous Gnome.

Lancement de l'installation de Qt5 depuis une fenêtre terminal dans l'environnement graphique. Cette opération ne peut s'effectuer qu'en mode "console" (donc pas à distance via ssh)(cliquez deux fois de suite sur l'image pour l'agrandir)


Libusb

Cette étape est seulement nécessaire pour les utilisateurs d'anciens 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

Libusb installation de Libusb pour les utilisateur d'anciennes version Ubuntu

Ceci fait, on peut passer à l'installation du programme serveur GHPSDR3 à proprement parler, après avoir redémarré le système en lançant un

 shutdown -r now

purement chamanique...

Compilation de GHPSDR3-Alex

L'opération se déroule dans le répertoire /home de l'utilisateur principal (et non le répertoire de root)

 export PATH=/opt/Qt5.0.0/5.0.0/gcc_64/bin:/opt/Qt5.0.0/Tools/QtCreator/bin:$PATH
 cd /home/nomutiliateur/ghpsdr3-alex
 autoreconf –i
 ./configure
 make all
 make install

L’on obtient alors quatre 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
 ghpsdr3-alex/trunk/src/softrock/softrock

Ces répertoires, ainsi que quelques autres plus spécialisés (le serveur pour les possesseurs de SDR-Widget par exemple) contiennent les programmes exécutables constituant l'ensemble GHPSDR3-Alex. A noter qu'un répertoire

 ghpsdr3-alex/trunk/bin

contient déjà quelques programmes (monitor par exemple). Pour des raisons de simplicité, il est conseillé de copier dans ce répertoire "bin" les exécutables éparpillés dans les différents sous-répertoires de ghpsdr3-alex/trunk/src/.


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

Configuration logicielle de GHPSDR3-Alex

Paramètres du serveur

Lancer une première fois le programme dspserver

 dspserver --share --lo 9000 --lookupcountry 

le programme répond

 root@GHPSDR:/etc/udev/rules.d# dspserver --share --lo 9000 --lookupcountry
 Country Lookup is On
 Reading conf file /root/dspserver.conf
 **********************************************************
   A new  dspserver config file template has been created at:
   /root/dspserver.conf
   Please edit this file and fill in your station details!
 ***********************************************************
 **********************************************************
   Your config file located at:
   /root/dspserver.conf
   Contains Unknown for a Call
   Please edit this file and fill in your station details!
 ***********************************************************

Editer le fichier dspserver.conf et renseigner les champs nécessaires (indicatif, QTH, type d’émetteur ou récepteur, type d’antenne etc) avec l’ordre

 nano/root/dspserver.conf

(on sort de l’éditeur en tapant Control-X avant confirmation d’écriture, O ou Y selon la localisaton)

Paramétrer dspserver.conf,

Une page spéciale est consacrée aux paramètres de dspserver.conf

Règles des périphériques USB

Une fois le fichier dspserver.conf enregistré, éditer dans /etc/udev/rules.d un fichier 99-softrock.rules contenant

 SUBSYSTEM=="usb", ATTR{idVendor}=="16c0", ATTR{idProduct}=="05dc", MODE="0660", GROUP="dialout"

A noter que, pour les possesseurs de cartes SDR-Widget, le contenu du fichier est un peu plus étendu

 # DG8SAQ
 SUBSYSTEM=="usb", ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="05dc", MODE:="0666"
 # VOTI Internal Lab Use
 SUBSYSTEM=="usb", ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="03e8", MODE:="0666"
 # HPSDR Ozy
 SUBSYSTEM=="usb", ATTRS{idVendor}=="fffe", ATTRS{idProduct}=="0007", MODE:="0666"

Ce fichier de règles indique que, sur une des prises USB (que l’on peut scanner avec l’ordre « lsusb ») se trouve un périphérique possédant l’identifiant de fabricant « 16c0 » et l’identifiant produit « 05dc » (qui correspondent aux interfaces de commande DG8SAQ), et que les droits attribués à cette règle sont élevées au niveau « 660 » pour tout membre du groupe « dialout ».

Pour vérifier que ce groupe fait bien partie de ceux référencés dans vos ACL (listes de contrôle d’accès), il suffit de lance l’ordre

cat /etc/group

qui va vous lister tous les groups officiellement acceptés par votre système. Quelque part doit se trouver le mot « dialout ». S'il n'existe pas, vous pouvez utiliser le nom d'un autre groupe, tel que "user"

Il ne vous reste plus qu’à ouvrir votre réseau local sur le monde extérieur pour que d’autres personnes (ou vous-même) puissent accéder à votre récepteur. Cette opération n’est possible qu’en modifiant les paramètres de redirection de port de votre routeur ADSL ou du routeur situé en aval de votre modem ADSL. Le port à ouvrir est le 8000, en TCP, lié à l’adresse ip de la machine exécutant GHPSDR3-Alex.

Il existe une multitude de façon de modifier les redirection de port sur un routeur ADSL. A titre d'exemple, celle fonctionnant sur une Freebox est documentée à l'adresse

http://www.journaldufreenaute.fr/05/03/2008/tuto-le-routeur-de-la-freebox-explications-et-configuration.html#redirections

Configuration et paramètres audio avec PulseAudio

Installer les paquets

 apt-get install pavucontrol paprefs

Puis modifier les droits d’exploitation à la console audio avec votre nom de compte

 adduser NomUser pulse
 adduser NomUser pulse-access
 adduser NomUser audio

Editer ensuite le fichier system.pa

 nano /etc/pulse/system.pa 

avec le contenu suivant (à coller en fin de fichier)

 load-module module-position-event-sounds
 load-module module-native-protocol-tcp auth-anonymous=1

relancer PulseAudio pour qu’il puisse prendre en considération ce changement

 /etc/init.d/pulseaudio restart

Editer ensuite le fichier daemon.conf

 nano /etc/pulse/daemon.conf

en activant(suppression du caractère « # » de début de ligne) les lignes suivantes


 default-sample-format = s16le
 default-sample-rate = 192000
 default-sample-channels = 2
 default-channel-map = front-left,front-right

Il est à noter que si votre carte audio est limitée à 48 kHz ou à 96 kHz, la seconde ligne devra être modifiée en conséquence (48000 ou 96000)

A ce stade, il est nécessaire de passer sur la console en mode graphique, et de modifier, via l'interface PulseAudio Préférences, (menu Système/Préférences/Préférences de Pulse Audio) les paramètres d'accès réseau et de serveur réseau (voir ci-dessous)

Configuration du serveur PulseAudio (cliquez deux fois de suite sur l'image pour l'agrandir)


Configuration du mode audio temps réel

Editer le fichier limits.conf

nano /etc/security/limits.conf

Avec le contenu suivant :

 @audio – rtprio 99
 @audio – memlock unlimited

Configuration et paramètres audio avec Jackd2

En cours de rédaction

 apt-get install jackd2 libjack-jackd2-dev portaudio19-dev

Paramètres de lancement

Le lancement de ghpsdr3-Alex s’effectue en exécutant les ordres

 softrock --iq --si570 --samplerate 192000 
 dspserver --lo 9000

chacun dans une fenêtre de terminal différente (les deux processus doivent tourner de manière indépendantes. Considérez-les de la même manière que des processus préemptifs sous Windows par exemple