Soundmodem, the AX.25 utilities, etc.

Unfortunately, many packet-related software packages have rotted in modern distributions, and the versions provided as binaries are outdated. In some cases this does not matter, but in others it prevents successful operation.


In the distributions I'm familiar with, packages of soundmodem 0.10 and 0.11 are common. This is unfortunate, because newer releases of soundmodem have better support for ALSA and newer sound cards, in my experience. As of November 2009, 0.14 is the current release, and whereas 0.10 (packaged in ubuntu 8.04 and 9.04, both!) produces distorted audio after a few packets on my BBS machine, 0.14 works admirably.

Following some advice on a mailing list, I have configured soundmodem to use the 'plughw' ALSA device corresponding to my sound card, rather than the hw device. This seems to take care of the aforementioned distortion problem.

ax25-tools and ax25-utils

Likewise, ax25-tools and -utils seem to seldom get packaging love. This is particularly problematic as several of the important utilities deal with ptys, and ptys have changed since the dark ages, when the packages were apparently last updated. Specifically, Unix98 ptys (where serving applications open /dev/ptmx, and a new client socket is automatically created under /dev/pts/) are now the norm, instead of /dev/ptyp* and /dev/ttyp*. If you want to run JNOS or another package which uses KISS devices (and not Linux ax.25 network devices), you will need an updated ax25-tools for a net2kiss which supports these Unix98 PTYs.

These tools are now hosted at, which has been down for some time as of 2012-07-23.

net2kiss has some unfortunate behavior from the point of view of discovering its slave pty. It's eminently fixable, but until I get around to fixing it (or someone else does), I use this net2kiss_wrapper script. It is invoked as:

net2kiss_wrapper <device symlink> <pidfile> [net2kiss args]

The device symlink argument is the name of a symlink which net2kiss_wrapper should create to point to the slave pty, and pidfile is the file where net2kiss_wrapper should drop the pid of net2kiss for later use. For my own station, I invoke net2kiss_wrapper as net2kiss_wrapper /dev/ptysm0 /var/run/ -i sm0 /dev/ptmx. This causes /dev/ptysm0 to be a symlink to the net2kiss pty slave, and the pid of net2kiss to be dropped in /var/run/