Ohjelmistoradio-ohjelmien asentaminen debianiin

From PRK-wiki
Jump to: navigation, search

RTL-SDR

Suosin itse keenerdin haaraa, koska siinä on muun muassa parannuksia viritinpiirin ohjaukseen. Mukana on myös skannaustyökalu rtl_power.

Asennus tehdään muistaakseni näin:

sudo apt-get install git cmake build-essential libusb-1.0-0-dev
git clone https://github.com/keenerd/rtl-sdr
cd rtl-sdr
mkdir build
cd build
cmake ../ -DINSTALL_UDEV_RULES=ON -DDETACH_KERNEL_DRIVER=ON
make
sudo make install
sudo ldconfig

Linrad

Ota uusimman version tbz-tiedosto sivulta http://www.sm5bsz.com/linuxdsp/linrad.htm

Esimerkiksi versiolle 04.06:

sudo apt-get install nasm libx11-dev libasound2-dev portaudio19-dev
tar jxvf lir04-06.tbz
cd linrad-04.06/
./configure
make xlinrad64

Käyttö: mene samaan hakemistoon ja tee:

./xlinrad64

(32-bittisillä koneilla korvaa xlinrad64 xlinrad:lla)

SDRplay ja sitä varten itse käännetty gr-osmosdr ja gqrx

Ohje on suunnilleen SDRplayn oman ohjeen mukainen, mutta koko gnuradiota ei ole pakko kääntää itse.

Lataa ajuri: http://www.sdrplay.com/linuxdl.php

chmod +x SDRplay_RSP_MiricsAPI-Linux-1.95.3.run
./SDRplay_RSP_MiricsAPI-Linux-1.95.3.run

Jos olet jo asentanut gqrx:n tai gr-osmosdr:n, poista ne ensin: sudo apt-get autoremove gr-osmosdr gqrx-sdr

sudo apt-get install git cmake gnuradio-dev libboost-all-dev liblog4cpp5-dev libqt5svg5-dev qt5-default

Osoitteessa https://github.com/SDRplay/gr-osmosdr oli aiemmin bugikorjauksia gr-osmosdr:n SDRplay-tukeen, mutta se näyttää hävinneen internetistä. Voit kuitenkin lisätä korjaukset kopiomalla tästä patchin.

git clone git://git.osmocom.org/gr-osmosdr
cd gr-osmosdr
git apply -
diff --git a/lib/sdrplay/sdrplay_source_c.cc b/lib/sdrplay/sdrplay_source_c.cc
index 9a9ee40..93e4095 100644
--- a/lib/sdrplay/sdrplay_source_c.cc
+++ b/lib/sdrplay/sdrplay_source_c.cc
@@ -1,6 +1,7 @@
 /* -*- c++ -*- */
 /*
- * Copyright 2015 SDRplay Ltd <support@sdrplay.com>
+ * SDRplay interface initial code by Mirics Ltd
+ * additional code and fixes by Doug Lung
  * Copyright 2012 Dimitri Stolnikov <horiz0n@gmx.net>
  * Copyright 2012 Steve Markgraf <steve@steve-m.de>
  *
@@ -142,11 +143,17 @@ sdrplay_source_c::sdrplay_source_c (const std::string &args)
  */
 sdrplay_source_c::~sdrplay_source_c ()
 {
-   free(_dev);
-   _dev = NULL;
+   if (_dev != NULL)
+   {
+      free(_dev);
+      _dev = NULL;
+   }
    _buf_mutex.lock();
+   std::cerr << "in destructor: _running=" << _running << std::endl;
    if (_running)
    {
+      std::cerr << "mir_sdr_Uninit started" << std::endl;
+      mir_sdr_Uninit();
       _running = false;
    }
    _uninit = true;
@@ -233,11 +240,20 @@ int sdrplay_source_c::work( int noutput_items,
 
    if (_buf_offset)
    {
-      for (int i = _buf_offset; i < _dev->samplesPerPacket; i++)
+      for (int i = _buf_offset; (i < _dev->samplesPerPacket) && (i < (cnt + _buf_offset)); i++)
       {
          *out++ = gr_complex( float(_bufi[i]) * (1.0f/2048.0f), float(_bufq[i]) * (1.0f/2048.0f) );
       }
-      cnt -= (_dev->samplesPerPacket - _buf_offset);
+      if (cnt >= (_dev->samplesPerPacket - _buf_offset))
+      {
+         cnt -= (_dev->samplesPerPacket - _buf_offset);
+         _buf_offset = 0;
+      }
+      else
+      {
+         _buf_offset += cnt;
+         cnt = 0;
+      }
    }
 
    while ((cnt - _dev->samplesPerPacket) >= 0)
@@ -250,7 +266,6 @@ int sdrplay_source_c::work( int noutput_items,
       cnt -= _dev->samplesPerPacket;
    }
 
-   _buf_offset = 0;
    if (cnt)
    {
       mir_sdr_ReadPacket(_bufi.data(), _bufq.data(), &sampNum, &grChanged, &rfChanged, &fsChanged);

(paina tässä välissä ctrl+d)

mkdir build
cd build
cmake ../ -DENABLE_NONFREE=TRUE -DENABLE_AIRSPY=OFF -DENABLE_BLADERF=OFF
make
sudo make install
sudo ldconfig

(Jätin airspyn ja bladerf:n tuen pois, koska ainakin ylämontun koneella niitä kääntäessä tuli virheitä eikä huvittanut selvittää asiaa sen enempää.)

git clone http://github.com/csete/gqrx
mkdir build
cd build
cmake ..
make
sudo make install