# Soundmodem

Soundmodem est un logiciel open-source, écrit en langage C, écrit par Thomas Sailer HB9JNX/AE4WA, utilisé par les radioamateurs, fonctionnant sous Linux, Solaris et Windows et permettant de décoder les signaux AX.25 du réseau Packet radio, et de APRS.
Son mérite est d'éviter d'employer un modem packet, dit Terminal Node Controller (TNC) pour ce décodage qui est entièrement fait par logiciel. Autrement dit, il remplace le modem packet normalement placé entre l'émetteur-récepteur et le port série d'un ordinateur.
Il fait partie des distributions Fedora et Ubuntu, et fonctionne aussi sous Mandriva. Sa très grande fiabilité fait qu'il n'a pas été modifié depuis plusieurs années, son numéro de version étant toujours 0.10. Il fonctionne sur des machines anciennes, avec n'importe quelle carte audio si elle est supportée par le système d'exploitation. Conçu initialement pour fonctionner sur des processeurs 386, il consomme très peu de CPU (moins de 2 % sur un Pentium de 2007) et de mémoire (moins d'un mégaoctet, principalement des buffers de taille fixe, comme en témoigne l'analyse du code), et n'a pas de bogue connu.

## Contenu

Soundmodem propose deux logiciels:
* soundmodemconfig, une interface graphique, basé sur X11, de création d'un fichier de configuration XML, permettant de définir les ports, de visualiser les signaux et leur spectre, de décoder des signaux et d'ajuster les paramètres (Fréquences, modes comme AFSK, PSK, P3D, NEWQPSK, etc.) et d'activer le Push to talk. Indispensable, elle permet notamment d'ajuster le volume des signaux. Il est possible aussi de définir si le modem va émuler le Protocole KISS (Et aussi de fixer ses paramètres).
* soundmodem, à proprement parler le logiciel de décodage. Il se lance en ligne de commande en prenant comme argument un fichier de configuration XML définissant les ports séries et audio où la ou les radios sont connectées. Lorsqu'il est lancé, il crée une interface réseau AX.25 dont on peut spécifier le nom et l'adresse IP dans la configuration.

## Linux

Il est distribué sous forme de RPM ou bien en tarball (Sources archivés), et fonctionne (au moins) sous les noyaux 2.4 et 2.6. La compilation nécessite un certain nombre de bibliothèques, toutes en open-source:
* libxml pour le parsing des fichiers de configuration.
* libaudio pour l'accès aux cartes sons.
Soundmodem se connecte au système audio soit grâce à ALSA ou directement vers les cartes sons (Devices /dev/dps, /dev/dsp1 etc. OSS natif ou émulé par ALSA). Il semble en revanche ne pas être compatible avec PulseAudio qu'il ne faut donc pas activer au lancement.

## Windows

Soundmodem sous Windows utilise le système audio par défaut.

### Push to talk hardware et software

Il y a deux moyens d'activer le PTT: soit en accédant directement au périphérique, soit au moyen de la bibliothèque Hamlib.
* Le PTT peut être activé au moyen d'un câble série RS-232 (Éventuellement au moyen d'un adaptateur USB pour les machines les plus récentes ne disposant pas d'un port série) ou du Port parallèle classique. La prise en compte de la polarité du DCD (Data Carrier Detect) peut éventuellement nécessiter un câble spécial.
* Grâce à la bibliothèque de contrôle de radio Hamlib, basée sur les interfaces CAT de nombreuses radios, on peut activer le PTT de façon indépendante du modèle de radio.