Tipps und Tricks

Installation der Toolchain von OE5DXL auf einem Raspberry PI 3+ und am PI 4



Vorbereitungen auf dem Windows PC



Vorbereitungen am Raspberry PI



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.

Noch ein Hinweis, da es siuch als durchaus praktikabel erwiesen hat, den Raspberry ein wenig abzusichern folgende Tipps

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

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:

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

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. 


Angenehmen Flug :-)