5 Simple AX25
Tom Russo edited this page 2026-02-15 13:02:33 -07:00

A half-baked quickstart for AX.25 networking

This file only documents the way that one of the Xastir developers uses AX.25 to share a TNC across his home network from a Raspberry Pi with a KISS TNC attached via a USB/Serial adapter. As of 19 Dec 2025 this is working perfectly for me.

Note

AX.25 kernel networking makes use of a KISS TNC. It doesn't work with converse mode TNCs. Put your TNC in KISS mode and leave it there when using this sort of interface!

A lot of documentation out there is ancient

If you Google "Linux AX.25" you'll find lots of documentation, including something called "Linux AX.25 HOWTO". It's old, but more thorough than what I can provide here.

The primary Xastir wiki has pages on setting up AX.25 networking, but they are very old and are documenting use of old versions of kissattach that required you to set up an IP address for AX.25 devices. This is no longer true and is in fact undesirable for APRS, because if you do it then other programs on your computer might try to send TCP/IP data out over your radio.

The instructions here are for a completely bare-bones AX.25 setup that is just enough to use for APRS and nothing else.

  • Install libax25, libax25-dev, ax25-tools, and ax25-apps
  • Make sure you built Xastir after installing the libax25 stuff and that configure told you AX.25 kernel I/O drivers were enabled.
  • Set up the file /etc/ax25/axports:
# /etc/ax25/axports
#
# The format of this file is:
#
# name callsign speed paclen window description
aprs    XX4XXX-1         4800    255     7       144.39 APRS (1200 bps)

In the last line, replace "XX4XXX-1" with your own callsign, and give it an SSID that's different from the one you want to use for Xastir. The first field is just the name you want to call the interface. Since I use it only for APRS, I called the interface "aprs". The baud rate in the third field is the baud rate of the serial port to which the TNC is connected, not the on-air baud rate of the TNC (which is usually 1200 on VHF).

  • Start AX.25 networking
/usr/sbin/kissattach /dev/MyTNC aprs
/usr/sbin/kissparms  -p aprs  -t 250  -s 200    -r 32       -l 100  -f n

Here, "/dev/MyTNC" is the actual device name that my USB-serial adapter shows up as. I set it up to show up that way every time the device is plugged in (instead of randomly changing port names depending on which order things were plugged in) by setting udev rules. Sorry, can't document that. Google it. Otherwise, just look at what devices show up in /dev when you plug in your USB-serial adapter and use that device name here.

"aprs" on the kissattach line is the interface I declared in /etc/ax25/axports. It will become the network device name.

What are those kiss parameters These kissparams arguments set a transmit delay of 250ms, a slot time of 2 seconds (?), a persistence of 32, a transmit tail of 100ms, and half-duplex operation. These parameters were taken right out of other guidance I found on the xastir.org web site.
  • That's it. Once kissattach is running, we have an AX.25 network device called "aprs" that we can use with AX.25-aware programs like Xastir. There are others.

  • Making this stuff start up when you boot your computer is left as an exercise for the reader. Good luck with that.

  • If you can't get it working, open a Discussion (not an Issue)on Xastir's GitHub repo and/or post a question to the Xastir mailing list.