пятница, 18 октября 2024 г.

Fobos SDR та SDRangel. Як хардкорно встановлювати софт в 12 Дебіані.

 

    Доброї пори доби. Тут як завжди біля мікрофону дядько Рост. Сьогодні я разом з вами вб'ю двох (а може трьох, ще не визначився) зайців. Перший заєць - то Fobos SDR. Ви разом зі мною розширите коло програм, де FobosSDR працює. Зайвим це точно не буде, а навпаки розширить наші можливості, вміння та знання. Другий - SDRangel в Debian 12. В Ubuntu мені легше та швидше вдалося мені його встановити. Третій - чи всіма цими маніпуляціями не розвалимо систему і SDR++ залишиться в робочому стані. Таки три зайці вийшло.

    Для тих, в кого розшатані нерви, щоб не тримати інтригу, скажу. Все вийшло, все працює, нічого не впало і не розвалилося. Система залишилася в повністю робочому стані.

    Як в кожної господині свій рецепт та смак борщу, так і в мене. Свій рецепт встановлення програми. Не скажу що він оптимальний та єдиноможливий, але працюючий. Тут все намішано. І досвід автора програми, і досвід хлопців з профільного чату, які допомагали мені консультаціями. Так так, саме про вас - власників нікнеймів Ukrop та Kir a/k/a Dober. Дуже вам вдячний! І трохи мого десь там зкраєчку є.

    Процес довгий та нудний, через те що повністю все збирається з вихідних файлів.  Не все є обов'язковим для встановлення. Якщо ви вже встановили собі libfobos, тоді її не потрібно знову збирати. Так само з підтримкою sdr приймачів. Якщо їх у вас немає, можна і не збирати їхні модулі. Я не збирав модулі підтримки USRP та XTRX. 

    Рецепт розрахований для встановлення необхідних модулів, плагінів, бібліотек на повністю чисту систему. В кого вже стоїть SDR++ з підтримкою Фобоса - частину з встановлення та перевірки роботи libfobos пропускаєте.

    Наприкінці буде коротко про те, як почати sdrangel користуватися на прикладі прийому FM радіостанцій. Я не знайшов розгорнутої документації користувача, тому покажу мінімум, який я знаю. В програмі багато цікавого. На це потрібен час, тому потрошки буду викладати свій досвід роботи в ній.

    Встановлюємо необхідні для початку пакети. Решта пакетів буде встановлюватися по мірі потреби.

sudo apt -y install libhamlib-dev
sudo apt -y install git
sudo apt -y install cmake
sudo apt -y install build-essential
sudo apt -y install soapysdr-tools
sudo apt -y install libsoapysdr-dev
sudo apt -y install libfftw3-dev
sudo apt -y install libglfw3-dev
sudo apt -y install libvolk2-dev
sudo apt -y install libzstd-dev
sudo apt -y install librtaudio-dev
sudo apt -y install librtlsdr-dev
sudo apt -y install libairspyhf-dev
sudo apt -y install libhackrf-dev
sudo apt -y install libiio-dev
sudo apt -y install libad9361-dev
sudo apt -y install libfec-dev

    Якщо в системі не стоїть бібліотека підтримки FobosSDR, libfobos, її потрібно зібрати. Для цього виконайте наступні команди.

cd ~
git clone https://github.com/rigexpert/libfobos.git
cd libfobos
mkdir build
cd build
cmake ..
make
sudo make install
sudo udevadm control --reload-rules
sudo udevadm trigger
sudo cp /usr/local/lib/libfobos.so /usr/lib/

    Тепер потрібно приєднати приймач до USB порту (якщо ви його ще не приєднали) та перевантажити комп'ютер. Далі перейти в каталог ~/libfobos/build

cd ~/libfobos/build

Та перевірити, як описано  минулій частині  чи коректно працює приймач з допомогою цих команд

./fobos_devinfo

./fobos_recorder

    Так як SDRangel з FobosSDR буде працювати через прокладку SoapySDR, потрібно зібрати плагін підтримки. Інакше в програмі не буде видно приймача і ви не зможете ним керувати і отримувати з нього потік даних.

cd ~
git clone https://github.com/rigexpert/SoapyFobosSDR.git
cd SoapyFobosSDR
mkdir build
cd build
cmake ..
make
sudo make install
sudo ldconfig

 

    Перевірте чи працює приймач через SoapySDR з допомогою команди. 

SoapySDRUtil --probe="driver=fobos"

     Якщо у вас так само як на цих малюнках, то мої вітання. У вас все вийшло. Ще один етап пройдено.


    Час братися за збірку SDRangel. 

    Виконайте попередньо створення та налаштування необхідних для цього каталогів.

sudo mkdir -p /opt/build
sudo chown $USER:users /opt/build
sudo mkdir -p /opt/install
sudo chown $USER:users /opt/install

Однією такою великою командою довстановіть необхідні пакети.

sudo apt-get update && sudo apt-get -y install \
git cmake g++ pkg-config autoconf automake libtool libfftw3-dev libusb-1.0-0-dev libusb-dev libhidapi-dev libopengl-dev \
qtbase5-dev qtchooser libqt5multimedia5-plugins qtmultimedia5-dev libqt5websockets5-dev \
qttools5-dev qttools5-dev-tools libqt5opengl5-dev libqt5quick5 libqt5charts5-dev \
qml-module-qtlocation  qml-module-qtpositioning qml-module-qtquick-window2 \
qml-module-qtquick-dialogs qml-module-qtquick-controls qml-module-qtquick-controls2 qml-module-qtquick-layouts \
libqt5serialport5-dev qtdeclarative5-dev qtpositioning5-dev qtlocation5-dev libqt5texttospeech5-dev \
qtwebengine5-dev qtbase5-private-dev libqt5gamepad5-dev libqt5svg5-dev \
libfaad-dev libflac-dev zlib1g-dev libboost-all-dev libasound2-dev pulseaudio libopencv-dev libxml2-dev bison flex \
ffmpeg libavcodec-dev libavformat-dev libopus-dev doxygen graphviz
 

    Зберіть з вихідних файлів всі нижчеперераховані залежності. Символ решітки вказує на назву модулю. Це коментар та орієнтир, щоб ви не загубилися в цьому морі команд. Вводяться лише команди. Поступово, акуратно, методично.

#APT

sudo apt -y install libsndfile-dev
cd /opt/build
git clone https://github.com/srcejon/aptdec.git
cd aptdec
git checkout libaptdec
git submodule update --init --recursive
mkdir build; cd build
cmake -Wno-dev -DCMAKE_INSTALL_PREFIX=/opt/install/aptdec ..
make -j $(nproc) install


#CM265cc

cd /opt/build
git clone https://github.com/f4exb/cm256cc.git
cd cm256cc
git reset --hard 6f4a51802f5f302577d6d270a9fc0cb7a1ee28ef
mkdir build; cd build
cmake -Wno-dev -DCMAKE_INSTALL_PREFIX=/opt/install/cm256cc ..
make -j $(nproc) install


#LibDAB

cd /opt/build
git clone https://github.com/srcejon/dab-cmdline
cd dab-cmdline/library
git checkout msvc
mkdir build; cd build
cmake -Wno-dev -DCMAKE_INSTALL_PREFIX=/opt/install/libdab ..
make -j $(nproc) install


#MBElib

cd /opt/build
git clone https://github.com/szechyjs/mbelib.git
cd mbelib
git reset --hard 9a04ed5c78176a9965f3d43f7aa1b1f5330e771f
mkdir build; cd build
cmake -Wno-dev -DCMAKE_INSTALL_PREFIX=/opt/install/mbelib ..
make -j $(nproc) install


#SerialDV

cd /opt/build
git clone https://github.com/f4exb/serialDV.git
cd serialDV
git reset --hard "v1.1.4"
mkdir build; cd build
cmake -Wno-dev -DCMAKE_INSTALL_PREFIX=/opt/install/serialdv ..
make -j $(nproc) install


#DSDcc

cd /opt/build
git clone https://github.com/f4exb/dsdcc.git
cd dsdcc
git reset --hard "v1.9.5"
mkdir build; cd build
cmake -Wno-dev -DCMAKE_INSTALL_PREFIX=/opt/install/dsdcc -DUSE_MBELIB=ON -DLIBMBE_INCLUDE_DIR=/opt/install/mbelib/include -DLIBMBE_LIBRARY=/opt/install/mbelib/lib/libmbe.so -DLIBSERIALDV_INCLUDE_DIR=/opt/install/serialdv/include/serialdv -DLIBSERIALDV_LIBRARY=/opt/install/serialdv/lib/libserialdv.so ..
make -j $(nproc) install


#Codec2/FreeDV

sudo apt-get -y install libspeexdsp-dev libsamplerate0-dev
cd /opt/build
git clone https://github.com/drowe67/codec2-dev.git codec2
cd codec2
git reset --hard "v1.0.3"
mkdir build_linux; cd build_linux
cmake -Wno-dev -DCMAKE_INSTALL_PREFIX=/opt/install/codec2 ..
make -j $(nproc) install


#SGP4

cd /opt/build
git clone https://github.com/dnwrnr/sgp4.git
cd sgp4
mkdir build; cd build
cmake -Wno-dev -DCMAKE_INSTALL_PREFIX=/opt/install/sgp4 ..
make -j $(nproc) install


#LibSigMF

cd /opt/build
git clone https://github.com/f4exb/libsigmf.git
cd libsigmf
git checkout "new-namespaces"
mkdir build; cd build
cmake -Wno-dev -DCMAKE_INSTALL_PREFIX=/opt/install/libsigmf ..
make -j $(nproc) install


#GGMorse

cd /opt/build
git clone https://github.com/ggerganov/ggmorse.git
cd ggmorse
mkdir build; cd build
cmake -Wno-dev -DCMAKE_INSTALL_PREFIX=/opt/install/ggmorse -DGGMORSE_BUILD_TESTS=OFF -DGGMORSE_BUILD_EXAMPLES=OFF ..
make -j $(nproc) install

 

    Зберіть та встановіть модулі підтримки для своїх sdr приймачів. Можете зібрати всі, або лише ті, що вам потрібні.


#Airspy

cd /opt/build
git clone https://github.com/airspy/airspyone_host.git libairspy
cd libairspy
git reset --hard 37c768ce9997b32e7328eb48972a7fda0a1f8554
mkdir build; cd build
cmake -Wno-dev -DCMAKE_INSTALL_PREFIX=/opt/install/libairspy ..
make -j $(nproc) install


#SDRplay RSP1

cd /opt/build
git clone https://github.com/f4exb/libmirisdr-4.git
cd libmirisdr-4
mkdir build; cd build
cmake -Wno-dev -DCMAKE_INSTALL_PREFIX=/opt/install/libmirisdr ..
make -j $(nproc) install


#RTL-SDR

cd /opt/build
git clone https://github.com/osmocom/rtl-sdr.git librtlsdr
cd librtlsdr
git reset --hard 420086af84d7eaaf98ff948cd11fea2cae71734a
mkdir build; cd build
cmake -Wno-dev -DDETACH_KERNEL_DRIVER=ON -DCMAKE_INSTALL_PREFIX=/opt/install/librtlsdr ..
make -j $(nproc) install


#Pluto SDR

cd /opt/build
git clone https://github.com/analogdevicesinc/libiio.git
cd libiio
git reset --hard v0.21
mkdir build; cd build
cmake -Wno-dev -DCMAKE_INSTALL_PREFIX=/opt/install/libiio -DINSTALL_UDEV_RULE=OFF ..
make -j $(nproc) install


#BladeRF

cd /opt/build
git clone https://github.com/Nuand/bladeRF.git
cd bladeRF/host
git reset --hard "2023.02"
mkdir build; cd build
cmake -Wno-dev -DCMAKE_INSTALL_PREFIX=/opt/install/libbladeRF -DINSTALL_UDEV_RULES=OFF ..
make -j $(nproc) install


#HackRF

cd /opt/build
git clone https://github.com/greatscottgadgets/hackrf.git
cd hackrf/host
git reset --hard "v2022.09.1"
mkdir build; cd build
cmake -Wno-dev -DCMAKE_INSTALL_PREFIX=/opt/install/libhackrf -DINSTALL_UDEV_RULES=OFF ..
make -j $(nproc) install


#LimeSDR

cd /opt/build
git clone https://github.com/myriadrf/LimeSuite.git
cd LimeSuite
git reset --hard "v20.01.0"
mkdir builddir; cd builddir
cmake -Wno-dev -DCMAKE_INSTALL_PREFIX=/opt/install/LimeSuite ..
make -j $(nproc) install


#AirspyHF

cd /opt/build
git clone https://github.com/airspy/airspyhf
cd airspyhf
git reset --hard 1af81c0ca18944b8c9897c3c98dc0a991815b686
mkdir build; cd build
cmake -Wno-dev -DCMAKE_INSTALL_PREFIX=/opt/install/libairspyhf ..
make -j $(nproc) install


#Perseus

sudo apt -y install bsdmainutils
sudo apt -y install xxd
cd /opt/build
git clone https://github.com/f4exb/libperseus-sdr.git
cd libperseus-sdr
git checkout fixes
git reset --hard afefa23e3140ac79d845acb68cf0beeb86d09028
mkdir build; cd build
cmake -Wno-dev -DCMAKE_INSTALL_PREFIX=/opt/install/libperseus ..
make -j $(nproc)
make install


    Нижченаведені модулі потрібні для роботи Фобоса, тому їх потрібно обов'язково зібрати.     

#SoapySDR

cd /opt/build
git clone https://github.com/pothosware/SoapySDR.git
cd SoapySDR
mkdir build; cd build
cmake -DCMAKE_INSTALL_PREFIX=/opt/install/SoapySDR ..
make -j $(nproc) install


#Soapy Remote

sudo apt-get -y install libavahi-client-dev
cd /opt/build
git clone https://github.com/pothosware/SoapyRemote.git
cd SoapyRemote
git reset --hard "soapy-remote-0.5.1"
mkdir build; cd build
cmake -DCMAKE_INSTALL_PREFIX=/opt/install/SoapySDR -DSOAPY_SDR_INCLUDE_DIR=/opt/install/SoapySDR/include -DSOAPY_SDR_LIBRARY=/opt/install/SoapySDR/lib/libSoapySDR.so ..
make -j $(nproc) install


    Зберіть SDRangel.

cd /opt/build
git clone https://github.com/f4exb/sdrangel.git
cd sdrangel
mkdir build; cd build
cmake -Wno-dev -DDEBUG_OUTPUT=ON -DRX_SAMPLE_24BIT=ON \
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
-DMIRISDR_DIR=/opt/install/libmirisdr \
-DAIRSPY_DIR=/opt/install/libairspy \
-DAIRSPYHF_DIR=/opt/install/libairspyhf \
-DBLADERF_DIR=/opt/install/libbladeRF \
-DHACKRF_DIR=/opt/install/libhackrf \
-DRTLSDR_DIR=/opt/install/librtlsdr \
-DLIMESUITE_DIR=/opt/install/LimeSuite \
-DIIO_DIR=/opt/install/libiio \
-DPERSEUS_DIR=/opt/install/libperseus \
-DXTRX_DIR=/opt/install/xtrx-images \
-DSOAPYSDR_DIR=/opt/install/SoapySDR \
-DUHD_DIR=/opt/install/uhd \
-DAPT_DIR=/opt/install/aptdec \
-DCM256CC_DIR=/opt/install/cm256cc \
-DDSDCC_DIR=/opt/install/dsdcc \
-DSERIALDV_DIR=/opt/install/serialdv \
-DMBE_DIR=/opt/install/mbelib \
-DCODEC2_DIR=/opt/install/codec2 \
-DSGP4_DIR=/opt/install/sgp4 \
-DLIBSIGMF_DIR=/opt/install/libsigmf \
-DDAB_DIR=/opt/install/libdab \
-DGGMORSE_DIR=/opt/install/ggmorse \
-DCMAKE_INSTALL_PREFIX=/opt/install/sdrangel ..
make -j $(nproc) install

    У SDRangel по замовчуванню не ввімкнена підтримка SoapySDR. Щоб її увімкнути потрібно ангела запускати з ключем --soapy

    Запустіть її в консолі командою

 /opt/install/sdrangel/bin/sdrangel --soapy

    Перевірте журнал запуску. Він відображається в терміналі. Прокрутіть його догори. При вдалому завантаженні плагіна в ньому мають бути відповідні строки.

 


     А тим часом на робочому столі з'явиться вікно програми.

    Перше, що потрібно зробити, це додати радіо в програму. В головному меню є кніпочка, що називається Add Rx device.

 
   
    В наступному вікні потрібно натиснути на перевернутий трикутник. 

    І у випадному списку вибрати SoapySDR [2:0] fobos: Fobos SDR. Цифри в квадратних дужках у вас можуть відрізнятися. Це не критично.


        Вікно прийме наступний вигляд. Натисніть ОК.


      З'явиться панель керування приймачем та панель відображення спектру.

    
    Коротко про кнопки.
 

  Спробуйте повзунками вибрати рівень підсилення при якому приймач здатний прийняти ФМ станції. Приклад на малюнку.

         Одразу звуку не буде тому що необхідно приєднати модулятор. Робиться це наступним чином. Я стрілкою вказав яку кнопку для цього потрібно нажати. Вона називається Add channels.


    Тут як по аналогії вибору приймача. Тиснете на перевернутий трикутник.


    Далі вибираєте WFM Demodulator.

    Він відкриється у новому вікні.

    Якщо ви вірно налаштувалися на частоту станції - почуєте в динаміках чи навушниках (в залежності що у вас підключено), що станція в даний момент передає.

    Коротенько про кнопки, що присутні на панелі модулятора.

    Програма насичена демодуляторами та різними кнопочками. Пробуйте та експериментуйте.

    До зустрічі.

    73 ! de UT2YR


Комментариев нет:

Отправить комментарий