KISS (amateur radio protocol)

Last updated

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. [1]

Contents

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.

KISS uses Serial Line Internet Protocol framing, but defines its own simple protocol instead of encapsulating raw IP packets, as SLIP does. The KISS protocol messages provide for setting common TNC control variables as well as sending arbitrary message packets to be forwarded by the TNC. While the packets may be arbitrary, protocols commonly used with KISS include AX.25 and IPv4.

Special characters

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

Similar to SLIP, 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, and can be used to give the receiver's AGC time to stabilize.

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. Two FESCs in a row are a protocol violation and can be used to signal an aborted transmission. This allows the recipient (usually the TNC) to avoid misinterpreting subsequent data as part of a valid frame. Any data received before the next FEND would be properly discarded.

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. "In multi-port TNCs, the upper 4 bits of the type indicator byte can specify one of up to sixteen ports." [1]

Command bytesNameArgument lengthDescription
0x?0 [...]Data frame: port XVariesThe following bytes should be transmitted by the TNC. The maximum number of bytes, thus the size of the encapsulated packet, is determined by the amount of memory in the TNC.
0x?1, 0x??TX DELAY1The amount of time to wait between keying the transmitter and beginning to send data (in 10 ms units).
0x?2, 0x??P1The persistence parameter. Persistence=Data*256-1. Used for CSMA.
0x?3, 0x??SlotTime1Slot time in 10 ms units. Used for CSMA.
0x?4, 0x??TXtail1The length of time to keep the transmitter keyed after sending the data (in 10 ms units).
0x?5, 0x??FullDuplex10 means half duplex, anything else means full duplex.
0x?6, [...]SetHardwareVariesDevice dependent.
0xFFReturn0Exit KISS mode. The TNC stops processing KISS protocol and returns to its vendor-specific behavior.

The command bytes are shown here in Hex, but are sent as bytes, not hex strings. In all cases except the Return command, the high nibble indicates which port (on a multi-port TNC) the command applies to.

A TNC may support other nonstandard commands, at the vendor's discretion.

Packet format

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

Send the characters "TEST" out of TNC port 0

C0 - FEND00 - DATA FRAME54 - "T"45 - "E"53 - "S"54 -"T"C0 - FEND

Send the characters "Hello" out of TNC port 5

C0 - FEND50 - DATA FRAME: port 548 - "H"65 - "e"6C - "l"6C - "l"6F -"o"C0 - FEND

( hex byte 50 is binary 0101 0000, which a multi-port TNC would interpret as "DATA FRAME, PORT 5" because 0101 -> 5 )

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

C0 - FEND00 - DATA FRAME: port 0DB - FESCDC - TFENDDB - FESCDD - TFESCC0 - FEND

Both bytes in the example message require escaping, so they are each sent as a two-byte sequence. The TNC will unescape them prior to transmission.

Exit KISS mode

C0 - FENDFF - RETURNC0 - FEND

The TNC's behavior after returning from KISS mode is vendor-specific. Some provide a line-oriented "node client" or "mailbox" command client.

Common uses

Alternatives

See also

Related Research Articles

In telecommunications, asynchronous communication is transmission of data, generally without the use of an external clock signal, where data can be transmitted intermittently rather than in a steady stream. Any timing required to recover data from the communication symbols is encoded within the symbols.

In computer networking, Point-to-Point Protocol (PPP) is a data link layer communication protocol between two routers directly without any host or any other networking in between. It can provide loop detection, authentication, transmission encryption, and data compression.

<span class="mw-page-title-main">Packet radio</span> Form of amateur radio data communications using the AX25 protocol

In digital radio, packet radio is the application of packet switching techniques to digital radio communications. Packet radio uses a packet switching protocol as opposed to circuit switching or message switching protocols to transmit digital data via a radio communication link.

A frame is a digital data transmission unit in computer networking and telecommunication. In packet switched systems, a frame is a simple container for a single network packet. In other telecommunications systems, a frame is a repeating structure supporting time-division multiplexing.

High-Level Data Link Control (HDLC) is a bit-oriented code-transparent synchronous data link layer protocol developed by the International Organization for Standardization (ISO). The standard for HDLC is ISO/IEC 13239:2002.

The Serial Line Internet Protocol (SLIP) is an encapsulation of the Internet Protocol designed to work over serial ports and router connections. It is documented in RFC 1055. On personal computers, SLIP has largely been replaced by the Point-to-Point Protocol (PPP), which is better engineered, has more features, and does not require its IP address configuration to be set before it is established. On microcontrollers, however, SLIP is still the preferred way of encapsulating IP packets, due to its very small overhead.

The data link layer, or layer 2, is the second layer of the seven-layer OSI model of computer networking. This layer is the protocol layer that transfers data between nodes on a network segment across the physical layer. The data link layer provides the functional and procedural means to transfer data between network entities and may also provide the means to detect and possibly correct errors that can occur in the physical layer.

AX.25 is a data link layer protocol originally derived from layer 2 of the X.25 protocol suite and designed for use by amateur radio operators. It is used extensively on amateur packet radio networks.

Modbus or MODBUS is a client/server data communications protocol in the application layer. It was originally published by Modicon in 1979 for use with its programmable logic controllers (PLCs). Modbus has become a de facto standard communication protocol for communication between industrial electronic devices in a wide range of buses and network.

The Parallel Line Internet Protocol (PLIP) is a computer networking protocol for direct computer-to-computer communications using the parallel port normally used for connections to a printer.

Throughput of a network can be measured using various tools available on different platforms. This page explains the theory behind what these tools set out to measure and the issues regarding these measurements.

<span class="mw-page-title-main">Terminal node controller</span>

A terminal node controller (TNC) is a device used by amateur radio operators to participate in AX.25 packet radio networks. It is similar in function to the Packet Assembler/Disassemblers used on X.25 networks, with the addition of a modem to convert baseband digital signals to audio tones.

In telecommunications and computer networking, connection-oriented communication is a communication protocol where a communication session or a semi-permanent connection is established before any useful data can be transferred. The established connection ensures that data is delivered in the correct order to the upper communication layer. The alternative is called connectionless communication, such as the datagram mode communication used by Internet Protocol (IP) and User Datagram Protocol, where data may be delivered out of order, since different network packets are routed independently and may be delivered over different paths.

<span class="mw-page-title-main">PS/2 port</span> 6-pin mini-DIN connector for connecting keyboards and mice to a PC compatible computer

The PS/2 port is a 6-pin mini-DIN connector used for connecting keyboards and mice to a PC compatible computer system. Its name comes from the IBM Personal System/2 series of personal computers, with which it was introduced in 1987. The PS/2 mouse connector generally replaced the older DE-9 RS-232 "serial mouse" connector, while the PS/2 keyboard connector replaced the larger 5-pin/180° DIN connector used in the IBM PC/AT design. The PS/2 keyboard port is electrically and logically identical to the IBM AT keyboard port, differing only in the type of electrical connector used. The PS/2 platform introduced a second port with the same design as the keyboard port for use to connect a mouse; thus the PS/2-style keyboard and mouse interfaces are electrically similar and employ the same communication protocol. However, unlike the otherwise similar Apple Desktop Bus connector used by Apple, a given system's keyboard and mouse port may not be interchangeable since the two devices use different sets of commands and the device drivers generally are hard-coded to communicate with each device at the address of the port that is conventionally assigned to that device.

<span class="mw-page-title-main">Display Serial Interface</span> Specification by MIPI

The Display Serial Interface (DSI) is a specification by the Mobile Industry Processor Interface (MIPI) Alliance aimed at reducing the cost of display controllers in a mobile device. It is commonly targeted at LCD and similar display technologies. It defines a serial bus and a communication protocol between the host, the source of the image data, and the device which is the destination. The interface is closed source, which means that the specification of the interface is not open to the public. The maintenance of the interface is the responsibility of the MIPI Alliance. Only legal entities can be members. These members or the persons commissioned and approved by them have access to the specification in order to use it in their possible applications.

Internet 0 is a low-speed physical layer designed to route 'IP over anything'. It was developed at MIT's Center for Bits and Atoms by Neil Gershenfeld, Raffi Krikorian, and Danny Cohen. When it was invented, a number of other proposals were being labelled as "internet 2". The name was chosen to emphasize that this was designed to be a slow, but very inexpensive internetworking system, and forestall "high-performance" comparison questions such as "how fast is it?"

FX.25 is a protocol extension to the AX.25 Link Layer Protocol. FX.25 provides a Forward Error Correction (FEC) capability while maintaining legacy compatibility with non-FEC equipment. FX.25 was created by the Stensat Group in 2005, and was presented as a technical paper at the 2006 TAPR Digital Communications Conference in Tucson, AZ.

<span class="mw-page-title-main">Atari SIO</span>

The Serial Input/Output system, universally known as SIO, was a proprietary peripheral bus and related software protocol stacks used on the Atari 8-bit family to provide most input/output duties for those computers. Unlike most I/O systems of the era, such as RS-232, SIO included a lightweight protocol that allowed multiple devices to be attached to a single daisy-chained port that supported dozens of devices. It also supported plug-and-play operations. SIO's designer, Joe Decuir, credits his work on the system as the basis of USB.

This article provides information about the communications aspects of Universal Serial Bus (USB): Signaling, Protocols, Transactions. USB is an industry-standard used to specify cables, connectors, and protocols that are used for communication between electronic devices. USB ports and cables are used to connect hardware such as printers, scanners, keyboards, mice, flash drives, external hard drives, joysticks, cameras, monitors, and more to computers of all kinds. USB also supports signaling rates from 1.5 Mbit/s to 80 Gbit/s depending on the version of the standard. The article explains how USB devices transmit and receive data using electrical signals over the physical layer, how they identify themselves and negotiate parameters such as speed and power with the host or other devices using standard protocols such as USB Device Framework and USB Power Delivery, and how they exchange data using packets of different types and formats such as token, data, handshake, and special packets.

References

  1. 1 2 3 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. Archived from the original on 2022-06-07.{{cite conference}}: CS1 maint: numeric names: authors list (link)
  2. "6PACK a "real time" PC to TNC protocol". Archived from the original on 2022-12-27. Retrieved 2012-04-08.
  3. "6pack Protocol — The Linux Kernel documentation". docs.kernel.org.