E7.4 KISS und AX.25
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.
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.