19 septembre 2013

GNU radio pour Windows

GNU radio est à l’origine une application spécialisée dans le traitement des signaux radio. Son but est de traiter ces signaux de manière logicielle. C’est ce que les anglais appellent « Software Defined Radios : SDR ». Cette approche logicielle à l’avantage d’être plus souple et moins onéreuse que la méthode matérielle. Avec le temps GNU radio est devenu un système de traitement du signal numérique au sens large.

GNU radio inclus une interface graphique « GNU radio compagnon : GRC » qui permet d’interconnecter très facilement les blocks logiciels nécessaires aux traitements d’un signal. Si vous programmez en C++ et python vous pourrez ajouter vos propres blocks à la librairie de GNU radio.

GNU radio est une application open source écrite principalement en python sauf les parties critiques pour les performances qui sont écrites en C++ et utilisent la librairie Boost. GNU radio s’interface avec le matériel (carte son, dongle usb) et est donc en partie lié à l’OS. Son développement se fait principalement sous Linux mais il existe un portage 32 bits vers Windows.


Avant de commencer à télécharger...

* Python existe en deux grandes versions : 2.7.x et 3.x
Beaucoup de librairies ou modules utilisés par GNU radio fonctionnent avec python 3.x, mais pas tous. Par exemple PyGTK et wxPython ne fonctionnent pas avec python 3.x. On doit donc en rester (pour le moment) à python 2.7.x qui est la version de python la plus stable.

* Même remarque pour 32 bits et 64 bits. On doit en rester aux versions 32 bits, même si vous utilisez un Windows 64 bits.

* A l’exception de PyQwt qui requiert les droits d’administrateur pour s’installer dans c:\program-files\Pyqwt5, tous les autre composant s’installent dans le répertoire python qui par défaut est C:\python27 et ne requiert pas les droits admin

Si vous voulez faire simple: Installez tout en étant administrateur et installez python dans son répertoire par défaut C:\Python27. En respectant cela les installations se feront en gardant toutes les options par défaut.


INSTALLATIONS  ~ Ce qui suit a été testé sur XP 32 bits et Seven 64 bits.

Installez les 10 ou 11 logiciels qui suivent dans l'ordre indiquez ci-dessous

Pour info, voici les versions disponibles en sep/2013
soit ~170 Mo à télécharger.

1) Python ~ http://www.python.org/
Download : http://www.python.org/download/releases/
Choisir la version 2.7.x pour win32 la plus récente.
Exemple : python-2.7.5.msi

Important: Ajoutez C:\Python27 au PATH de Windows dés maintenant.


2) NumPy ~ http://www.numpy.org/
Un package python absolument fondamental pour le calcul scientifique.
Download : http://sourceforge.net/projects/numpy/files/NumPy/
Sélectionnez la version supportée par PyQwt (voir plus bas)
Prendre le superpack.
Exemple : numpy-1.7.1-win32-superpack-python2.7.exe


3) lxml ~ http://lxml.de/
API python pour les librairies libxml2 et libxslt. Les blocks manipulés par GRC sont décrit en XML.
Download : https://pypi.python.org/pypi/lxml/
Example : lxml-3.2.3.win32-py2.7.exe


4) PyOpenGL ~ http://pyopengl.sourceforge.net/
API python pour OpenGL
Download : https://pypi.python.org/pypi/PyOpenGL/
Exemple : PyOpenGL-3.0.2.win32.exe


5) Cheetah template engine ~ http://www.cheetahtemplate.org/
Generateur de code.Utiliser pour convertir en python les schémas logiques de GRC.
Download : https://pypi.python.org/pypi/Cheetah/
Exemple : Cheetah-2.4.4.tar.gz
Ceci n’est pas un exécutable. Il faut le décompresser, et exécuter la commande :
  python setup.py install
On peut ensuite supprimer le répertoire contenant Cheetah.

Si vous êtes attentif vous verrez que l’installation de Cheetat se termine par:
One or more C extensions failed to build.
Performance enhancements will not be available.
Pure Python installation succeeded.
Ceci est normal pour deux raisons:
- Conflit de noms ne se distinguant que par la case dans le même répertoire : Cheetah.h et cheetat.h.
Windows ne faisant pas la différence un seul fichier subsiste sur le disque.
- De toute façon on ne peut pas compiler sous Windows.
Mais rien de grave, on en reparlera plus bas...


6) PyQt ~ http://www.riverbankcomputing.com/software/pyqt/
API python pour utiliser le Framework Qt.
Download : http://sourceforge.net/projects/pyqt/files/PyQt4/
Sélectionner la version supportée par PyQwt (voir plus bas)
Exemple : PyQt-Py2.7-x86-gpl-4.9.6-1.exe


7) PyQwt ~ http://pyqwt.sourceforge.net/
Une extension de Qt pour le tracé de graphiques.
Il faut que les versions installées de NumPy et de PyQt soient en adéquation avec PyQwt.
Mais attention les versions requises par PyQwt sont rarement les plus récentes.
En principe on télécharge PyQwt ici : http://pyqwt.sourceforge.net/download.html
Mais actuellement (sept/2013) la version PyQwt la plus récente est ici : http://www.lfd.uci.edu/~gohlke/pythonlibs/#pyqwt
Exemple : PyQwt-5.2.1-py2.7-x32-pyqt4.9.6-numpy1.7.1.exe
Cette version 5.2.1 de PyQwt est conçue pour fonctionner avec
- Python  2.7
- Mode 32 bits
- PyQt  4.9.6  (voir #6)
- NumPy  1.7.1  (voir #2)
Attention :
- Il faut obligatoirement les droits d’administrateur car PyQwt s’installe en partie dans C:\ProgramFiles\PyQwt5
- Si vous avez installé python ailleurs que dans son répertoire par défaut, PyQwt ne le trouvera pas et s’en plaindra. Continuez l’installation puis indiquez le répertoire où  se situe votre python.


8) PyGTK  ~ http://www.pygtk.org/
API python pour utiliser la librairie graphique GTK+.
Download : http://ftp.gnome.org/pub/GNOME/binaries/win32/pygtk/
Prendre le package all-in-one
Exemple : pygtk-all-in-one-2.24.2.win32-py2.7.msi


9) wxPython ~ http://www.wxpython.org/
API python pour utiliser le framework wxWidgets (écrit en C++)
Download : http://www.wxpython.org/download.php
Ne pas prendre la version ansi, mais unicode.
Example : wxPython2.8-win32-unicode-2.8.12.1-py27.exe


10)  GNU Radio ~ http://gnuradio.org/
Logiciel de traitement de signaux numeriques
Download : http://files.ettus.com/binaries/gnuradio/
Exemple : gnuradio_3.6.4.1_Win32.exe
Il y a toujours un délais de plusieurs semaines (ou mois) entre la disponibilité d'une version sous Linux et sont portage sous Windows.


Environment
Cette variable est deja mise en place pendant l'installation de GNUradio
    GRC_BLOCKS_PATH=C:\Program Files\gnuradio\share\gnuradio\grc\blocks
Mais celle là, vous devez l’ajouter à la main:
    PYTHONPATH=C:\Program Files\gnuradio\lib\site-packages

Rappel: Avec un Windows 64bits les applications 32 bits sont dans: "Program Files (x86)"

Si jamais...
En cas de besoin (car il n’est pas rare de déjà les avoir sur sa machine) les bibliothèques de Visual C++ 2010 sont dispo chez Microsoft : http://www.microsoft.com/en-us/download/details.aspx?id=5555

Executer GNUradio companion (enfin !)
Double cliquer sur le script python
    C:\Program Files\gnuradio\bin\gnuradio-companion.py
ou
    C:\Program Files (x86)\gnuradio\bin\gnuradio-companion.py

Ecran d’accueil de GNU radio Companion
Si vous êtes attentif vous verrez dans la console le message suivant :
You don't have the C version of NameMapper installed! I'm disabling Cheetah's useStackFrames options as it is painfully slow with the Python version of NameMapper ect..
Rien de grave. C'est juste la conséquence de ce qu'on a vu pendant l’installation de Cheetah.

NB: Cette console est à surveiller pendant l’exécution GRC car c'est là que l'on trouve les détails des éventuelles erreurs.

Comprendre et apprendre
Pour comprendre comment GNU radio companion fonctionne commencez par  puis ici.
Il y a aussi ce tuto de 5 videos HD-720p.

Des exemples sont dans C:\Program Files\gnuradio\share\gnuradio\examples
Mais si vous voulez pouvoir les utiliser sans être admin, il faudra les copier ailleurs.

Si vous n'avez pas de sources réelles pour alimenter GNU radio vous pouvez trouver des fichiers ici :
http://signals.radioscanner.ru/base/
http://crawdad.cs.dartmouth.edu/


11) USRD Hardware Driver (UHD)
Driver pour les périphériques USRD (Universal Software Radio Peripheral).
Ceci ajoutera de nouveaux blocks logiciels pour communiquer avec les périphériques USRD.
Exemple : uhd_003.005.003-release_Win32.exe

Pendant l’installation sélectionnez l’option “add UHD to the system PATH for all user”, sinon vous devrez faire l’ajout de la variable UHD_PKG_DATA_PATH à la main.

Exemples de périphériques USRD : https://www.ettus.com/product/category/USRP-Bus-Series
Plus d’info sur UHD : http://ettus-apps.sourcerepo.com/redmine/ettus/projects/uhd/wiki


QRV ?...