A (long winded) demonstration of the setup
- Download (2.3GB)
The image requires at least a 16GB SDCard (8.3GB used) and will auto-resize to the full capacity on boot up.
P.S This document is still a work in progress 😻
When Used as A TNC Bank
Upon first boot the image will resize itself to fit the full capacity of the SD card. Second boot will present a black screen, it is at this point where you can right-click on the screen to open the menu. From there, open a terminal.
Please note that there is no toolbar installed, you may want to install the
tint2 package if you wish to actually use the desktop. (
sudo apt install tint2)
By default, none of the TNCs are started automatically, but can be enabled to do so:
sudo systemctl enable vara sudo systemctl enable ardop sudo systemctl enable ardop-gui sudo systemctl enable qtsm sudo service vara start sudo service ardop start sudo service ardop-gui start sudo service qtsm start
To view the TNCs, attach VNC Viewer to Display “2”.
So long as you have RealVNC client installed on a remote system, such as another Raspberry Pi, or an iPad you can connect to the screen running the TNCs for monitoring purposes.
From Terminal: Note: omit the brackets if providing an IP address.
vncviewer [optional IP address]:2 Login is "pi" Password is "raspberrypi"
Or open VNC Viewer from the menu and launch the preconfigured VNC from that (this may be stripped from the image in future for security reasons).
Configuring the TNCs
Note: Due to how QtSoundModem config dialog saves settings, the manually configured sound devices do not appear in the dropdown lists because they are “virtual”, therefore the dsnoop/dmix devices will be overwritten if the dialog is used to change configuration parameters, so the best practice is to edit the file manually to change the KISS or AGW TCP ports to your preference (if needed).
By default the following ports are set:
- KISS: 7777
- AGW: 6666
- 8301 (data)
- KickTNC- How to Keep VARA TNC Alive
- The RPI4 image is the result of the setup process documented here
When used as a Console With Old Packet Apps (not TNCS) –
Not meant for 3rd Parties but provided for educational purposes only.
As this image is dual-purpose, this image is also capable of running old packet applications for fun, but due to performance requirements must not be used if running the system as a TNC-bank.
On this image is DOSBOX with various packages preconfigured to use a virtual serial port pipe to the box with the node running, its complicated and is not really for 3rd party use because of this.
Each program such as “superpacket” or “winpack” relies on a listening serial device on the node, each program has a unique TCP port and so listeners must be set up on the node box. The listeners direct the traffic to a device that the node is configured to attach to when it is started.
Here are some examples for BPQ32:
PORT PORTNUM=17 HIDE=0 ID=TCP KISS 8004 TYPE=ASYNC PROTOCOL=KISS FULLDUP=0 COMPORT=/home/pi/port-8004 SPEED=19200 CHANNEL=A QUALITY=192 ; Quality factor applied to node broadcasts heard on MINQUAL=230 ; this port, unless overridden by a locked route ; entry. Setting to 0 stops node broadcasts FRACK=5000 ; Level 2 timout in milliseconds RESPTIME=1000 ; Level 2 delayed ack timer in milliseconds RETRIES=5 ; Level 2 maximum retry value MAXFRAME=6 ; Max outstanding frames (1 thru 7) PACLEN=128 ; Default max packet length for this port. ; PACLEN is ignored for APRS packets L3ONLY=0 ; 1=No user downlink connects on this port DIGIFLAG=1 ; Digipeat: 0=OFF, 1=ALL, 255=UI Only USERS=10 ; Maximum number of L2 sessions, 0 = no limit UIONLY=0 ENDPORT PORT PORTNUM=18 HIDE=0 ID=TCP KISS 8006 TYPE=ASYNC PROTOCOL=KISS FULLDUP=0 COMPORT=/home/pi/port-8006 SPEED=19200 CHANNEL=A MINQUAL=10 QUALITY=244 ; Quality factor applied to node broadcasts heard on ; this port, unless overridden by a locked route ; entry. Setting to 0 stops node broadcasts FRACK=8000 ; Level 2 timout in milliseconds RESPTIME=2000 ; Level 2 delayed ack timer in milliseconds RETRIES=10 ; Level 2 maximum retry value MAXFRAME=3 ; Max outstanding frames (1 thru 7) PACLEN=100 ; Default max packet length for this port. ; PACLEN is ignored for APRS packets L3ONLY=0 ; 1=No user downlink connects on this port DIGIPORT=0 ; Port on which to send digi'd frames (0 = same port) USERS=10 ; Maximum number of L2 sessions, 0 = no limit UIONLY=0 ENDPORT
On the NODE system
The serial port listeners on the node box (remote) are run from some start scripts, for example:
For PORT 17 (tcp 8004):
#!/bin/bash socat -d -d PTY,raw,echo=0,link=/home/pi/port-8004-stay PTY,raw,echo=0,link=/home/pi/port-8004 & while true do socat -d -d open:/home/pi/port-8004-stay,nonblock,echo=0,raw TCP4-LISTEN:8004,reuseaddr,fork sleep 1 done # End
For PORT 18 (tcp 8006):
#!/bin/bash socat -d -d PTY,raw,echo=0,link=/home/pi/port-8006-stay PTY,raw,echo=0,link=/home/pi/port-8006 & sleep 3 while true do socat -d -d open:/home/pi/port-8006-stay,nonblock,echo=0,raw TCP4-LISTEN:8006,reuseaddr,fork sleep 1 done # End
On the Console System
The image has the reciprocal couplings for each of these tcp ports provided as linux services, these can be turned on automatically.
The following ports with self explanatory service names are available:
port-2704 port-8004 port-8005 port-8006 port-8007 port-8009 port-8011
The above services corrleate to the the various different preconfigured dosbox packages that I have set up for different packet radio applications. They all run on different TCP ports so that it is actually possible to interconnect the applications through the node. e.g. connect from Winpack to the node, then from the node connect to the SuperPacket application (if it is also running).
It is not wise to configure too many kiss-TNC ports as it can have a detrimental effect on the node, sometimes causing BPQ32 to lock up intermittently. For the purposes of this document I have limited it to just two: Port 17 (tcp 8004) and 18 (tcp 8006) respectively for “superpacket” and “winpack”.
Serial Port Tunnels (client side) – enable and start syntax:
sudo systemctl enable port-8004 sudo systemctl enable port-8006 Start: sudo service port-8004 start sudo service port-8006 start
Each port that is started opens a ‘screen’ session for debugging. Each screen session is easily identifiable using
pi@console:~ $ screen -r There are several suitable screens on: 5915.Port8004 (07/23/2022 11:16:56 AM) (Detached) 5093.Port8006 (07/23/2022 11:08:14 AM) (Detached) To view the console's output: Example: screen -r Port8006 CTRL-A then D will detatch the console.
Winpack is configured to use DOS BPQ as the communications layer, and utilizes the KISS interface to talk to my remote node. The node’s “socat” serial port is listening on TCP port 8006, using the socat setup described above. This allows the DOSBOX instance to communicate with the node that is on a remote host. The nodes talk to each other via NETROM, the example port setup shown earlier in the document demonstrates that NETROM is enabled and is sending as many nodes as possible on that port. When successfully linked, the Winpack terminal should show a lot of NETROM activity from broadcasts.
The schametic is like this:
LinBPQ Node -- [Kiss Port 17] -- [Serial Socat Listener Port 8006] <-network-> [Remote Serial Socat Connector] <—-> [DOSBOX-Staging] <—-> [DOS BPQCODE.DLL] <--> [Windows 3.11] <--> [Winpack 6.80]
To configure your own callsign you must edit the following file:
When the ‘winpack’ script is run it will launch DOSBOX and run the BPQCFG.EXE automatically before auto-booting Windows, this converts the configuration TXT into binary for the BPQCODE to use. Winpack is preconfigured to use the resident BPQ node.
Winpack’s own callsign configuration is pretty straight forward and self explanatory.
Superpacket, on the other hand, is a complex RTFM situation, only for those with the edge!
Apps confirmed and preconfigured to work:
- Paket 6.1 (paket)
- Baycom (baycom)
- Winpack 6.80 (winpack)
- SuperPacket 9.2 (sp)
- New Packet Generation 2.0 (npg)
- TST Host (tsthost)
- BPQ 4.09 (DOS)
- TheDraw has been included to provide access for text drawing.
Take a look in /home/pi/.config/dosbox for the various config files for the applications. Note that each application requires a unique BPQ KISS port to be configured, with the exception of Paket, which requires a TNC emulator port to be configured. For KISS, see the Ports examples above.
Example TNCPORT for Paket (BPQ32 configuration).
TNCPORT COMPORT=/home/pi/port-8011 TYPE=TNC2 CHANNELS=4 CONOK=1 ECHO=0 AUTOLF=1 ENDPORT
Some applications dependant on BPQCODE in DOS that have been tested and known to fail:
- EasyTERM PMS (DOS based frontend for BPQ from circa 1994, not to be confused with UZ7HO software)