Rádióamatőr körökben is egyre inkább ismertté válik az SDR (Software Defined Radio) fogalma. Az Interneten böngészve rengeteg találatot kaphatunk. Tágabb értelemben az SDR adó-vevőt is jelenthet, mégis többnyire csak rádióvevőkre értjük . Egy másik cikkemben én is írtam már egy kezdetleges, félig SDR vevőről, noha ott az SDR minősítést nem használtam, mivel a jelfeldolgozás digitálisan csak a hangkártyától kezdve történik. Most viszont újabb lehetőséget mutatok be.
Manapság egyre több USB-portba dugható DVB-T adapter kapható. A benne található vevő remek paraméterekkel bír így csak idő kérdése volt, hogy valaki SDR-rádióként kezdje használni. Az RTL-SDR projekt egy ilyen. Az ott található (Supported Hardware) táblázat alapján kiválaszthatók, hogy mely DVB-adapterek alkalmasak a projekt céljaira. Én egy Lifeview LV5TDLX típust szereztem be (USB\VID_1F4D&PID_C803&MI_01) ami szerencsémre szerepel a táblázatban. Az USB eszközök hardver azonosítója Windows-on az Eszközkezelőben az eszközön a jobb egérgombbal a tulajdonságokra kattintva, a Részletek fülön a Tulajonság nevű legördülő listából a Hardverazonosítókat választva látható.
Linux-on ennek a kiderítése jóval egyszerűbb. Terminálban csak ki kell adni az lsusb parancsot.
A VID a "Vendor ID", azaz a gyártó cég azonosító kódja, míg a PID a "Product ID", azaz a termék azonosító kódja. Ez minden USB-s eszköz esetén így van.
Az rtl-sdr ismertetésébe nem fogok bele, hiszen azt előttem már sokan, nálamnál profibban megtették.
Csak néhány cím a sok közül:
- http://wiki.ham.hu/index.php/RTL2832u
- http://wiki.ham.hu/index.php/GnuRadio
- https://pmrradio.hu/sdr-gyorstelepites-win7/
A saját tapasztalataimról szeretnék csupán beszámolni.
Szóval hazavittem a kis dobozt és kibontottam. Tudtam, hogy először a hivatalos funkcióját (TV-nézés, rádió hallgatás) akarom tesztelni. A hozzá adott gagyi kis antenna (a lakóhelyemen) nevetséges "teljesítményt" produkált. Ezért eszembe jutott, hogy van nekem egy másik antennám is, amit már más projektekhez használtam, egy széles sávú logper, ami erre az alkalmazásra is aztán remekül megfelelt.
Windows-ra, Linuxra illetve Mac OSX-re a telepítés és a kezdeti lépések mikéntjét egy remek angol nyelvű honlapon is megtaláljuk.
Használat Windows 10 esetén
Először, a vásárlást követően Windows 7-re telepítettem a gyárilag mellékelt programokat, majd elindítottam a kezelő programot és az autoscan beállította nekem a csatornákat. Megfelelően működött. Az óta sajnos a cég támogatása már megszűnt (2011-ben még volt), így a driver is a Wayback-ről tölthető talán le.
Ezután fogtam neki az SDR-rádióként történő használatnak. Erre az SDR# (ejtsd: SDRSharp) nevű remek (nyilt forráskódú) alkalmazást választottam, és nem bántam meg. A beállításához először a megfelelő Driver-t kell telepítenünk, majd pedig az SDR# alkalmazást.
A telepítés aktuális és helyes menete a szoftver honlapján található angolul! A lépések a következők:
- Letöltjük a Zadig alkalmazást
- Bedugjuk az eszközünket az egyik tetszőleges USB-portba
- A Zadig telepítőre jobb egérgombbal kattintva, rendszergazdaként futtatjuk
- Az Options / List all devices menüben ellenőrizzük, hogy jó eszköz van-e beállítva
- A legördülő listából a "Bulk in, Interface (0)" opciót választjuk. Itt néha “RTL28328U” feliratot is láthatunk, ami szintén megfelelő.
- Győződjön meg róla, hogy a WinUSB van kijelölve a cél driver-ének.
- Ha minden rendben van, kattintson a Install Driver-re (ha már van telepítve valami driver, akkor Replace Driver)!
Az SDR# nevű alkalmazást "dotnetes", ezért a futtató környezet kell hozzá, ha még nincs a gépünkön (Win 7 és XP esetén, Windows 10-ben gyárilag benne van).
Az SDR# honlapjáról letöltve az sdrsharp-x86.zip fájlt ki kell csomagolnunk, majd elindítanunk az install.bat állományt. Ez letölti a korrekt (a winusb driverek telepítéséért felelős) Zadig nevűl alkalmazást (amit az SDR# használata előtt az említett leírás alapján kell elindítanunk), az SDR# programot és az éppen legfrissebb aktuális drivereket. Ezeket aztán megtalálhatjuk az sdrsharp nevű mappában, amit a batch-fájl hozott létre ott, ahol elindítottuk.
Megjegyzés: A Zadig futtatásánál nálam csak annyi eltérés volt, hogy a bulk interface helyett DVB-T DAB TV Stick volt található. Ezt kiválasztva az SDR# program aztán megfelelően működött.
A kezelői felületen a "Play" gomb melletti legördülő listából az "RTL-SDR / USB" legyen kiválasztva! Ha ezek után a bal felső "Play" gombot megnyomjuk, elindul a rádió. Az AM adásoknál nincs automatikusan kipipálva a "Squelch" (zajzár). Pipáljuk ki és állítsunk be 63 körüli értéket úgy, hogy a sistergés éppen megszűnjön!
A program nagyon ötletes. WBFM (műsorszóró) adók esetén elvégzi a sztereó és az RDS dekódolást, így az adó nevét is kiírja.
A probléma csak annyi, hogy ha SDR-ként használjuk az eszközt, az más driver-eket igényel, mint a TV nézés. Bizonyos leírások szerint ha TV-t akarunk nézni, akkor másik USB-portba kell dugnunk a vevőt, és arra telepíteni a Windows-os drivert. Így az SDR-használatnak is lenne egy fix USB-portja, és a TV-nézésnek is egy másik (ugyanazon vevő esetén is, amit ide-oda dugogathatunk a használattól függően)! Nos, ez nekem nem működik! Ha az SDR rádiózás után TV-t akarunk nézni, akkor a Bulk Interface driver helyett fel kell telepítenünk a gyárilag (kis CD-n) kapott driver-eket! EZ nagyon macerás dolog sajnos.
A tesztjeim során kíváncsi voltam a lehetőségek határaira. A legalacsonyabb frekvencia amit az én példányomon még használni tudtam, 21MHz volt. Mivel az SDR# minden elterjedtebb modulációs módot ismer (AM, NBFM, WBFM, SSB, DSB, CW) ezért kézenfekvő volt kipróbálnom a csoda-sávot, azaz a 6 méteres (50MHz) sávot. Egyik teszt során Szombathelyen voltam és egy 2 méteres mágnestalpas antennát (3dBi) használtam. Mivel jóval a névleges frekvencia alatt használtam, ezért nem vártam tőle sokat, mégis nagyon meglepett, mikor a Kőszeg közelében lévő jeladó (baecon) tisztán vehető volt. A 2 méteres antennámmal remekül vettem az osztrák amatőröket is. WBFM-en (a célra alkalmatlan antenna miatt) monóban élvezhető volt a kereskedelmi rádiók adása is.
Ugyanígy jól vehető volt Budapest közelében is az 50,031MHz-es beacon USB-n. A leadott szöveg (morze): "HG7BVA JN97QJ 180m ASL 5W GP". A 28MHz-es (10m) sávban is jól hallottam az amatőröket (főleg az oroszokat a maguk 4kW-os QRP állomásaival... )
Szót kell itt ejtsek a RTLSDR TCP szolgáltatásról. Ez az ötletes megoldás lehetővé teszi számunkra, hogy a DVB-T vevőnk egy külön számítógépen működjön (pl. otthon), és a vett jelek hallgatása másik számítógép(ek)en (pl. vendégségben egy demonstráció során). A két gép közt az adatátvitelt a TCP/IP kapcsolat teszi lehetővé.
A maximális ferkvencia amit még be tudtam fogni az 1,2GHz volt. Rendelkezem tehát egy olcsó SDR-vevővel ami képes 21MHz-től 1200MHz-ig bármit venni. Zseniális! Anno a seregben nekünk egy komplett teherautónyi cucc tudta csak ugyanezt (ha jól emlékszem R-170 névre hallgatott).
Használat Linux alatt
Ubuntu 12.04 esetén
Az alábbiakat akkor írtam, amikor még 12.04-es Ubuntut használtam. Az óta már a 14.04 is lassan kimegy a divatból, mivel jelenleg a 16.04 még használatos! Azért hagytam meg ezt az alábbi részt, mert lehetséges, hogy valaki még a 12.04-et használja a régi hardvere miatt...
Mivel alapvetően Linux-ot használok, a következő lépés mindezt az Ubuntu 12.04-emen kipróbálni. A megvalósítás sorrendje itt is ugyanaz volt. Sajnos az eszközhöz gyárilag nem mellékeltek más szoftvereket, csak Windows-os meghajtó és a kezelő programokat.
Figyelem: Amikor e cikk íródott, az aktuális kernel verzió Ubuntu esetén a 3.2 volt! Az alábbi fordítási procedúrát erre az esetre írtam le. Azóta már a 3.8-as kernelnél tartunk, amibe a fejlesztők "gyárilag" beépítették az eszköz támogatását, így az t nem kell már telepítgetni! A régi időkre vonatkozó eljárást ezért zöld színnel írom le. Akinek nem aktuális, az nyugodtan ugorja át! Hogy aktuális-e, vagy sem abban két egyszerű próba is eligazíthat minket.
Terminálba adjuk ki az uname -a parancsot. Erre kapunk egy válaszsort, amiben szerepel a kernel verziószáma. Pl. 3.8.0-36-generic #52~precise1-Ubuntu
A másik teszt az, ha a terminálba (csatlakoztatott eszköz esetén) a lsmod | grep dvb parancsot kell kiadni. Erre valami hasonlót kell kapnunk:
dvb_usb_rtl28xxu 18809 6
dvb_usb_v2 23233 1 dvb_usb_rtl28xxu
rc_core 21294 3 dvb_usb_rtl28xxu,dvb_usb_v2
rtl2830 13511 1 dvb_usb_rtl28xxu
dvb_core 91024 3 rtl2832,dvb_usb_v2,rtl2830
De most lássuk a régi megoldást!
Tehát egymás után (soronként), egyenként a Terminálba írtam az alábbi parancsokat:
sudo apt-get install build-essential linux-headers-$(uname -r) git
git clone git://github.com/ambrosa/DVB-Realtek-RTL2832U-2.2.2-10tuner-mod_kernel-3.0.0.git
cd ~/DVB-Realtek-RTL2832U-2.2.2-10tuner-mod_kernel-3.0.0/RTL2832-2.2.2_kernel-3.0.0
# a makefile-ban INCLUDE_EXTRA_DVB szerkesztése
gedit Makefile
Ekkor bejön egy szövegszerkesztő felület ami a Makefile - fordítást vezérlő szkriptet tartalmazza. A cikk megírásakor a 3.2.0-30 verziószámú kernelem volt (egy másik Terminálba bepötyögött uname -r parancs kiírja az aktuális kernel verzióját).
Itt az elől a sor elől vegyük ki a # jelet, amelyik a mi kernelünkre vonatkozik. Nekem a INCLUDE_EXTRA_DVB := include-320 kellett ezért a fölötte pár sorral lévő #INCLUDE_EXTRA_DVB := include-300 kellett, hogy #-kal kezdődjön! Ezért írjunk be tehát oda egy #-t a sor elejére! (a # hatására a fordítás az adott sort figyelmen kívül hagyja, mert csak megjegyzésnek számít)
Mentsük el a fájlt és zárjuk be a szerkesztőt!
Folytatódhatnak a parancsok.
make clean
make
sudo make install
modprobe dvb_usb_rtl2832u
Fontos, hogy a fenti műveletsort, azaz a driver fordítását és installálását minden olyan esetben el kell végezni, amikor a kernel változik (pl. az időszakonként letöltődő frissítéskor).
Ezután következett az SDR-ré "változtatás".
Szintén Terminálba adtam ki az alábbi utasításokat (a biztonság kedvéért egyenként, de ha valaki szkriptet készít belőlük, az gyorsabb):
sudo su
apt-get update
apt-get -y install git-core mono-complete cmake libportaudio2 libusb-dev libtool autoconf libusb-1.0* subversion install libboost-all-dev python-cheetah doxygen python-docutils
exit
git clone git://git.osmocom.org/rtl-sdr.git
cd rtl-sdr/
mkdir build
cd build
cmake ../ -DINSTALL_UDEV_RULES=ON
make
sudo make install
sudo ldconfig
Ekkor az rtl-sdr driver már fel is került a gépre.
A mostanában az egyik gyakran alkalmazott Linuxos SDR megoldás a gnuradio. Gond nélkül feltelepült. Viszont amikor a terminálban kiadtam az
rtl_test -t
parancsot, az alábbit kaptam:
Found 1 device(s):
0: Lifeview LV5TDeluxe
Using device 0: Lifeview LV5TDeluxe
usb_claim_interface error -6
Failed to open rtlsdr device #0
A megoldást egy remek magyar összefoglalás végén találtam. Idézem a lényeget:
"Ha a GnuRadioval szeretnénk szoftveres demodulátort használni, akkor húzzuk ki a DVB-T vevőt a számítógépből, dugjuk vissza és sudo rmmod dvb-usb-rtl2832u parancs segítségével távolítsuk el a DVB-T TV vevő kernelmodult. Csak ezután fog helyesen futni a GnuRadio alatt összeállított rádióvevőnk, mivel a betöltött DVB-T TV vevő modul fogja a hardvert.
Amennyiben ismét TV-t szeretnénk nézni, nincs más dolgunk, mint a GnuRadio szoftver leállítása után kihúzni a DVB-T vevőt a számítógépből és visszadugni. Ekkor a TV vételhez szükséges kerneldriver automatikusan betöltődik."
A gnuradio a gnuradio-companion paranccsal indul. Ezután viszont minden hiba nélkül üzemelt.
Sokkal egyszerűbb a driver csere, mint Windows esetén. Nem?
Használat Ubuntu 14.04 és 16.04 esetén
A 14.04-be nem kell a fenti modul fordítással bajlódni. Ez a verzió - hála a fejlesztőknek - simán felismeri a DVB-T eszközt.
Ekkor elvileg már használható az eszköz az eredeti feladatára, a TV-nézésre. A DVB-T adások nézésére nekem bevált a Kaffeine nevű remek program, melyet a
sudo apt-get install kaffeine -y
parancs azonnal fel is telepíthet nekünk, ha akarjuk. Az egyetlen szépséghiba az, hogy mivel az Ubuntu Gnome ablakozó rendszert használ, ezért egy csomó plusz dolgot az installálás fel kell rakjon (automatikusan), mivel a Kaffeine KDE típusú ablakozó rendszert használ.
A másik népszerű program, amivel TV-t nézhetünk a VLC. Ez sok féle operációs rendszeren fut. Ubuntu esetén az
sudo apt-get install -y vlc dvb-apps xine-plugin libxine1-plugins libxine1-all-plugins libxine1-misc-plugins libxine1-ffmpeg
parancsot kell a terminálban kiadnunk. A DVB-T eszközök TV-nézéshez használata esetén hasznos egy channel.conf fájlt is letöltenünk, ami a TV-csatornák paramétereit tartalmazza. A csatornák közt a léptető gombbal tudunk váltani a TV nézése során.
Ezt a fájlt a már imént feltelepített dvb-apps programcsomag kérésünkre legyártja. Ehhez csak a terminálba be kell írnunk:
scan /usr/share/dvb/dvb-t/hu-Budapest > channels.conf
Ha SDR-rádióként akarjuk használni az RTL-SDR eszközünket, akkor más fajta programok közt válogathatunk. Mára már több szoftver is létezik, ami kezeli az ilyen eszközöket. Itt található egy lista, egy leírás róluk (angolul).
Én Ubuntu 14.04 alatt a GQRX-et teszteltem sikerrel.
A program telepítése (terminál ablakban):
sudo add-apt-repository -y ppa:bladerf/bladerf sudo add-apt-repository -y ppa:myriadrf/drivers sudo add-apt-repository -y ppa:myriadrf/gnuradio sudo add-apt-repository -y ppa:gqrx/gqrx-sdr sudo apt-get update
sudo apt-get install gqrx-sdr
sudo apt-get install libvolk1-bin
Ezek sikeres lefutása után adjuk ki az alábbi parancsot!
volk_profile
Ez pár perces szorgos munkával optimalizálja a szoftver beállításait a gépünk paramétereihez.
Ezek után csak ki kell adnunk a parancsot: gqrx
És már használható is a program...