RSP2 és a Websdr.org összekapcsolása

Gyakran használom a világszerte elérhető WebSDR.org szervereket. Ezek olyan weblapok, melyek SDR rádióvevőkhöz vannak kapcsolva és a látogatók az így kapott virtuális rádiójukat az adott sávokon belül hangolgathatják és hallgathatják a rádiók által vett forgalmazásokat. Egy időben többen is, egymástól függetlenül!
Bevallom, én gyakran használom arra, hogy egy áhított DX-állomás közelében meghallgassam az adásomat, hogy egyáltalán van-e remény az összeköttetésre. De remek lehetőség kezdő rádióamatőröknek élőben hallgatni vele a forgalmazást...
Eljött az ideje, hogy én is összeállítsak magamnak egy web-es sdr-vevőt. Hosszas kínlódás és gyakran hiábavalónak tűnő Google-zás után végre sikerült a célomat elérnem. Az alábbiakban írom le, hogyan.

Több féle web-es sdr-rádió szolgáltatást ellátó szoftver található az interneten. Vannak újak, és feltörekvők és vannak régebbi ismertebbek.
Kedvenc Rádióklubom hozzájutott egy SDRPlay gyártmányú RSP2 típusú SDR vevőhöz. Mivel nálam van kipróbálásra, ezért arra gondoltam, hogy a Klub rendszeres aktivitásait hallhatóvá teszem azok számára is, akik amúgy nem hallhatnának minket, pedig szeretnének. A másik hasznos funkciója a rádiók és elkészült antennák tesztelése lenne. Bárki meghallgathatná saját magát (pár másodperces késéssel, az Internetes adatátvitel késleltetése miatt).
Megvolt tehát a rádió és kellett hozzá a szoftver. A Websdr.org szoftvere mellett döntöttem, mely ingyenesen használható, de nem tölthető le ingyenesen az Internetről. Aki használni szeretné, annak írnia kell angolul, vagy hollandul a szoftver készítőjének, és ő pár napon belül (ha indokaink meggyőzőek) elküldi a szoftvert. Mindenki kérje el magának Tőle, és ne másolgassuk egymásnak! Ennyit igazán megérdemel ez az önzetlen rádióamatőr...


A levélnek feltétlenül tartalmaznia kell az alábbiakat:


- A kiszolgáló számítógép főbb paramétereit
- A LAN és WAN sebességeket
- Az operációs rendszert ellenőrzésként (ami csak Linux lehet, mert csak azon fut a program! Ubuntu javasolt)
- A QRA lokátort
- A rádió paramétereit, típusát, az antennát
-A használni kívánt frekvenciasávot (pl. 40m és 80m, ehhez két rádió kell)
-És egy meggyőző érvelést, hogy miért indokolt a szolgáltatásunk. Pl, mert a közelünkben nincs a kívánt sávon dolgozó ilyen Web-es SDR-rádió

A levelet igyekezzünk az angol udvariassági szabályoknak megfelelően fogalmazni!

A program igazán nem nagy, 1,7MByte! A program készítőjének válaszlevelében kapunk egy hosszú kódot és instrukciókat a letöltéshez a http://websdr.org/download/ oldalról.

Megvolt tehát a szoftver. És az általam felhasznált számítógép egy pici Gigabyte Brix Ultra GB-BACE-3160 u.n. Barebone kivitelű számítógép. Amellett, hogy eléggé gyors, csupán 6 wattot fogyaszt! Ez ideális ahhoz, hogy éjjel-nappal üzemeljen, ahogyan azt egy jó kis szervernek illik.

Az operációs rendszere Ubuntu 16.04 LTS 64 bits. Frissebbet nem ajánlok, az itt nem részletezett számos ok miatt.

Két fajta SDR-rádióval történő kommunikációt ismer a websdr program. Az egyiknél a rádió sztereó hangkimenetét kell a számítógép hangkártyájába dugni (és így kapja a program a feldolgozandó I/Q jelfolyamot, amiből a hangot előállítja) A másik esetben egy kis rsp_tcp szerver-program éri el hardveresen, USB-porton a rádiót (pl. az RSP2-t, vagy az RTL-SDR kompatibilis kis USB-s DVB bigyónkat) és TCP/IP adatfolyamot hoz létre. Ezt a kis szervert éri el a websdr programocska és így, ebből állítja elő a hangot, amit a weblapon át juttat el majd a látogatók számítógépeinek hangkártyájához. A program működtetéséhez nem kell webszervert telepítenünk. Az is benne van ebben a kis remek programban.

Nos, bontsuk ki a korábban letöltött websdr.zip tartalmát gondosan egy olyan könyvtárba, ahonnan majd a programot (megfelelő beállítás után) futtathatjuk!
A program telepítése során régebbi verziójú libcrypto és libpng programkönyvtárakat fog keresni a websdr, ezért ezeket rögtön töltsük is le innen és másoljuk abba a könyvtárba mindkettőt, ahol a websdr64 nevű fájl is van (a dist11 könyvtárba). Itt említek meg egy jó hírt. Raspberry PI-vel is működtethető a websdr kiszolgálónk. Ahhoz is letölthető innen a szükséges fájl.

Ezzel tehát majdnem készen vagyunk a websdr oldalon. Ezt a programot nem kell lefordítani, macerásan telepíteni. Hanem csak a kapott három program számunkra megfelelő egyikét el kell indítanunk (lásd a cikk vége felé). De előtte majd meg kell szerkesztenünk a szintén ugyanott található websdr.cfg szöveges fájlt. De erről majd később!

Be kell még állítanunk az rsp_tcp kiszolgálónkat. RSP2 rádió esetén ezt megelőzően telepítenünk kell a legfrisseb  API/HW Driver – v3.06 (25th Nov 2019) meghajtóprogramot arra a gépre, amihez a rádió csatlakoztatva lesz. No igen. Azt még nem említettem, hogy lehet külön gépen a rádió, és egy másikon pedig a websdr Internetes kiszolgáló (szerver) program. Ez több okból is nagyon hasznos. Például több, különböző QTH-n lévő rádiót is csatlakoztathatunk párhuzamosan a szerverünkhöz, hálózaton. Aztán az is egy fontos körülmény, hogy az SDR-vevőnk lehet egy távoli, zajmentes helyen is, ahol például nem forgalmaznak a szomszéd szobában, az SDR-vevőnkkel azonos sávon... Ugyanis adáskor megsüketül az SDR-vevő és ez a weblapon is látszik és hallani is lehet. Jó ötlet valahol egy kis Raspberry PI-re tenni a rádiót az rsp_tcp szerverrel és az interneten keresztül csatlakoztatni a tőle kellően (több kilóméterre legalább) távoli websdr szerverünkhöz. Ekkor legalább a saját adásunkat is monitorozhatjuk. És az SDR-rádió adatainak feldolgozása és a web-re kiküldése nem ugyanazt a számítógépet terheli.

Az rsp_tcp telepítéséhez töltsük le a programot innen és bontsuk ki egy tetszőleges mappába! Majd a Ctrl + Alt +T gombok együttes lenyomásával hívjunk be egy parancssori ablakot. Majd gépeljük be az alábbiakat:

mkdir build
cd build
cmake ..
make
sudo make install

Ezek után már fel van telepítve a kis rsp_tcp szerverünk. Már csak el kell indítanunk a megfelelő paraméterekkel az alábbi módon, szintén parancssorból:

sudo su

rsp_tcp -a 127.0.0.1 -p 5909 -r 4 &

Ez csakis akkor megfelelő, ha a két szerver-program (rsp_tcp és a websdr) ugyanazon a gépen fut! Ha különböző gépeken, akkor a 127.0.0.1 helyére a saját (ifconfig paranccsal kiderített) IP-címet kell beírni (pl. 192.168.0.3). A -p után adtuk meg a portot (majdnem tetszőleges lehet (4000...65534), amin keresztül a külvilág (websdr szerver) eléri az rsp_tcp kiszolgálón át az SDR-rádiónk jeleit. A -r 4 a gain (0...59-ig lehet, alapértelmezésben 34). A legelső indítás előtt engedélyeznünk kell az 5909 portot, mert hiába telepítettük fel jól és indítottuk el megfelelő paraméterekkel a szolgáltatásunkat, ha a tűzfalunk minden kívülről jövő kérést elutasít... A kiadandó parancsok:

sudo ufw allow 5909 tcp
sudo ufw enable #(ha még nincs engedélyezve a tűzfal)

A tűzfalon a 127.0.0.1-et nem szabad engedélyezni! Abban az esetben van csak a tűzfalakkal teendőnk, ha két külön gépen vannak a programok!

Ha az Interneten keresztül akarjuk elérni a szolgáltatásunkat, akkor még a routeren is a portforwarding-ot be kell állítanunk. Külső cím legyen 0.0.0.0, a belső az, amit a -a után megadtunk (pl. 192.168.0.3) és a portok mindenhol 5909 (vagy amit beállítottunk). Ha a két gép lokális hálózatban van egymással, ezt a lépést nem kell megtennünk!

Az rsp_tcp összes paraméterének leírását megtalálhatjuk angolul itt is.

Ezzel a rádiónk már szolgáltatja a szükséges adatfolyamot. Most jön a websdr beállítása.
Ehhez nyissuk meg a kedvenc szövegszerkesztőnkkel a korábban emlegetett websdr.cfg-t!
Itt angolul olvashatjuk is a magyarázatokat.
maxuser - az egy időben maximálisan csatlakozó "vendégek" száma. Ennyien használhatják egy időben a rádiónkat. Ez az internet kapcsolatunk sebességétől függ. Mérjük meg pl. a www.speedtest.net honlapon és az upload-ot osszuk el 100kbit/sec-kel. Ennyit bír ki, de akkor egyébre már nem jutna kapacitás, ezért vegyük csak a 3/4-ét! Pl. ha 5Mbit/sec a feltöltési sebesség, akkor az 5000-et osszuk el 100-zal, ami 50. És ezt szorozzuk meg 0,75-tel! 37 az eredmény, ennyit beírhatunk.

tcpport - az a port, amin a látogatók elérik a websdr honlapunkat. Sokan a 8901-et állítják be. Itt szólok! Ne felejtsük el ezt a portot is beállítani a websdr-t futtató gépen! A parancs:

sudo ufw allow 8901 tcp

És persze mindjárt állítsuk be a routeren ezt is a portforwarding-nál!

Tegyük meg most!

Aztán állítgassuk be tovább a fájlt!

hostname - ha rendelkezünk domain-névvel, akkor írjuk be (http:// nélkül!). Ha nincs domain nevünk, hagyjuk üresen. A websdr.org honlap az IP-címünket fogja kiírni.

org qth - a QRA lokátorunkat írjuk ide (pl. JN97LM) ahol a rádióvevő üzemel.

org description - ide a bemutatkozó szöveget írjuk lehetőleg angol nyelven!

Ha a www.websdr.org honlapon a bemutatkozó szövegünk mellé logót is szeretnénk, azt 48x48 pixeles gif-ként tegyük a pub mappába és ide pedig írjuk be a fájl nevét!

org email - ide az e-mail címünket írjuk. Ezt senki nem fogja látni, hanem a rendszer a frissítésekkel kapcsolatos üzeneteket erre a címre küldi majd...

band - ide azt a sávot írjuk, ahol majd a rádiónk működik (pl. 80m)

device !rtlsdr 127.0.0.1:5909 0

Itt már látjuk is a logikát. Azt az IP-címet és portot kell megadnunk, ahol az rsp_tcp szerverünk a rádióval fut. A sor végi nulla a szolgáltatás sorszáma. Több szerver is futhat ugyanazon a címen és porton.

samplerate - az a sávszélesség, amit a weblapon a vízesés majd kijelez. Nem csak ez képes állítani ténylegesen a rádiónk mintavételezését. Az az rsp_tcp indításakor megadható -s paraméterrel is be lehet állítani. Ha ott beállítjuk, itt nem veszi majd figyelembe. RSP1 és RSP2 esetén állítsunk be 2048000-t!

centerfreq - a megjelenítendő frekvenciatartomány közepe kHz-ben

initial - az a frekvencia kHz-ben, ahol a rádió első pillanatban fülel.

antenna - az antenna rövid leírása (pl. dipole)

gain - az erősítés (negatív is lehet)

Ezzel meg is vagyunk. Mentsük el a módosításokat, majd a parancssori ablakban abba a mappába menve (CD parancs) ahol a websdr programjai vannak() adjuk ki a következő utasítások egyikét:

sudo LD_LIBRARY_PATH=. ./websdr64 # 64 bites Linux esetén
vagy
sudo LD_LIBRARY_PATH=. ./websdr # 32 bites Linux esetén
vagy
sudoLD_LIBRARY_PATH=. ./websdr-rpi # Raspberry PI esetén

Az LD_LIBRARY_PATH dolog arra szólítja fel a rendszert, hogy először keressen könyvtárakat az aktuális könyvtárában (a dist11 mappában), majd csak az után a rendszer más részein. Tehát először megtalálja a két megfelelő verziójú fájlt (amit az egész művelet elején másoltunk oda).

Amikor a websdr parancsot futtatjuk, nem ad vissza promptot! Ctrl + C-vel lelőhető a szerver. Ezt akkor kell, ha a websdr.cfg fájlt bármikor módosítjuk! Utána ismét indítható a szerver az iménti módon.

Ha most egy másik gépről felmegyünk a http://www.websdr.org honlapra, pár perc után a lista alján meg is láthatjuk a szerverünket a megadott URL-lel és megjegyzéssel (és logóval, ha van). Rákattintva, be kell jöjjön a websdr szolgáltatásunk.

Sok sikert a telepítéshez!


Ami ezután történt:

A websdr program készítőjét megkérdeztem

"Kedves Pieter-Tjerk!

Köszönöm a websdr programot. Sikeresen telepítettem, és ez nagyszerűen működik az SDRPlay RSP2 is.
Itt láthatod: http://vril.ddns.net:8901/

Van még egy kérdésem. Tervezed-e a web hosting modult SSL alapúra átírni (HTTPS) a jövőben? Sajnos sok munkahelyi hálózatban tűzfal működik ami a normál http-t nem engedi. Pedig én szeretném hallgatni a rádiót munka közben is.
Lehet, hogy ez jelentős CPU-terhelést eredményezhet, ami nem életképes opció jelenlegi körülmények között.


Nagyon köszönöm a kedvességedet.

Üdvözlettel:

HA5JA Attila"

melyre Ő az alábbit válaszolta.

"Helló Attila,

Nem, jelenleg nem tervezem a HTTPS bevezetését, bár talán majd egyszer megteszem, ha a böngészők nem támogatják tovább aszokásos HTTP-t.
Eléggé sok munka lenne, mind a programozás, a CPU terhelése sem előnyös, és nincs haszna egy ilyen alkalmazáshoz.

73, Pieter-Tjerk, PA3FWM"