AX25 sous Debian et dérivés

Il y a une mise à jour de cet article disponible ici.

Il existe une ribambelle d’articles expliquants comment configurer ax25 sous Linux. Quasiment aucun de ceux que j’ai pu lire expliquent comment passer votre TNC en mode KISS ou bien comment lancer des programmes lorsque l’interface ax25 devient active.

La lecture de cette article présuppose des connaissances de base dans Linux, un système Linux fonctionnel et connecté au web pour télécharger les paquets ad-hoc ainsi que la maitrise de l’éditeur VI. La distribution que j’ai utilisé ici est Voyage Linux. C’est une distribution basée sur la dernière Debian stable et sans aucune interface graphique. Elle a l’avantage de tourner sur des machines très économes en énergie comme ces client légers Fujitsu Siemens.

Ces manips sont suceptibles de fonctionner sous toutes les distributions basées sur Debian, comme Ubuntu, XUbuntu etc…
Toutes ces manipulations sont effectuées  en tant qu’utilisateur root. J’utilise un TNC2 multi avec une ROM Nord><Link TF2.7, il se peut que vous ayez à adapter ceci suivant votre TNC. Cet article n’avait pas pour vocation première à être un tutoriel complet et détaillé, je le destinais en premier lieur à archiver et documenter mon travail.

Nous allons commencer par installer les paquets ax25 avec la commande :

apt-get install libax25 ax25-apps ax25-tools

Ensuite il nous faut éditer le fichier /etc/ax25/axports Pour l’ouvrir dans l’éditeur VI on tape la commande :

vi /etc/ax25/axports

On y défini son indicatif avec éventuellement un SSID. Lorsqu’on utilisera une appli APRS on pourra y spécifier un autre indicatif. Il est important de noter que le champ speed ne correspond pas à la vitesse de transmission sur l’air mais à celle utilisées pour communiquer avec le TNC via le port série ! Dans mon cas 9600bps.

Voici pour exemple le contenu de mon fichier :

# /etc/ax25/axports
#
# The format of this file is:
#
# name callsign speed paclen window description
#
APRS    F4FXL-1 9600    255     2       144.800 MHz (APRS 1200  bps)

C’est tout pour la config ax25 proprement dite, il va maintenant falloir créer une interface réseau utilisable par tout le système. Nous allons donc éditer le fichier « interfaces » et y créer notre interface. Mais, avant de faire cela nous allons créer un script qui va nous passer le TNC en mode kiss.

Créons un fichier que nous nommons ax25services et plaçons le dans /usr/sbin/, rendons le exécutable et éditons le

touch /usr/sbin/ax25services
chmod +x /usr/sbin/ax25services
vi /usr/sbin/ax25services

Voici le code du script, j’ai commenté le code de façon à en décrire le plus possible le fonctionnement.

#! /bin/sh
# /usr/sbin/ax25services
#
# Ce script présuppose que le TNC est sur le port série ttyS0.
# Ceci est à adapter suivant vos besoins
###################################################################
 
# Ceci sera éxecuté lorsque le script sera appelé avec le paramètre start
case "$1" in
  start)
    echo "Configuring TNC and starting AX25 iface"
 
    #stty nous permet de configurer le port série de sorte
    #que tout soit envoyé en 9600bps, sans aucun échappement ou autre
    stty 9600 cs8 -raw /dev/ttyS0
    sleep 1
 
    #On règle le TX Delay à 250ms
    printf "\r\033T 25\r"&gt;/dev/ttyS0
    sleep 1
 
    #Une fois tout les paramètres du TNC on peut passer le TNC en mode Kiss
    printf "\r\033@k\r"&gt;/dev/ttyS0
    # Le passage du TNC en kiss peut prendre du temps, attendons 5sec
    sleep 5
 
    #On appel kissattach en lui spécifiant le nom de l'interface que
    #nous avons préalablement spécifié dans /etc/ax25/axports
    #dans mon cas, APRS
    #L'adresse IP est celle utilisée par TCPIP over ax25
    #On est obligé d'en spécifier une, si on utilise pas TCPIP over ax25
    #mettre une adresse bidon en 192.168.x.x !
    kissattach /dev/ttyS0 APRS 192.168.223.159
    sleep 1
 
    #J'utilise ldsped, qui est un équivalent linux à AGW Packet Engine (AGWPE)
    #http://www.on7lds.net/ldsped/
    #La ligne ci-dessous peut être mise en commentaire si on utilise pas ldsped
    ldsped -d
    ;;
 
#Ceci sera éxecuté lorsque le script sera appelé avec stop en paramètre
  stop)
    #On affiche ce que nous faisons
    echo "Stopping ax25 iface"
 
    #On tue à la barbare tout les process, moche mais efficace !
    pkill kissattach || pkill -9 kissattach ; rm -f /var/lock/LCK..ttyS0
 
    #On tue ldsped, cette ligne peut être supprimée si on utilise pas ldsped
    pkill ldsped
    ;;
 
# ceci sera exécuté si aucun paramètre n'est spécifié 
  *)
    echo "Usage: ax25services {start|stop}"
    exit 1
    ;;
esac
 
exit 0

Une fois ce script en place, nous allons éditer le fichier de configuration des interfaces réseau.

vi /etc/network/interfaces

On y rajoute la section qui va configurer notre interface ax25.
Important : l’ip doit être la même que dans le script ax25services !

#ax25 iface
auto ax0
iface ax0 inet static
        address 192.168.223.159
        netmask 255.255.255.0
        network 192.168.223.0
        broadcast 192.168.223.255
        # Ceci va nous lier au port
        hwaddress ax25 F4FXL-1
        # Créons le port avant de démarrer l'interface
        # C'est ici que notre script ax25services sera appelé
        # Notez l'argument start
        pre-up ax25services start
        # C'est ici que notre script ax25service est appelé lorsque
        # L'interface est fermée
        post-down ax25services stop

Nous y sommes ! Il suffit de brancher son TNC sur le PC sur le bon port série, de s’assurer que le dit TNC est bien configuré pour 9600bps sur le port série et on peut tester le tout en activant l’interface via :

ifup ax0
Configuring TNC and starting AX25 iface
AX.25 port APRS bound to device ax0

On vérifie que l’interface est bien là via la commande:

ifconfig

On doit voir l’interface ax0 dans la liste :

ax0       Link encap:AMPR AX.25  HWaddr F4FXL-1
          inet addr:192.168.223.123  Bcast:192.168.223.255  Mask:255.255.255.0
          UP BROADCAST RUNNING  MTU:255  Metric:1
          RX packets:1283 errors:0 dropped:0 overruns:0 frame:0
          TX packets:33 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:10
          RX bytes:111173 (108.5 KiB)  TX bytes:2305 (2.2 KiB)
 
eth0      Link encap:Ethernet  HWaddr 00:90:dc:a1:16:f6
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
          Interrupt:11 Base address:0x2000
 
lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:177 errors:0 dropped:0 overruns:0 frame:0
          TX packets:177 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:15523 (15.1 KiB)  TX bytes:15523 (15.1 KiB)
 
wlan0     Link encap:Ethernet  HWaddr 00:22:2d:49:44:c7
          inet addr:172.16.0.4  Bcast:172.16.255.255  Mask:255.255.0.0
          inet6 addr: fe80::222:2dff:fe49:44c7/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:2035 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1366 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:304538 (297.4 KiB)  TX bytes:251705 (245.8 KiB)

Si tout est vraiment 100% OK l’interface sera montée lors du démarrage du système. Il ne reste plus qu’à tester avec des logiciels comme Xastir, Digined ou tout autre logiciel ax25 !