From APRSWiki
Jump to: navigation, search

Soundmodem is a software package for use with the open source Linux operating system. It allows use of the computer's sound card for AX.25 TNC functions.

An early version of Soundmodem required kernel-level software (like a device driver). More recently it has been rewritten to operate in user-space which makes it the same as other applications.

Soundmodem was written by Thomas Sailor and under Linux it requires the Linux ax.25 kernel support and the mkiss.o kernel module. See also

Of course, using a soundcard gets us into all sorts of interesting territory. There are two "standard" audio systems on various Linux distributions: OSS and ALSA. I think most folks are trending away from OSS and toward ALSA. ALSA has support for most soundcards in the PC-compatible world. Check the ALSA soundcard compatibility matrix.

So your first task will be to get a working soundcard. You will also need some kind of a mixer with which to set your audio levels incoming and outbound. If you have ALSA, a handy command-line mode mixer comes with it: amixer.

(Just a note.. you may want to investigate getting a better soundcard. There is some reason to believe that higher quality hardware, something more than generic on-the-motherboard sound support, might do a better job decoding packets. FYI)

Soundmodem itself comes with another handy program: soundmodemconfig. Using soundmodemconfig you can set up one or more interfaces to your sound card. Each one will have an name of it's own and a related AX.25 name corresponding to an AX.25 name in your /etc/axports file. You also can set various encoding and decoding parameters (baud rate, fsk frequencies, etc.) for each port. Soundmodemconfig will let you view a couple types of realtime spectrum displays which will help a lot in setting your incoming audio level. Unfortunately it is not so helpful on the outbound level. You probably need to listen to your signal on another receiver, a scanner or something, to see how things sound.

Soundmodemconfig will help you select serial or parallel PTT keying. And you can test the PTT from the spectrum display screens. Soundmodemconfig builds a /etc/ax25/soundmodem.conf file which is used by the soundmodem software itself.

Once you get your audio levels working where you want them (probably using an interactive graphical type of mixer), you can use the amixer program to examine the settings and create a small script to reproduce them should your system be rebooted. Or you might want to try the command:

alsactl store

When the audio levels are right, and if you have successfully run soundmodemconfig and created a soundmodem.conf file, you are ready to run soundmodem itself. I do it with a command-line like:

/usr/local/sbin/soundmodem -v5 > /tmp/soundmodem.log &

This fires up soundmodem with a relatively verbose level of logging, sending the log information to the file /tmp/soundmodem.log. If you have a very active system you may want to not use that -v5 flag, or at least keep track of your disk space in /tmp to make sure you don't fill it up with a large log file.

Unfortunately, once you are running soundmodem you cannot run soundmodemconfig at the same time. So your your soundmodem verbosity level will help you see if you are actually decoding packets. If you've got packets, then you are in business. Now you can look at getting an APRS client program or digipeater program or Igate, or whatever else you want to use.


Bob N0QBJ has a web page that covers AX.25 linux.

The Xastir project has a Soundmodem Wiki Page.