Sondeudp

Aus DXL-Wiki
Zur Navigation springen Zur Suche springen

Beschreibung von sondeudp

sondeudp ist ein Multikanal Wettersondemodulator. Als Audioquelle kann sowohl eine OSS Soundquelle (Soundkarte), RAW/WAV-Datei oder eine Audiopipe genutzt werden. Zusammen mit sdrtst, sondemod und einem USB SDR-Stick kann ein multipler Wettersonden-RX aufgebaut werden, der eine Vielzahl an Frequenzen gleichzeitig überwacht und mitschreibt. sondeudp demoduliert ausschließlich das HF-Signal und gibt alle Daten digital per UDP an das Auswertetool sondemod weiter. Eine Auswertung findet auschließlich für die optische Darstellung in der Konsole/Bildschirmausgabe statt (-v).

Parameter Kurzbeschreibung

sondeudp -h

Mono/Stereo up to 64 Channel RS92, RS41, C34, C50, DFM, IMET, M10, M20, MRZ, MEISEI Sonde Demodulator
to raw Frames sent via UDP to 'sondemod' decoder or watch with -v V:1.37
more demodulators may send to same 'sondemod'
Stereo used for 2 Rx for 2 Sondes or 1 Sonde with Antenna-Diversity
 Switch off not needed decoders to save CPU
 -1             disable M10,M20 decoding (use -C before to select a channel)
 -2             disable MRZ,Meisei decoding (use -C before to select a channel)
 -3             disable SRSC34/50 decoding (use -C before to select a channel)
 -4             disable RS41 decoding (use -C before to select a channel)
 -6             disable DFM decoding (use -C before to select a channel)
 -8             disable IMET decoding (use -C before to select a channel)
 -9             disable RS92 decoding (use -C before to select a channel)
 +<typenum>     exclude from sleep if -W <s> set eg. "+4" no sleep RS41
 -a             abort on sounddevice error else retry to open (USB audio, pipe)
 -c <num>       maxchannels, 0 for automatic channel number recognition from sdrtst
 -C <num>       channel parameters follow (repeat for each channel)
 -D <filename>  write raw soundcard input data to file or pipe
                for debug or chaining demodulators (equalizer diversity)
 -e <num>       demod equalizer (0) 100=6db/oct highpass (-999..999)
                -C <n> before -e sets channel number
 -f <num>       adcrate (22050) (8000..96000)
 -g <minutes>   DFMxx (with no serial number) substitute name stability check before tx (1)
                default set to 3 on automatic serial number search "-n 0"
 -G <minutes>   no tx if DFMxx substitute Name changes (3)
 -h             help
 -I <call>      mycall + ssid (use -C before to select 1 channel) else sondemod sets call
 -l <num>       sound buffer length (256)
 -L <name>      Label of device sent to sondemod, max 4 char
 -M <x.x.x.x:destport> Send (human readable) UDP info about decoded data to Scanner
                  (or netcat) to weed out birdies, maybe repeated for more destinations
 -N <num>       1..255 generate DFM-ID from serial no. (see -V) (off)
                num is start byte of frame with serial no. in decimal "AC00070" -N 172
                0 automatic search serial number (default), increase -S for more reliability
 -n <num>       same as -N but send substitute name if no serial number found in "-g" min
 -O             DFM send "DF6..." with hex number else "D..." with decimal number
 -o <filename>  oss devicename (/dev/dsp) or raw/wav audio file or pipe /dev/stdin
 -s             disable sending sdr-data (freq/afc/rssi/label) to (old version) sondemod
 -S <retries>   check DFM serial number for stability before fixing name (1)
                on automatic search, minimum and default is 2
 -u <x.x.x.x:destport> send rx data in udp (to sondemod), -C <n> before sets
                channel number, maybe repeated for more destinations
 -V             very verbous, with some hex dumps
 -v             verbous, (frames with Name looks ok)
 -W <s>         cyclic sleep <seconds> inactive demodulators to save CPU
                  wakes 1..2s (dep. on type) and stay long awake if found fitting pattern
                  do not use in frequency-hopping environment
example: sondeudp -f 16000 -o /dev/dsp -c 2 -C 0 -e 50 -u 127.0.0.1:4000 -v

Ausführliche Beschreibung der Parameter

Parameter Beschreibung
1 Deaktiviert Dekodierung von M10 und M20 Sonden (-C davor benutzen um einen Kanal zu selektieren).
2 Deaktiviert Dekodierung von MRZ und Meisei Sonden (-C davor benutzen um einen Kanal zu selektieren).
3 Deaktiviert Dekodierung von SRSC34/50 Sonden (-C davor benutzen um einen Kanal zu selektieren).
4 Deaktiviert Dekodierung von RS41 Sonden (-C davor benutzen um einen Kanal zu selektieren).
6 Deaktiviert Dekodierung von DFM Sonden (-C davor benutzen um einen Kanal zu selektieren).
8 Deaktiviert Dekodierung von IMET Sonden (-C davor benutzen um einen Kanal zu selektieren).
9 Deaktiviert Dekodierung von RS92 Sonden (-C davor benutzen um einen Kanal zu selektieren).
+<typenum> Ausschließen von Sondentypen vom Schlafzyklus, wenn -W <sek> benutzt wird
Beispiel: "+4" deaktiviert den Schlafzyklus für RS41 Sonden.
a Abbruch bei Fehlern am Sounddevice. Ansonsten wird immer wieder versucht eine Verbindung zum Sounddevice herzustellen (USB Audio, pipe).
c <num> Maximale Anzahl der channels. 0 = Automatische Erkennung der channel-Anzahl von sdrtst.
C <num> channel Parameter folgen (Wiederholung für jeden channel).
D <filename> Schreibe den RAW-Soundkarteninput in eine Datei oder Pipe zum debuggen.
e <num> Demodulator Equalizer (Standard =0).
100=6db/Okt Hochpass (-999..999).
-C <n> vor -e wählt channel Nummer.
f <num> ADC-Rate (8000..96000). Standard = 22050.
g <min> Nur für DFM Sonden ohne Seriennummer: Beobachtung der automatischen Namenserzeugung für <min> Minuten bevor es weitergegeben wird. Standard = 1 Minute.
Bei automatischer Seriennummersuche mit "-n 0" wird der Wert automatisch auf 3 Minuten destgelegt.
G <min> Nur für DFM Sonden: Stoppt die Weitergabe der Daten für <min> Minuten wenn der automatisch erzeugte Name sich ändert (Standard = 3 Minuten).
h Hilfe
I <call> Eigenes Rufzeichen + SSID (Verwende -C davor um einen channel auszuwählen). Ansonsten setzt sondemod das Rufzeichen.
l <num> Audiopufferlänge. Standard = 256
L <name> Bezeichnung (label) des Gerätes (maximal vier Zeichen). Wird zu sondemod gesendet und kann dort mit in das APRS-Paket integriert werden. Man kann dadurch erkennen von welchem Gerät/welcher Antenne das empfangene Signal stammt.
M <x.x.x.x:destport> Sende (menschlich lasbare) UDP Informationen der dekodierten Daten zum Scanner (oder netcat) um Birdies zu bekämpfen. Kann wiederholt werden für mehrere Ziele.
N <num> 1..255 Generiere DFM-ID aus der Seriennummer (siehe -V). <num> ist das Startbyte des Frames mit der Seriennummer. Dezimal "AC00070" -N 172.
0 = Automatische Suche nach der Seriennummer (Standard). Erhöhe -S um Zuverlässigkeit zu verbessern.
n <num> Identisch mit -N aber sendet automatisch erzeugten Namen wenn keine Seriennummer gefunden wurde innerhalb "-g" Minuten.
O Bei DFM Sonden sende Sondennamen "DF6..." mit hex-Nummer, ansonsten "D..." mit Dezimalnummer.
o <filename> OSS Devicename (/dev/dsp) oder raw/wav Audiodatei oder Pipe /dev/stdin.
s Deaktiviere das Senden von SDR-Daten (Freq/AFC/RSSI/Label) zu alten Versionen von sondemod.
S <retries> Überprüfe die DFM Seriennummer auf Stabilität bevor der Name korrigiert wird bei der automatischen Suche. Minimum und Standard ist der Wert 2.
u <x.x.x.x:destport> Sende empfangene Daten in UDP (zu sondemod).
-C <n> davor setzt die channel-Nummer bei Bedarf.
Kann beliebig wiederholt werden für mehrere Ziele (bspw. notwendig um die Daten zusätzlich zu wetterson.de zu schicken).
V Aktiviert erweiterte Ausgabe am Bildschirm, mit vielen hex dumps.
v Aktiviert Ausgabe am Bildschirm.
W <sek> Versetzt die Demodulatoren in einen zyklischen Schlafzustand um die CPU-Auslastung zu reduzieren. Alle <sek> Sekunden wird auf jeder Frequenz geschaut ob ein Signal da ist. Falls eins gefunden wird, bleibt der Empfänger dauerhaft wach. Diese Option sollte nicht in Systemen verwendet werden, wo sich die Frequenzen regelmäßig ändern, z.B. bei Frequenzscannern.

Beispiel

Wettersonden-RX mit USB RTL SDR Stick, rtl_tcp und sdrtst.

Vorbereitung für sondeudp:

mknod /home/pi/dxlAPRS/aprs/sondepipe0 p  
rtl_tcp -a 127.0.0.1 -d0 -p 18100 -n 1
sdrtst -t 127.0.0.1:18100 -r 16000 -s /home/pi/dxlAPRS/aprs/sondepipe0 -Z 100 -c /home/pi/dxlAPRS/aprs/sdrcfg0.txt -e -k

Aufruf sondeudp:

sondeudp -f 16000 -o /home/pi/dxlAPRS/aprs/sondepipe0 -I MYCALL-11 -L SDR0 -u 127.0.0.1:18000 -c 0 -v -n 0 -W 5 -v

Erklärung:

  • Die digitale Abtastrate am Empfänger beträgt 16 KHz (-f). Wenn man Sonden vom Typ M10 empfangen möchte, muss hier und beim sdrtst die Abtastrate auf 25 KHz erhöht werden! Aber Achtung, dadurch entsteht höhere CPU-Last!
  • Der Ursprung der Audioquelle (-o) ist in der Soundpipe „sondepipe0“ (auf korrekten Pfad achten!). Pipe muss vorher mit „mknod sondepipe0 p“ angelegt worden sein.
  • Der Absender der Daten (-I) lautet „MYCALL-11“. Hier muss das eigene Rufzeichen eingetragen werden. Dieses Rufzeichen erscheint auch auf den Wettersondenseiten als Absender. Wenn man mehrere Sticks hat, kann das Rufzeichen inkl. SSID überall gleich bleiben. Man kann aber die SSID auch variieren um die einzelnen Empfänger unterscheiden zu können.
  • Eine weitere Differenzierung der Empfänger ist mit dem Parameter -L möglich. Es sind maximal vier Zeichen erlaubt. Oft wird dieser Parameter auch genommen um Antennenrichtungen zu definieren, z.B. „OST“, „WEST“, „NORD“, „SUED“. In der weiteren Signalverarbeitung kann man die Herkunft damit unterscheiden.
  • Die rohen Sondendaten werden mit -u IP:PORT zu sondemod gesendet. Dieser kann sich auch auf einem entfernten Rechner befinden, wie beispielsweise bei der Seite wetterson.de. Es können auch mehrere Ziele hintereinander angegeben werden: -u IP1:PORT1 -u IP2:PORT2 -u IP3:PORT3 usw.
  • Eine automatische Erkennung der Kanalanzahl im sdrtst bewirkt der Parameter „-c 0“
  • Damit DFM-Sonden automatisch numeriert werden können, sucht sondeudp automatisch nach einer mitgesendeten Seriennummer (-n 0) und verpasst damit der Sonde einen eindeutigen Namen.
  • Der Parameter -W sorgt dafür, dass die Empfänger in einen Standbymodus gehen und erst dann richtig wach werden, wenn wirklich ein Signal empfangen wird. Dies spart bei vielen gleichzeitig empfangenen Frequenzen CPU-Rechenleistung ein. Im genannten Beispiel wird alle 5 Sekunden nach einem Signal Ausschau gehalten.
  • Eine optische Ausgabe der empfangenen Daten erfolgt mit „-v“. Dies kann man bei unbeaufsichtigtem Betrieb auch weglassen, stört aber nicht weiter.