Categories
How-To

Linux Packeteering: Direwolf + QtTermTCP

How to poke around via HF packet!


Table of Contents:

  1. Preface
  2. Configuring Direwolf
  3. Configuring QtTermTCP
  4. Connecting to a Station
  5. K2K Chat
  6. Using Nodes as Relays
  7. BBS Basics
  8. Getting Help
  9. What’s Next?

Preface:

Next in this series, we will configure a terminal emulator designed to pair well with software TNC’s and BBS’s. If you never want to run your own BBS, you’ll be done at the end of this post and can disregard the rest of the series. For everyone else, this is about the halfway mark. I’ll make one little note about packet etiquette here. Since much of HF packet happens simplex, if you see an active conversation or message being sent, wait until the frequency is clear to start something in earnest. It only takes a few stations on at the same time to slow things to a crawl at 300Bd making it less fun for everyone.


Configuring Direwolf

The first thing we need to do is create a direwolf configuration file. It’s not strictly necessary but if you try to do it all via the CLI at start, the string is ridiculously long. Of course since my hardware is probably not your hardware, you’ll need to make some modifications. If you’d like to know more about these settings, I encourage you to dig in to the documentation. All of these settings are documented in the user manual.

nano ~/.config/direwolf/direwolf.conf
#Audio
ADEVICE scu
ACHANNELS 1
FX25TX 1

#Modem
CHANNEL 0
MODEM 300
FRACK 15
RETRY 15
PACLEN 60
MAXFRAME 1
DWAIT 0
SLOTTIME 10
PERSIST 63
TXDELAY 50
TXTAIL 10
FULLDUP OFF

#PTT
PTT RIG 2 localhost:4532

#Control Port
AGWPORT 8000
KISSPORT 0

Now we just need to start it. This set of options outputs audio device status/info every ten seconds, quiets junk APRS info we don’t care about, disables program color scheme, and points the binary to our config file. The .desktop file in ~/.local/src/direwolf/build should be modified to this.

/usr/local/bin/direwolf -a 10 -q d -t 0 -c /home/USER/.config/direwolf/direwolf.conf

Executing the command above should open our program up in a terminal window. You should be able to decode stations at this point. I just opt to disable the color scheme because the default is insane. YMMV

While viewing the audio feedback information, we want to set our RX audio level so that the number before the fraction in parentheses reads somewhere between 50-100.

CALL-7 audio level = 67(32/33)

If you’re not decoding any traffic you’ll see lines like the one below. Your audio level is the last number in the line.

ADEVICE0: Sample rate approx. 48.0 k, 0 errors, receive audio level CH0 62

That said, I’ve had good luck with the audio cranked under poor conditions. Direwolf complains that it’s too loud but packets in the noise start coming through. I don’t know why this is as it doesn’t change the SNR. 🤷🏻‍♂️ It’s something we’ll need to run some empirical tests for to determine the optimal settings for. HF packet using soft modems is still a bit uncharted.

Configuring QtTermTCP

The goal is to connect to Direwolf’s AGW interface at localhost:8000 and port A for the TNC device we’ve set up above. Setup>AGW Setup will take you to a window with the following options. This is the bare minimum to get started.

terminal call = CALLSIGN
...
ports = A
...
host = localhost
port = 8000
paclen = 60

If you’d like, this is how to enable a beacon message here as a non-BBS user to advertise yourself on the frequency. The message can be whatever you want but keep it brief. Grid, functionality available, and network name are reasonable. I don’t recommend sending beacons more than about once every 25 minutes or so.

destination=Beacon
...
interval = 25
message = YOUR_GRID K2K FARPN

Connecting to a Station

Once QtTermTCP is connected to Direwolf’s AGW port, you can click on an empty session tab, Connect>AGW Connect, enter the call, select the radio port, and hit OK. This will initiate the connection. Which SSID you connect to will determine the functionality available to you once you are connected.

K2K Chat

There are several ways to engage with people K2K via packet using softmodems and BBS software. The first way is an emulation of ‘connected mode’ packet whereby you’ve essentially got a direct line to the sysop. This is a no frills 1:1 chat with all the benefits of knowing whether or not or message was received if you’re paying attention to the terminal monitor. The next method uses BBS chat software like BPQChat. This is a chat room with configurable rooms and topics. It’s a much nicer experience than straight sysop chat and my preferred way to have a K2K chat. The last way is the most bare bones packet chat. You can send unproto (raw) messages directed to your intended recipient but with no knowledge of receipt. How unproto messages are sent vary by modem so I’m not going to go into it. This is a bit like sending an APRS packet but with no repeating. When software is being weird I’ll resort to this but I don’t do it often. The recipient needs to be paying attention to their terminal monitor to see the raw messages and you’ll probably have to resend it multiple times until you can get a RR back from your chat partner.

Using Nodes as Relays

One of the neat things about packet nodes on HF is that two good low angle hops allow you to cover amazing distances. It’s been my experience that on 20 and 40m, my station at 100W just doesn’t have the omph to make it more than a single hop. I can however make the hop to the east coast of the US where many of the stations have easy access to most of Europe. For this to work, you’ll want to connect to the Node SSID which is typically -7. From here you’ll need to investigate the node. This is what that would look like on a BPQ node. Commands are in bold and replies are in italics. If you wanted to connect to my station and then connect to EU, VE3VTY is a good candidate. This is the way to hop around in packet. Digipeating is a bad idea. It’s such a bad idea via HF that I’m not going to cover it. I would try to limit relays to one (maybe two) other node(s) if possible as it ties up a lot of time on a network. Definitely don’t try to dump a bunch of bulletins like this.

Key:
? - Help
p - Ports
mh - MHeard
c - Connect
Connected
N6CTA-7} Nodes
N6CTA-1             N6CTA-4 

?

N6CTA-7} BBS CHAT SYSOP CONNECT BYE INFO NODES PORTS ROUTES USERS MHEARD

p

N6CTA-7} Ports
  1 300Bd FX25 DW                 
  2 Telnet Server 

mh 1

N6CTA-7} Heard List for Port 1
VE3VTY-7   00:00:01:01    
KA5D-7     00:00:01:24    
KD9JLZ-7   00:00:07:59    
WW6Q-5     00:00:22:19    
VE3VTY-1   00:00:23:58    
KA5D-1     00:00:24:17    
KD9JLZ     00:00:28:39    
KB9PVH-7   00:00:35:16    
WB5BNV-1   00:00:40:28    
WB5BNV     00:00:40:29    
KB9PVH     00:00:42:34    
KB9PVH-1   00:01:50:22    
K5DAT-3    00:02:03:42    
KC9VMO-8   00:02:17:53    
KJ7LVZ     00:03:46:46    
KJ7LVZ-1   00:04:13:07    
K8ZTT      00:06:21:53    via DRL,AC0VC-2*
KJ7OES     00:06:22:06    
KE0GB-7    00:06:22:07    
N0HI-7     00:06:26:14    
KJ7OES-1   00:06:28:39    
KD9UPB-1   00:06:29:12    
KD5LPB-7   00:06:31:20    
K7SKI      00:06:35:40    
KB9PVH-15  00:06:38:12    
KB9PVH-5   00:06:39:00    
AB4KR-7    00:06:54:59    
W7BMH-7    00:06:58:51    
KI0BK      00:07:00:25    
KB5YZB-7   00:07:09:28

c 1 VE3VTY-7

BBS Basics

Most BBS services on an initial connection will ask you for basic information like name, qth, etc. We’re not going to be setting up or talking about forwarding just yet but fields like HomeBBS and Hierarchical Routes tell a station where you receive mail and how to get mail back to you. For now, I would treat each BBS as an island and leave that information blank. You can always update the information later.

Some stations offer Winlink or even email access. I’m not a proponent of this but by all means feel free to venture off into that corner. Just be aware that it’s not something I will ever cover. I will however cover using Winlink apps like Pat and RadioMail to access a BPQ mailbox.

A full service BPQ BBS typically has the following options:

N6CTA-7} BBS CHAT CONNECT BYE INFO NODES PORTS ROUTES USERS MHEARD
Key:
BBS = Mail/Board
CHAT = Chat room
CONNECT = Requires an outbound port and destination call
BYE = Disconnect
INFO = Information about the BBS left by SYSOP
NODES = Nodes attached to BBS
PORTS = BBS connectivity
ROUTES = Forwarding routes to other stations
USERS = Users currently connected to the BBS 

Getting Help

Sending ‘?’, ‘h’, ‘/h’, or ‘help’ will usually get you the list of commands available depending on the software or hardware you’re connected to. These are the help files for BBS (Mail/Board) and CHAT on a BPQ BBS.

BPQ BBS Help File

A - Abort Output
B - Logoff
CMSPASS Password - Set CMS Password
D - Flag NTS Message(s) as Delivered - D num
HOMEBBS - Display or get HomeBBS
INFO - Display information about this BBS
I CALL - Lookup CALL in WP Allows *CALL CALL* *CALL* wildcards
I@ PARAM - Lookup @BBS in WP
IZ PARAM - Lookup Zip Codes in WP
IH PARAM - Lookup HA elements in WP - eg USA EU etc
K - Kill Message(s) - K num, KM (Kill my read messages)
L - List Message(s) - 
   L = List New, LR = List New (Oldest first)
   LM = List Mine, L> Call, L< Call, L@ = List to, from or at
   LL num = List msg num, L num-num = List Range
   LN LY LH LK LF L$ LD = List Message with corresponding Status
   LB LP LT = List Mesaage with corresponding Type
   LC = List TO fields of all active bulletins
   You can combine most selections eg LMP, LMN LB< G8BPQ
LISTFILES or FILES - List files available for download
N Name - Set Name
NODE - Return to Node
OP n - Set Page Length (Output will pause every n lines)
PASS Password - Set BBS Password
POLLRMS - Manage Polling for messages from RMS 
Q QTH - Set QTH
R - Read Message(s) - R num 
                      RM (Read new messages to me), RMR (RM oldest first)
READ Name - Read File
S - Send Message - S or SP Send Personal, SB Send Bull, ST Send NTS,
                   SR Num - Send Reply, SC Num - Send Copy
X - Toggle Expert Mode
YAPP - Download file from BBS using YAPP protocol
>

BPQ Chat Help File

Commands can be in upper or lower case.
/U - Show Users.
/N - Enter your Name.
/Q - Enter your QTH.
/T - Show Topics.
/T Name - Join Topic or Create new Topic. Topic Names are not case sensitive
/P - Show Ports and Links.
/A - Toggle Alert on user join - Enabled.
/C - Toggle Colour Mode on or off (only works on Console or BPQTerm/TermTCP/QtTermTCP - Enabled.
/Codepage CPnnnn - Set Codepage to use if UTF-8 is disabled.
/E - Toggle Echo - Disabled .
/Keepalive - Toggle sending Keepalive messages every 10 minutes - Enabled.
/ShowNames - Toggle displaying name as well as call on each message - Enabled
/Auto - Toggle Automatic character set selection - Disabled.
/UTF-8 - Character set Selection - UTF-8.
/Time - Toggle displaying timestamp on each message - Enabled.
/S CALL Text - Send Text to that station only.
/F - Force all links to be made.
/K - Show Known nodes.
/B - Leave Chat and return to node.
/QUIT - Leave Chat and disconnect from node.
/History nn - Display chat messages received in last nn minutes.

What’s Next?

There are lots of other types of BBS software out there and fun things people have connected to their systems but that’ll be up for you to discover! Part of the fun is just getting out there poking around. Come find me and leave me a message on Net105 or Net40! The next several posts in this series will cover setting up your very own PBBS so you can add sysop to your amateur radio resume.

Linux Packeteering: The Full Service HF PBBS