[baclé] SDR avec Gnuradio et produits myriadrf [Réglé]
Jybz Membre non connecté
-
- Voir le profil du membre Jybz
- Inscrit le : 10/10/2018
- Groupes :
-
Administrateur
-
Forgeron
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.

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 swigS'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 !)
Téléverser une image : /wiki/hebergement-de-fichiers-sur-mlo
| Arch | Machine | OS |
| x86_64 | lenovo x250 | mga9 |
| armv7hl | bananapro | mga9 |
| aarch64 | Raspberry Pi 4B | mga9 |
Jybz Membre non connecté
-
- Voir le profil du membre Jybz
- Inscrit le : 10/10/2018
- Groupes :
-
Administrateur
-
Forgeron
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
Téléverser une image : /wiki/hebergement-de-fichiers-sur-mlo
| Arch | Machine | OS |
| x86_64 | lenovo x250 | mga9 |
| armv7hl | bananapro | mga9 |
| aarch64 | Raspberry Pi 4B | mga9 |
Jybz Membre non connecté
-
- Voir le profil du membre Jybz
- Inscrit le : 10/10/2018
- Groupes :
-
Administrateur
-
Forgeron
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...
Téléverser une image : /wiki/hebergement-de-fichiers-sur-mlo
| Arch | Machine | OS |
| x86_64 | lenovo x250 | mga9 |
| armv7hl | bananapro | mga9 |
| aarch64 | Raspberry Pi 4B | mga9 |
Jybz Membre non connecté
-
- Voir le profil du membre Jybz
- Inscrit le : 10/10/2018
- Groupes :
-
Administrateur
-
Forgeron
Téléverser une image : /wiki/hebergement-de-fichiers-sur-mlo
| Arch | Machine | OS |
| x86_64 | lenovo x250 | mga9 |
| armv7hl | bananapro | mga9 |
| aarch64 | Raspberry Pi 4B | mga9 |
Jybz Membre non connecté
-
- Voir le profil du membre Jybz
- Inscrit le : 10/10/2018
- Groupes :
-
Administrateur
-
Forgeron
-- ######################################################
-- ## 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.
Téléverser une image : /wiki/hebergement-de-fichiers-sur-mlo
| Arch | Machine | OS |
| x86_64 | lenovo x250 | mga9 |
| armv7hl | bananapro | mga9 |
| aarch64 | Raspberry Pi 4B | mga9 |
funix Membre non connecté
-
- Voir le profil du membre funix
- Inscrit le : 17/12/2012
- Site internet
- Groupes :
Jybz Membre non connecté
-
- Voir le profil du membre Jybz
- Inscrit le : 10/10/2018
- Groupes :
-
Administrateur
-
Forgeron
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.
Téléverser une image : /wiki/hebergement-de-fichiers-sur-mlo
| Arch | Machine | OS |
| x86_64 | lenovo x250 | mga9 |
| armv7hl | bananapro | mga9 |
| aarch64 | Raspberry Pi 4B | mga9 |
Jybz Membre non connecté
-
- Voir le profil du membre Jybz
- Inscrit le : 10/10/2018
- Groupes :
-
Administrateur
-
Forgeron
Pour sauvegarder le travail effectué, on passe d'un truc baclé à un truc un peu plus propre : des paquets RPM !
Comme je ne suis pas empaqueteur chez Mga, je ne fais que partager les specs ici.
La partie dépendance est incomplète (c'est d'ailleurs pourquoi je ne suis toujours pas empaqueteur :p) et risque de planter en demandant de la remplir.
Code TEXT :
# Run tests in check section
%bcond_without check
%global gitsystem github.com
%global gitowners pothosware
%global gitreposi SoapySDR
# https://github.com/pothosware/SoapySDR
Version: 0.7.2
%define major 0.7
%define name %{gitreposi}
%define libname %mklibname %{name} %{major}
%define develname %mklibname %{name} -d
%global common_description %{expand:
vendor and platform neutral SDR support library.}
Name: soapy-sdr
Release: %mkrel 1
Summary: vendor and platform neutral SDR support library
# For a full list of valid (and invalid) licenses, see /usr/share/rpmlint/TagsCheck.py
License: Boost Software License
# For other groups, see /usr/share/rpmlint/config.d/distribution.exceptions.conf
Group: Development/Other
# For menu, see /usr/share/rpmlint/MenuCheck.py
URL: https://%{gitsystem}/%{gitowners}/%{gitreposi}
Source0: https://%{gitsystem}/%{gitowners}/%{gitreposi}/archive/%{name}-%{version}.tar.gz
%description
%{common_description}
%package -n %{libname}
Summary: %{summary}
Group: System/Libraries
# BuildArch: noarch
%description -n %{libname}
%{common_description}
This package contains the library needed to run programs dynamically linked
with %{name}.
%package -n python3-%{name}
Summary: %{summary}
Group: System/Libraries
# BuildArch: noarch
%description -n python3-%{name}
%{common_description}
This package contains the library needed to run %{name} with python3.
%package -n %{develname}
Summary: %{summary}
%description -n %{develname}
%{common_description}
This package contains the source code needed for building packages that include
%{name}.
%prep
%setup -q -n %{gitreposi}-%{name}-%{version}
%build
#disable python2
%cmake -DENABLE_PYTHON=OFF
%make_build
%install
%make_install -C ./build
# For files, be the more explicit
%files
%{_bindir}/SoapySDRUtil
%{_mandir}/man1/*.1*
%files -n %{develname}
%{_includedir}/SoapySDR/*
%{_datadir}/cmake/SoapySDR/*
%{_libdir}/libSoapySDR.so
%{_libdir}/pkgconfig/SoapySDR.pc
%files -n %{libname}
%license LICENSE_1_0.txt
%doc Changelog.txt README.md
%{_libdir}/libSoapySDR.so.%{major}
%{_libdir}/libSoapySDR.so.%{major}.*
%files -n python3-%{name}
%{python3_sitearch}/*SoapySDR*
%{python3_sitearch}/__pycache__/*SoapySDR*
Code TEXT :
# Run tests in check section
%bcond_without check
%bcond_without octave_plugin
%bcond_without soapysdr_plugin
%bcond_without limesuite_examples
%global gitsystem github.com
%global gitowners myriadrf
%global gitreposi LimeSuite
# https://github.com/myriadrf/LimeSuite
Version: 20.07.2
%define major 20.07
%define name %{gitreposi}
%define libname %mklibname %{name} %{major}
%define develname %mklibname %{name} -d
%global common_description %{expand:
Lime Suite is a collection of software supporting several hardware platforms
based on the LMS7002M transceiver RFIC, such as LimeSDR family. It contains the
following components:
- LimeSuite library that provides C-style API;
- LimeSuiteGUI application for accessing low-level chip and board settings,
displaying FFT, updating firmware and more;
- SoapyLMS plugin for LimeSDR support in SoapySDR;
- LimeUtil command line tool for listing LimeSDR devices and updating firmware;
- LimeQuickTest application to run some basic tests;
- LimeSuite API examples (basicRX, basicTX, singleRX, dualRXTX, gpio_example);
- Octave plugin (provides some basic functionality only);
}
Name: %{name}
Release: %mkrel 1
Summary: Driver and GUI for LMS7002M-based SDR platforms
# For a full list of valid (and invalid) licenses, see /usr/share/rpmlint/TagsCheck.py
License: ASL-v2
# For other groups, see /usr/share/rpmlint/config.d/distribution.exceptions.conf
Group: Development/Other
# For menu, see /usr/share/rpmlint/MenuCheck.py
URL: https://%{gitsystem}/%{gitowners}/%{gitreposi}
Source0: https://%{gitsystem}/%{gitowners}/%{gitreposi}/archive/v%{version}.tar.gz#/%{name}-%{version}.tar.gz
BuildRequires: pkgconfig(libusb-1.0)
%if %{with soapysdr_plugin}
BuildRequires: pkgconfig(SoapySDR)
# BuildRequires: lib64SoapySDR
%endif
%if %{with octave_plugin}
#octave
%endif
#Doxygen
#wxWidgets
%description
%{common_description}
%package -n %{libname}
Summary: %{summary}
Group: System/Libraries
# BuildArch: noarch
%description -n %{libname}
%{common_description}
This package contains the library needed to run programs dynamically linked
with %{name}.
%package -n %{develname}
Summary: %{summary}
BuildArch: noarch
%description -n %{develname}
%{common_description}
This package contains the source code needed for building packages that include
%{name}.
%if %{with octave_plugin}
%package -n octave-plugin-%{name}
Summary: %{summary}
# BuildArch: noarch
%description -n octave-plugin-%{name}
%{common_description}
This package contains files to integrate %{name} to octave.
%endif
%if %{with soapysdr_plugin}
%package -n soapysdr-plugin-%{name}
Summary: %{summary}
# BuildArch: noarch
%description -n soapysdr-plugin-%{name}
%{common_description}
This package contains files to bind %{name} with soapysdr.
%endif
%if %{with limesuite_examples}
%package -n %{name}-examples
Summary: %{summary}
# BuildArch: noarch
%description -n %{name}-examples
%{common_description}
This package contains examples binaries for %{name}.
%endif
%prep
%setup -q
%build
# c /home/jybz/rpmbuild/BUILD/LimeSuite-20.07.2/src/ConnectionSPI/ConnectionSPI.cpp
# /home/jybz/rpmbuild/BUILD/LimeSuite-20.07.2/src/ConnectionSPI/ConnectionSPI.cpp:12:10: fatal error: wiringPi.h: No such file or directory
# #include <wiringPi.h>
# ^~~~~~~~~~~~
# compilation terminated.
# -DENABLE_SPI=ON
# -DENABLE_SOAPY_LMS7=ON
# -DENABLE_EVB7COM=ON
# -DENABLE_API_DOXYGEN=ON -DENABLE_UTILITIES=ON
%if %{with octave_plugin}
BOPTION="-DENABLE_OCTAVE=ON ${BOPTION}"
%else
BOPTION="-DENABLE_OCTAVE=OFF ${BOPTION}"
%endif
%if %{with soapysdr_plugin}
BOPTION="-DENABLE_SOAPY_LMS7=ON ${BOPTION}"
%else
BOPTION="-DENABLE_SOAPY_LMS7=OFF ${BOPTION}"
%endif
%if %{with limesuite_examples}
BOPTION="-DENABLE_EXAMPLES=ON ${BOPTION}"
%else
BOPTION="-DENABLE_EXAMPLES=OFF ${BOPTION}"
%endif
%cmake -DENABLE_EVB7COM=ON -DENABLE_API_DOXYGEN=ON -DENABLE_UTILITIES=ON ${BOPTION}
%make_build
%install
%make_install -C ./build
%if %{with limesuite_examples}
install ./build/bin/basicRX %{buildroot}%{_bindir}
install ./build/bin/basicTX %{buildroot}%{_bindir}
install ./build/bin/dualRXTX %{buildroot}%{_bindir}
install ./build/bin/gpio_example %{buildroot}%{_bindir}
# install ./build/bin/limeRFE_ADC_example %{buildroot}%{_bindir}
# install ./build/bin/limeRFE_I2C_example %{buildroot}%{_bindir}
# install ./build/bin/limeRFE_USB_example %{buildroot}%{_bindir}
install ./build/bin/pll_sweep %{buildroot}%{_bindir}
install ./build/bin/singleRX %{buildroot}%{_bindir}
%endif
install -d %{buildroot}%{_udevrulesdir}
install ./udev-rules/64-limesuite.rules %{buildroot}%{_udevrulesdir}
%post
# Scriptlet that is executed just after the package is installed on the target system.
udevadm control --reload-rules
udevadm trigger
# For files, be the more explicit
%files
%{_bindir}/LimeQuickTest
%{_bindir}/LimeSuiteGUI
%{_bindir}/LimeUtil
%{_datadir}/Lime/Desktop/lime-suite-128.png
%{_datadir}/Lime/Desktop/lime-suite-16.png
%{_datadir}/Lime/Desktop/lime-suite-22.png
%{_datadir}/Lime/Desktop/lime-suite-32.png
%{_datadir}/Lime/Desktop/lime-suite-48.png
%{_datadir}/Lime/Desktop/lime-suite-64.png
%{_datadir}/Lime/Desktop/lime-suite.desktop
%files -n %{develname}
%{_includedir}/lime/*
%{_libdir}/libLimeSuite.so
%{_libdir}/pkgconfig/LimeSuite.pc
%{_libdir}/cmake/LimeSuite/*
%files -n %{libname}
%license COPYING
%doc Changelog.txt README.md
%{_libdir}/libLimeSuite.so.%{major}-1
%{_libdir}/libLimeSuite.so.%{major}.*
%{_udevrulesdir}/*
%if %{with octave_plugin}
%files -n octave-plugin-%{name}
%{_libdir}/octave/5.1.0/site/oct/x86_64-mageia-linux-gnu/LimeSuite.oct
%{_datadir}/octave/5.1.0/site/m/LoadLimeSuite.m
%endif
%if %{with soapysdr_plugin}
%files -n soapysdr-plugin-%{name}
%{_libdir}/SoapySDR/modules0.7/libLMS7Support.so
%endif
%if %{with limesuite_examples}
%files -n %{name}-examples
%{_bindir}/basicRX
%{_bindir}/basicTX
%{_bindir}/dualRXTX
%{_bindir}/gpio_example
# %{_bindir}/limeRFE_ADC_example
# %{_bindir}/limeRFE_I2C_example
# %{_bindir}/limeRFE_USB_example
%{_bindir}/pll_sweep
%{_bindir}/singleRX
%endif
Code TEXT :
# Run tests in check section
%bcond_without check
%bcond_without limesdr_examples
%global gitsystem github.com
%global gitowners myriadrf
%global gitreposi gr-limesdr
# https://github.com/myriadrf/gr-limesdr
Version: 2.0.0
#define major 20.07
%define name %{gitreposi}
#define libname %mklibname %{name} %{major}
%define libname %mklibname %{name}
%define develname %mklibname %{name} -d
%global common_description %{expand:
Package includes GNU Radio blocks for various LimeSDR boards.
}
Name: %{name}
Release: %mkrel 1
Summary: gr-limesdr Plugin for GNURadio
# For a full list of valid (and invalid) licenses, see /usr/share/rpmlint/TagsCheck.py
License: GPLv3
# For other groups, see /usr/share/rpmlint/config.d/distribution.exceptions.conf
Group: Development/Other
# For menu, see /usr/share/rpmlint/MenuCheck.py
URL: https://%{gitsystem}/%{gitowners}/%{gitreposi}
Source0: https://%{gitsystem}/%{gitowners}/%{gitreposi}/archive/v%{version}.tar.gz#/%{name}-%{version}.tar.gz
BuildRequires: lib64gnuradio-analog-devel
BuildRequires: lib64gnuradio-digital-devel
%description
%{common_description}
%package -n %{libname}
Summary: %{summary}
Group: System/Libraries
# BuildArch: noarch
%description -n %{libname}
%{common_description}
This package contains the library needed to run programs dynamically linked
with %{name}.
%package -n %{develname}
Summary: %{summary}
BuildArch: noarch
%description -n %{develname}
%{common_description}
This package contains the source code needed for building packages that include
%{name}.
%package -n python2-%{name}
Summary: %{summary}
Group: System/Libraries
# BuildArch: noarch
%description -n python2-%{name}
%{common_description}
This package contains the python2 files for %{name}.
%if %{with limesdr_examples}
%package -n %{name}-examples
Summary: %{summary}
Group: System/Libraries
# BuildArch: noarch
%description -n %{name}-examples
%{common_description}
This package contains examples for %{name}.
%endif
%prep
%setup -q
#-n %{gitreposi}-%{name}-%{version}
%build
%cmake
%make_build
%install
%make_install -C ./build
%if %{with limesdr_examples}
install -d %{buildroot}%{_datadir}/doc/gr-limesdr/examples
install ./examples/DVB_T_2k_64QAM_TX.grc %{buildroot}%{_datadir}/doc/gr-limesdr/examples
install ./examples/FM_RDS.grc %{buildroot}%{_datadir}/doc/gr-limesdr/examples
install ./examples/FM_receiver.grc %{buildroot}%{_datadir}/doc/gr-limesdr/examples
install ./examples/FM_transmitter.grc %{buildroot}%{_datadir}/doc/gr-limesdr/examples
install ./examples/GFSK.grc %{buildroot}%{_datadir}/doc/gr-limesdr/examples
install ./examples/guitar.wav %{buildroot}%{_datadir}/doc/gr-limesdr/examples
install ./examples/piano.wav %{buildroot}%{_datadir}/doc/gr-limesdr/examples
install ./examples/signal_analyzer.grc %{buildroot}%{_datadir}/doc/gr-limesdr/examples
install ./examples/signal_generator.grc %{buildroot}%{_datadir}/doc/gr-limesdr/examples
%endif
# For files, be the more explicit
%files
%{_datadir}/gnuradio/grc/blocks/limesdr_source.xml
%{_datadir}/gnuradio/grc/blocks/limesdr_sink.xml
%{_datadir}/doc/gr-limesdr/xml/*
%{_datadir}/doc/gr-limesdr/html/*
%if %{with limesdr_examples}
%files -n %{name}-examples
%{_datadir}/doc/gr-limesdr/examples/*
%endif
%files -n %{develname}
# %{_includedir}/limesdr/limesdr/swig/*
%{_includedir}/limesdr/*
%{_libdir}/cmake/limesdr/*
%files -n %{libname}
%license LICENSE
%doc README.md
%{_libdir}/libgnuradio-limesdr.so
%files -n python2-%{name}
%{python2_sitearch}/limesdr/*
Téléverser une image : /wiki/hebergement-de-fichiers-sur-mlo
| Arch | Machine | OS |
| x86_64 | lenovo x250 | mga9 |
| armv7hl | bananapro | mga9 |
| aarch64 | Raspberry Pi 4B | mga9 |
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie