Tipps und Tricks
Installation der Toolchain von OE5DXL auf einem Raspberry PI 3+ und am PI 4
Vorbereitungen auf dem Windows PC
Runterladen des letzten veröffentlichten Raspberry PI Images
Zip Datei entpacken, es entsteht ein Datei mit der Endung img
Diese img Datei mittels des Programms BalenaEtcher auf die SD-Karte flashen
nach dem Flashen die SD Karte kurz aus dem SD Karten Reader nehmen und wieder einstecken, es werden im Dateimanager 2 neue Laufwerksbuchstaben angezeigt, aber nur ein Laufwerk kann im Dateimanager angezeigt werden. Diesen Buchstaben merken wir uns.
Öffnen eines Command Fensters dazu die Windows Taste + R drücken und cmd eingeben, es öffnet sich ein schwarzes Befehlsfenster. Hier auf den zuerst gemerkten Laufwerksbuchstaben gehen z.B g: und dann folgendes eingeben type NUL > ssh (damit wird ermöglicht, dass man mit einem SSH Programm, wie z.B Putty auf den PI zugreifen kann.
nun die Website https://www.pistar.uk/wifi_builder.php aufrufen, dort die SSID und das Passphrase des Wlans, wo der PI eingebunden werden soll, eingeben und auf senden drücken. Es öffnet sich ein Fenster "speichern unter" , wir wählen wieder das zuvor gemerkte Laufwerk z.B. g: aus und speichern die Datei wpa_supplicant.conf im root Verzeichnis.
Jetzt noch am PC die Programme Putty oder irgend ein anderes SSH Programm runterladen und installieren (brauchen wir für den Zugriff auf den PI) , sowie ein Programm, um die dann vergebene IP Adresse (diese ist auch im Router zu finden) des Raspberry PIs, zu ermitteln, ich verwende Advanced IP Scanner
Vorbereitungen am Raspberry PI
SD Karte in den PI einstecken und hochfahren (kurz warten)
IP Adresse des PIs im WLAN ermitteln, siehe vorher zB IP Scanner
Im Programm Putty am Windows PC diese IP eingeben und verbinden drücken. Wenn alles geklappt hat kommt login as: Hier den Benutzernamen pi eingeben, dann kommt password: , hier raspberry eingeben.
Wenn man erfolgreich eingeloggt hat, steht dort im prompt pi@raspberrypi:~ $
Nun müssen wir einige Pakete installieren, jede Zeile nach dem Punkt einfach hier rauskopieren und im SSH Fenster (Putty) einfügen und Enter drücken.
sudo apt-get update && sudo apt-get upgrade -y && sudo apt-get autoremove && sudo apt-get autoclean
sudo apt-get install build-essential -qq && sudo apt-get install libx11-dev -qq && sudo apt-get install libpng-dev -qq && sudo apt-get install libjpeg-dev -qq
sudo apt-get install libxext-dev
sudo apt-get update
rm -r -f dxlAprsinstall/
rm -r -f dxlAPRS
mkdir dxlAprsinstall
wget http://dxlaprs.hamspirit.at/dxlAPRS_armv7hf-current.tgz -P /home/pi/dxlAprsinstall
tar -xvf /home/pi/dxlAprsinstall/dxlAPRS_armv7hf-current.tgz -C /home/pi/dxlAprsinstall
bash /home/pi/dxlAprsinstall/scripts/updateDXLaprs armv7hf
rm -r -f dxlAprsinstall
wget --no-check-certificate --content-disposition https://raw.githubusercontent.com/oe3jtb/DXLChain-Scripts/master/getalm -P /home/pi/dxlAPRS/aprs
wget --no-check-certificate --content-disposition https://raw.githubusercontent.com/oe3jtb/DXLChain-Scripts/master/getalmd -P /home/pi/dxlAPRS/aprs
sudo chmod 755 /home/pi/dxlAPRS/aprs/getalm
sudo chmod 755 /home/pi/dxlAPRS/aprs/getalmd
sudo apt-get install tmux -qq
sudo apt-get install mc -qq
sudo apt-get install rtl-sdr gr-osmosdr -qq
sudo rmmod dvb_usb_rtl28xxu
Noch ein Hinweis, da es siuch als durchaus praktikabel erwiesen hat, den Raspberry ein wenig abzusichern folgende Tipps
Nehmt nicht die Standard Ports fürs NAT, also anstatt 22 z.B. 9022
Installiert Fail2Ban
Tunnelt über die SSH Verbindung andere Ports, weniger NATS, weniger Interesse von außen, wie es geht, hier in Englisch
Wenn alles geklappt hat, den Befehl "ls" eingeben und es sollte diese Anzeige kommen
pi@raspberrypi:~ $ ls
dxlAPRS
pi@raspberrypi:~ $
Damit haben wir das Grundpaket der DXL Chain, einen Terminal Multiplexer(Tmux) und einen Dateimanager(Midnight Commander) installiert, jetzt müssen wir ein Script erstellen.
vorher noch die 3 pipes erstellen:
cd dxlAPRS/aprs
mknod pipe0 p
mknod pipe1 p
mknod pipe2 p
Wer noch einen Monitor installieren möchte, um zu sehen, wie ausgelastet der Raspberry PI ist, dem möchte ich den RPI Monitor empfehlen. Beschreibung der Installation
Problem bei manchen PI4 und 3 Sticks
wenn nicht alle 3 Sticks laufen, sondern immer nur 2 ist ein Terminalfenster zu öffnen und das einzugeben
sudo su
echo 0 > /sys/module/usbcore/parameters/usbfs_memory_mb
exit
oder permanente Settings
Abfrage wieviel MB allociert sind
cat /sys/module/usbcore/parameters/usbfs_memory_mb
wenn zuwenig dann
sudo nano /boot/cmdline.txt
einfügen ganz am Schluß zb
usbcore.usbfs_memory_mb=1024
Erstellen eines Autostartfiles für den Sondenmonitor
Wenn gewollt, kann sich der Sondenmonitor auch beim Booten des Raspberrys gleich mitstarten. Dazu muss man Folgendes machen:
mkdir /home/pi/.config/autostart
nano /home/pi/.config/autostart/sondenstart.desktop
In das File sondenstart.desktop trägt man dann ein:
[Desktop Entry]
Name=SONDENSTART
Exec=/home/pi/dxlAPRS/aprs/strsondetmux.sh
Icon=/home/pi/dxlAPRS/aprs/www/icon/163.gif
Terminal=true
Type=Application
Categories=Sonde
StartupNotify=false
Path=/home/pi/dxlAPRS/aprs/
Das script strsondetmux.sh muss natürlich vorliegen, wie das geht lest ihr gleich hier:
Script für den PI 4 mit TMUX, die fett markierten Stellen gehören mit Hirn geändert
#!/bin/bash
# ***************************************************************** OE3JTB *************************************************************************
# * Starten des DXLAPRS unter Verwendung von TMUX. *
# * Die Programme und Konfigfiles muessen unter /home/pi/dxlAPRS/aprs zu finden sein - wenn anders bitte entsprechend die Pfade aendern *
# *********************************************************************************************************************** OE3JTB 2020-03-21 * V1.0*
#------------------------------------------------------------------------------------------------------------------------------------------------------
# Als erstes beenden wir vorsorgend alle Programme die wir vielleicht schon gestartet haben (sonden tools)
#------------------------------------------------------------------------------------------------------------------------------------------------------
#
#
killall -9 getalmd rtl_tcp sondeudp sdrtst sondemod udpgate4 udpbox
tmux kill-server
sleep 25
#tmux session starten
tmux new -d -s sonde
echo "$(tput setaf 3)getalmd starten..."
#------------------------------------------------------------------------------------------------------------------------------------------------------
# Holen wir uns den aktuellen Almanach
#------------------------------------------------------------------------------------------------------------------------------------------------------
#tmux GETALMD window erstellen
tmux select-pane -t 0
tmux new-window -t sonde -n GETALMD
#tmux pane starten
tmux split-window -v
tmux select-pane -t 0
tmux send-keys "$HOME/dxlAPRS/aprs/./getalm " C-m
tmux select-pane -t 1
tmux send-keys "$HOME/dxlAPRS/aprs/./getalmd " C-m
echo "$(tput setaf 1)gestartet"
echo
sleep 3
echo "$(tput setaf 3)rx server starten..."
#tmux RX window erstellen
tmux new-window -t sonde -n RX
#tmux panes erstellen und starten
tmux split-window -v
tmux split-window -v
tmux select-pane -t 0
tmux send-keys "rtl_tcp -a 127.0.0.1 -d0 -n 1 -p 18100 " C-m
tmux select-pane -t 1
tmux send-keys "rtl_tcp -a 127.0.0.1 -d2 -n 1 -p 18101 " C-m
tmux select-pane -t 2
tmux send-keys "rtl_tcp -a 127.0.0.1 -d3 -n 1 -p 18102 " C-m
echo "$(tput setaf 1)gestartet"
echo
sleep 3
#tmux SondeUDP window erstellen
tmux new-window -t sonde -n SONDEUDP
#tmux panes erstellen und starten
tmux split-window -v
tmux split-window -v
tmux select-pane -t 0
tmux send-keys "$HOME/dxlAPRS/aprs/./sondeudp -f 25000 -o /home/pi/dxlAPRS/aprs/pipe0 -L omni -I OE3JTB-11 -u 127.0.0.1:18000 -S 5 -c 0 -v -n 0 " C-m
tmux select-pane -t 1
tmux send-keys "$HOME/dxlAPRS/aprs/./sondeudp -f 25000 -o /home/pi/dxlAPRS/aprs/pipe1 -L omni -I OE3JTB-11 -u 127.0.0.1:18000 -S 5 -c 0 -v -n 0 " C-m
tmux select-pane -t 2
tmux send-keys "$HOME/dxlAPRS/aprs/./sondeudp -f 25000 -o /home/pi/dxlAPRS/aprs/pipe2 -L omni -I OE3JTB-11 -u 127.0.0.1:18000 -S 5 -c 0 -v -n 0 " C-m
echo
sleep 3
#tmux SDRTST window erstellen
tmux new-window -t sonde -n SDRTST
#tmux panes erstellen und starten
tmux split-window -v
tmux split-window -v
tmux select-pane -t 0
tmux send-keys "$HOME/dxlAPRS/aprs/./sdrtst -t 127.0.0.1:18100 -r 25000 -s /home/pi/dxlAPRS/aprs/pipe0 -Z 100 -c /home/pi/dxlAPRS/sdrcfg-400402.txt -v -e " C-m
tmux select-pane -t 1
tmux send-keys "$HOME/dxlAPRS/aprs/./sdrtst -t 127.0.0.1:18101 -r 25000 -s /home/pi/dxlAPRS/aprs/pipe1 -Z 100 -c /home/pi/dxlAPRS/sdrcfg-402404.txt -v -e " C-m
tmux select-pane -t 2
tmux send-keys "$HOME/dxlAPRS/aprs/./sdrtst -t 127.0.0.1:18102 -r 25000 -s /home/pi/dxlAPRS/aprs/pipe2 -Z 100 -c /home/pi/dxlAPRS/sdrcfg-404406.txt -v -e " C-m
echo
sleep 3
#tmux MODBOX window erstellen
tmux new-window -t sonde -n MODBOX
#tmux panes erstellen und starten
tmux split-window -v
tmux select-pane -t 0
tmux send-keys "$HOME/dxlAPRS/aprs/./sondemod -o 18000 -I OE3JTB-11 -r 127.0.0.1:9001 -b 29:19:9:3 -A 3000:2000:1000 -M -x /tmp/e.txt -T 360 -R 240 -d -p 2 -L 6=DFM06,7=PS-15,A=DFM09,B=DFM17,C=DFM09P,D=DFM17,FF=DFMx -t /home/pi/dxlAPRS/aprs/sondecom.txt -v -N 650 -P JN78QN60SM -S /home/pi" C-m
tmux select-pane -t 1
tmux send-keys "$HOME/dxlAPRS/aprs/./udpbox -R 127.0.0.1:9001 -r 127.0.0.1:9101 -r 127.0.0.1:9102 -r 127.0.0.1:9105 -v" C-m
echo
sleep 3
#------------------------------------------------------------------------------------------------------------------------------------------------------
# UDPGATE4 - in aprs-is format wandeln, zugleich server zum Verteilen der Daten - oder an einen vorhandenen igate senden der axudp kann (-R <ip:port> ...),
# oder an APRSMAP an einen "RF Port" --> M <ip:port> ..., -t=lokaler TCP port (14580) des igate fuer incomming connections, -p=dein aprs.fi passwort
#
# entsprechende Zeile das # Zeichen entfernen und die anderen 2 mit # vorstellen! nur 1 Auswahl ist gültig!!!
#------------------------------------------------------------------------------------------------------------------------------------------------------
# Sondendaten to Radiosondy.info and forward to APRS Network Server (Port 14580)
#tmux UPGATE window erstellen
tmux new-window -t sonde -n UPGATE
#tmux panes erstellen und starten
tmux split-window -v
tmux split-window -v
tmux split-window -v
# Sondendaten to Radiosondy.info and forward to APRS Network Server (Port 14580)
#tmux select-pane -t 0
#tmux send-keys "$HOME/dxlAPRS/aprs/./udpgate4 -s OE3JTB-15 -R 0.0.0.0:0:9001 -n 10:/home/pi/dxlAPRS/aprs/netbeacon.txt -g radiosondy.info:14580 -p 23471 -t 14580 -w 14501 -v -D /home/pi/dxlAPRS/aprs/www/" C-m
# Sondendaten to Radiosondy.info only!!! NOT forwarding to APRS Network Server (Port 14590)
tmux select-pane -t 1
tmux send-keys "$HOME/dxlAPRS/aprs/./udpgate4 -s OE3JTB-15 -R 0.0.0.0:0:9101 -n 10:/home/pi/dxlAPRS/aprs/netbeacon.txt -g radiosondy.info:14590 -p 23471 -t 14590 -w 14501 -v -D /home/pi/dxlAPRS/aprs/www/" C-m
# Sondendaten zu APRS Network Server only!!!
tmux select-pane -t 2
tmux send-keys "$HOME/dxlAPRS/aprs/./udpgate4 -s OE3JTB-15 -R 0.0.0.0:0:9102 -n 10:/home/pi/dxlAPRS/aprs/netbeacon.txt -g austria.aprs2.net:14580 -p 23471 -t 14580 -w 14502 -v -D /home/pi/dxlAPRS/aprs/www/" C-m
# Sondendaten zu APRSMAP only!!!
#tmux select-pane -t 3
#tmux send-keys "$HOME/dxlAPRS/aprs/./udpgate4 -s OE3JTB-15 -R 0.0.0.0:0:9105 -n 10:/home/pi/dxlAPRS/aprs/netbeacon.txt -M 127.0.0.1:9106 -w 14505 -v -D /home/pi/dxlAPRS/aprs/www/" C-m
echo
sleep 3
#--- ENDE ---------------------------------------------------------------------------------------------------------------------------------------------------
Achtung um auf Radiosondy in der Karte angezeigt und als Station gelistet zu werden, muss netbeacon.txt den String sonde und/oder tracker enthalten!!!!
Wer TMUX nicht so genau kennt hier eine Beschreibung der Tastaturkürzel als PDF
Wenn TMUX mit der Maus bedient werden sollte muss Folgendes gemacht werden
sudo nano ~/.tmux.conf
Dort die Zeile einfügen
setw -g mouse on
Datei speichern und neue tmux.conf laden
tmux source-file ~/.tmux.conf
Installation eines Scanners für die DXL Tool Chain
Schon bereits kurz nach dem Einstieg in den Betrieb einer Monitor Station, kam mir die Idee, eine Art Scanner, welcher als Input für das eigentliche Programm dient, einzusetzen.
Zur Erklärung, sowohl beim Image von SQ6KYX, als auch bei der DXL Tool Chain, ist als Input ein File für jeden verwendeten SDR Stick gedacht. In jedem File sind beispielhaft solche Einträge drinnen:
f 404.010 5 0 0 6000 #Sondexy..
Das bedeutet, die Frequenz 404.010 wird immer auf mögliche Signal untersucht und versucht zu dekodieren, hier mit einer Frequenzabweichung von 5khz und einer Bandbreite von 6000hz. Es ist möglich den zweiten Wert, der den Squelsh darstellt, etwas anzuhaben, sodaß die Frequenz auf "mute" steht.
Wenn jedoch der Squelsh immer offen ist, wird auch immer versucht zu decodieren, was bei vielen Frequenzeinträgen gerade bei einem Raspberry PI sehr bald ein CPU Last Problem hervorruft.
Weiters ist es auch nicht möglich neue Frequenzen automatisch ausfindig zu machen.
In unserer OE Whatsapp Gruppe fragte ich nach und David verwies mich auf diese Möglichkeit von DF7PN
In der Dokumentation ist schon fast Alles erklärt, ich möchte meine Erfahrungen bezüglich der Integration in eine bestehende DXL Chain teilen.
Die auf GitHub hinterlegte Anleitung ist für die Konfiguration von 2 SDR Sticks ausgelegt, ich wollte aber das gesamte Band 400-406 Mhz abscannen.
Dazu habe ich folgende Komponenten im Einsatz
3 Nooelec TXCO Sticks, für das Decodieren
1 gewöhnlichen R820T2 Stick um ein paar Euro, der wird für das Scannen eingesetzt.
Zuerst muss das DXL Chain Script so angepasst werden, daß 3 Files als Input da sind, das passiert bei den Parametern des SDRTST, ich hab sie der Einfachheit halber nach den Frequenzbereichen benannt
zb "-c /home/pi/dxlAPRS/sdrcfg-400402.txt"
Dann habe ich das ganze Verzeichnis von Github gecloned und im PI unter einem Verzeichnes "sondenscan" entpackt.
Im Prinzip ist jetzt schon alles lauffertig, es muss nichts compiliert werden, nur das script zum scannen angepasst, hier das meinige scanner_prod.sh:
#!/bin/bash
rtl_power -f 400.5M:401.9M:1000 -d1 -p 51 -g 38 /tmp/scan400402.csv -1 2>&1 > /dev/null /*hier wird der Frequenzbereich festgelegt mit -d1 das entsprechende Device, welches benutzt werden soll (output aus dem Befehl lsusb ), die Abweichung -p 51 , wenn es kein TXCO Stick ist (kal Befehl), und der Gain -g 38 (rtl_test) */
cd /home/pi/sondenscan/ScannerList
sudo ./scannerlist -n 4 -H /tmp/holding400402.txt -o /tmp/outlist400402.txt -f /tmp/scan400402.csv -v -d /home/pi/sondenscan/scannerblacklist.txt -w /home/pi/sondenscan/scannerwhitelist400402.txt >> /tmp/scannerlist.log
echo -------------------------------------------- >> /tmp/scannerlist.log
scp /tmp/outlist400402.txt /home/pi/dxlAPRS/sdrcfg-400402.txt
echo ---SCAN 400 to 402 complete ---------------- >> /tmp/scannerlist.log
sleep 5
rtl_power -f 402M:404M:1000 -d1 -p 51 -g 38 /tmp/scan402404.csv -1 2>&1 > /dev/null
cd /home/pi/sondenscan/ScannerList
sudo ./scannerlist -n 4 -H /tmp/holding402404.txt -o /tmp/outlist402404.txt -f /tmp/scan402404.csv -v -d /home/pi/sondenscan/scannerblacklist.txt -w /home/pi/sondenscan/scannerwhitelist402404.txt >> /tmp/scannerlist.log
echo -------------------------------------------- >> /tmp/scannerlist.log
scp /tmp/outlist402404.txt /home/pi/dxlAPRS/sdrcfg-402404.txt
echo ---SCAN 402 to 404 complete ---------------- >> /tmp/scannerlist.log
sleep 5
rtl_power -f 404M:405.9M:1000 -d1 -p 51 -g 38 /tmp/scan404406.csv -1 2>&1 > /dev/null
cd /home/pi/sondenscan/ScannerList
sudo ./scannerlist -n 4 -H /tmp/holding404406.txt -o /tmp/outlist404406.txt -f /tmp/scan404406.csv -v -d /home/pi/sondenscan/scannerblacklist.txt -w /home/pi/sondenscan/scannerwhitelist404406.txt >> /tmp/scannerlist.log
echo -------------------------------------------- >> /tmp/scannerlist.log
scp /tmp/outlist404406.txt /home/pi/dxlAPRS/sdrcfg-404406.txt
echo ---SCAN 404 to 406 complete ---------------- >> /tmp/scannerlist.log
sleep 5
echo ---Reset USB Device ---
/usr/sbin/usb_modeswitch -b 001 -g 008 -R -v 0bda -p 2838 >> /tmp/scannerlist.log
echo ---Done---
Am Wichtigsten ist, dass der Stick resetet wird, sonst funktioniert der Scanner nach einiger Zeit nicht mehr. Und hier ist besonderes Augenmerk auf die Parameter des Befehls Modeswitch zu legen:
Um die gewünschten Parameter zu bekommen habe ich folgendes gemacht:
Jedem Stick eine eigene Seriennummer zugewiesen wie zB hier beschrieben mit dem Befehl rtl_eeprom.
Dann mit lsusb -v alle USB Devices abgefragt, in meinem Fall ist es die Seriennummer 00000001, ich habe unten nur die wichtigen Felder fett markiert und einiges gelöscht, der Übersichtlichkeit halber :-)
Bus 001 Device 008: ID 0bda:2838 Realtek Semiconductor Corp. RTL2838 DVB-T
Device Descriptor:
idVendor 0x0bda Realtek Semiconductor Corp.
idProduct 0x2838 RTL2838 DVB-T
bcdDevice 1.00
iManufacturer 1 Realtek
iProduct 2 RTL2838UHIDIR
iSerial 3 00000001
Man kann den Befehl testen, in dem man ihn in einem shell eingibt und das sollte das Ergebnis sein:
Use given bus/device number: 001/008 ...
Look for default devices ...
bus/device number matched
product ID matched
Found devices in default mode (1)
Get the current device configuration ...
Current configuration number is 1
Use interface number 0
with class 255
USB description data (for identification)
-------------------------
Manufacturer: Realtek
Product: RTL2838UHIDIR
Serial No.: 00000001
-------------------------
Warning: no switching method given. See documentation
Reset USB device .
Device was reset
-> Run lsusb to note any changes. Bye!
Wenn Device was reset steht, sind wir schon fast fertig, damit der scan auch regelmässig ausgeführt wird, ist nur mehr ein crontab Eintrag notwendig.
dazu rufen wir auf
sudo crontab -e
und fügen, wenn wir den Scann alle 2 Minuten ausführen wollen, diese Zeile ein
*/2 * * * * sudo /home/pi/sondenscan/scanner_prod.sh
Datei speichern und schon gehts los
Im laufenden Betrieb können Träger erkannt werden, die eigentlich Störungen sind, bei mir so um die 402 Mhz, diese erkennt man zuerst in den cfg files für die DXL Chain siehe
"-c /home/pi/dxlAPRS/sdrcfg-400402.txt"
Wenn man diese Frequenzen ausblenden will, also dass sie nicht eingetragen werden, geht man dazu in das File
scannerblacklist.txt im scanner Verzeichnis und trägt die Frequenzen ohne Komma ein
403220
403200
..
Bei M10 Sonden ist es u.Umständen nützlich, diese Frequenzen in die Whitelist einzutragen, sodass gewährleistet ist, dass die benötigte Bandbreite fix ist
z.B für die Wiener M10
401000 19
Wenn alles erledigt ist und einwandfrei läuft, werden nur jene Frequenzen decodiert, wo auch wirklich was los ist und nicht Rauschen versucht zu decodieren, was nur eine unnötig CPU Belastung darstellt. Auch die Erwärmung des PI hält sich in Grenzen
Einbau und Anzeige eines "Wasserfall Displays"
Seit Anfang 2021 hat Chris, OE5DXL, eine Python Script mit dem Namen waterfall.py auf seiner Seite zur Verfügung gestellt, welches es ermöglicht, Sonden in einem Wasserfalldisplay anzuzeigen. Das ist aber nicht ein Echtzeit Diagramm, wie man es von modernen Amateurfunkgeräten kennt, sondern es wird ein Bild (png Datei) erstellt, weches dann in bestimmten Abständen aktualisiert wird.
Wolfgang, DF7PN, hat seinen Scanner so aktualisiert, dass es jetzt auch möglich ist, die notwendigen Daten in den jeweiligen .cfg Files, die dxlAprs einliest, zu beschreiben.
Zuerst ist es notwendig das waterfall.py von der Seite runterzuladen
wget -N --no-check-certificate https://oe5dxl.hamspirit.at:8024/wettersonde/waterfall.py
Damit liegt eine Datei mit dem Namen im Verzeichnis /home/pi.
Jetzt ist es nach Anzahl der Sticks notwendig diese Dateien zu duplizieren, ich hab sie der Einfachheit halber durchnummeriert
0 = Stick 1
1 = Stick 2
2 = Stick 3
Jeder Stick hat eine Bandbreite von 2 Mhz.
In den jeweiligen Dateien, hier die erste waterfall0.py sind noch einige Anpassungen vorzunehmen:
CONTRAST=3.0
BRIGHTNESS=40.0
VERB=False
YSIZE=500
FN="/tmp/w0.png" // hier ist die Datei zu bezeichnen, in der dann das Bild // abgelegt wird
PORT=18500 // der Port in den sdrtst schreibt, pro Stick ein Port
FONTSIZE=12
FONTCOL=100
RENAME=""
SAVEEVERY=1
In den "Frequenz" cfg files muss ganz am Schluß eine Zeile mit s: beginnend eingefügt werden
Die Beschreibung der Parameter gibt es hier.
2 Einträge im Startscript müssen noch geändert werden.
Zuerst sdrtst der -L Parameter mit dem jeweiligen Port
#tmux SDRTST window erstellen
tmux new-window -t sonde -n SDRTST
#tmux panes erstellen und starten
tmux split-window -v
tmux split-window -v
tmux select-pane -t 0
tmux send-keys "$HOME/dxlAPRS/aprs/./sdrtst -t 127.0.0.1:18100 -r 25000 -s /home/pi/dxlAPRS/aprs/pipe0 -Z 100 -c /home/pi/dxlAPRS/sdrcfg-400402.txt -v -e -k -L 127.0.0.1:18500" C-m
tmux select-pane -t 1
tmux send-keys "$HOME/dxlAPRS/aprs/./sdrtst -t 127.0.0.1:18101 -r 25000 -s /home/pi/dxlAPRS/aprs/pipe1 -Z 100 -c /home/pi/dxlAPRS/sdrcfg-402404.txt -v -e -k -L 127.0.0.1:18501" C-m
tmux select-pane -t 2
tmux send-keys "$HOME/dxlAPRS/aprs/./sdrtst -t 127.0.0.1:18102 -r 25000 -s /home/pi/dxlAPRS/aprs/pipe2 -Z 100 -c /home/pi/dxlAPRS/sdrcfg-404406.txt -v -e -k -L 127.0.0.1:18502" C-m
echo
sleep 3
Dann noch sondeudp, wenn man möchte, dass die Sondenbezeichnung auch ins Wasserfalldiagramm reingeschrieben wird, hier ists der Parameter -M
#tmux SondeUDP window erstellen
tmux new-window -t sonde -n SONDEUDP
#tmux panes erstellen und starten
tmux split-window -v
tmux split-window -v
tmux select-pane -t 0
tmux send-keys "$HOME/dxlAPRS/aprs/./sondeudp -f 25000 -o /home/pi/dxlAPRS/aprs/pipe0 -L omni -I OE3JTB-11 -u 127.0.0.1:18000 -S 5 -c 0 -v -n 0 -M 127.0.0.1:18500" C-m
tmux select-pane -t 1
tmux send-keys "$HOME/dxlAPRS/aprs/./sondeudp -f 25000 -o /home/pi/dxlAPRS/aprs/pipe1 -L omni -I OE3JTB-11 -u 127.0.0.1:18000 -S 5 -c 0 -v -n 0 -M 127.0.0.1:18501" C-m
tmux select-pane -t 2
tmux send-keys "$HOME/dxlAPRS/aprs/./sondeudp -f 25000 -o /home/pi/dxlAPRS/aprs/pipe2 -L omni -I OE3JTB-11 -u 127.0.0.1:18000 -S 5 -c 0 -v -n 0 -M 127.0.0.1:18502" C-m
echo
sleep 3
EIn Beispiel cfg File sieht bei mir so aus
# Created: 08.11.2021 22:12:12
f 401.740 5 0 0 8000
f 401.350 5 0 0 8000
f 401.860 5 0 0 8000
f 401.000 8 0 0 19000
s 400.100 401.980 2500 3 6000
Hierbei ist es ganz wichtig, dass die Bandgrenzen des Sticks nicht überschritten werden, sonst kommen sehr eigenartige Ergebnisse zu Tage !!!
Die erstellten Bilddateien liegen im Verzeichnis /tmp, Benamsung siehe oben. Da jetzt dauernd etwas "geschrieben" wird, sollte man das tmp Verzeichnis als Ramdisk konfigurieren, soferne das nicht schon gemacht wurde, sonst ist die SD Karte bald hinüber.
Das geschieht durch einen EIntrag in /etc/fstab
tmpfs /tmp tmpfs defaults,noatime 0 0
Dann den Pi neu starten.
Abschließend kann man im Startscript, siehe oben noch ein 7tes Tmux Fenster einbauen, damit die Python scripts gestartet weren. Ganz unten im Script das hinzufügen
#------------------------------------------------------------------------------------------------------------------------------------------------------
# Wasserfalldisplay für jeden Stick
#------------------------------------------------------------------------------------------------------------------------------------------------------
#tmux Waterfall window erstellen
tmux new-window -t sonde -n WATERFALL
#tmux panes erstellen und starten
tmux split-window -v
tmux split-window -v
# Waterfall Stick 0
tmux select-pane -t 0
tmux send-keys "python3 $HOME/waterfall0.py -n 50" C-m
# Waterfall Stick 1
tmux select-pane -t 1
tmux send-keys "python3 $HOME/waterfall1.py -n 50" C-m
# Waterfall Stick 2
tmux select-pane -t 2
tmux send-keys "python3 $HOME/waterfall2.py -n 50" C-m
echo
sleep 3
Anzeige von Signalen, aber keine Decodierung?
Es kann vorkommen, dass im Wasserfall Display Signale angezeigt werden, die nicht decodiert werden.
Wie man herausfinden kann, ob es sich im Satelliten handelt, kann man links im Video ansehen.
Auf der Satnogs Seite findet man die möglichen Sats, NORAD ID kann man bei N2YO abfragen und in Echtzeit den Footprint sehen. Somit kann man beurteilen, obs dieser Sat ist.
Nutzen der API Schnittstelle von Sondehub
Wenn man sich die raufgeladenenPakete einer Sonde bei Sondehub ansehen mag, ist die API empfehlenswert
zB
https://api.v2.sondehub.org/sonde/U1470400 jeweiliger Sondennamen. MIt diversen json Browsererweiterungen kann man dann eine schöne Übersicht erzielen, suchen etc....
mehr Information aus der DXL Toolchain
Die DXL Tool Chain ist ja sehr umfangreich, einige Einstellungen lassen sich aus dem Quellcode ab Zeile 540 herauslesen. Da das aber sicher nicht jedermanns Sache ist, möchte ich hier eine kleine Anleitung teilen, um Interessierte daran teilhaben zulassen. Wenn man hier schaut , sieht man beim letzten Paket einige Parameter im Kommentarfeld, bei anderen Rufzeichen nicht vorhanden sind. Diese Werte werden aus der Telemetrie ausgelesen.
Um die Werte in die Kommentarzeile zu bringen, sind die Parameter in sondemod, und zwar -t, -v, -N, -P und -S verantwortlich
sondemod -o 18000 -I OE3JTB-11 -r 127.0.0.1:9001 -b 20 -B 6 -A 1500 -x /tmp/e.txt -T 360 -R 240 -d -p 2 -t /home/pi/dxlAPRS/aprs/sondecom.txt -v -N 650 -P JN78QN60SM -S /home/pi
in der Datei sondecom.txt sind bei mir diese Werte eingetragen
%d%F%r%v
%n%s%u
%A%D%E%l
Bedeutung der Parameter
%A Azimuth from sonde-rx, (-P needed too)
%d rssi if received with sdrtst -e
%D Distance to sonde-rx, (-P -S needed too with EGM96)
%E Elevation to sonde, (-P -S needed too with EGM96)
%F same as "f" but send always
%f sdr freq+AFC from sdrtst with -e and not (yet) got MHz from sonde
%l label given in sondeudp -L eg. "omni" "west" "rx1"
%n frame number if avaliable
%r hdil if avaliable, gps horizontal noise in meter
%s gps sat count if avaliable
%u sonde uptime if avaliable
%v sondemod version
# or empty line(s) for comment-free beacons
Damit werden Abstand zur Sonde, Elevation, GPS Abweichung etc. angezeigt.
Ein wichtiges Feature ist auch das Overground Feature, das muss alerdings extra aktiviert werden, hier brauchen wir -N, das ist die Höhe meines Standortes, die eigenen Koordinaten -P im Maidenhead Format und SRTM Dateien (diese werden im Ordner srtm1 unter dem Home Verzeichnis erwartet. Die füe OE und Teile von DL 3 benötigen N48E014.hgt, N48E015.hgt und N48E016.hgt können hier runtergeladen werden (diese Dateien sind für OE, für DL oder andere Gebiete bitte die dementsprechenden Daten hier runterladen).
Chrischan war so nett und hat eine Weltkarte gefunden, wo die Dateien für die ganze Welt heruntergeladen werden können, Vielen Dank dafür.
Eine letzte EGM96 Datei (WW15MGH.DAC) brauchen wir noch, diese kopieren wir unter /home/pi, wenn das euer home Verzeichnis ist.
Zum Kopieren unter Windows empfehle ich , für diejenigen, die nicht so mit wget etc. vertraut sind WINSCP.
Wenn alles richtig konfiguriert ist, sollten dann solche Werte im Kommentarfeld ersichtlich sein.
Benachrichtung bei verschlüsselten Sonden der Type RS41 SGM
Öfters als man denkt, sind verschlüsselte Sonden, die vom Militär gestartet werden, unterwegs.
Leider geben diese Sonden keine Position für die Öffentlichkeit preis, aber zumindest den Namen, Framenummer und eine relative Feldstärke, sowie die Frequenz bekommen zumindest heraus.
Seit der Version 1.37b gibt es einen neuen Sondemod Parameter -X . Wenn dieser angegeben ist, wird bei Empfang einer verschlüsselten Sonde ein File erzeugt, welches den Sondennamen enthält.
sondemod -o 18000 -I OE3JTB-11 -r 127.0.0.1:9001 -b 19 -M -B 5 -A 1500 -X /$HOME/dxlAPRS/aprs/logs/encrypt.txt -x /tmp/e.txt -T 360 -R 240 -d -p 2 -L 6=DFM06,7=PS-15,9=PS-15,A=DFM09,B=DFM17,C=DFM09P,D=DFM17,FF=DFMx -t /home/pi/dxlAPRS/aprs/sondecom.txt -v -N 1313 -P JN77TX33FG -S /home/pi
Das alleine ist aber für eine mögliche Echtzeitbenachrichtigung noch nicht ausreichend, daher lasse ich mir über ein Pythonscript eine Mail schicken, wenn so ein File erzeugt wurde und lösche es danach wieder. Eine mögliche Vorlage für ein "sendmail.py", es ist noch nicht ausgereift , wurde von ChatGPT erstellt, aber es funktioniert soweit.
import os
import subprocess
import time
# Set the path of the directory to check for the file
directory_path = "/home/pi/dxlAPRS/aprs/logs"
# Set the name of the file to check for
file_name = "encrypt.txt"
# Set the recipient email address
recipient_email = "EMAILADRSSE@MAIL.COM" #ANPASSEN!!!!!!
# Set the subject line for the email
subject = "Example File Attached"
# Set the body of the email
body = "Encrypted probe on the air"
# Set the path to the file to attach
attachment_path = os.path.join(directory_path, file_name)
# Build the email command
#email_command = f"echo '{body}' | msmtp -t {recipient_email} -o message-file='{attachment_path}' -C /etc/msmtprc"
email_command = f" echo 'soso\n' | cat {attachment_path} | msmtp -a default {recipient_email} -C /etc/msmtprc"
#print (email_command)
while True:
# Check if the file exists in the directory
if os.path.exists(attachment_path):
print (attachment_path)
# Send the email with the attachment
subprocess.call(email_command, shell=True)
print("Email sent with attached file.")
# Delete the file
os.remove(attachment_path)
print("File deleted.")
# Wait for 10 minutes
time.sleep(600)
else:
print("Waiting for encrypted radiosonde")
# Wait for 180 second before checking again
time.sleep(180)
Wie man msmtp installiert, ist u.a. hier beschrieben.
DIe Config Datei für msmtp (-C /etc/msmtprc) ist etwas tricky, hier ein Beispiel im Zusammenspiel mit GMAIL
# Set default account
defaults
auth on
tls on
tls_starttls on
tls_trust_file /etc/ssl/certs/ca-certificates.crt
logfile /var/log/msmtp.log
# Gmail account
account default
host smtp.gmail.com
port 587
from xxxx@gmail.com
user xxxx@gmail.com
password GOOGLE APP PASSWORT!!!!
Mit sudo python3 sendmail.py wird das Script gestartet und läuft mit wenigen Systemressourcen
Wenn man in Echtzeit dann mitschauen möchte kann man vorher sondemod einen Log schreiben lassen
sondemod ... -v > /tmp/log
oder
-v | grep crypt > /tmp/log
und mit
grep cryp /tmp/log | sort -u -k 2,2
alle auflisten lassen
Upload zu Auto_RX mit dxlAPRS
Simon Schäfer hat ein Srcipt geschrieben, welches die Telemetriedaten aus dem Sondemode parsed und in AUTO_RX uploadfähige form bringt.
Hier verfügbar auf Github, die Doku ist so gut, dass ich hier nichts weiter reinschreiben muss. :-)
Dokumentation von Sondenfunden mit der Software QGIS
Ich wollte eine einfache zu bedienende Software zur Sondenfunddokumentation benutzen, mit dem Ziel nur die Daten von Radiosondy und den Fotos zu verwenden.
Die Daten der jeweiligen Sonden sind als CSV auf Radiosondy downloadbar, die Fotos haben bereits ein Geotagging.
Somit ist die Doku für eine gefundene Sonde in wenigen Minuten erledigt, beim darüberfahren mit der Maus über die Fotos wrd das jeweilige Foto angezeigt.
Sondenflug in Google Earth Pro darstellen
Es gab die Frage im Telegram Kanal , ob man Sondenflüge nachträglich ansehen kann. Das geht mit den Daten von Radiosondy und Google Earth Pro.
Daten der gewünschten Sonde downloaden von Radiosondy und im kml Format speichern.
Dann die Datei in Google Earth Pro laden, sie erscheint unter temporäre Orte
Diesen Eintrag unter meine Orte verschieben
Dann in Google Earth Pro unter Tools/Optionen/Touren den Punkt "an Linien entlangfliegen" aktivieren. Den Rest anpassen, wie es einem gefällt.
Dann zurück auf meine Orte, die gewünschte Sonde markieren und unten rechts auf das Symbol Tour abspielen drücken. Wenn man die roten Linien der Einzelpunkte des kml files nicht sehen mag, einfach den Haken linke von der Sondenbezeichnung rausnehmen
Angenehmen Flug :-)