MKISS(8)

πŸ“¦
version 1.1.0 Β· 4 versions
, in alpine 3.24, debian bookworm, debian trixie, ubuntu noble, ubuntu questing, ubuntu resolute, ubuntu stonking

mkiss(8) πŸ’… β€” attach a multi KISS interface

Okay bestie, this is the mkiss(8) page from the Linux System Managers Manual, and it’s lowkey iconic for anyone wiring up dual-port TNCs or multiple TNCs on one serial line. Let’s get into it πŸŽ€

✨ NAME ✨

mkiss β€” Attach a multi KISS interface

πŸ¦‹ SYNOPSIS πŸ¦‹

mkiss [-c] [-f] [-h] [-l] [-s speed] [-p pollrate] [-v] [-x n_ptmx]
ttyinterface pty ..

🌸 DESCRIPTION 🌸

So, mkiss lets dual port TNCs β€” or multiple TNCs that share the same serial port β€” work with the Linux AX.25 kernel software. The AX.25 software itself has no support for dual port TNCs or multiple TNCs sharing the same serial line, which is the whole reason mkiss exists, periodt. The different ports get addressed by encoding the port number in the control byte of every KISS frame. mkiss watches a serial port and routes KISS frames to/from the pseudo ttys. Then the other side of those pseudo ttys gets attached with kissattach as normal. Slay.

Want stats on how mkiss is doing? Send the SIGUSR1 signal to the running program, bestie. When it receives that signal, mkiss will print a set of statistics to the system log if logging has been enabled. πŸ‘‘

Even though the docs mention using pseudo ttys as the last arguments, those devices may also be normal serial ports. But heads up: mkiss provides no way to set their speed, so the speed has to be set by some other method. No cap.

If the pty argument is /dev/ptmx, then Unix98 behaviour automatically takes effect. With Unix98 ptys, the slave pty name could not be foreseen β€” that’s literally why mkiss will print the corresponding slave pty name as a separate line on stdout. πŸ’–

If the pty name is the special name none, no pty is opened. This is useful if you have a multiport TNC like the KPC-9612 on, i.e., /dev/ttyUSB0, and you only like to handle packets for the second port. The KPC has no option to configure the second TNC to listen on KISS port number 0. So, if you like to send all frames from the pty to KISS port number 1, we need to tell mkiss to tag them for port number 1. This is done by:

mkiss /dev/ttyUSB0 none /dev/ptmx

Frames received with port number 0 are discarded. 🫢

πŸ’… OPTIONS πŸ’…

  • -c β€” This enables a one-byte checksum on each incoming and outgoing KISS frame on the serial port. This checksum is used by G8BPQ KISS roms to maintain the integrity of KISS frames. ✨
  • -f β€” This enables a 16-bit checksum on each incoming and outgoing KISS frame on the serial port. This checksum is used by Flexnet Node and BayCom Mailbox to maintain the integrity of KISS frames. πŸ”₯
  • -h β€” Enables hardware handshaking on the serial line to the TNC. The KISS specification states that no hardware flow control shall be used, so the default is off. But some KISS implementations do use hardware flow control. πŸ™ˆ
  • -l β€” Enables system logging; the default is off. 🌈
  • -s speed β€” Set the speed of the serial port. ⭐
  • -p pollrate β€” Enables polling. Polled mode is used by G8BPQ KISS roms to prevent contention on systems where multiple TNCs share the same serial line. pollrate is the interval between polls (in 100ms units). πŸ•
  • -v β€” Display the version. πŸ‘‘
  • -x number β€” This option is for Unix98 PTYs. It allocates number ptys; their names are written to stdout. When -x is used, the pty arguments are optional. mkiss -x 3 ttyname is a comfortable alternative to mkiss ttyname /dev/ptmx /dev/ptmx /dev/ptmx. πŸ’€

🧚 SEE ALSO 🧚

kissattach(8), ifconfig(8), kill(1).

πŸ’œ AUTHORS πŸ’œ

  • Tomi Manninen OH2BNS <oh2bns@sral.fi>
  • Jonathan Naylor G4KLX <g4klx@g4klx.demon.co.uk>
  • Kevin Uhlir N0BEL <kevinu@flochart.com>

That’s the whole vibe, bestie: Linux, dated 13 April 2010, manual tag MKISS(8) β€” and yes, it ate πŸ’…βœ¨