Skip to content
A cross-platform Winlink client written in Go
Go JavaScript HTML Shell CSS Rich Text Format
Branch: master
Clone or download

Latest commit


Type Name Latest commit message Commit time
Failed to load latest commit information.
cfg go fmt Dec 8, 2019
debian Bump version (v0.9.0) Feb 19, 2020
internal Attempt to increase soft max open fs limit on unix Dec 8, 2019
man Include man pages in deb package Nov 14, 2017
osx Bump version (v0.9.0) Feb 19, 2020
res Add sorting to message table headers Dec 5, 2019
share Add systemd unit file for ARDOPc Jan 30, 2018
vendor Pull changes in wl2k-go (ardop listener fix) Oct 1, 2019
.appveyor.yml CI: Upgrade to Go 1.13.8 Feb 19, 2020
.gitignore Don't build with system installed static libax25 Aug 11, 2017
.gitmodules Import and vendor Feb 21, 2018
.travis.yml CI: Upgrade to Go 1.13.8 Feb 19, 2020 Add Mar 11, 2016
LICENSE Happy new year Feb 6, 2017 Add xylo04 to contributors Dec 5, 2019
VERSION.go Bump version (v0.9.0) Feb 19, 2020
bindata_assetfs.go go generate Dec 29, 2019
config.go Add legacy support for older config files (using gpsd_addr) Sep 30, 2019
connect.go go fmt Dec 8, 2019
convert_image.go Resolve go vet issues Oct 12, 2016
event_log.go Add LICENSE and update copyright headers Feb 22, 2016
exchange.go file permissions got changed somehow to 755. Change back to 644 Sep 24, 2019
flags.go Switch to spf13's pflag fork Feb 17, 2016
freq.go Parse frequency string as 64-bit float Aug 13, 2019
http.go go fmt Dec 8, 2019
http_multipart.go Fix broken build on Go 1.6 Mar 15, 2018
interactive.go Add debug interactive command Sep 30, 2017
listen.go Use logger (not stdout) for unlisten error Nov 18, 2017
listener_hub.go Rewrite listeners logic to allow automatic re-init Sep 30, 2017
main.go move GPSd config to its own struct. Only show warning when UI is serv… Sep 30, 2019
make.bash Require Go 1.10 or later Dec 8, 2019
prompt_hub.go Add PromptHub for async prompt in gui and terminal Oct 22, 2017
read.go More input validation on message compose Aug 8, 2017
riglist.go Omit riglist command when not built with libhamlib Mar 8, 2016
rmslist.go Let user override default Service Codes via config Sep 26, 2019
schedule.go Fix time.Timer-leak in scheduler Feb 28, 2016
usage.go ptc-go changed scheme from ptc:// to pactor:// Jan 5, 2019
utils.go Split input lists on semicolon Apr 19, 2017
version_report.go Add missing copyright notice Mar 8, 2016
websocket_hub.go Attempt to increase soft max open fs limit on unix Dec 8, 2019

Build Status Windows Build Status Go Report Card Liberapay Patreons


Pat is a cross platform Winlink client with basic messaging capabilities.

It is the primary sandbox/prototype application for the wl2k-go project, and provides both a command line interface and a responsive (mobile-friendly) web interface.

It is mainly developed for Linux, but are also known to run on OS X, Windows and Android.


  • Message composer/reader (basic mailbox functionality).
  • Auto-shrink image attachments.
  • Post position reports with location from local GPS, browser location or manual entry.
  • Rig control (using hamlib) for winmor PTT and QSY.
  • CRON-like syntax for execution of scheduled commands (e.g. QSY or connect).
  • Built in http-server with web interface (mobile friendly).
  • Git style command line interface.
  • Listen for P2P connections using multiple modes concurrently.
  • AX.25, telnet, WINMOR and ARDOP support.
  • Experimental gzip message compression (See "Gzip experiment" below).
martinhpedersen@duo:~$ pat interactive
> listen winmor,telnet-p2p,ax25
2015/02/03 10:33:10 Listening for incoming traffic (winmor,telnet-p2p,ax25)...
> connect winmor:///LA3F
2015/02/03 10:34:28 Connecting to winmor:LA3F...
2015/02/03 10:34:33 Connected to WINMOR:LA3F
RMS Trimode Follo.SE Oslo. Pactor & Winmor Hybrid Gateway
LA5NTA has 117 minutes remaining with LA3F
Wien CMS via LA3F >
FC EM FOYNU8AKXX59 260 221 0
F> 68
1 proposal(s) received
Accepting FOYNU8AKXX59
Receiving [//WL2K test til linux] [offset 0]
Waiting for remote node to close the connection...
> _

Gzip experiment

Gzip message compression has been added as an experimental B2F extension. The extension is implemented as a backwards compatible alternative to the ancient LZHUF compression.

This experiment is enabled by default and sessions between two Pat nodes (or other software supporting this B2F extension) will use gzip compression when transferring messages.

For more information, see


Copyright (c) 2014-2017 Martin Hebnes Pedersen LA5NTA

Contributors (alphabetical)

  • DL1THM - Torsten Harenberg
  • HB9GPA - Matthias Renner
  • K0SWE - Chris Keller
  • KD8DRX - Will Davidson
  • KE8HMG - Andrew Huebner
  • LA3QMA - Kai Günter Brandt
  • LA4TTA - Erlend Grimseid
  • LA5NTA - Martin Hebnes Pedersen
  • W6IPA - JC Martin

Thanks to

The JNOS developers for the properly maintained lzhuf implementation, as well as the original author Haruyasu Yoshizaki.

The paclink-unix team (Nicholas S. Castellano N2QZ and others) - reference implementation

Amateur Radio Safety Foundation, Inc. - The Winlink 2000 project

F6FBB Jean-Paul ROUBELAT - the FBB forwarding protocol

Pat/wl2k-go is not affiliated with The Winlink Development Team nor the Winlink 2000 project [].

You can’t perform that action at this time.