KISS2ASC - Raw KISS/AX.25 to ASCII File Converter Updated: 8 March 2002 (contact info only) Copyright 1990 Paul Williamson, KB5MU All Rights Reserved. You may use this program for non-commercial purposes. KISS2ASC converts a raw KISS AX.25 log file to readable ASCII. It was written specifically for Microsat ground station use. With this utility, there is no need to retain any ASCII log files. The ASCII log can be recreated on demand from the binary KISS log. The term "KISS" refers to a TNC operating mode that was designed as a stopgap to permit a host computer to control every aspect of the packet protocol. It is an acronym for "Keep It Simple, Stupid". This philosophy refers to the ease of implementation of the firmware for the TNC to operate in KISS mode. Unfortunately, the host computer code cannot be kept simple when KISS mode is used. The host computer handles every detail of the protocol, in addition to its usual job of handling the data. The KISS TNC just sends every valid packet it receives to the computer, and transmits every packet provided by the computer. The TNC knows nothing of the protocol or packet formats. The only format that is specific to KISS is the KISS packet framing. This framing is based on the informal Internet protocol known as SLIP, the Serial Line Interface Protocol. This framing format is described in a paper by Mike Chepponis, K3MC, and Phil Karn, KA9Q, entitled "The KISS TNC: A simple Host-to-TNC communications protocol", which was published in the Proceedings of the 6th ARRL Amateur Radio Computer Networking Conference. The Proceedings of the Networking Conferences are available from the ARRL. The log file that KISS2ASC accepts as input is just a verbatim log of every byte sent from the TNC to the computer. This kind of log file is generated by the Microsat telemetry capture program by N4HY called TLMDC. It can also be generated with many (but not all) ordinary terminal programs by simply capturing the output of the TNC in KISS mode. There is also at least one program that does not operate the TNC in KISS mode, but generates KISS log files nevertheless: THS, the TNC Hostmode Server program by HB9CVV, with recent mods by KB5MU. Since the KISS standard gives only the details of a simple framing protocol, KISS2ASC must make further assumptions about the packet formats being used. In particular, KISS2ASC assumes that the frames embedded in KISS framing follow the AX.25 level 2 protocol, version 1 or 2. This covers just about all the packet activity in the world at the moment. KISS2ASC doesn't try to interpret any higher-layer protocol that may be in use. It doesn't decode NET/ROM frames, or TCP/IP frames, or anything like that. Anything that isn't a printable ASCII character gets translated to a period ("."). The ASCII output format generated by KISS2ASC resembles the monitor format used by the WA8DED AX.25 TNC firmware. An information frame in this format looks like this: fm AA6QN to KJ6NA via W6NWG* ctl I25+ pid F0 Enter message, ^Z (CTL-Z) to end, it will be message 7599 The "fm .. to .. via .. ctl .. pid" format is provided by the program. The "via" and "pid" parts don't appear when they're not applicable. The asterisk ("*") after W6NWG indicates that the frame was copied from the digipeater W6NWG, not from the originator AA6QN. The ctl field indicates what kind of packet was received: RRa - Receive Ready (acknowlegement) frame RNRa - Receive Not Ready frame REJa - Reject frame UI - Unnumbered Information frame (beacon or CQ) DM - Disconnected Mode frame (busy or already disconnected) SABM - Connect Request frame DISC - Disconnect Request frame UA - Unnumbered Acknowlege (ack to SABM or DISC) Iab - Information frame The symbols "a" and "b" above represent a number from 0 to 7, the receive sequence number and send sequence number respectively. After the packet type code and sequence numbers if any, one of the following symbols appears: (none) - AX.25 Version 1 frame, without poll/final bit ! - AX.25 Version 1 frame, with poll/final bit set ^ - AX.25 Version 2 command frame without poll bit + - AX.25 Version 2 command frame with poll bit set - - AX.25 Version 2 response frame with final bit set v - AX.25 Version 2 response frame without final bit The hex number after "pid" is the Protocol ID. This is supposed to indicate what higher-level protocol is in use. F0 is the most common; it indicates that no higher-level protocol is in use. CD and CF are used by NET/ROM nodes. If you want to understand exactly what all these packets mean, you can get a copy of the AX.25 Level 2 Version 2 protocol specification from the ARRL. To use KISS2ASC, just specify the input filename. If you want the output to go into a file, specify the output filename too. For example, KISS2ASC LOGFILE.RAW will read the raw KISS log file named LOGFILE.RAW and output its ASCII translation to the screen. Or, KISS2ASC LOGFILE.RAW LOGFILE.ASC will send the ASCII translation to the file LOGFILE.ASC. There is no provision for translating multiple files in a single run. If you don't provide any filenames, or provide too many, you'll just get the help message. This release of KISS2ASC should be considered a beta test release. I have tested it on several large log files, but there's always the possibility that some bugs are still lurking. If you find any bugs, or have other comments or suggestions, please let me know. I can be contacted via email: kb5mu@amsat.org