Afskmodem: Unterschied zwischen den Versionen

Aus DXL-Wiki
Zur Navigation springen Zur Suche springen
Zeile 151: Zeile 151:
! 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|| AFSK aus, FSK an (Standard = an)
|-
|-
| b <num>|| baud (1200) (1..32000)
| b <num>|| Baudrate. Mögliche werte sind von 1 bis 32000 baud (Standard = 1200).
|-
|-
| B <kbyte>|| send BERT, (negative bytes receive only)
| B <kbyte>|| send BERT, (negative bytes receive only)
|-
|-
| c <num>|| use stereo channel 0=left (or mono), 1=right
| c <num>|| Verwende Stereo channel 0=Links (oder Mono), 1=Rechts
|-
|-
| d <num>|| dcdlevel, 0 no dcd (56) (0..100)
| d <num>|| DCD-Level. 0 = keine DCD. Mögliche Werte sind 0..100 (Standard = 56)
|-
|-
| e <num>|| demod equalizer (0) 100=6db/oct highpass  (-999..999)
| e <num>|| demod equalizer (0) 100=6db/oct highpass  (-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|| g3ruh scrambler on (off)
|-
|-
| 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 Parameters von KISS (Stadnard = 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.
|-
|-
| n <num>|| nyquist filter baseband -6db point in % of baudrate (65) (0..100)
| 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|| Identisch mit -U, benutzt jedoch AXUDP v2. Übertrage DCD und TX-Puffer leere Nachrichten.
|-
|-
| p <num>|| receive clock pll aquisition speed (16) (num/256 of bit time)
| p <num>|| receive clock pll aquisition speed (16) (num/256 of bit time)
Zeile 185: Zeile 185:
| q <num>|| quiet adc level to save cpu or avoid reciption of channel crosstalk (0)
| 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)
| 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 for tx buffered frame (60) (s)
|-
|-
| 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. "/listenport check ip"
|-
|-
| L|| same as -U but use AXUDP v2 (no dcd and txbuffer empty messages)
| L|| Identisch mit -U, benutzt jedoch AXUDP v2. Übertrage NICHT DCD und TX-Puffer leere Nachrichten.
|-
|-
| v <num>|| tx loudness (100)
| v <num>|| TX Lautstärke (Standard = 100)
|-
|-
| w <num>|| txdelay pattern before 1 flag (126) (0..255)
| w <num>|| txdelay pattern before 1 flag (126) (0..255)
|-
|-
| 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 baseband dc regeneration clamp speed (996) (0=off, 1=fast, 999=slow)

Version vom 26. September 2020, 21:06 Uhr

!!! DIESE SEITE IST NOCH IM AUFBAU !!!

Ü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)
  • Audioquelle bzw. -ziel können jedes OSS Soundsystem (weitere Infos siehe unten), aber auch Dateien sein (auch Audiopipes).
  • 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.

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.

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

Parameter für alle Modems

Parameter Beschreibung
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 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> Maximale Anzahl der channels pro Modem. 1 = Mono, 2 = Stereo. Standard = 1 Mono.
D <filename> Schreibe Rohdaten der Soundquelle in eine Datei oder eine Audiopipe.
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)
f <num> Abtastrate/Samplerate (8000..96000). Standard = 16000.
h Hilfe
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. Standard = /dev/dsp.
o <infilename,outfilename> 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)

Wiederholend für jeden channel

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).

Wiederholend für jedes Modem

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 AFSK aus, FSK an (Standard = an)
b <num> Baudrate. Mögliche werte sind von 1 bis 32000 baud (Standard = 1200).
B <kbyte> send BERT, (negative bytes receive only)
c <num> Verwende Stereo channel 0=Links (oder Mono), 1=Rechts
d <num> DCD-Level. 0 = keine DCD. Mögliche Werte sind 0..100 (Standard = 56)
e <num> demod equalizer (0) 100=6db/oct highpass (-999..999)
f <num> AFSK Mittenfrequenz für TX und RX in Herz (Standard = 1700)
g g3ruh scrambler on (off)
H <num> AFSK TX Hochpass. Mögliche Werte sind 0..100 (Standard = 0)
i Ignoriere Modem Parameters von KISS (Stadnard = 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.
n <num> nyquist filter baseband -6db point in % of baudrate (65) (0..100)
P Identisch mit -U, benutzt jedoch AXUDP v2. Übertrage DCD und TX-Puffer leere Nachrichten.
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 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 for tx buffered frame (60) (s)
U <[x.x.x.x]:destport:listenport> Benutze AXUDP anstatt KISS. "/listenport check ip"
L Identisch mit -U, benutzt jedoch AXUDP v2. Übertrage NICHT DCD und TX-Puffer leere Nachrichten.
v <num> TX Lautstärke (Standard = 100)
w <num> txdelay pattern before 1 flag (126) (0..255)
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)

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

SDR mit Zweikanalempfang

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