Contents |
What the heck is "Soundmodem"? Well, it's a software driver for Linux (can also be used on Solaris and perhaps others) which turns soundcard hardware into a software TNC. You can use many plug-in soundcards, including ISA, PCI, USB, or even most motherboard sound hardware to do this. If you're familiar with AGWPE for Windows, soundmodem is similar in many respects but was written much earlier.
With the Soundmodem driver you only need connect a few cables between your soundcard connectors and your radio, plus perhaps a small cable and/or circuit from another port for push-to-talk capability, and you're able to send/receive packets at whatever baud rates and protocols the software can accomplish. Note that if you don't use a separate pin on another connector, such as a serial handshake pin or a parallel port pin, you'll need to build a VOX circuit in order to key your radio.
There are two methods to configure Soundmodem on Linux:
If #1 you'll have a port name like "sm0". It appears to the system like an ethernet or wireless networking port and you may need to tell some system daemons not to use it. Once the port is created and configured you create an "AX25 TNC" interface in Xastir to talk to it. Multiple programs may use the device at a time, just like any other networking port, which can be problematic. It requires a bit more setup and care than option #2.
If #2, then use the "Serial KISS TNC" interface type in Xastir. This is the easiest to set up but only allows one program at a time to use it. The port appears as if it's a KISS TNC on a serial port, but the serial port is named "/dev/soundmodem0" instead of something like "/dev/ttyS0" in this case.
Here's where we diverge based on whether we're creating a Serial KISS device or an AX.25 kernel networking device with soundmodem. Note: It's possible to create more than one top-level device, then switch between AX.25 and Serial KISS devices. I created one device called "KISS" and another called "AX25", then could switch to either from within Xastir without reconfiguring or restarting soundmodem.
"soundmodemconfig" writes configs to /etc/ax25/soundmodem.conf.
Note: You may wish to turn down your volume in case some TCP/IP packets get routed to the soundmodem interface after it starts up!
Edit /etc/ax25/axports to add a line similar to that shown below but change the callsign to match your callsign:
To start up the device: As the root user run:
(Or on Debian distributions which don't have an init.d entry, run "soundmodem" manually).
Note: Xastir has to be set up "suid root" in order to use ANY AX.25 kernel networking ports. To set the proper permissions for Xastir:
Within Xastir:
"soundmodemconfig" writes configs to /etc/ax25/soundmodem.conf.
To start up the device, as the root user run:
To stop the device:
From within Xastir:
In soundmodemconfig, if you highlight "Channel 0", you'll see a new "Diagnostics" menu option appear. This allows you to bring up a various screens to adjust and verify proper operation. In order to use these options you must do this:
I have used the Scope option in the past and found it useful for adjusting the mixer settings. If you see no activity with "Scope" or with "Spectrum Display", then "soundmodem" is not getting audio from your radio or microphone. Start playing with various mixers and mixer settings until you _do_ get activity on these displays.
You'll need to set the audio drive level and the TXD settings for soundmodem carefully so that your transmitted signal has the proper deviation. The link below has some wonderful info about setting deviation for packet TNC's:
Some people have found that they can't get Xastir to open the port unless they run Xastir as root. This is a bad idea: It's a security risk running anything as root, as well as being bad practice.
Instead consider doing "chmod 4755 /usr/local/bin/xastir" as root, which makes adds SUID ROOT permissions to the Xastir executable. Xastir has been written to drop to regular user permission except when it's manipulating ports, so it's much safer than running Xastir as root all the time. SUID ROOT is required in order to open AX.25 networking ports, but not for serial KISS TNC ports.
Another even safer method if you're running Soundmodem as a KISS TNC is to set the permissions on the /dev/soundmodem0 file so that anyone can read/write the file, or add your user to the same GROUP as the /dev/soundmodem0 file is configured to use. One of these should get you around the permissions problem.
For reference, here's what /dev/soundmodem0 (Serial KISS TNC mode) looks like: lrwxrwxrwx 1 root root 11 2009-05-20 15:54 soundmodem0 -> /dev/pts/25
And here's the device it points to: crw--w---- 1 archer tty 136, 25 2009-05-21 13:50 25
As you can see, the device is read/write by the owner "archer" and a member of group "tty", but the group only has write privileges, not read privileges.
For the other configuration, AX.25 kernel mode device, the Xastir executable _must_ be owned by root and set to SUID ROOT before it can open the port, or else run by the root user directly (that last is a _bad_ idea for reasons of security).
This section derived from a posting by Dave Platt, AE6EO, with his permission.
I've been able to make a soundmodem 1200-baud connection using a SignaLink USB (setting the soundmodem PTT to /dev/null, since the SignaLink USB has its own vox-driven PTT circuit).
Some tricks: