KISS (TNC)

KISS (keep it simple, stupid[1]) is a protocol for communicating with a serial terminal node controller (TNC) device used for amateur radio. This allows the TNC to combine more features into a single device and standardizes communications. KISS was developed by Mike Cheponis and Phil Karn to allow transmission of AX.25 packet radio frames containing IP packets over an asynchronous serial link, for use with the KA9Q NOS program.[2]

Description

The KISS protocol is designed to be easy to implement in simple embedded devices, which are capable of asynchronous serial communications. While it allows arbitrary data to be transferred, there is no support for flow control or error handling.

Back-to-back FEND codes should not be interpreted as empty frames. Instead, all but the last FEND code should be discarded. This can be used for synchronization.

If the FEND or FESC codes appear in the data to be transferred, they need to be escaped. The FEND code is then sent as FESC, TFEND and the FESC is then sent as FESC, TFESC.

Special characters

Hex valueAbbreviationDescription
0xC0FENDFrame End
0xDBFESCFrame Escape
0xDCTFENDTransposed Frame End
0xDDTFESCTransposed Frame Escape

Command codes

Any of these codes may be sent from the host to the TNC, but only the "Data frame" code should be sent from the TNC to the host.

Hex valueNameBytesDescription
0x00Data frameVariesThis frame contains data that should be sent out of the TNC. The maximum number of bytes is determined by the amount of memory in the TNC.
0x01TX DELAY1The amount of time to wait between keying the transmitter and beginning to send data (in 10 ms units).
0x02P1The persistence parameter. Persistence=Data*256-1. Used for CSMA.
0x03SlotTime1Slot time in 10 ms units. Used for CSMA.
0x04TXtail1The length of time to keep the transmitter keyed after sending the data (in 10 ms units).
0x05FullDuplex10 means half duplex, anything else means full duplex.
0x06SetHardwareVariesDevice dependent.
0xFFReturn0Exit KISS mode. This applies to all ports and requires a port code of 0xF.

Packet format

BeginCommandData0..DataNEnd
FENDHigh nibble  Port Index
Low nibble  Command
DataFEND

Send the characters "TEST" out of TNC port 0

C00054455354C0

Send the characters "Hello" out of TNC port 5

C05048656C6C6FC0

Send the bytes 0xC0, 0xDB out of TNC port 0

C000DBDCDBDDC0

Exit KISS mode

C0FFC0

Common uses

Alternatives

See also

References

  1. Mike Chepponis, K3MC; Phil Karn, KA9Q (1987). The KISS TNC: A simple Host-to-TNC communications protocol. ARRL 6th Computer Networking Conference. Redondo Beach CA.
  2. Mike Chepponis, K3MC; Phil Karn, KA9Q (1987). The KISS TNC: A simple Host-to-TNC communications protocol. ARRL 6th Computer Networking Conference. Redondo Beach CA.
  3. "6PACK a "real time" PC to TNC protocol". Retrieved 2012-04-08.
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.