Connexion

Forum

Système et matériels » Autres matériels et périphériques [Réglé] [baclé] SDR avec Gnuradio et produits myriadrf

Jybz Membre non connecté

Rang

Avatar

Modérateur

Inscrit le : 10/10/2018 à 10h26

Messages: 1868

Le 27/06/2019 à 13h47
Voilà, je dois utiliser le plugin "gr-limesdr" pour gnuradio.

Gnuradio permet de faire de la SDR (software define radio) (de la radio logicielle). Le principe, c'est comme du lego, avec des blocs a assembler pour faire de la radio. Et que je dis radio, je ne pense pas seulement à la FM, il est théoriquement possible de faire du wifi, bluetooth, FM, clef de voiture/garage et autre truc.
Cependant, le logiciel n'est rien sans un matériel ! (Et c'est bien là qu'est mon problème.)

J'ai pour un projet besoin de contrôler un produit de myriadrf. Myriadrf, en plus d'avoir développé du matériel, a développé une extension pour le contrôler depuis Gnuradio. Mais bien sûr, vous vous en doutez, le plugin n'est pas (encore ?) disponible sous Mageia, et mieux encore, la convention des noms étant différente, il faut connaitre quel paquet installer, car les noms diffèrent de la documentation basée sous ubuntu. :super:

Là, ça sera du "Quick and Dirty" !
Pour pourvoir compiler le plugin gr-limesdr,
il faut compiler la dépendance suivante :
limesuite
qui a besoin de compiler la dépendance suivante :
SoapySDR

Pour les compiler, vous aurez besoin d'installer :
Code BASH :
urpmi gnuradio cmake autoconf lib64boost lib64gnuradio-runtime-devel lib64gnuradio-runtime0 swig

S'il y a d'autre dépendances nécessaire, je suis désolé de ne pas les mentionner, je les ai déjà (c'est du glibc, make etc, le minimum des fonctions de compilations, il se peut que vous les avez déjà).

On récupère les sources, compile et installe de la manière la plus sale possible : (j'avais dit que ça sera dirty)
Pour SoapySDR
Code BASH :
git clone https://github.com/pothosware/SoapySDR
cd SoapySDR/
md build
cd build
cmake ..
make -j4
su
make install
exit

Pour limesuite
Code BASH :
 
git clone https://github.com/myriadrf/LimeSuite.git
cd LimeSuite
md builddir
cd builddir/
cmake ..
make -j4
su
make install
exit

Et enfin notre plugin gr-limesdr :
Code BASH :
 
git clone https://github.com/myriadrf/gr-limesdr
cd gr-limesdr/
md build
cd build/
cmake ..
make -j4
su
make install
exit


Voilou.
En démarrant gnuradio, vous devriez trouver dans votre bibliothèque de bloque, sous "limesuite", les bloques RX et TX pour utiliser votre produit de Myriadfr !

Amélioration possible :
s'instruire pour savoir faire des fichiers SPEC,
faire des paquets RPM
les installer avec URPMI à la place du très sale make install.
(ça gère les dépendances, inscrit dans la liste des programmes installé, et ça se désinstalle facilement avec urpme au lieu de garder le dossier de compilation et espérer avoir des instructions pour make uninstall !)
   
Jybz Membre non connecté

Rang

Avatar

Modérateur

Inscrit le : 10/10/2018 à 10h26

Messages: 1868

Le 08/07/2019 à 10h55
Petit suppléments :

Les fichiers installé ne trouve pas les librairies nécessaires ?
https://www.mageialinux-online.org/forum/topic-26371.php#m254972

Il suffit :
Code BASH :
 
su -
echo -e "# Path to libLimeSuite.so\n/usr/local/lib" >> /etc/ld.so.conf.d/limesuite.conf 
ldconfig
exit
 


Il n'y a pas de droit pour l'utilisateur d'utiliser le périphérique ?

Il suffit :
Code BASH :
 
su -
cd /home/user/subpath/LimeSuite/udev-rules/
chmod +x install.sh
./install.sh
exit
 


   
Jybz Membre non connecté

Rang

Avatar

Modérateur

Inscrit le : 10/10/2018 à 10h26

Messages: 1868

Le 08/07/2019 à 15h00
Nouveau "bogue", l'exécution des blocks limesdr n'est pas possible, gnuradio ne trouve pas les modules python de limesdr.

Ici on les trouves, dans le dossier /usr/local/lib64/python2.7/site-packages/limesdr :
Code BASH :
[root@localhost ~]# locate limesdr
/home/jybz/outils/gr-limesdr
[...]
/home/jybz/outils/gr-limesdr/swig/limesdr_swig.i
/usr/local/include/limesdr
/usr/local/include/limesdr/api.h
/usr/local/include/limesdr/limesdr
/usr/local/include/limesdr/sink.h
/usr/local/include/limesdr/source.h
/usr/local/include/limesdr/limesdr/swig
/usr/local/include/limesdr/limesdr/swig/limesdr_swig.i
/usr/local/include/limesdr/limesdr/swig/limesdr_swig_doc.i
/usr/local/lib64/libgnuradio-limesdr.so
/usr/local/lib64/cmake/limesdr
/usr/local/lib64/cmake/limesdr/limesdrConfig.cmake
/usr/local/lib64/python2.7/site-packages/limesdr
/usr/local/lib64/python2.7/site-packages/limesdr/__init__.py
/usr/local/lib64/python2.7/site-packages/limesdr/__init__.pyc
/usr/local/lib64/python2.7/site-packages/limesdr/__init__.pyo
/usr/local/lib64/python2.7/site-packages/limesdr/_limesdr_swig.so
/usr/local/lib64/python2.7/site-packages/limesdr/limesdr_swig.py
/usr/local/lib64/python2.7/site-packages/limesdr/limesdr_swig.pyc
/usr/local/lib64/python2.7/site-packages/limesdr/limesdr_swig.pyo
/usr/local/share/gnuradio/grc/blocks/limesdr_sink.xml
/usr/local/share/gnuradio/grc/blocks/limesdr_source.xml


mais quand gnuradio (ou simplement Python) tente d'importer le module limesdr :
Code BASH :
[jybz@localhost ~]$ python
Python 2.7.16 (default, May  4 2019, 05:42:45) 
[GCC 8.3.1 20190503] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import limesdr
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named limesdr
 

C'est le drame.

Avec python directement, il est possible de préciser le PATH où chercher les modules, ainsi, fonctionne l'import :
Code BASH :
[jybz@localhost ~]$ PYTHONPATH=/usr/local/lib64/python2.7/site-packages/ python
Python 2.7.16 (default, May  4 2019, 05:42:45) 
[GCC 8.3.1 20190503] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import limesdr
>>> 
 


La solution n'est pas optimale, mais on peut lancer sans erreur d'exécution gnuradio en ligne de commande en modifiant ce PYTHONPATH :
Code BASH :
PYTHONPATH=/usr/local/lib64/python2.7/site-packages/ gnuradio-companion


Possibilité de modification du PYTHONPATH pour tout le système :
https://superuser.com/questions/247620/how-to-globally-modify-the-default-pythonpath-sys-path

On me suggère aussi de modifier les règles lors de la compilation avec make. À voir...
   
Jybz Membre non connecté

Rang

Avatar

Modérateur

Inscrit le : 10/10/2018 à 10h26

Messages: 1868

Le 08/07/2019 à 17h09
Pour profiter de limesuite-gui, il faut avoir installer lib64wxgtku3.0-devel avant la commande cmake ../ de limesuite.
   
Jybz Membre non connecté

Rang

Avatar

Modérateur

Inscrit le : 10/10/2018 à 10h26

Messages: 1868

Le 08/07/2019 à 17h18
Voici la liste des fonctionnalités qui restent désactivées :
-- ######################################################
-- ## LimeSuite disabled features
-- ######################################################
--
* ConnectionEVB7COM, EVB+COM Connection support
* ConnectionSTREAM_UNITE, STREAM+UNITE Connection support
* ConnectionRemote, Remote Connection support for testing
* ConnectionSPI, Rasp Pi 3 SPI Connection support
* LimeSuiteDocAPI, LMS API Doxygen documentation
* LimeSuiteOctave, LimeSuite Octave integration

Je ne sais pas les activer.
   
funix Membre non connecté

Rang

Avatar

Inscrit le : 17/12/2012 à 21h03

Messages: 531

Le 08/07/2019 à 22h33
justement tape un cmake .. -LH tu verras les options qu'il faut activer pour avoir ces fonctionnalités, elles peuvent nécessiter l'installation de biblio supplémentaires, tu t'en rendras compte assez rapidement.


FUNIX - http://www.funix.org
Mettez un pingouin dans votre PC
Blog - http://olivier.hoarau.org
Site web    
Jybz Membre non connecté

Rang

Avatar

Modérateur

Inscrit le : 10/10/2018 à 10h26

Messages: 1868

Le 09/07/2019 à 08h38
C'est génial !

Code BASH :
// Install path prefix, prepended onto install directories.
CMAKE_INSTALL_PREFIX:PATH=/usr/local
 

Code BASH :
// Installation root for lime::getLimeSuiteRoot()
LIME_SUITE_ROOT:PATH=/usr/local


Code BASH :
// Enable LMS API Doxygen documentation
ENABLE_API_DOXYGEN:BOOL=OFF
 


Code BASH :
// Enable EVB+COM
ENABLE_EVB7COM:BOOL=OFF


Code BASH :
// Enable Remote connection
ENABLE_REMOTE:BOOL=OFF


Code BASH :
// Enable utility programs
ENABLE_UTILITIES:BOOL=OFF


Pour raspberry :
Code BASH :
// Enable SPI connection
ENABLE_SPI:BOOL=OFF


Merci encore.
   
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie