Szoftverrádiós kiszolgáló (kísérleti jelleggel)

Állapot jelenleg: A kiszolgáló nem működik.


2013. április 9. Összeállítottunk egy szoftverrádiós kiszolgálót, amely jelenleg kísérleti céllal üzemel. Az RF frontend egy RTL-SDR kompatibilis DVB-T tuner. A kísérlet során arra vagyunk kíváncsiak, hogy egy Raspberry Pi (hitelkártya méretű számítógép) megbirkózik-e a több felhasználó I/Q adatfolyammal való kiszolgálásával.

A kísérleti szerverünk még több hibával, hiányossággal rendelkezik, és a WebSDR rendszerekhez képest kevésbé elegáns, sokkal sávszélesség- és CPU igényesebb a használata. Azért tesszük közzé, mert így azok is kipróbálhatják az RTL-SDR kompatibilis SDR használatának élményét, akik nem rendelkeznek ilyen DVB-T vevővel.

A hozzáféréshez az SDR# szoftvert javasoljuk. A szoftverben először ki kell választani I/Q jelforrásnak az RTL-SDR / TCP beépülő modult a legördülő menüből, majd a Configure gomb megnyomása után felugró ablakban alábbi paramétereket beállítani:

Kiszolgáló: sdr3.sch.bme.hu
Port: 7373
Sample Rate: 0.25 MSPS

...ezután a főablakban a Play gombbal indítható a lejátszás.

Az SDR# szoftver beállítása

A szerver használatakor vegyük figyelembe az alábbiakat:

  • Kezdetben a frekvencia skála nem lesz hiteles, csak azután, ha mi magunk beírunk egy frekvenciát, amire hangolunk.
  • Egyszerre többen is hangolhatják az SDR szervert. Ha valaki más elhangolja a lokál oszcillátort az általunk beállított frekvenciáról, nem lesz hiteles a szoftverben mutatott frekvencia skála.
  • A szerveren csak alábbi frekvenciasávokra engedélyezett a lokál hangolása: 430-440 MHz, 144-146 MHz, 88-108 MHz, 70-70,5 MHz, 50-52 MHz. Amennyiben máshová próbálunk hangolni, a szerver el fogja dobni a hangolási parancsot, de a kliens szoftverben mutatott frekvencia skálán úgy fog tűnni, mintha sikerült volna az áthangolás. Ekkor egy engedélyezett frekvenciára való hangolással tehetjük újra hitelessé a skálát.

A fentiek az egy felhasználósra tervezett rtl_tcp protokollja miatt adódnak így. Az itt leírt problémák nem terhelnek bennünket saját DVB-T vevő használatakor.

Mivel közvetlenül az I/Q adatfolyam van kiszolgálva a kliensek felé, ez követelményeket támaszt az internetkapcsolat minőségére vonatkozóan. Fontos tudni, hogy a hozzáféréshez legalább 5 Mbit/s stabil letöltési sebesség szükséges! A letöltési sebességünket ellenőrizhetjük itt. Egyetlen I/Q adatfolyam sávszélessége 250 000 sps × 2 (I és Q) × 8 bit = 4 000 000 bps = 4 Mbps.

Fontos hangsúlyozni továbbá az erősítés beállításának jelentőségét, ugyanis a gyengébb állomások adott esetben csak kézi RF Gain beállítással vehetők. Érdemes bátran kísérletezni az AGC és RF Gain vezérlőkkel.

Az állomás a BME Schönherz Kollégiumában, a 13. emeleten található, az utca felett kb. 45 méter magasan, ~147m tengerszint feletti magassággal. Az alábbi módon van elhelyezve:

Az SDR vevő állomás

A DVB-T vevőre csatlakoztatott antenna jelenleg egy Nagoya NA-775 kézirádió antenna. Sajnos ez az eszköz gyenge érzékenysége mellett tovább limitálja a használhatóságot. A Széchenyi hegyi 70cm átjátszó, illetve a közeli szimplex állomások azért vehetőek vele.

A Raspberry Pi internetkapcsolata közelítőleg 55 Mbps gyakorlati feltöltési sebességgel bír, így ez limitálja a kliensek számát.

A felhasznált hardver

  • Raspberry Pi, Model B, rev. 2
  • EzCap EzTV-668 DVB-T vevő, amely E4000 tuner IC-vel rendelkezik
  • 5V, max 3A dugasztáp, illetve saját készítésű kívülről táplált USB aljzat a DVB-T dongle áramfelvételénak biztosítása miatt.

A felhasznált szoftver

  • Az RTL-SDR projekt rtl_tcp alkalmazása
  • A HA5KFU saját fejlesztésű, nyílt forráskódú RTL Multi-User Server alkalmazása

RTL Multi-User Server

Ez az alkalmazás arra jó, hogy az eredetileg egy felhasználósra tervezett rtl_tcp szerverhez többen is hozzáférjenek. A python alatt implementált szoftver csatlakozik egy meglévő rtl_tcp kiszolgálóhoz, és megnyit egy portot, amelyen a kliensek csatlakozását várja. Valójában egy köztes réteget képez az rtl_tcp és a kliensek között: minden kliens számára kiszolgálja az rtl_tcp kiszolgáló által küldött adatokat, és bármely kliens küld hangolási információkat, elküldi az rtl_tcp szervernek. Az alábbi funkciókkal rendelkezik:

  • Hozzáférés szabályzás IP cím tartomány alapján
  • A hangolás korlátozása megadott sávokra
  • Az rtl_tcp újraindulása esetén nem bomlik a kapcsolat az rtl_mus klienseivel, hanem az rtl_mus megpróbálja újra felépíteni a kapcsolatot az rtl_tcp kiszolgálóval

A programot Raspberry Pi-n futtatva minden kliens kb. 10% CPU-t használ, így körül-belül 10 kliens kapcsolódhat egyidejűleg (de a tesztünk célja többek között felderíteni, hogy hány klienst bír kiszolgálni a szoftver.)

A GPLv3 alatt licenszelt programot innen lehet letölteni:

RTL Multi-User Server v0.1a (sources)

Örömmel veszem, ha megosztjátok velem a tapasztalataitokat e-mailben. Bár az eszköz telepítésének körülményeiből is látszik, hogy jelenleg kizárólag tesztről van szó, reméljük később egy jobb antennával, jobb hardverrel és szoftverrel rendelkező SDR szerverré fejleszthetjük a projektünket.

Rádiós baráti üdvözlettel:

Andris, HA7ILM

Add new comment

Sima szöveg

  • No HTML tags allowed.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Lines and paragraphs break automatically.
CAPTCHA