Getting started with PakCatt

PakCatt is a open source bulletin board (BBS), recently written from the ground up using modern technologies. It’s also an extensive framework for building your own applications and services that can be access over Packet Radio, APRS and the Internet.

If you’re in the Melbourne area you can connect to a running instance on 144.875MHz, callsign VK3AT-1. You can also send it APRS messages on 145.175MHz to the same callsign.

Here is an example of a typical PakCatt session, accessing the bulletin board:

Welcome to PakCatt! Type help to learn more :-)
You have 3 unread messages.

menu> board
Launching Bulletin Board
board> list 3

  No  Updated       Topic
  13  19 Nov 11:44  Contests
  2   04 Feb 08:27  Features & Ideas
  14  25 Feb 21:11  
14 threads

board> open 2

board/2 Features> list 3

  No  Posted        By     Size
  22  29 Jan 21:01  VK3AT  194B
Callsign change - If you're reading this then you already know. My
callsign has changed to VK3AT, and I've updated the BBS to listen
on VK3AT-1. Please let othe...

  23  31 Jan 22:18  VK3AT  312B
Big update for this BBS - I've added a TCP/IP interactive socket so
anyone can connect to it from anywhere on the Internet! This is
terrifying, because it's wid...

  24  04 Feb 08:24  VK3AT  517B
Hey all, check out the last command. Lots of stations! But I need
to explain - I've connected this BBS to @VK3LEs APRS iGate so
that it can send and receive APR...


25 posts in: Features & Ideas

board/2 Features> open 24

Hey all, check out the last command. Lots of stations! But I 
need to explain - I've connected this BBS to @VK3LEs APRS 
iGate so that it can send and receive APRS messages on the 
APRS frequency. This means it also hears stations on that 
frequency and will log them in the last log. You'll see 
the last column in the last log captures wthe channel on 
which the station was last heard - most are on APRS while 
others (like you reading this) will be on the BBS channel 
or the TCP/IP channel.
Hope that makes sense!
73, B

The bulletin board is just one of several applications. Other applications allow you to read personal mail, send APRS messages to remote stations, and do simple maths, for example:

menu> sqrt 12
Square root of 12 is 3.4641016151377544

Install and setup

Running PakCatt is easy:

  1. Download the latest pakcatt-x.x.jar and application.yml files from the PakCatt repo on GitHub. Replace x.x with the latest release version. For release 0.3:
    wget https://github.com/dotb/pakcatt/releases/download/release_0.3/pakcatt-0.3.jar
    wget https://github.com/dotb/pakcatt/releases/download/release_0.3/application.yml
    
  2. Install the Java Runtime Environment (JRE). Yes I know, don’t worry it’ll be painless! On a Debian / Ubuntu system this can be done using apt:
    apt install default-jre
    
  3. Edit the application.yml file to taste. At minimum you’ll want to change the callsign and TCP/IP configuration:
    pakcatt:
     application:
         mycall: PAKCAT-1
    
    network.tcp:
     port: 7331
     enabled: true
     pre-welcome-message: Welcome to PakCatt!
    
  4. Run the PakCatt service:
    java -jar pakcatt-x.x.jar --spring.config.location=./application.yml
    ╔═══╗     ╔╗  ╔═══╗      ╔╗  ╔╗ 
    ║╔═╗║     ║║  ║╔═╗║     ╔╝╚╗╔╝╚╗
    ║╚═╝║╔══╗ ║║╔╗║║ ╚╝╔══╗ ╚╗╔╝╚╗╔╝
    ║╔══╝╚ ╗║ ║╚╝╝║║ ╔╗╚ ╗║  ║║  ║║ 
    ║║   ║╚╝╚╗║╔╗╗║╚═╝║║╚╝╚╗ ║╚╗ ║╚╗
    ╚╝   ╚═══╝╚╝╚╝╚═══╝╚═══╝ ╚═╝ ╚═╝
    By VK3AT & VK3LE
    2023-03-03 09:46:59.349 [         PakCattKt] 	 INFO: Starting PakCattKt v0.2 
    on mufasa.utiku.io with PID 21435 (/tmp/pakcatt-0.2.jar started by bradley 
    in /tmp)
    2023-03-03 09:46:59.355 [         PakCattKt] 	 INFO: The following profiles 
    are active: production
    ...
    

Add storage with MongoDB

The bulletin board and mail apps need a database to store messages. PakCatt uses MongoDB as it’s persistence layer, which is also quick and easy to get running:

  1. Install MongoDB. On Debian / Ubuntu systems this can be done using apt:
apt install mongodb
  1. Run MongoDB and specify a folder to store your data
mongodb --dbpath /home/mydir/pakcattdb
  1. By default PakCatt will connect to a MongoBD instance running on localhost, named pakcatt. You can change this by editing the application.yml:
spring:
  ## Database configuration
  data.mongodb.database: pakcatt
  spring.data.mongodb.host: 127.0.0.1
  spring.data.mongodb.port: 27017

At this point in time you can connect to PakCatt over TCP/IP and create BBS posts and messages!

Connecting PakCatt to a radio

To use PakCatt over a radio you need to connect it to a Terminal Node Controller (TNC). PakCatt can connect to TNCs that suppor the KISS protocol, through TCP/IP or a serial connection.

Using Dire Wolf

Dire Wolf is a software TNC that uses the soundcard in your computer to modulate/demodulate the tones that encode AX.25 packets. It’s a fantastic tool that’ll get you you onto packet radio without needing the older hardware type TNC. This guide doesn’t cover the Dire Wolf configuration but there are heaps of examples elsewhere.

Once Dire Wolf is set up, edit the application.yml file to point PakCatt at your Dire Wolf instance:

## TNC Configuration
  tnc:
    ## TCP/IP TNC connections
    tcp-connections:
      - channel-identifier: 'TCP TNC'
        ip-address: 127.0.0.1
        port: 8001

The example configuration above will connect to Dire Wolf running on localhost, on port 8001

Using an old skewl TNC

Fun fact - PakCatt’s name is a play on the old Pakratt Hardware TNC. If you’re into blinking lights, then this option is for you! Connect your hardware TNC to the computer running PakCatt. You’ll probably need a USB to Serial converter cable and in Linux should see the serial interface appear as something like /dev/ttyUSB0. Then configure PakCatt to connect to the serial port:

## TNC Configuration
  tnc:
    ## Serial port / TNC configuration
    serial-connections:
      - channel-identifier: 'Serial TNC'
        port-path: /dev/ttyUSB0
        port-baud: 9600