Table of Contents
HOWTO: Use WhatsPac with the Linux Kernel AX.25 Stack
The Linux Kernel AX.25 stack works very well for RF connections with multiple TNCs, but it does not have native support for the RHP2 protocol used by the WhatsPac client. Up until such time as someone decides to add such support, the simplest way to connect is to enable localhost AXIP traffic and configure a simple “black box” BPQ instance (without node or BBS) to talk to your Linux node over that localhost connection. This AXIP does not use an external network connection at all; rather it provides an Inter Process communication mechanism by which the BPQ process can communicate with the Linux node.
This document will present the example of GB7WEM, a node in Wembley NW London, which uses so-configured BPQ instance to provide a WhatsPac bridge for G3KEY.
Step 1: Configure Localhost AXIP on Linux
There are a number of stages to adding localhost AXIP to your Linux node. First, we need to create a socat socket for the kissattach process to use:
socat pty,link=/dev/ttyq0,raw,echo=0 pty,link=/dev/ptyq0,raw,echo=0 &
Next we need to attach a kiss interface to the socat socket:
kissattach -l /dev/ptyq0 AXIP
kissparms -c 1 -p AXIP
Now we need to configure and run the ax25ipd process to use the interface. Create /etc/ax25/ax25ipd.conf as follows:
socket udp 10098 mode tnc mycall GB7WEM-9 device /dev/ttyq0 speed 19200 loglevel 2 route G3KEY 127.0.0.1 udp 10099
The GB7WEM-9 interface also needs to be added to /etc/ax25/axports:
# name callsign speed paclen window description AXIP GB7WEM-9 19200 256 4 Local IP Link
and to /etc/ax25/ax25d.conf:
[GB7WEM-9 via *] NOCALL * * * * * * L default * * * * * * 0 wemusr /usr/sbin/uronode uronode
Now when we run the ax25ipd service, a network interface called GB7WEM-9 will be created which is only available on localhost udp port 10098, and tries to communicate with a peer AX.25 stack on localhost udp port 10099.
Step 2: Configure a BPQ WhatsPac Bridge
The BPQ Bridge configuration is a single file, bpq32.cfg:
SIMPLE NODECALL=G3KEY LOCATOR=IO91un NODEMAPSERVER=127.0.0.1 CHATMAPSERVER=127.0.0.1 BBS=0 NODE=0 PASSWORD=<password> AUTOSAVE=0 SAVEMH=0 PORT PORTNUM=1 ID=Telnet Server DRIVER=TELNET CONFIG LOGGING=1 DisconnectOnClose=0 TCPPORT=8010 HTTPPORT=8008 LOGINPROMPT=user: PASSWORDPROMPT=password: LOCALECHO=YES MAXSESSIONS=10 CTEXT=G3KEY BPQ32 WhatsPac Bridge\nEnter ? for list of commands\n\n USER=szymon,<password>,G3KEY,NODE,SYSOP LOCALNET=192.168.10.0/24 ENDPORT PORT ID=AXIP Local DRIVER=BPQAXIP QUALITY=200 MAXFRAME=4 FRACK=7000 RESPTIME=1000 RETRIES=10 PACLEN=120 CONFIG UDP 10099 MAP GB7WEM 127.0.0.1 UDP 10098 ENDPORT
This file does the following:
- Disables any attempts by BPQ to communicate over the interntet
- Disable the BPQ node
- Disables the BPQ BBS
- Sets up a standard Telnet Port (also used for RHP)
- Adds the local network to the Telnet port so that you can connect to it from your client device's Web browser.
- Sets up an AXIP port to listen on UDP port 10099
- Configures the AXIP port to communicate with a peer AX.25 stack on localhost udp port 10098
Now you just need to run the minimal BPQ bridge at the end of your AX.25 startup script.
Step 3: Configure WhatsPac
Finally you need to configure WhatsPac on your client browser to communicate with the BPQ Bridge. In my case the node and bridge run on a system called radio.local, so the configuration looks like this:
Notice that the connect script uses standard BPQ statements for the first hop (to connect to the bridge's RHP server), and then has the Linux Kernel AX.25 Stack as the second hop over localhost AXIP (to GB7WEM).

