What is it?

The VK3FUR packet system is located in Richmond, Victoria, Australia (QF22me). It provides several packet services on 2m FM (145.175MHz) and 70cm FM (439.100 MHz).

APRS packets are digipeated between 2m and 70cm. It also supports sending APRS-IS messages to 2m.

2m FM 145.175MHz - 1200 baud

70cm FM 439.100MHz - 1200 baud

Currently no forwarding/routing from F6FBB exists.

How to use it?

I use Linux kernel AX25 + direwolf software modem. This typically involves starting direwolf with -p and using kissattach to connect it to the kernel. You can find some config notes here.

Linux kernel 5.19 introduced some improvements to handling AX25 connections. I highly recommend using Linux kernel 5.19 when connecting to AX25 services


For APRS just use APRS like you normally would. The digipeater functions will digipeat on appropriate paths (eg, WIDE1-1, WIDE2-2).

Zork / F6FBB

For Zork and F6FBB you need an AX25 client that supports calling into stations. I’ve found using direwolf as a soundmodem, Linux’s AX25 stack, and axcall a good combination.

axcall 1 VK3FUR-1

Everyone’s radio and software stack is different but I put together a quick GitHub gist that shows how to setup a UV5R + DigiRig and Linux to connect to the BBS here.

Make sure you select AX25 in your Winlink configuration and connect to VK3FUR-10


Remember to keep within the amateur radio licensing rules. This means ensuring no encryption is used over the air

For IP packet you’ll first need an IP address. At the moment I have no good way of assigning these - so reach out to me to get an IP address allocated.

Assign the IP address to your ax25 network interface then add a route to the gateway address

To route the entire internet via AX25 you could do

ip route add via dev ax0 

or to route a single server

ip route add via dev ax0 

Hardware / Software details

GM300 and GM1200 radio
GM300 and GM1200 radio used for the packet system

The system currently runs off a Raspberry Pi using debian, direwolf, f6fbb, axwrapper and ax25d. Two recycled radios, a GM300 (70cm) and a GM1200e (2m) provide RF. Each radio puts out around 10W into a small vertical antenna affixed to the top of our apartment building.

As there was a desire to use a single antenna for both 2m and 70cm a duplexer was used (CF-4160N Comet Duplexer). This allows one antenna to be used for two different bands (or you can use it in reverse and have two antennas for one radio).

DigiRigs are used to interface between the radios and the Raspberry Pi with hand built interface cables - though prebuilt cables do exist. The interface cables lower the audio output volume to a range suitable for the DigiRig and connects up the required PTT pins. No other modifications were required to these radios.

If your setting up your own station make sure to adjust the TX audio levels. Direwolf has a test mode direwolf -x that generates a test signal. You can listen to the signal with another radio. Adjust the TX output to the lowest, then turn it up until it starts distorting or doesn’t get any louder - then adjust it to be a little lower than that. (yes I know this isn’t the perfect way to adjust the output level but it’s good enough)

The 70cm radio isn’t quite as loud as it should be but its still within acceptable limits to use around the city.

How to build it?

This section isn’t going to be an in-depth tutorial on how to setup a packet system as everyone has very unique requirements but rather an overview of the steps one should take.

For my setup I specifically used Linux native AX25 stack as it seemed like the easiest option. However there are other options like NOS / JNOS.

  1. Configure your radio for the desired frequency and interface it with either a TNC or a softmodem like Direwolf.

  2. Setup your TNC and make sure your OS can use it - send some test packets (you can echo out KISS frames to the serial port as a quick test)

    For Linux this also means configuring /etc/ax25/axports and using mkiss + kissattach to make multiple ax25 interfaces. If you have a single radio you can skip mkiss and use kissattach directly.

  3. On linux for things like zork you can use ax25d and axwrapper to listen for AX25 connections on a SSID

  4. F6FBB compiles easily for Linux and will listen on kernel level AX25 for connections. The F6FFB website has some fairly good documentation

  5. For Winlink you need to get approval to run a Winlink node - once you have that these instructions are a good start.

  6. For IP packet it can get a bit complex and requires a bit of knowledge about routing to figure out. Start by getting an IP allocation from AMPRnet, working out how you are going to route it (BGP, VPNs, ect…). Make sure you configure all the route tables along the path and ensure your AX25 node has net.ipv4.ip_forward sysctl enabled to allow routing. Also consider things like NAT and firewall rules. On linux you can treat the ax0 like a normal network interface with the exception that it only does IP, no ethernet.

    It’s a good idea to draw out a map of the network when designing this part. Here’s the map I made.

    Network map

  7. Build startup scripts to configure everything on bootup This was probably one of the more frustrating things to sort out. As I was running a single direwolf instance for two radios I needed to use mkiss to split the pty terminal into two ax25 port. As I wanted to host different services on each ax25 port/radio I ended up with a script like

    cd /dev; M=$(readlink -f /tmp/kisstnc); PTYS=$(/usr/sbin/mkiss -x 3 $M |tail -1); n=0; for p in $PTYS; do ln -fs $p /dev/ptyr.$n; n=$(($n+1)); done
    /usr/sbin/kissattach /dev/ptyr.2 UHF
    /usr/sbin/kissattach /dev/ptyr.0 VHF
    /usr/sbin/kissparms -c 1 -p UHF
    /usr/sbin/kissparms -c 1 -p VHF
  8. Setup automated backups!