SOUNDMODEM(9)
π SOUNDMODEM(9) β the kernel reference guide, but make it cute π
okay bestie, so this is the soundmodem(9) manual page, and it's genuinely one of the nerdiest-girl things in the whole kernel. it's the driver that makes your soundcard pretend it's a ham radio. let's get into it π
β¨ NAME β¨
soundmodem β the amateur (AX.25) packet radio network driver for soundcards. yes, that kind of packet radio. we're doing ham radio in software, and we're doing it fabulously π¦
β¨ SYNOPSIS β¨
#include <linux/soundmodem.h>
#include <linux/hdlcdrv.h>
that's it. two includes. no notes. π
β¨ DESCRIPTION β¨
so like, right now this driver supports both 1200 baud AFSK and 9600 baud FSK (G3RUH compatible), and it does it all on a standard SoundBlaster compatible or WindowsSoundSystem compatible soundcard. iconic behaviour honestly π
the whole decoding happens in software, which is the fun part β but also, and I need you to hear me on this, you definitely do not want to run this on a 386SX class machine. like. respectfully. it will not slay, it will simply perish π
β¨ KEYING THE TRANSMITTER β¨
okay so here's the situation: soundcards do not have a DC coupled output that could serve as a PTT signal. that's just not a thing they do. so there are basically four possibilities for obtaining a PTT signal, and sample schematic diagrams can be found at http://www.ife.ee.ethz.ch/~sailer/pcf/ptt_circ/ptt.html β go look, it's lowkey adorable π
π VOX circuitry
a simple VOX circuitry that detects output signals at the output of the soundcard can be used β and honestly this one ate, because it can be built with a single transistor plus a few passive components, and typical soundcards have strong output signals. single transistor!! we love a low-effort icon β¨
π Parallel Port
a parallel port line can also be used to signal PTT. if selected, the PTT signal is output on the DATA0 line and DCD is output on the DATA1 line. two lines, no drama. π«Ά
π Serial Port
a standard serial port (8250, 16450, 16550) can also be used to output PTT. PTT is output on RTS and TxD, while DCD is output on DTR. the way that this just... reuses the pins you already have. periodt. π
π MPU401 MIDI Port
the MIDI port is basically an asynchronous serial interface and thus cannot output a straight DC level β however it may be used if connected through a retriggerable monoflop with about 15ms pulse duration. also note that only newer SoundBlaster models have a genuine MPU401 MIDI port. the older SB MIDI port cannot be used. π (this is your warning, bestie β check your hardware before you commit.)
β¨ IOCTL CALLS β¨
the ioctl calls follow the implementation in the hdlcdrv. here's the whole squad:
SMCTL_GETMODEMTYPEβ returns the modem type (i.e.SBC1200,SBC9600,WSS1200orWSS9600) πΈSMCTL_SETMODEMTYPEβ sets the modem type. only superuser can do this. main character energy only π₯SMCTL_GETMIXERβ returns the mixer type and the contents of the specified mixer register. πSMCTL_SETMIXERβ sets the specified mixer register, if the specified mixer type matches the mixer type of the soundcard. only superuser can do this. πSMCTL_DIAGNOSEβ returns the contents of the diagnose buffer, which is used bysmdiagto display the eye and oscilloscope diagrams. this one's the pretty one, we love a visual πSMCTL_GETDEBUGβ return some debugging values. not always available. π (ngl, sometimes she just ghosts you)
β¨ SEE ALSO β¨
baycom (9), soundmodem (9), smdiag (8), smmixer (9), linux/drivers/net/hdlcdrv.c β go read them, they're all friends of hers π§
β¨ AUTHOR β¨
soundmodem was written by Thomas Sailer, HB9JNX/AE4WA, (t.sailer@alumni.ethz.ch). legend behaviour, fr fr π
and that's the page!! this one's from Linux 2.1.x, dated 27 April 2008 β so basically vintage, which is a vibe in itself. mwah π <rainbow>stay packet-y, bestie</rainbow> π¦β¨
π¦ where this page comes from
- alpine 3.24: ax25-tools-doc 1.1.0-r0 Β· GPL-2.0-or-later
- debian bookworm: ax25-tools 0.0.10-rc5+git20190411+3595f87-6
- debian trixie: ax25-tools 0.0.10-rc5+git20230513+d3e6d4f-3 Β· GPL-2.0-only
- nixos 26.05: ax25-tools 0.0.10-rc5
- ubuntu jammy: ax25-tools 0.0.10-rc5+git20190411+3595f87-5
- ubuntu noble: ax25-tools 0.0.10-rc5+git20230513+d3e6d4f-1build2 Β· GPL-2.0-only
- ubuntu questing: ax25-tools 0.0.10-rc5+git20230513+d3e6d4f-3
- ubuntu resolute: ax25-tools 0.0.10-rc5+git20230513+d3e6d4f-3build1 Β· GPL-2.0-only
- ubuntu stonking: ax25-tools 0.0.10-rc5+git20230513+d3e6d4f-3build1 Β· GPL-2.0-only
- Copyright 1996 Thomas Sailer (t.sailer@alumni.ethz.ch)
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms