smogcli2 módosítása 2 vevős Pluto+ SDR-hez

   
Ha valaki Pluto+-t vagy olyan hackelt PlutoSDR-t használ amelyik ki van bővítve egy második RX bemenettel, azoknak ajánlom a következő módosított mrc100_pluto_rx programot. Ez kihasználja a Pluto+ mindkét bemenetét és külön *.cf32 filet készít a két vevő bemenetén lévő jelekről. Egy kis bónusz, hogy ebben a programban már működik a pályaadatok lekérése, mert már az új játékszabályok szerint kéri le a celestrack.com-ról. Készült hozzá egy (vagyis inkább három) python script, amivel valós időben követhető a bemeneten lévő jel.



    A használható kapcsolók és azok jelentése:

HUNITY recorder for the PlutoSDR (Pluto+ single-buffer dual RX)

Usage: hunity_pluto_rx [-options]
    -u URI context, such as "ip:pluto.local"
    -F forced continuous recording, no Doppler correction
    -i track the given satellite ID (default: 56957)
    -f downlink frequency for sat (default: 437390000 Hz)
    -8 output sample rate 200 ksps (default: 50 ksps)
    -J output sample rate 100 ksps (default: 50 ksps)
    -M output sample rate in ksps (default: 50 ksps)
    -k download TLE data for default (or selected with -i) satellite from celestrak.com
    -n download new satellites from celestrak.com
    -a download actives from celestrak.com
    -c download cubesats from celestrak.com
    -K download TLE from this url
    -s enable printing sat and signal statistics
    -e elevation limit (default: 0 deg)
    -g disable AGC, set manual gain to <value>
    -A fast-attack AGC
    -2 dump downconverted samples from RX2
    -O dump downconverted samples to stdout
    -Z dump downconverted samples to ZMQ PUB tcp://0.0.0.0:7207
    -P real time samples to stdout
    -D enable doppler correction for real time samples
    -S enable printing initialization messages
    -L enable
turning antenna with ROTCTLD protocoll (default: false)
    -o disable antenna overturn +-25 deg (default: enabled)
    -N antenna zero point: North (default: South)
    -R IP address of rotator for ROTCTLD
    -r port number for ROTCTLD (default: 4533)
    -d disable RX2
    -h prints this help message

A legtöbb kapcsoló jelentése megegyezik az eredetivel, a változások ezeknél vannak:
    -f - vételi frekvencia,
    -F - akkor is készít felvételt, ha a kiválasztott műhold éppen nincs a látóhatár fölött (nincs doppler korrekció)
    -k - az -i kapcsolóval (vagy default) megadott műhold pályaadatait kéri le (egyetlen
műhold)
    -K url - a műhold pályaadatainak kérérése egy adott címről (pl. https://gnd.bme.hu/tles/hunity.tle)
    -n - a legújabb műholdak pályaadatai (az utolsó 30 nap alatt indított műholdak pályaadatai)
    -a - aktív műholdak pályaadatai (az aktív műholdak pályaadatai - jó sok nem ajánlott)
    -c - cubesat kategóriájú műholdak pályaadatai
    -s - megváltozott az alapállapota - alaphelyzetben kikapcsolt, a -s bekapcsolja
    -2 - ez a kapcsoló határozza meg, hogy az stdout-ra vagy a zmq-re melyik vevő jele jusson - nincs kapcsoló: RX1, van -2: RX2
    -O és -Z jelentése valtozatlan, a forrás a -2 -től függ
    -P - a bejövő jel mintáit közvetlenül küldi az stdout-ra nem a bufferen keresztül - valós idejű megjelenítés
    -L - az antenna forgatásának engedélyezése
    -o - van túlfordulás
    -N - az antenna ütközési pontja. Alapértelmezett a dél, ezzel lehet átkapcsolni északira
    -R - a számítógép IP száma, amin a rotctld szerver fut
    -r - a rotctld portjának a száma. Alapértelmezett a 4533
    -d - a második vevő letiltása (csak az RX1 lesz aktív)

A P működéséhez az O és Z kapcsoló inaktív állapota szükséges, vagyis azokat ne használd a P-vel együtt, mert prioritást élveznek a P-vel szemben.
A k, n, a, c kapcsoló egymástól független, csak az egyiket kell használni. Az aktív műholdak listája eléggé hosszú, ezért a lekérése is sokáig tart. Ezt a kapcsolót csak akkor használd, ha feltétlenül szükséges, de akkor se túl gyakran.
A kimenő mintavetelezési frekvenciát a -8 -J kapcsolókkal tudjuk megadni, de megadhatjuk az -M kapcsoloval is amikor az utána lévő paraméter határozza meg a frekvenciát. Ez lehet a 100 ksps esetén 1, 100, 100000 vagy 200 ksps esetén 2, 200 esetleg 200000.

Telepítés:

Kövesd az itt található leirást: https://gitlab.com/phorvath/smogcli2

    Telepíts föl minden könyvtárat és eszközt. Ha biztosra akarsz menni, akkor a honlapon leírt módon telepítsd föl az egész csomagot. Ha a telepítés hiba nélkül lefutott, akkor az src mappában lévő 4 állományt: ad936x_device.cpp, ad936x_device.hpp, hunity_pluto_rx.cpp és tle.cpp-t cseréld le a zip-ben találtakra. Mivel ezeknek az állományoknak a dátuma régebbi mint a most telepítetteké, ezert minden most lecserélt állományt meg kell nyitni, beleírni egy valamilyen karaktert, kitörölni és elmenteni. Ettől
frissül a dátuma, ezért már a make parancs újrafordítja. Ha bátrabb vagy, akkor már fordítás előtt le lehet cserelni az említett 3 filet, akkor rögtön azok fordulnak le, és nem kell bíbelődni velük. Lehet hogy fordításkor hibát dob. Ez azt jelenti, hogy a gépedről hiányzik valamilyen komponens, azt telepítsd föl. Ha a smogcli2 csomag már a gépeden van, akkor természetesen elég csak lecserélni az emlitett 4 filet, és újrafordítani a programot. Előfordulhat, hogy az fmt-t hiányolni fogja, ilyenkor a megoldás: sudo apt install libfmt-dev. Ajánlom, hogy eleinte használd az -s kapcsolót, hogy lásd az inicializáció folyamatát.
    Ha a telepítés sikeres ugyanúgy lehet használni mint az eredeti 1 vevős változatot. Ha látni szeretnéd, hogy mi történik a bemeneten, akkor igy indítsd el:

./hunity_pluto_rx -u ip:pluto.local -f 433920000 -i 35935 -g 71 -P | ./qtplot.py    

vagy ...........
| ./liveplot.py (1-2 mp késés)

a frekvencia csak azért 433920000, mert ezen a frekvencián mindig van valamilyen jel, amivel tesztelni lehet (ha nincs, nagyon nagy mázlid van). A programban a default frekvencia 437390000 Hz, ezért ezt nem kell majd beállítani. Ha nem a default frekvenciát használod (más műholdat követsz) akkor a qtplot paramétereként megadhatod a frekvenciát így: qtplot.py -f 433920000. Ha a hunity_pluto_rx-ben használod a -8 kapcsolót, akkor itt is meg kell adni a mintavételi frekvenciát így:
qtplot.py -f 433920000 -s 200000. Paraméterek nélkül a frekvencia 437390000 a mintavételi frekvencia 50000. Alaphelyzetben a qtplot-ban szándékosan nincs doppler korrekció, hogy pontosabb információt kapj a bejövő jel frekvenciájáról. Ha ez zavar, akkor indítsd a hunity_pluto_rx-et egy -D kapcsolóval. Ekkor a P kapcsolóval jövő minták is dopplerkorrigáltak lesznek, de azzal számolj, hogy a spektrum-analizátoron lévő frekvenciaskála mindig a névleges frekvenciát mutatja és nem a pillanatnyit.
Természetesen a sat_id-t majd a Hunity id-je alapján kell megadni.
Ahhoz hogy ez így működjön először futtathatóvá kell tenni a qtplot.py és a liveplot.py scriptet:
chmod +x qtplot.py
chmod +x liveplot.py
Természetesen a python script-ben is előfordulhat olyan komponens, ami nálad nincs föltelepítve, ezért azokat telepítsd a megfelelő módon (segít az internet és a chatGPT). Alapvető feltétel, hogy a Qt6 telepítve legyen. Valószínüleg keresni fogja a pyqtgraph könyvtárat. Telepítsd föl így: sudo apt install python3-pyqtgraph
A P kapcsolónak és a qtplot-nak az előnye hogy valós időben jeleníti meg a mintákat. Ha az O kapcsolót használod, ugyanúgy működni fog, de számolni kell azzal, hogy abban az esetben a minták a meglehetősen méretes bufferon keresztül jönnek ezért a késleltetés 65 - 90 másodperc!
A zmqplot.py használata annyiból előnyös, hogy megfelelően beállítva egy másik gépen is futtatható. Persze a nagy késéssel ott is számolni kell. A zmqplot-nál is vannak kapcsolók: -f frekvencia,  -s mintavételi frekvencia,  -p port,  -a IP cím ahol a smogcli2 fut. Paraméterek nélkül inditva a frekvencia: 437390000, mintavételi frekvencia: 50000, port: 7207 és az IP: 127.0.0.1.
Előfordulhat, hogy a vevő alapzajának függvényében módosítani kell a liveplot-ban a MAXDB és MINDB változók értékét, hogy a görbék megfelelően jelenjenek meg. A zmqplot és a qtplot induláskor megpróbálja a MAXDB és MINDB értékét a bejövő jelhez optimalizálni.
Ha indítás után ilyen hibaüzenetet kapsz: QStandardPaths: wrong permissions on runtime directory /run/user/1000, 0770 instead of 0700 akkor ezt a parancsot kell kiadnod:  sudo chmod 700 /run/user/1000
A program el tudja látni az antenna forgatását is, a rotctld protokollon keresztül. Ehhez be kell állítani annak a gépnek az IP számát, amelyiken a rotctld program fut. Szükség esetén a port számát is be lehet állítani, ha valamilyen okból nem felel meg a default 4533-as portszám. A forgatást az -L kapcsolóval kell engedélyezni.

pluto_2rx

A fejlesztés Raspberry Pi5-ön történt. Kipróbáltam RPi4-en, azon is muködött. Öregebb vason nem próbáltam.