AMSAT-HB ist Kollektivmitglied der USKA

E7.4 KISS und AX.25

Niveau: K3 Selbständig empfangen

Zeitbedarf: ca. 35 Minuten

Einstiegsfrage:
In einer Zeile steht «0xDBDC = 0xC0». Wie können zwei Bytes gleich einem einzigen Byte sein?

AX.25: Das Frame auf dem Funkweg

AX.25 ist das Protokoll des Packet Radio. Es arbeitet auf der Sicherungsschicht, also auf Layer 2 des OSI-Modells. Es legt fest, wie ein Frame aufgebaut ist und wie man Absender und Empfänger erkennt.

Ein AX.25-Frame enthält die Zieladresse, die Quelladresse, ein Steuerfeld, eine Protokollkennung (PID), das Informationsfeld und eine Prüfsumme (FCS). Auf dem Funkweg begrenzt ihn je ein Flag-Byte 0x7E.

Cubesats verwenden AX.25 meist ohne Verbindungsaufbau. Sie senden UI-Rahmen (Steuerfeld 0x03, PID 0xF0) als Bake. Im Informationsfeld steckt die eigentliche Telemetrie. Über Digipeater weitergeleitete Frames tragen zusätzliche Adressfelder.

Rufzeichen im Adressfeld

Jede Adresse ist 7 Byte lang: 6 Zeichen für das Rufzeichen (mit Leerzeichen aufgefüllt) und ein Byte für SSID und Steuerbits. Jedes Zeichen ist um ein Bit nach links verschoben. Du teilst also durch 2 und erhältst den ASCII-Code.

Zieladresse D80LW im Adressfeld (Lernbeispiel)

Byte (hex) dezimal geteilt durch 2 Zeichen
88 136 68 «D»
70 112 56 «8»
60 96 48 «0»
98 152 76 «L»
AE 174 87 «W»
40 64 32 «Leerzeichen»
60 96 – SSID 0 und Steuerbits

Beim letzten Adressfeld ist das niedrigste Bit des SSID-Bytes 1; es markiert das Ende der Adressen. Die Quelladresse ON01KR endet deshalb mit 0x61. Werte von AMSAT-HB berechnet.

KISS: der Frame im Rechner

KISS steht für «keep it simple, stupid». Mike Chepponis, K3MC, und Phil Karn, KA9Q, stellten es 1987 vor. Es regelt, wie ein TNC oder Soundmodem Frames mit dem Rechner austauscht.

Die Idee ist einfach: Der TNC demoduliert nur noch und prüft die Frames. Alles andere erledigt der Rechner. Flags, Bitstopfen und Prüfsumme bleiben im TNC; über KISS geht nur der Inhalt des Rahmens.

Ein AX.25-Frame auf dem Funkweg und im KISS-Datenstrom Oben der HDLC-Frame auf dem Funkweg: Flag 7E, Zieladresse 7 Byte, Quelladresse 7 Byte, Steuerfeld 03, PID F0, Informationsfeld mit der Telemetrie, Prüfsumme FCS 2 Byte, Flag 7E. Unten derselbe Inhalt im KISS-Datenstrom: FEND C0, Typbyte 00, Zieladresse, Quelladresse, Steuerfeld, PID, Informationsfeld, FEND C0. Flags und Prüfsumme entfallen. Die Bytes C0 und DB in den Daten werden durch DB DC bzw. DB DD ersetzt. Auf dem Funkweg (HDLC-Frame) Flag 7E Ziel 7 Byte Quelle 7 Byte Steuer 03 PID F0 Info Telemetrie FCS 2 Byte Flag 7E Im KISS-Datenstrom (TCP-Port, KISS-Datei) FEND C0 Typ 00 Ziel 7 Byte Quelle 7 Byte Steuer 03 PID F0 Info Telemetrie FEND C0 Flags und FCS entfallen in KISS Steht C0 oder DB in den Daten, wird ersetzt: C0 → DB DC und DB → DB DD

Derselbe Frame zweimal: oben auf dem Funkweg, unten im KISS-Datenstrom. Eigene Darstellung nach der KISS-Beschreibung von K3MC und KA9Q (1987).

Jeder KISS-Rahmen beginnt und endet mit dem Byte 0xC0 (FEND, frame end). Das erste Byte nach FEND ist das Typbyte. Seine untere Hälfte nennt den Befehl (0 = Daten), die obere Hälfte den Port. Bei einem einfachen Soundmodem ist es meist 0x00.

Escape-Zeichen

Was passiert, wenn ein Messwert zufällig 0xC0 ergibt? Der Empfänger würde das Byte als Rahmenende missverstehen. Darum ersetzt KISS dieses Byte durch zwei andere: 0xC0 wird zu 0xDB 0xDC. Das Byte 0xDB selbst wird zu 0xDB 0xDD.

Sonderzeichen im KISS-Protokoll

Kürzel Name Wert (hex) Bedeutung
FEND Frame End C0 Beginn und Ende eines Rahmens
FESC Frame Escape DB Kündigt ein ersetztes Byte an
TFEND Transposed Frame End DC Nach FESC: steht für C0 in den Daten
TFESC Transposed Frame Escape DD Nach FESC: steht für DB in den Daten

Nach K3MC und KA9Q: «The KISS TNC: A simple Host-to-TNC communications protocol», ARRL 6th Computer Networking Conference, 1987.

Damit ist die Einstiegsfrage gelöst: In der KISS-Datei stand für eine Temperatur die Folge 0xDB 0xDC. Nach dem Zurückwandeln ist das ein einziges Byte 0xC0 = 192. Daraus wird in Lektion E7.5 eine Temperatur von 33 °C.

Hinweis: «Auf korrekte Implementierung achten» heisst: Wer KISS-Dateien selbst auswertet, muss zuerst die Escape-Folgen zurückwandeln. Sonst verschieben sich alle folgenden Felder um ein Byte, und die Messwerte stimmen nicht mehr.

Eine KISS-Datei ist nichts anderes als viele KISS-Rahmen hintereinander. AGWOnlineKISS ergänzt dabei Zeitstempel und Bahndaten (Lektion E7.2). 

Beispiel: LINK (ON01KR)

LINK war ein Cubesat des Korea Advanced Institute of Science and Technology (KAIST) im Framedes QB50-Projekts. Er sendete alle 30 Sekunden eine AX.25-Bake mit Telemetrie. Er ist das Beispiel für die Handrechnung in Lektion E7.5.

Steckbrief LINK (ON01KR)

Merkmal Angabe Quelle
Betreiber KAIST, Südkorea; Projekt QB50 DK3WN, Folie 16
Start 18. Mai 2017 [PRÜFEN: Startdatum oder Aussetzen von der ISS?] DK3WN, Folie 16
NORAD-Nummer 42714 DK3WN, Folie 16; SatNOGS DB
Modulation 9k6 BPSK laut Folie; die SatNOGS-Datenbank nennt BPSK mit 1200 Baud [PRÜFEN] DK3WN, Folie 16; SatNOGS DB
Datenformat AX.25, HDLC DK3WN, Folie 16
Frequenz 436,030 MHz DK3WN, Folie 16; SatNOGS DB
AX.25-Quelle ON01KR DK3WN, Folie 16
AX.25-Ziel D80LW DK3WN, Folie 16
Bakenintervall 30 s DK3WN, Folien 16 und 17
Status Am 23. September 2018 in der Atmosphäre verglüht; Sender inaktiv SatNOGS DB, abgerufen am 16. Oktober 2026

Die Dekodierung von LINK war 2017 mit gr-satellites und dem soundmodem möglich.

Kontrollfrage: Ein KISS-Frame beginnt mit C0 00 88 70 60 98 AE 40 60 9E 9C …. Welche Bytes gehören zur KISS-Hülle, und welches Rufzeichen beginnt mit 9E 9C?

Lösung anzeigen

C0 ist FEND (Framebeginn), 00 das Typbyte (Daten, Port 0). Danach folgt der AX.25-Rahmen.

0x9E = 158, geteilt durch 2 ergibt 79 = «O». 0x9C = 156, geteilt durch 2 ergibt 78 = «N». Das ist der Anfang der Quelladresse ON01KR.

Merksatz:
AX.25 ist das Datenframe auf dem Funkweg, KISS die Verpackung zwischen Modem und Rechner. Vor dem Auswerten werden DB DC zu C0 und DB DD zu DB zurückgewandelt.

Mini Selbsttest

Mini-Selbsttest