Afskmodem: Unterschied zwischen den Versionen

Aus DXL-Wiki
Zur Navigation springen Zur Suche springen
 
(54 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
= !!! DIESE SEITE IST NOCH IM AUFBAU !!! =
== Über afskmodem ==
== Über afskmodem ==


afskmodem ist ein leistungsfähiger Zweiwege Multichannel und Multibaud Dekoder/Enkoder für AFSK/FSK AX.25 paketbasierte Datenübertragung (Packet Radio, APRS).
afskmodem ist ein leistungsfähiger zweiwege Multichannel und Multibaud Dekoder/Enkoder für AFSK/FSK AX.25 paketbasierte Datenübertragung (Packet Radio, APRS).
* Die Kommunikation mit einem Digi bzw. iGate erfolgt im AXUDP Format
* Die Kommunikation mit einem Digi bzw. iGate erfolgt im AXUDP Format ([http://xnet.swiss-artg.ch XNET ], [[udpbox]], [[udpgate4]]) usw. oder KISS Format (XASTIR usw.).
* Audioquelle bzw. -ziel können jedes OSS Soundsystem (weitere Infos siehe unten), aber auch Dateien sein (auch Audiopipes).  
* Audioquelle bzw. -ziel können jedes OSS Soundsystem (weitere Infos siehe unten) sein, aber auch Audiopipes. Echte WAV/RAW Dateien werden nicht (mehr) unterstützt.
* Für reine RX-Systeme kann afskmodem zusammen mit rtl_tcp und [[sdrtst]] auch mit gewöhnlichen USB RTL SDR-Sticks verwendet werden (z.B. RX only iGate)
* Für reine RX-Systeme kann afskmodem zusammen mit [[rtl_tcp]] und [[sdrtst]] auch mit gewöhnlichen USB RTL SDR-Sticks verwendet werden (z.B. RX only iGate)
* afskmodem unterstützt zeitgleich maximal acht Modems mit je maximal zwei channels (Stereo). Theroretisch wären pro Modem auch mehr channels möglich, ist aber einerseits kompliziert zu lösen und andererseits auch sehr praxisfern. Infos dazu gibt es bei Bedarf bei Chris OE5DXL direkt.
* afskmodem unterstützt zeitgleich maximal acht Modems mit je maximal zwei channels (Stereo Links und rechts). Theroretisch wären pro Modem auch noch mehr channels möglich, ist aber einerseits kompliziert zu lösen und andererseits auch sehr praxisfern. Infos dazu gibt es bei Bedarf bei Chris OE5DXL direkt.
* afskmodem unterstützt alle gängigen Baudraten, von 1200/2400 Baud AFSK über 9600/19200 Baud FSK. Es sind auch alle Baudraten dazwischen möglich, jedoch gibt es dafür keine Hardware zu kaufen. Es muss daher auf beiden Seiten mit dem afskmodem (Soundmodem) gearbeitet werden. Passend zu der Funk-Baudrate muss natürlich auch die Abtastrate eingestellt sein. Für höhere Baudraten ist ggf. eine höhere Abtastrate notwendig. Soundkarten unterstützen in der Regel 22050, 44100 oder 48000 Hz.


Zu OSS:
Zu OSS:
Die Zusammenarbeit mit dem ALSA Soundsystem ist derzeit nicht möglich und auch nicht geplant. Eine Linuxdistribution mit eingebautem OSS ist TinyCore Linux in einer Version kleiner als v4.55. Auch Distributionen mit eingebautem alsaoss könnten funktionieren. Praxistests dazu gibt es aber nicht, hier kann noch viel experimentiert werden.
Die Zusammenarbeit mit dem ALSA Soundsystem ist derzeit nicht möglich und auch nicht geplant. Eine Linuxdistribution mit eingebautem OSS ist TinyCore Linux in einer Version kleiner als v4.55. Auch Distributionen mit eingebautem alsaoss könnten funktionieren. Praxistests dazu gibt es aber nicht, hier kann noch viel experimentiert werden. Distributionen mit alsaoss (modprobe snd-pcm-oss) gehen normalerweise. osspd (mit Pulsaudio) und aoss-wrapper (vor der Modem Kommandozeile) taugen eher nur für RX.  


Wer ein funktionierendes OSS Interface bzw. einen mit afskmodem zusammenarbeitenden OSS Emulator auf einem RasbperryPi mit aktuellem Image  mit wenig Aufwand zum Laufen bekommt, möge sich bitte melden! Nach so einer Lösung wird dringend gesucht!
Alternative:
Möchte man die dxlAPRS Software auf einem aktuellen Linux-System zusammen mit einem Soundkartenmodem verwenden, kann man auch z.B. Direwolf anstatt AFSKMODEM als Soundmodem verwenden. [[Direwolf]] und dxlAPRS werden über [[udpflex]] miteinander verbunden. Weitere Informationen findet man auf dieser Seite: [[Direwolf]]


== Kurzübersicht der Parameter ==
== Kurzübersicht der Parameter ==
Zeile 88: Zeile 91:
== Ausführliche Beschreibung der Parameter ==
== Ausführliche Beschreibung der Parameter ==


=== Parameter für alle Modems ===
=== Globale Parameter ===
 
Dies sind allgemeine Parameter die später für alle Modems gelten, diese werden zu allererst definiert. Danach kommen die Channelparameter und zum Schluß die einzelnen Modems.


{| class="wikitable"
{| class="wikitable"
Zeile 94: Zeile 99:
! Parameter!! Beschreibung
! Parameter!! Beschreibung
|-
|-
| a|| abort on sounddevice error else retry to open
| a|| Bei Fehler am Sounddevice wird abgebrochen. Standardmäßig wird immer weiter versucht das Sounddevice wieder zu erreichen.
|-
|-
| b <num>|| tx dacbuffers (10) (more to avoid underruns)
| b <num>|| Sende-DAC-Puffer. Standard = 10. Kann erhöht werden, um ein leerlaufen (underrun) zu verhindern.
|-
|-
| B|| bad sound driver repair, sending continuous quietness to avoid receive sample loss on start/stop of sound output. Use for stereo or fullduplex)
| B|| "Repariert" einen schlechten Soundtreiber, indem es durchgehende Stille sendet um Sampleverluste bei Beginn und Ende des Soundoutputs zu vermeiden. Sollte bei Stereo oder Volduplexmodus verwendet werden.
|-
|-
| c <num>|| maxchannels (1) (1=mono, 2=stereo)
| c <num>|| Maximale Anzahl der channels pro Modem. 1 = Mono, 2 = Stereo. Standard = 1 Mono. afskmodem kann maximal zwei Kanäle verarbeiten, auch wenn mehr Kanäle angeliefert werden durch sdrtst.
|-
|-
| D <filename>|| (debug) write raw soundcard input data to file or pipe
| D <filename>|| Schreibe Rohdaten der Soundquelle in eine Datei oder eine Audiopipe.<br />-D <pipe> geht zum anhängen eines weiteren Modems oder einem sonstigen Audiotool.
|-
|-
| D <filename>.txt|| (debug) write demodulated bits as "01.." to file or pipe
| D <filename>.txt|| Schreibe demodulierte Bits als "01.." in eine Datei oder eine Audiopipe.
|-
|-
| e <num>|| additional ptt hold time (if soundsystem has delay) unit=adcbuffers (1)
| e <num>|| Zusätzliche PTT Haltezeit im Falle dass das Soundsystem eine Verzögerung mitbringt. unit=adcbuffers (1)
|-
|-
| f <num>|| adcrate (16000) (8000..96000)
| f <num>|| Abtastrate/Samplerate (8000..96000). Standard = 16000, damit sollten 1k2 und 9k6 einwandfrei gehen.
|-
|-
| h|| Hilfe
| h|| Hilfe
|-
|-
| i <filename>|| kiss pipename (/dev/kiss/soundmodem)
| i <filename>|| KISS Pipename (/dev/kiss/soundmodem)
|-
|-
| k <num>|| tx kiss bufs (60)
| k <num>|| KISS Sendepuffer. Standard = 60.
|-
|-
| l <num>|| adcbuffer length (256) more: lower system load but slower reaction
| l <num>|| Länge des ADC-Puffers. Ein höherer Wert reduziert die Systemlast, aber verlangsamt die Reaktionszeit. Standard = 256.
|-
|-
| m [<mixername>:]<channel>:<left>:<right>|| (0..255) ossmixer (/dev/mixer)
| m [<mixername>:]<channel>:<left>:<right>|| (0..255) ossmixer (/dev/mixer)
|-
|-
| o <filename>|| oss devicename (/dev/dsp)
| o <filename>|| Name des OSS Device. Standard = /dev/dsp.
|-
|-
| o <infilename,outfilename>|| /dev/stdin,outpipe  (mknod outpipe p)<br/>for play/rec with sox use -B as sox/alsa can only continuous sound<br/>play -r 16000 -t raw -e signed-integer -c 1 -b 16 --buffer 1000 -q<br/>rec -r 16000 -t raw -c 1 -b 16 -q - | afskmodem -B -f 16000 -o /dev/stdin,outpipe ...<br/>make PTT with VOX as io-bits are not synchrone to sound with variable delay
| o <infilename,outfilename>|| /dev/stdin oder Audiopipe (mknod audiopipe p)<br/>Für Wiedergabe und Aufnahme mit sox -B benutzen da sox/alsa einen kontinuierlichen Ton benötigt.<br/>play -r 16000 -t raw -e signed-integer -c 1 -b 16 --buffer 1000 -q<br/>rec -r 16000 -t raw -c 1 -b 16 -q - <nowiki>|</nowiki> afskmodem -B -f 16000 -o /dev/stdin,outpipe ...<br/>Die PTT sollte mit VOX angesteuert werden, da die IO-Bits nicht synchron mit dem Sound sind und die Verzögerung unterschiedlch ist.<br />Echte Dateien werden als Soundquelle nicht mehr angenommen, da es in der Vergangenheit etliche "Unfälle" gab mit fehlerhaft angelegten Soundpipes, was dazu führte dass immer gleiche Daten in Dauerschleife vermeintlich dekodiert und weitergeleitet wurden. Entweder echtes OSS Device oder Pipe benutzen!
|-
|-
| s <num>|| fragment size in 2^n (9)
| s <num>|| Fragmentgröße in 2^n (9)
|}
|}


=== Wiederholend für jeden channel ===
=== Channelparameter ===
 
Für jeden Channel können vor der Definition der Modems noch Einstellungen festgelegt werden, und zwar hintereinander für jeden channel einzeln in folgendem Schema:
 
<nowiki>afskmodem -o /dev/dsp1 -f 22050 -c 2    -C 0 -p /dev/ttyS0 0 ...    -C 1 -p /dev/ttyS0 1 ... -M 0 ... -M 1 ... usw.</nowiki>


{| class="wikitable"
{| class="wikitable"
Zeile 133: Zeile 142:
! Parameter!! Beschreibung
! Parameter!! Beschreibung
|-
|-
| C <num>|| (0..1) channel parameters follow (repeat for each channel)
| C <num>|| (0..1) channel Parameter folgen (wiederholend für jeden channel)
|-
|-
| p <devname> <pttbit>|| pttport and bit to switch<br/>* /dev/ttyXX for serial<br/>* /dev/parport0 for parallel<br/>* gpio for kernel gpio-interface<br/>choose value for <pttbit>:<br/>* tty: 0=RTS, 1=DTR<br/>* parport: 0...7 / -0...-7 (inverted)
| p <devname> <pttbit>|| PTT-Port und Bit zum umschalten<br/>* /dev/ttyXX for serielle Verbidnung<br/>* /dev/parport0 für parallele Verbindung<br/>* gpio für Kernel GPIO-Interface<br/>Parametermöglichkeiten für <pttbit>:<br/>* tty: 0=RTS, 1=DTR<br/>* parport: 0...7 / -0...-7 (invertiert)
|-
|-
| u|| close ptt-tty file between switch actions, may not work on USB tty
| u|| Schließe ttyp Verbindung zwischen den Schaltaktionen. Könnte bei USB-tty Verbindungen nicht funktionieren.
|-
|-
| f <num>|| (0) (0=halfduplex, 1=master fullduplex, 2=all fullduplex, 3=simplex 'stereo never both tx same time')
| f <num>|| (0) (0=Halbduplex, 1=Master Vollduplex, 2=Alle Vollduplex, 3=Simplex 'Bei Stereo niemals gleichzeitig TX').
|-
|-
| g <ms>|| GM900 audio quiet time after ptt on (0)
| g <ms>|| GM900 Audio stumm Zeit nach PTT aktivieren (Standard = 0).
|-
|-
| r <num>|| max random wait time after dcd before start tx (ms) (800)
| r <num>|| Maximale zufällige Wartezeit nach DCD bevor gesendet wird in ms (Standard = 800).
|}
|}


=== Wiederholend für jedes Modem ===
=== Modemparameter ===
 
Zum Abschluss können hier Parameter für bis zu acht Modems definiert werden. Man beginnt bei Modem 0 (-M 0 Parameter 1 Parameter 2 usw.) bis maximal Modem 7 (-M 7 Parameter 1 Parameter 2 usw.).


{| class="wikitable"
{| class="wikitable"
Zeile 152: Zeile 163:
! Parameter!! Beschreibung
! Parameter!! Beschreibung
|-
|-
| M <num>|| (0..7) modem parameters follow (repeat for each modem)
| M <num>|| (0..7) Modem Parameter folgen (Wiederholend für jedes Modem)<br />Alles was nach -M kommt, ist quasi eine eigene Welt, die Parameterbuchstaben werden hier meist nochmal verwendet, haben aber mit den gleichnamigen anderen Parametern nix zu tun.
|-
|-
| a|| afsk off, fsk on (on)
| a|| Aktiviert FSK Modulation statt AFSK.
|-
|-
| b <num>|| baud (1200) (1..32000)
| b <num>|| Funk-Baudrate. Mögliche Werte sind von 1 bis 32000 Baud (Standard = 1200).
|-
|-
| B <kbyte>|| send BERT, (negative bytes receive only)
| B <kbyte>|| Sende BERT (Testmodus). Negative Bytewerte sind für nur RX Test.
|-
|-
| c <num>|| use stereo channel 0=left (or mono), 1=right
| c <num>|| Verwende vom Stereo channel den Linken (=0) oder Rechten (=1) Kanal. Bei einem Mono-Signal ist es immer channel = 0.
|-
|-
| d <num>|| dcdlevel, 0 no dcd (56) (0..100)
| d <num>|| DCD-Level. 0 = keine DCD. Mögliche Werte sind 0..100 (Standard = 56)<br />Das Modem benötigt Rauschen für ein gutes DCD.
|-
|-
| e <num>|| demod equalizer (0) 100=6db/oct highpass   (-999..999)
| e <num>|| Demod Equalizer (0) 100=6db/oct Hochpass   (-999..999)
|-
|-
| f <num>|| afsk mid frequency, tx and rx (hz) (1700)
| f <num>|| AFSK Mittenfrequenz für TX und RX in Herz (Standard = 1700)
|-
|-
| g|| g3ruh scrambler on (off)
| g|| Aktiviert G3RUH Codierung.
|-
|-
| H <num>|| afsk tx highpass (0) (0..100)
| H <num>|| AFSK TX Hochpass. Mögliche Werte sind 0..100 (Standard = 0)
|-
|-
| i|| ignore modem parameters from kiss (off)
| i|| Ignoriere Modem Parameter von KISS (Standard = aus)
|-
|-
| k <num>|| received data send to this kiss port (0) (0..7)
| k <num>|| Sende empfangene Daten an diesen KISS Port (0..7). Standard = 0.
|-
|-
| m <num>|| monitor (2) (0=off, 1=header, 2=all, 3=passall)
| m <num>|| Monitor: 0=Aus, 1=Header, 2=Alles, 3=Alles durchlassen . Standard = 2.<br />3 ist Monitor ohne CRC-Check. Für Datenweitergabe bleibt der CRC-Check eingeschaltet.
|-
|-
| n <num>|| nyquist filter baseband -6db point in % of baudrate (65) (0..100)
| n <num>|| Tiefpassfilter (Nyquist Filter ) für das RX-Basisband, in % von den Baud (0..100). Standard = 65%.<br />Beispiel: Bei 1200 Baud 50% sind dann 600 Hz.
|-
|-
| P|| same as -U but use AXUDP v2, send dcd and txbuffer empty messages
| P|| Identisch mit -U, benutzt jedoch AXUDP v2. Übertrage Informationen zur DCD und ob TX-Puffer leer ist oder nicht (für l2cat und modifizierten flexnet treiber).
|-
|-
| p <num>|| receive clock pll aquisition speed (16) (num/256 of bit time)
| p <num>|| Wieviel von der Bit-Zeit soll nachjustiert werden zum Bittakt regenerieren (num/256 der Bit-Zeit). Standard = 16.
|-
|-
| q <num>|| quiet adc level to save cpu or avoid reciption of channel crosstalk (0)
| q <num>|| Reduziere ADC Pegel um Rechenzeit zu sparen oder ein "Übersprechen" auf Stereo-Leitungen zu verhindern. Standard = 0.<br /> Wird nur bei echten Stereo-Audioleitungen benötigt, und nicht bei SDR Setups.<br />Bei Pegeln kleiner als <num> wird stumm geschaltet.
|-
|-
| s <num>|| afsk shift tx (for rx bandfilter width) (1000) (hz)
| s <num>|| AFSK TX Shift in Herz. Für RX siehe Bandfilter Breite). Standard = 1000.
|-
|-
| t <num>|| txdelay (300) (ms)
| t <num>|| [[TX-Delay]]. Standard = 300 (ms). Dies sollte so niedrig wie möglich gewählt werden!
|-
|-
| T <seconds>|| timeout for tx buffered frame (60) (s)
| T <seconds>|| Timeout für gepufferte Sendeframes. Standard = 60(s).<br />Für APRS wenige Sekunden, vermeidet bei stark belegter Frequenz verspätet ausgesendete Baken und ein noch mehr zumüllen der Frequenz.
|-
|-
| U <[x.x.x.x]:destport:listenport>|| use axudp instead of kiss /listenport check ip
| U <[x.x.x.x]:destport:listenport>|| Benutze AXUDP anstatt KISS. Mit /listenport anstatt :listenport wird die IP geprüft und es werden nur Daten von der angegebenen IP angenommen.
|-
|-
| L|| same as -U but use AXUDP v2 (no dcd and txbuffer empty messages)
| L|| Wie -U, jedoch im AXUDP v2 Format, aber ohne die "DCD" und "TX-Sendepuffer leer oder nicht" Informationen.
|-
|-
| v <num>|| tx loudness (100)
| v <num>|| TX Lautstärke (Standard = 100)
|-
|-
| w <num>|| txdelay pattern before 1 flag (126) (0..255)
| w <num>|| Bestimmt das "Aussehen" des [[TX-Delay]] vor dem 1-Flag, also dem Beginn des Datenteils (0..255). Standard = 126, das entspricht dem Bitmuster 7E hex bzw. 01111110. Der Wert "0" synchronisiert am besten.
|-
|-
| x <num>|| txtail (20) (ms), ptt hold for fullduplex
| x <num>|| TX-Tail. PTT Haltezeit für Fullduplexbetrieb. Standard = 20 (ms).
|-
|-
| z <num>|| fsk rx baseband dc regeneration clamp speed (996) (0=off, 1=fast, 999=slow)
| z <num>|| FSK RX Basisband DC Regeneration Klemmschaltung Haltezeit. 0=Aus, 1=Schnell, 999=Langsam. Standard = 996.
|}
|}
Ein Tipp fuer mehr Baud mit einem SDR Stick:
[[sdrtst]] Sampelrate 128000. afskmodem 32000. Dann ist die wirkliche Baudrate am Modem mal 4, also fuer 76800 -b 19200 (und auch alle Timer mal 4 die bei nur RX nix tun).


== Konfigurationsbeispiele ==
== Konfigurationsbeispiele ==
Zeile 210: Zeile 225:


  <nowiki>afskmodem -f 16000 -o /home/pi/dxlAPRS/aprs/aprspipe -c 1 -M 0 -c 0 -L 127.0.0.1:9001:0</nowiki>
  <nowiki>afskmodem -f 16000 -o /home/pi/dxlAPRS/aprs/aprspipe -c 1 -M 0 -c 0 -L 127.0.0.1:9001:0</nowiki>
* Eine AX.25 Baudrate wird hier absichtlich nicht angegeben, da standardmäßig 1200 Baud definiert sind, und das ist üblich auf UKW.
* -f nennt die Abstastrate des Audiofiles. 16 KHz reicht gut aus für 1200 Baud.
* -o gibt die Quelle des Audiofiles an, in diesem Fall eine Audiopipe (mknod audiopipe p).
* -c ist die Anzahl der Kanäle die verwendet werden. Hier ist es nur einer (Mono).
* -M 0 definiert das erste Modem, die folgenden Parameter (bis zum nächsten -M) werden diesem Modem zugeordnet.
** -c 0 bezieht sich auf den ersten (Mono) Kanal.
** -L sendet die dekodierten AX.25 Daten im AXUDP-Format an das Ziel 127.0.0.1 (gleicher PC) an Port 9001. Der Listenport ist mit 0 angegeben, da es keinen Sendezweig gibt (RX only).


=== SDR mit Zweikanalempfang ===
=== SDR mit Zweikanalempfang ===


  <nowiki>afskmodem -f 16000 -o /home/pi/dxlAPRS/aprs/aprspipe -c 2 -M 0 -c 0 -L 127.0.0.1:9001:0 -M 1 -c 1 -L 127.0.0.1:9002:0</nowiki>
Zum besseren Verständnis wird die Syntax auf mehrere Zeilen aufgeteilt. Im Startskript muss dann alles hintereinander stehen.
 
  <nowiki>
afskmodem -f 16000 -o /home/pi/dxlAPRS/aprs/aprspipe -c 2  
          -M 0 -c 0 -L 127.0.0.1:9001:0  
          -M 1 -c 1 -L 127.0.0.1:9002:0
</nowiki>
 
* Eine AX.25 Baudrate wird hier absichtlich nicht angegeben, da standardmäßig 1200 Baud definiert sind, und das ist üblich auf UKW.
* -f nennt die Abstastrate des Audiofiles. 16 KHz reicht gut aus für 1200 Baud.
* -o gibt die Quelle des Audiofiles an, in diesem Fall eine Audiopipe (mknod audiopipe p).
* -c ist die Anzahl der Kanäle die verwendet werden. Hier sind es zwei, das es sich um ein Stereosignal handelt.
* -M 0 definiert das erste Modem, die folgenden Parameter (bis zum nächsten -M) werden diesem Modem zugeordnet.
** -c 0 bezieht sich auf den ersten Kanal des Stereosignals.
** -L sendet die dekodierten AX.25 Daten im AXUDP-Format an das Ziel 127.0.0.1 (gleicher PC) an Port 9001. Der Listenport ist mit 0 angegeben, da es keinen Sendezweig gibt (RX only).
* -M 1 definiert das zweite Modem, die folgenden Parameter (bis zum nächsten -M) werden diesem Modem zugeordnet.
** -c 1 bezieht sich auf den zweiten Kanal des Stereosignals
** -L sendet die dekodierten AX.25 Daten im AXUDP-Format an das Ziel 127.0.0.1 (gleicher PC) an Port 9002. Der Listenport ist mit 0 angegeben, da es keinen Sendezweig gibt (RX only).
* Auch wenn man mit dieser Variante zwei Frequenzen gleichzeitig mithört, sollte man die dekodierten Daten an zwei unterschiedliche Ports senden, damit man die Quelle unterscheiden kann. Im iGate [[udpgate4]] kann man dies dann seperat darstellen und sehen, welches Signal auf welcher Frequenz empfangen wurde. Wenn man beide Quellen zusammenwürfelt, erkennt man das nicht mehr.
 
=== Multibaud-RX mit SDR ===
 
Dieser Multibaud-RX empfäng sowohl 1200 Baud AFSK und 9600 Baud FSK auf der gleichen QRG. Zum besseren Verständnis wird die Syntax auf mehrere Zeilen aufgeteilt. Im Startskript muss dann alles hintereinander stehen.
 
<nowiki>
afskmodem -f 20000 -o /home/pi/dxlAPRS/aprs/aprspipe -c 1  
          -M 0 -c 0 -L 127.0.0.1:9001:0
          -M 1 -c 0 -b 9600 -a -g -L 127.0.0.1:9002:0
</nowiki>
 
Für den Empfang von 9600 Baud sollte der Empfänger im [[sdrtst]] etwas mehr ZF-Bandbreite erhalten, da 12 KHz (Standard) etwas eng wird. Mit 16 KHz geht das dann schon besser. Allerdings je größer die ZF-Bandbreite, desto unempfindlicher wird der Empfänger. Doppelte Bandbreite = -3 dB. Auch die Abtastrate muss dann höher werden, also -f. Dies muss auch mit [[sdrtst]] Parameter -r entsprechend abgestimmt werden.
 
<nowiki>
f 144.80 0 0 0 16000
</nowiki>
 
* -f nennt die Abstastrate des Audiofiles. 20 KHz reicht gut aus für 1200 Baud AFSK und 9600 Baud FSK.
* -o gibt die Quelle des Audiofiles an, in diesem Fall eine Audiopipe (mknod audiopipe p).
* -c ist die Anzahl der Kanäle die verwendet werden. Hier ist es nur einer (Mono).
* -M 0 definiert das erste Modem, die folgenden Parameter (bis zum nächsten -M) werden diesem Modem zugeordnet.
** -c 0 bezieht sich auf den ersten (Mono) Kanal.
** -L sendet die dekodierten AX.25 Daten im AXUDP-Format an das Ziel 127.0.0.1 (gleicher PC) an Port 9001. Der Listenport ist mit 0 angegeben, da es keinen Sendezweig gibt (RX only).
* -M 1 definiert das zweite Modem, die folgenden Parameter (bis zum nächsten -M) werden diesem Modem zugeordnet.
** -c 0 bezieht sich genauso wie Modem 0 auf den ersten (Mono) Kanal - wir wollen ja auf der gleichen QRG mehrere Baudraten empfangen.
** -b 9600 definiert die Baudrate auf 9k6, -a aktiviert die FSK Modulation und -g das G3RUH Codierungsverfahren. Dies entspricht dem üblichen 9600 Baud FSK Verfahren im Amateurfunk.
** -L sendet die dekodierten AX.25 Daten im AXUDP-Format an das Ziel 127.0.0.1 (gleicher PC) an Port 9002. Der Listenport ist mit 0 angegeben, da es keinen Sendezweig gibt (RX only).
 
=== Gateway mit Kurzwelle (300 Baud) und 2m (1200 Baud) Empfang ===
 
Im folgenden Beispiel von OE5DXL ist an der Soundkarte des PCs auf dem linken Kanal ein UKW 144 MHz TRX und auf dem rechten Kanal ein Kurzwellen 10 MHz TRX angeschlossen. Weiterhin wird an der seriellen Schnittstelle die PTT für beide TRXe geschalten, einer mit RTS und der andere mit DTS. Zum besseren Verständnis wird die Syntax auf mehrere Zeilen aufgeteilt. Im Startskript muss dann alles hintereinander stehen.
 
<nowiki>
afskmodem -o /dev/dsp1 -f 11025 -B -c 2
            -C 0 -p /dev/ttyS0 0 -r 0
            -C 1 -p /dev/ttyS0 1 -r 0
          -M 0 -c 0 -b 1200 -t 70 -q 500 -m 0 -d 0 -T 10 -L 127.0.0.1:2100:2611
          -M 1 -f 1900 -c 1 -b 300 -s 200 -w 0 -m 0 -L 127.0.0.1:2400:0
          -M 2 -f 1950 -c 1 -b 300 -s 200 -w 0 -m 0 -L 127.0.0.1:2401:0
          -M 3 -f 2000 -c 1 -b 300 -s 200 -w 0 -m 0 -t 225 -L 127.0.0.1:2402:2042
          -M 4 -f 2050 -c 1 -b 300 -s 200 -w 0 -m 0 -L 127.0.0.1:2403:0
          -M 5 -f 2100 -c 1 -b 300 -s 200 -w 0 -m 0 -L 127.0.0.1:2404:0
          -M 6 -f 2150 -c 1 -b 300 -s 200 -w 0 -m 0 -L 127.0.0.1:2405:0
</nowiki>
* Channel 0 mit Modem 0 ist 1200 Baud auf 144 MHz, mit TX-Delay von 70ms, ausgeschaltetem Monitor und ohne DCD Erkennung, 10s Timeout für gepufferte Frames, und die empfangenen Daten werden an Port 2100 gesendet. Auf Port 2611 nimmt das Modem Daten zum Senden entgegen.
* Modem 1 bis 6 beziehen sich alle auf den zweiten channel mit dem Kurzwellensignal. Da es hier schnell zu Frequenzverschiebungen kommen kann, gibt es sechs verschiedene Modems mit leicht verschobener Empfangsfrequenz. Alle empfangen mit 300 Baud AFSK.
* Jedoch wird nur Modem 3 zum Senden verwendet, nur dieser hat einen Listenport (2042) angegeben um zu sendende Daten anzunehmen. Das [[TX-Delay]] wird auch mit 225ms definiert.
* Die PTT wird durch die Parameter -C 0 und -C 1 für beide Kanäle getrennt definiert.
 
=== Zweikanal Multibaud TRX  bei OE2XZR ===
 
Zum besseren Verständnis wird die Syntax auf mehrere Zeilen aufgeteilt. Im Startskript muss dann alles hintereinander stehen.
 
<nowiki>
afskmodem -o /dev/dsp -B -b 5 -f 22050 -B -c 2
            -C 1 -p /dev/ttyS0 1 -r 0
            -C 0 -p /dev/ttyS0 0 -r 0 -g 60
          -M 0 -c 1 -T 10 -t 100 -w 0 -b 1200 -e 80 -q 100 -m 0 -L 127.0.0.1:2000:2100
          -M 1 -c 0 -t 150 -b 1200 -v 90 -q 100 -m 0 -P 127.0.0.1:2001:2101
          -M 2 -c 0 -b 2400 -f 2826 -s 1663 -t 140 -v 70 -q 100 -m 0 -P 127.0.0.1:2502:2102
          -M 3 -c 0 -b 4800 -a -g -t 140 -v 70 -q 100 -m 0 -P 127.0.0.1:2503:2103
          -M 4 -c 0 -b 9600 -a -g -t 130 -v 60 -q 100 -m 0 -P 127.0.0.1:2004:2104
</nowiki>
 
* Modem 0 auf Channel 1 ist ein 1200 baud TRX
* Die Modems 1 bis 4 auf Channel 0 sind ein Multibaud TRX für 1200 und 2400 baud AFSK sowie 4800 Baud und 9600 baud FSK nach G3RUH.

Aktuelle Version vom 15. Oktober 2021, 20:56 Uhr

Über afskmodem

afskmodem ist ein leistungsfähiger zweiwege Multichannel und Multibaud Dekoder/Enkoder für AFSK/FSK AX.25 paketbasierte Datenübertragung (Packet Radio, APRS).

  • Die Kommunikation mit einem Digi bzw. iGate erfolgt im AXUDP Format (XNET , udpbox, udpgate4) usw. oder KISS Format (XASTIR usw.).
  • Audioquelle bzw. -ziel können jedes OSS Soundsystem (weitere Infos siehe unten) sein, aber auch Audiopipes. Echte WAV/RAW Dateien werden nicht (mehr) unterstützt.
  • Für reine RX-Systeme kann afskmodem zusammen mit rtl_tcp und sdrtst auch mit gewöhnlichen USB RTL SDR-Sticks verwendet werden (z.B. RX only iGate)
  • afskmodem unterstützt zeitgleich maximal acht Modems mit je maximal zwei channels (Stereo Links und rechts). Theroretisch wären pro Modem auch noch mehr channels möglich, ist aber einerseits kompliziert zu lösen und andererseits auch sehr praxisfern. Infos dazu gibt es bei Bedarf bei Chris OE5DXL direkt.
  • afskmodem unterstützt alle gängigen Baudraten, von 1200/2400 Baud AFSK über 9600/19200 Baud FSK. Es sind auch alle Baudraten dazwischen möglich, jedoch gibt es dafür keine Hardware zu kaufen. Es muss daher auf beiden Seiten mit dem afskmodem (Soundmodem) gearbeitet werden. Passend zu der Funk-Baudrate muss natürlich auch die Abtastrate eingestellt sein. Für höhere Baudraten ist ggf. eine höhere Abtastrate notwendig. Soundkarten unterstützen in der Regel 22050, 44100 oder 48000 Hz.

Zu OSS: Die Zusammenarbeit mit dem ALSA Soundsystem ist derzeit nicht möglich und auch nicht geplant. Eine Linuxdistribution mit eingebautem OSS ist TinyCore Linux in einer Version kleiner als v4.55. Auch Distributionen mit eingebautem alsaoss könnten funktionieren. Praxistests dazu gibt es aber nicht, hier kann noch viel experimentiert werden. Distributionen mit alsaoss (modprobe snd-pcm-oss) gehen normalerweise. osspd (mit Pulsaudio) und aoss-wrapper (vor der Modem Kommandozeile) taugen eher nur für RX.

Wer ein funktionierendes OSS Interface bzw. einen mit afskmodem zusammenarbeitenden OSS Emulator auf einem RasbperryPi mit aktuellem Image mit wenig Aufwand zum Laufen bekommt, möge sich bitte melden! Nach so einer Lösung wird dringend gesucht!

Alternative: Möchte man die dxlAPRS Software auf einem aktuellen Linux-System zusammen mit einem Soundkartenmodem verwenden, kann man auch z.B. Direwolf anstatt AFSKMODEM als Soundmodem verwenden. Direwolf und dxlAPRS werden über udpflex miteinander verbunden. Weitere Informationen findet man auf dieser Seite: Direwolf

Kurzübersicht der Parameter

afskmodem -h

first for all modems
 -a             abort on sounddevice error else retry to open
 -b <num>       tx dacbuffers (10) (more to avoid underruns)
 -B             bad sound driver repair, sending continuous quietness to avoid receive
                sample loss on start/stop of sound output. Use for stereo or fullduplex)
 -c <num>       maxchannels (1) (1=mono, 2=stereo)
 -D <filename>  (debug) write raw soundcard input data to file or pipe
 -D <filename>.txt  (debug) write demodulated bits as "01.." to file or pipe
 -e <num>       additional ptt hold time (if soundsystem has delay) unit=adcbuffers (1)
 -f <num>       adcrate (16000) (8000..96000)
 -h             help
 -i <filename>  kiss pipename (/dev/kiss/soundmodem)
 -k <num>       tx kiss bufs (60)
 -l <num>       adcbuffer length (256) more: lower system load but slower reaction
 -m [<mixername>:]<channel>:<left>:<right> (0..255) ossmixer (/dev/mixer)
 -o <filename>  oss devicename (/dev/dsp)
 -o <infilename,outfilename>       /dev/stdin,outpipe  (mknod outpipe p)
                 for play/rec with sox use -B as sox/alsa can only continuous sound
                 play -r 16000 -t raw -e signed-integer -c 1 -b 16 --buffer 1000 -q
                 rec -r 16000 -t raw -c 1 -b 16 -q - | afskmodem -B -f 16000 -o /dev/stdin,outpipe ...
                 make PTT with VOX as io-bits are not synchrone to sound with variable delay
 -s <num>       fragment size in 2^n (9)

repeat for each channel -C ... :
  -C <num>              (0..1) channel parameters follow (repeat for each channel)
  -p <devname> <pttbit>  pttport and bit to switch
                         * /dev/ttyXX for serial
                         * /dev/parport0 for parallel
                         * gpio for kernel gpio-interface
                         choose value for <pttbit>:
                         * tty: 0=RTS, 1=DTR
                         * parport: 0...7 / -0...-7 (inverted)
  -u                    close ptt-tty file between switch actions, may not work on USB tty
  -f <num>              (0) (0=halfduplex, 1=master fullduplex, 2=all fullduplex,
                        3=simplex 'stereo never both tx same time')
  -g <ms>               GM900 audio quiet time after ptt on (0)
  -r <num>              max random wait time after dcd before start tx (ms) (800)

repeat for each modem -M ... :
   -M <num> (0..7) modem parameters follow (repeat for each modem)
   -a       afsk off, fsk on (on)
   -b <num> baud (1200) (1..32000)
   -B <kbyte> send BERT, (negative bytes receive only)
   -c <num> use stereo channel 0=left (or mono), 1=right
   -d <num> dcdlevel, 0 no dcd (56) (0..100)
   -e <num> demod equalizer (0) 100=6db/oct highpass   (-999..999)
   -f <num> afsk mid frequency, tx and rx (hz) (1700)
   -g       g3ruh scrambler on (off)
   -H <num> afsk tx highpass (0) (0..100)
   -i       ignore modem parameters from kiss (off)
   -k <num> received data send to this kiss port (0) (0..7)
   -m <num> monitor (2) (0=off, 1=header, 2=all, 3=passall)
   -n <num> nyquist filter baseband -6db point in % of baudrate (65) (0..100)
   -P same as -U but use AXUDP v2, send dcd and txbuffer empty messages
   -p <num> receive clock pll aquisition speed (16) (num/256 of bit time)
   -q <num> quiet adc level to save cpu or avoid reciption of channel crosstalk (0)
   -s <num> afsk shift tx (for rx bandfilter width) (1000) (hz)
   -t <num> txdelay (300) (ms)
   -T <seconds> timeout for tx buffered frame (60) (s)
   -U <[x.x.x.x]:destport:listenport> use axudp instead of kiss /listenport check ip
   -L same as -U but use AXUDP v2 (no dcd and txbuffer empty messages)
   -v <num> tx loudness (100)
   -w <num> txdelay pattern before 1 flag (126) (0..255)
   -x <num> txtail (20) (ms), ptt hold for fullduplex
   -z <num> fsk rx baseband dc regeneration clamp speed (996) (0=off, 1=fast, 999=slow)
example: ./afskmodem -f 22050 -c 2 -C 0 -p /dev/ttyS0 0 -M 0 -c 0 -b 1200 -M 1 -c 1 -b 9600 -a -g -U 127.0.0.1:6001:1093


Ausführliche Beschreibung der Parameter

Globale Parameter

Dies sind allgemeine Parameter die später für alle Modems gelten, diese werden zu allererst definiert. Danach kommen die Channelparameter und zum Schluß die einzelnen Modems.

Parameter Beschreibung
a Bei Fehler am Sounddevice wird abgebrochen. Standardmäßig wird immer weiter versucht das Sounddevice wieder zu erreichen.
b <num> Sende-DAC-Puffer. Standard = 10. Kann erhöht werden, um ein leerlaufen (underrun) zu verhindern.
B "Repariert" einen schlechten Soundtreiber, indem es durchgehende Stille sendet um Sampleverluste bei Beginn und Ende des Soundoutputs zu vermeiden. Sollte bei Stereo oder Volduplexmodus verwendet werden.
c <num> Maximale Anzahl der channels pro Modem. 1 = Mono, 2 = Stereo. Standard = 1 Mono. afskmodem kann maximal zwei Kanäle verarbeiten, auch wenn mehr Kanäle angeliefert werden durch sdrtst.
D <filename> Schreibe Rohdaten der Soundquelle in eine Datei oder eine Audiopipe.
-D <pipe> geht zum anhängen eines weiteren Modems oder einem sonstigen Audiotool.
D <filename>.txt Schreibe demodulierte Bits als "01.." in eine Datei oder eine Audiopipe.
e <num> Zusätzliche PTT Haltezeit im Falle dass das Soundsystem eine Verzögerung mitbringt. unit=adcbuffers (1)
f <num> Abtastrate/Samplerate (8000..96000). Standard = 16000, damit sollten 1k2 und 9k6 einwandfrei gehen.
h Hilfe
i <filename> KISS Pipename (/dev/kiss/soundmodem)
k <num> KISS Sendepuffer. Standard = 60.
l <num> Länge des ADC-Puffers. Ein höherer Wert reduziert die Systemlast, aber verlangsamt die Reaktionszeit. Standard = 256.
m [<mixername>:]<channel>:<left>:<right> (0..255) ossmixer (/dev/mixer)
o <filename> Name des OSS Device. Standard = /dev/dsp.
o <infilename,outfilename> /dev/stdin oder Audiopipe (mknod audiopipe p)
Für Wiedergabe und Aufnahme mit sox -B benutzen da sox/alsa einen kontinuierlichen Ton benötigt.
play -r 16000 -t raw -e signed-integer -c 1 -b 16 --buffer 1000 -q
rec -r 16000 -t raw -c 1 -b 16 -q - | afskmodem -B -f 16000 -o /dev/stdin,outpipe ...
Die PTT sollte mit VOX angesteuert werden, da die IO-Bits nicht synchron mit dem Sound sind und die Verzögerung unterschiedlch ist.
Echte Dateien werden als Soundquelle nicht mehr angenommen, da es in der Vergangenheit etliche "Unfälle" gab mit fehlerhaft angelegten Soundpipes, was dazu führte dass immer gleiche Daten in Dauerschleife vermeintlich dekodiert und weitergeleitet wurden. Entweder echtes OSS Device oder Pipe benutzen!
s <num> Fragmentgröße in 2^n (9)

Channelparameter

Für jeden Channel können vor der Definition der Modems noch Einstellungen festgelegt werden, und zwar hintereinander für jeden channel einzeln in folgendem Schema:

afskmodem -o /dev/dsp1 -f 22050 -c 2    -C 0 -p /dev/ttyS0 0 ...    -C 1 -p /dev/ttyS0 1 ... -M 0 ... -M 1 ... usw.
Parameter Beschreibung
C <num> (0..1) channel Parameter folgen (wiederholend für jeden channel)
p <devname> <pttbit> PTT-Port und Bit zum umschalten
* /dev/ttyXX for serielle Verbidnung
* /dev/parport0 für parallele Verbindung
* gpio für Kernel GPIO-Interface
Parametermöglichkeiten für <pttbit>:
* tty: 0=RTS, 1=DTR
* parport: 0...7 / -0...-7 (invertiert)
u Schließe ttyp Verbindung zwischen den Schaltaktionen. Könnte bei USB-tty Verbindungen nicht funktionieren.
f <num> (0) (0=Halbduplex, 1=Master Vollduplex, 2=Alle Vollduplex, 3=Simplex 'Bei Stereo niemals gleichzeitig TX').
g <ms> GM900 Audio stumm Zeit nach PTT aktivieren (Standard = 0).
r <num> Maximale zufällige Wartezeit nach DCD bevor gesendet wird in ms (Standard = 800).

Modemparameter

Zum Abschluss können hier Parameter für bis zu acht Modems definiert werden. Man beginnt bei Modem 0 (-M 0 Parameter 1 Parameter 2 usw.) bis maximal Modem 7 (-M 7 Parameter 1 Parameter 2 usw.).

Parameter Beschreibung
M <num> (0..7) Modem Parameter folgen (Wiederholend für jedes Modem)
Alles was nach -M kommt, ist quasi eine eigene Welt, die Parameterbuchstaben werden hier meist nochmal verwendet, haben aber mit den gleichnamigen anderen Parametern nix zu tun.
a Aktiviert FSK Modulation statt AFSK.
b <num> Funk-Baudrate. Mögliche Werte sind von 1 bis 32000 Baud (Standard = 1200).
B <kbyte> Sende BERT (Testmodus). Negative Bytewerte sind für nur RX Test.
c <num> Verwende vom Stereo channel den Linken (=0) oder Rechten (=1) Kanal. Bei einem Mono-Signal ist es immer channel = 0.
d <num> DCD-Level. 0 = keine DCD. Mögliche Werte sind 0..100 (Standard = 56)
Das Modem benötigt Rauschen für ein gutes DCD.
e <num> Demod Equalizer (0) 100=6db/oct Hochpass (-999..999)
f <num> AFSK Mittenfrequenz für TX und RX in Herz (Standard = 1700)
g Aktiviert G3RUH Codierung.
H <num> AFSK TX Hochpass. Mögliche Werte sind 0..100 (Standard = 0)
i Ignoriere Modem Parameter von KISS (Standard = aus)
k <num> Sende empfangene Daten an diesen KISS Port (0..7). Standard = 0.
m <num> Monitor: 0=Aus, 1=Header, 2=Alles, 3=Alles durchlassen . Standard = 2.
3 ist Monitor ohne CRC-Check. Für Datenweitergabe bleibt der CRC-Check eingeschaltet.
n <num> Tiefpassfilter (Nyquist Filter ) für das RX-Basisband, in % von den Baud (0..100). Standard = 65%.
Beispiel: Bei 1200 Baud 50% sind dann 600 Hz.
P Identisch mit -U, benutzt jedoch AXUDP v2. Übertrage Informationen zur DCD und ob TX-Puffer leer ist oder nicht (für l2cat und modifizierten flexnet treiber).
p <num> Wieviel von der Bit-Zeit soll nachjustiert werden zum Bittakt regenerieren (num/256 der Bit-Zeit). Standard = 16.
q <num> Reduziere ADC Pegel um Rechenzeit zu sparen oder ein "Übersprechen" auf Stereo-Leitungen zu verhindern. Standard = 0.
Wird nur bei echten Stereo-Audioleitungen benötigt, und nicht bei SDR Setups.
Bei Pegeln kleiner als <num> wird stumm geschaltet.
s <num> AFSK TX Shift in Herz. Für RX siehe Bandfilter Breite). Standard = 1000.
t <num> TX-Delay. Standard = 300 (ms). Dies sollte so niedrig wie möglich gewählt werden!
T <seconds> Timeout für gepufferte Sendeframes. Standard = 60(s).
Für APRS wenige Sekunden, vermeidet bei stark belegter Frequenz verspätet ausgesendete Baken und ein noch mehr zumüllen der Frequenz.
U <[x.x.x.x]:destport:listenport> Benutze AXUDP anstatt KISS. Mit /listenport anstatt :listenport wird die IP geprüft und es werden nur Daten von der angegebenen IP angenommen.
L Wie -U, jedoch im AXUDP v2 Format, aber ohne die "DCD" und "TX-Sendepuffer leer oder nicht" Informationen.
v <num> TX Lautstärke (Standard = 100)
w <num> Bestimmt das "Aussehen" des TX-Delay vor dem 1-Flag, also dem Beginn des Datenteils (0..255). Standard = 126, das entspricht dem Bitmuster 7E hex bzw. 01111110. Der Wert "0" synchronisiert am besten.
x <num> TX-Tail. PTT Haltezeit für Fullduplexbetrieb. Standard = 20 (ms).
z <num> FSK RX Basisband DC Regeneration Klemmschaltung Haltezeit. 0=Aus, 1=Schnell, 999=Langsam. Standard = 996.

Ein Tipp fuer mehr Baud mit einem SDR Stick:

sdrtst Sampelrate 128000. afskmodem 32000. Dann ist die wirkliche Baudrate am Modem mal 4, also fuer 76800 -b 19200 (und auch alle Timer mal 4 die bei nur RX nix tun).

Konfigurationsbeispiele

SDR mit Einkanalempfang

afskmodem -f 16000 -o /home/pi/dxlAPRS/aprs/aprspipe -c 1 -M 0 -c 0 -L 127.0.0.1:9001:0
  • Eine AX.25 Baudrate wird hier absichtlich nicht angegeben, da standardmäßig 1200 Baud definiert sind, und das ist üblich auf UKW.
  • -f nennt die Abstastrate des Audiofiles. 16 KHz reicht gut aus für 1200 Baud.
  • -o gibt die Quelle des Audiofiles an, in diesem Fall eine Audiopipe (mknod audiopipe p).
  • -c ist die Anzahl der Kanäle die verwendet werden. Hier ist es nur einer (Mono).
  • -M 0 definiert das erste Modem, die folgenden Parameter (bis zum nächsten -M) werden diesem Modem zugeordnet.
    • -c 0 bezieht sich auf den ersten (Mono) Kanal.
    • -L sendet die dekodierten AX.25 Daten im AXUDP-Format an das Ziel 127.0.0.1 (gleicher PC) an Port 9001. Der Listenport ist mit 0 angegeben, da es keinen Sendezweig gibt (RX only).

SDR mit Zweikanalempfang

Zum besseren Verständnis wird die Syntax auf mehrere Zeilen aufgeteilt. Im Startskript muss dann alles hintereinander stehen.

afskmodem -f 16000 -o /home/pi/dxlAPRS/aprs/aprspipe -c 2 
          -M 0 -c 0 -L 127.0.0.1:9001:0 
          -M 1 -c 1 -L 127.0.0.1:9002:0

  • Eine AX.25 Baudrate wird hier absichtlich nicht angegeben, da standardmäßig 1200 Baud definiert sind, und das ist üblich auf UKW.
  • -f nennt die Abstastrate des Audiofiles. 16 KHz reicht gut aus für 1200 Baud.
  • -o gibt die Quelle des Audiofiles an, in diesem Fall eine Audiopipe (mknod audiopipe p).
  • -c ist die Anzahl der Kanäle die verwendet werden. Hier sind es zwei, das es sich um ein Stereosignal handelt.
  • -M 0 definiert das erste Modem, die folgenden Parameter (bis zum nächsten -M) werden diesem Modem zugeordnet.
    • -c 0 bezieht sich auf den ersten Kanal des Stereosignals.
    • -L sendet die dekodierten AX.25 Daten im AXUDP-Format an das Ziel 127.0.0.1 (gleicher PC) an Port 9001. Der Listenport ist mit 0 angegeben, da es keinen Sendezweig gibt (RX only).
  • -M 1 definiert das zweite Modem, die folgenden Parameter (bis zum nächsten -M) werden diesem Modem zugeordnet.
    • -c 1 bezieht sich auf den zweiten Kanal des Stereosignals
    • -L sendet die dekodierten AX.25 Daten im AXUDP-Format an das Ziel 127.0.0.1 (gleicher PC) an Port 9002. Der Listenport ist mit 0 angegeben, da es keinen Sendezweig gibt (RX only).
  • Auch wenn man mit dieser Variante zwei Frequenzen gleichzeitig mithört, sollte man die dekodierten Daten an zwei unterschiedliche Ports senden, damit man die Quelle unterscheiden kann. Im iGate udpgate4 kann man dies dann seperat darstellen und sehen, welches Signal auf welcher Frequenz empfangen wurde. Wenn man beide Quellen zusammenwürfelt, erkennt man das nicht mehr.

Multibaud-RX mit SDR

Dieser Multibaud-RX empfäng sowohl 1200 Baud AFSK und 9600 Baud FSK auf der gleichen QRG. Zum besseren Verständnis wird die Syntax auf mehrere Zeilen aufgeteilt. Im Startskript muss dann alles hintereinander stehen.

afskmodem -f 20000 -o /home/pi/dxlAPRS/aprs/aprspipe -c 1 
          -M 0 -c 0 -L 127.0.0.1:9001:0 
          -M 1 -c 0 -b 9600 -a -g -L 127.0.0.1:9002:0

Für den Empfang von 9600 Baud sollte der Empfänger im sdrtst etwas mehr ZF-Bandbreite erhalten, da 12 KHz (Standard) etwas eng wird. Mit 16 KHz geht das dann schon besser. Allerdings je größer die ZF-Bandbreite, desto unempfindlicher wird der Empfänger. Doppelte Bandbreite = -3 dB. Auch die Abtastrate muss dann höher werden, also -f. Dies muss auch mit sdrtst Parameter -r entsprechend abgestimmt werden.

f 144.80 0 0 0 16000

  • -f nennt die Abstastrate des Audiofiles. 20 KHz reicht gut aus für 1200 Baud AFSK und 9600 Baud FSK.
  • -o gibt die Quelle des Audiofiles an, in diesem Fall eine Audiopipe (mknod audiopipe p).
  • -c ist die Anzahl der Kanäle die verwendet werden. Hier ist es nur einer (Mono).
  • -M 0 definiert das erste Modem, die folgenden Parameter (bis zum nächsten -M) werden diesem Modem zugeordnet.
    • -c 0 bezieht sich auf den ersten (Mono) Kanal.
    • -L sendet die dekodierten AX.25 Daten im AXUDP-Format an das Ziel 127.0.0.1 (gleicher PC) an Port 9001. Der Listenport ist mit 0 angegeben, da es keinen Sendezweig gibt (RX only).
  • -M 1 definiert das zweite Modem, die folgenden Parameter (bis zum nächsten -M) werden diesem Modem zugeordnet.
    • -c 0 bezieht sich genauso wie Modem 0 auf den ersten (Mono) Kanal - wir wollen ja auf der gleichen QRG mehrere Baudraten empfangen.
    • -b 9600 definiert die Baudrate auf 9k6, -a aktiviert die FSK Modulation und -g das G3RUH Codierungsverfahren. Dies entspricht dem üblichen 9600 Baud FSK Verfahren im Amateurfunk.
    • -L sendet die dekodierten AX.25 Daten im AXUDP-Format an das Ziel 127.0.0.1 (gleicher PC) an Port 9002. Der Listenport ist mit 0 angegeben, da es keinen Sendezweig gibt (RX only).

Gateway mit Kurzwelle (300 Baud) und 2m (1200 Baud) Empfang

Im folgenden Beispiel von OE5DXL ist an der Soundkarte des PCs auf dem linken Kanal ein UKW 144 MHz TRX und auf dem rechten Kanal ein Kurzwellen 10 MHz TRX angeschlossen. Weiterhin wird an der seriellen Schnittstelle die PTT für beide TRXe geschalten, einer mit RTS und der andere mit DTS. Zum besseren Verständnis wird die Syntax auf mehrere Zeilen aufgeteilt. Im Startskript muss dann alles hintereinander stehen.

afskmodem -o /dev/dsp1 -f 11025 -B -c 2 
             -C 0 -p /dev/ttyS0 0 -r 0 
             -C 1 -p /dev/ttyS0 1 -r 0 
          -M 0 -c 0 -b 1200 -t 70 -q 500 -m 0 -d 0 -T 10 -L 127.0.0.1:2100:2611 
          -M 1 -f 1900 -c 1 -b 300 -s 200 -w 0 -m 0 -L 127.0.0.1:2400:0 
          -M 2 -f 1950 -c 1 -b 300 -s 200 -w 0 -m 0 -L 127.0.0.1:2401:0 
          -M 3 -f 2000 -c 1 -b 300 -s 200 -w 0 -m 0 -t 225 -L 127.0.0.1:2402:2042 
          -M 4 -f 2050 -c 1 -b 300 -s 200 -w 0 -m 0 -L 127.0.0.1:2403:0 
          -M 5 -f 2100 -c 1 -b 300 -s 200 -w 0 -m 0 -L 127.0.0.1:2404:0 
          -M 6 -f 2150 -c 1 -b 300 -s 200 -w 0 -m 0 -L 127.0.0.1:2405:0

  • Channel 0 mit Modem 0 ist 1200 Baud auf 144 MHz, mit TX-Delay von 70ms, ausgeschaltetem Monitor und ohne DCD Erkennung, 10s Timeout für gepufferte Frames, und die empfangenen Daten werden an Port 2100 gesendet. Auf Port 2611 nimmt das Modem Daten zum Senden entgegen.
  • Modem 1 bis 6 beziehen sich alle auf den zweiten channel mit dem Kurzwellensignal. Da es hier schnell zu Frequenzverschiebungen kommen kann, gibt es sechs verschiedene Modems mit leicht verschobener Empfangsfrequenz. Alle empfangen mit 300 Baud AFSK.
  • Jedoch wird nur Modem 3 zum Senden verwendet, nur dieser hat einen Listenport (2042) angegeben um zu sendende Daten anzunehmen. Das TX-Delay wird auch mit 225ms definiert.
  • Die PTT wird durch die Parameter -C 0 und -C 1 für beide Kanäle getrennt definiert.

Zweikanal Multibaud TRX bei OE2XZR

Zum besseren Verständnis wird die Syntax auf mehrere Zeilen aufgeteilt. Im Startskript muss dann alles hintereinander stehen.

afskmodem -o /dev/dsp -B -b 5 -f 22050 -B -c 2 
             -C 1 -p /dev/ttyS0 1 -r 0 
             -C 0 -p /dev/ttyS0 0 -r 0 -g 60 
          -M 0 -c 1 -T 10 -t 100 -w 0 -b 1200 -e 80 -q 100 -m 0 -L 127.0.0.1:2000:2100 
          -M 1 -c 0 -t 150 -b 1200 -v 90 -q 100 -m 0 -P 127.0.0.1:2001:2101 
          -M 2 -c 0 -b 2400 -f 2826 -s 1663 -t 140 -v 70 -q 100 -m 0 -P 127.0.0.1:2502:2102 
          -M 3 -c 0 -b 4800 -a -g -t 140 -v 70 -q 100 -m 0 -P 127.0.0.1:2503:2103 
          -M 4 -c 0 -b 9600 -a -g -t 130 -v 60 -q 100 -m 0 -P 127.0.0.1:2004:2104

  • Modem 0 auf Channel 1 ist ein 1200 baud TRX
  • Die Modems 1 bis 4 auf Channel 0 sind ein Multibaud TRX für 1200 und 2400 baud AFSK sowie 4800 Baud und 9600 baud FSK nach G3RUH.