Skip to content

ax25-tools

Configures the kernel AX.25 stack — ports, interfaces, NET/ROM, Rose

What it does

The administrative half of Linux AX.25: attaches a serial TNC or a KISS device to the kernel stack, brings AX.25 interfaces up, configures NET/ROM and Rose, and runs the daemons that let inbound connections reach a program. It carries kissattach, axparms, mheard, ax25d and the rest.

Why you would want it

Linux has AX.25 in the kernel, which is unusual and genuinely useful -- packet connections are sockets, so ordinary programs can use them. This is what turns that from a compiled-in capability into a working port.

Before it will work

A port definition in /etc/ax25/axports naming your callsign, the device, and the speed. Hammunition appends one, wl2k <your callsign> 1200 255 7 Winlink -- the port pat's AX.25 transport uses by default -- from station config (hammunition station set --callsign <yours>). Attaching that port to Direwolf or a TNC with kissattach is still yours to do. With no callsign set the package installs and the line is reported as not written.

How it installs

  • apt: ax25-tools

Configuration it writes

  • /etc/ax25/axports (appended to, mode 0644, existing file backed up); filled from the station values ax25_callsign, and not written while one is unset (D-035)

Known problems

Linux 7.1 removed the kernel AX.25 stack -- net/ax25, net/netrom, net/rose and every driver in drivers/net/hamradio -- in merge 64edfa65 of 2026-04-24. On a 7.1 or newer kernel there is nothing for kissattach to attach to: socket(AF_AX25) fails with "Address family not supported by protocol", and no modprobe helps because the module does not exist. Measured 2026-09-04: Kali rolling (7.1.5) and Pop!_OS 24.04 on its 7.1.5 kernel lack it; Debian 13 (6.12), Parrot 7.3 (7.0.13), Ubuntu 24.04 (6.8) and Ubuntu 26.04 (7.0.0) carry it as a module. Debian removed ax25-tools from testing on 2026-09-01 (#1143282) because it no longer builds against the headers that left with the subsystem, so Kali's archive lacks the package too. Hammunition reads the running kernel's module tree at plan time and refuses this unit by name, or defers it out of a profile, on a kernel without ax25. The userspace packet path is unaffected: Direwolf's KISS and AGW ports serve pat (ax25+agwpe), linbpq, YAAC and Xastir without kernel AX.25. See docs/reference/kernel-ax25.md. An unconfigured axports produces failures that name a port rather than saying the file is empty, which reads as a hardware problem. The AX.25 stack has a long history of being lightly maintained in the kernel, and some of the more exotic paths -- Rose in particular -- have few users and correspondingly few bug reports. A callsign written into axports is transmitted; it is the station identity, not a label. What the configuration block does: appends the wl2k line above to /etc/ax25/axports (mode 0644), with a comment line naming it as ours. It is not appended when the file already has a port named wl2k or a port on your callsign, because libax25 refuses a second one of either -- so a re-run changes nothing, and a port you defined yourself is left alone. The file as it was is copied first to /etc/ax25/axports.hammunition-backup, once. The line is written only when the callsign is an AX.25 address (one to six letters and digits); a callsign such as W1AW/4 is reported as unusable rather than trimmed. On a kernel without ax25 the unit is refused or deferred, and the line with it. Inspect with grep -v '^#' /etc/ax25/axports. hammunition uninstall ax25-tools does not remove it (config files are not reversed, and the plan says so); to undo, delete the two wl2k lines with sudoedit /etc/ax25/axports, or put the backup back with sudo mv /etc/ax25/axports.hammunition-backup /etc/ax25/axports.

Keeping it current

  • probe: apt policy
  • strategy: apt_upgrade

Where to get help with the software itself

The linux-ax25 project wiki, which is also the best available documentation for the kernel stack itself.

Source: catalog/packages/ax25-tools.yaml