You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
TermTCP/README.md

3.9 KiB

TermTCP

A terminal TCP client for BPQ32 packet radio nodes, written in C with an ncurses TUI. Connects via BPQTermTCP protocol, displays split output/monitor panes, supports real-time RF frame monitoring with port filtering, multiple simultaneous sessions, and built-in forms for ICS-213 and packet check-in.

Features

  • ncurses TUI with split output and monitor panes
  • BPQTermTCP protocol (compatible with QtTermTCP)
  • Up to 4 simultaneous sessions with live background receive
  • RF monitor with per-port and frame-type filtering
  • Auto-populates port names from the BPQ server on connect
  • Scrollable output and monitor windows with history
  • Input history (Up/Down arrows)
  • Session logging to timestamped files
  • Function key bar (F1/F3F10) at bottom of screen
  • ICS-213 General Message form with F2 background send
  • PKTNET Packet Check-In form
  • Multiple host configuration with quick connect
  • Unicode box-drawing borders on all menus

Dependencies

  • GCC
  • ncurses with wide character support (libncursesw6)

Install dependencies on Debian/Ubuntu

sudo apt install gcc libncurses-dev

Build

make

The binary is ./termtcp.

Other make targets

make clean      # Remove build artifacts
make debug      # Build with debug symbols
make install    # Install to /usr/local/bin/

Manual compile

gcc -Wall -Wextra -O2 -std=gnu99 -D_XOPEN_SOURCE_EXTENDED \
    -o termtcp termtcp.c -lm -lncursesw

Configuration

Config is stored in ~/.BPQTermTCP.ini and created automatically on first run. Edit it to add BPQ nodes:

[Host1]
Host=10.0.2.7
Port=17023
Username=kb8pmy
Password=yourpassword
Name=Home Node

[Host2]
Host=10.121.15.68
Port=17023
Username=kb8pmy
Password=yourpassword
Name=Water Tower

Port names, monitor settings, and port mask are saved here automatically when you change them in-program.

Usage

./termtcp

Press Ctrl+A to open the menu, then select an option.

Key bindings

Key Action
Ctrl+A Open menu
Ctrl+A C Connect to a host
Ctrl+A D Disconnect current session
Ctrl+A N Open a new session
Ctrl+A X Close current session
Ctrl+A 14 Switch to session 1, 2, 3, or 4
Ctrl+A O Config / host editor
Ctrl+A M Monitor options
Ctrl+A L Toggle session log
Ctrl+A F Forms submenu (ICS-213, PKTNET check-in)
Ctrl+A H Help
Ctrl+A Q Quit
F1 Connect
F3 Monitor options
F4 Config / host editor
F5 Toggle log
F6 Forms submenu
F7 New session
F8 Previous session
F9 Next session
F10 Quit
Up / Down Input history
PgUp / PgDn Scroll output window
Home / End Scroll monitor window
Enter Send line to server

Multiple sessions

Open up to 4 connections simultaneously. All sessions receive data in the background — switch between them with F8/F9 or Ctrl+A 14. The status bar shows [current/total] session count. Close the current session with Ctrl+A X (if it is the last open session, the program exits).

Forms (Ctrl+A F)

  • ICS-213 General Message — fills in all numbered fields, sends via F2 in the background using silence-based prompt detection
  • PKTNET Packet Check-In — pre-formatted check-in template

Monitor options (Ctrl+A M)

  • Toggle TX, supervisor, nodes, and UI-only frame filtering
  • Toggle monitor pane visibility
  • Select which RF ports to monitor (Tab to switch to port list)

Port names are auto-populated from the BPQ server when you connect and saved to config.

BPQ Protocol Notes

  • Uses BPQTermTCP protocol (same wire format as QtTermTCP)
  • Sends trace options on connect to enable RF monitoring
  • Port list requested automatically via P8=1 on connect
  • Monitor frames delimited by 0xFF 0x1B / 0xFE byte markers
  • Port info delivered as 0xFF 0xFF packet on connect
  • NODES broadcasts filtered client-side via >NODES in AX.25 header

Version

Current: 0.0.60

Powered by TurnKey Linux.