1. Introduction
  2. Firmware
  3. VK4PK WSPR Station
  4. Zachtek Web-Serial Control
  5. Zachtek Products and Kit
  6. Documentation
  7. Filter Boards
  8. Code Tools
  9. References

Related Pages:
  1. ZachTek WSPR Transmitter
  2. VK4PK WSPR RX Site
  3. International WSPR Beacon Project
  4. Zachtek-Interface-App
  5. r23 WSPR Raspbery Pi
  6. My First WSPR Project - VK4PK-Whispering-Pi-v2


The board I have is H/W 1048-002-037 with S/W 002.018. This page is about experimenting with the WSPR TX XP Plus boards to develop the ability to communicate and configure the board with character based application. I have been reading Phil -VK7JJ's Javascript and some Python code on github from Kendell Chilton (not fully functional) as examples. I have been using Python 3 as the main development language. The application makes expensive use of the class Serial.Serialposix.Serial.


The Objective
I and The Brisbane Amateur Radio Club, have been using the Zachtek Desktop as part of the Intl. WSPR Project for some time now. We and others have an ongoing issue with the Desktop transmitter causing interference (desensing) on the whole HF bands. Do not underestimating the distance the transmitter should be from the HF radio installation.

Recently, we have built a remote HF controller. See Remote-Radio-Controller and has all the software required to remotely switch bands. to overcome the desensing I have considered remotely allowing the operator to switch off the Desktop for one band for one of 20 minute cycle via an Node red button on the remote control's web page interface. Not ideal but better than switching off the desktop completely and forgetting to re-enable it. The idea is to locate the Desktop transmitter a long way form the receiver, however, that is not always practical.

Inline Rpi
I have inserted a Rpi running a PiOS in character mode into the usb port that powers the unit and provides serial access to the Zachtek API. This RPi front end allows reading and writing non-blocking serial data to the Desktop. The Raspberry Pi is wifi enables and therefore allows remote access. Fortunatly, the protocol used to communicate and manipulate the Zachtek Desktop transmitter is open and both the firmware and API protocol is available on Harry's Zachtek site by product number:

The Desktop procuct number is 1012. The lastest API is here: 1012 WSPR-TX_Desktop Serial API 202.17.pdf

A big thanks to Harry for allowing open systems to prevail.

Zachtek API To connect to the device use a serial setting of 9600N81. The RTS and DTR line controls Reset and Firmware upload mode, usually you don't have to bother setting them as they will be fine in the default settings. The commands are three letters enclosed in brackets and use a Get/Set structure. The reply is also three letters but included in curly brackets. After this there follows a number of characters that is data, the numbers of characters depends on the command/option sent and is documented in the API document below.

Reference Applications
A tip when you first start to explore the API is to either use the page or the Zachtek config software. The advantage of sending your first API calls using either Phil's (VK7JJ) webpage or my config software (compared to doing it in a terminal software) is that you will see how the replies change the GUI settings and get validation that you are doing it correctly.

VK7JJ Javascript
The by Phil -VK7JJ uses this API for his webpage that can control my WSPR transmitters here: Once the page is loaded simply click the "show advanced" link to expose the API interface.

Zachtek Configurator
In the Zachtek configuration software click the "debug option" option to expose a method to send API Get/Set request.

A quick note about the Save option - If you don't use the save option the current setting will be used until the next restart. So if per your example you disable one band then that band will not be used as long as it has power but power cycling the device (or reseting with RTS line) will restart the device and it will revert to the previous config so you can use that to good effect to "flush" temporary settings that are not saved in to EEPROM.

A Stop/Start Example
If you want to temporarily halt the beacon simply send [CCM] S N When you want to start the beacon again you can either send [CCM] S W, or alternatively you can restart the device by forcing the RTS line low briefly.



The firmware is here: There is a constant that needs to be set in the code that determines what product it compiles for, you find it at line 125 set it to 1048 for the WSPR TX XP Plus board.

WIFI Stack
There is no specific documentation on accessing the wifi stack on the TX XP Plus, however there are code examples and documentationmfor the ESP8285 WiFi under the Arduino SUpport pages. To get the available libraries for your Arduino IDE install you need to add the following line in the "Arduino Boards manager URLs:" Setting in the "File, Configuration" dialog. Set the board to "Generic ESP8285 module" the "File, Examples" menu will have lots of examples for WiFi that should compile and run on the WSPR-TX XP Plus board.

1048 Board Schematic
The schematic is here: The documentation for the WSPR TX XP Plus is the same as for the XP so use that for now, There are no docs on the WiFi and external reference ports for the XP Plus as yet, but looking at the Schematic gives a good idea how it works.


VK4PK WSPR Station

This is my WSPR Station.



Zachtek Web-Serial Control

ZachTek info:
  1. Connect your ZachTek 80-10 desktop device to your computer via USB cable.
  2. Click the [Open serial] button and select your ZachTek's USB Serial port.
  3. Proceed as per normal ZachTek operation:
  4. click the bands of choice in the enable column
  5. Click [Save settings] to permanently store changes in the ZachTek


Zachtek Products and Kit

Product 1048 - WSPR-TX XP Plus:


  1. Standalone operation, PC required for configuration but not for operation.
  2. Works on any Ham band from 136kHz to 70MHz
  3. Is powered from 5V.
  4. Pre-built and tested except for the output low-pass filter that needs to be added.
  5. Comes with built in GPS module and included external GPS antenna with a 3m (10 feet) cable.
  6. Input poweris 5V 250mA so can be powered from a phone charger or USB power pack.
  7. The output power around 250mW is optimised for WSPR operation
  8. Importantly, this is open source software and a hardware Schematic is published on Github.
Mezzanine LP4 add-on card for the WSPR_TX_LP1:

Mezanine-LP4-filter-board.webp features:
  1. Sits on top of a WSPR-TX_LP1 transmitter as an add-on.
  2. Expands the WSPR-TX_LP1 with four low pass filters.
  3. Is a partial Kit.
  4. Needs four low pass filters, product number 1021.
  5. 4-layer PCB for highest overtone suppression.
  6. A 20 page build instruction document help the user build and integrate it to the WSPR-TX_LP1 transmitter.
UTF-8 Encoding Debugging Chart Low pass filter using smd caps and T37 toroidal Cores:

Low-pass filters are sold separately and can be either on-board or external filters.





Filter Boards

The alternative method is to use pre-manufactured Low pass filter boards.

HF Low Pass Filter board - 80 to 6 meter :

  1. This filter board contains Low Pass filters that are suitable to remove overtones from small QRP transmitters
    like the WSPR-TX LP1.
  2. For the HF bands 80m,40m,30m,20m,17m,15m,12m,10m and 6m
  3. Maximum power handling is 2W continously. (Board says 0.5W will be corrected in future revisions)
  4. Insertition loss is between 1.2dB to 2dB.
  5. The overtone filtering -50dBC (with swuare wave input)

Low pass filter board 2190 to 160 meter:


  1. This filter board contains Low Pass filters that are suitable to remove overtones from small QRP transmitters
    like the WSPR-TX LP1.
  2. For the HF bands 2190,630m and 160m
  3. Maximum power handling is 2W continously.
  4. Insertition loss is between 1.2dB to 2dB.
  5. The overtone filtering is -43dBC on 2190 and 630m bands and -48dBC on the 160m (with a square wave input).


Code Tools

UTF-8 Encoding Debugging Chart:
UTF-8 Encoding Debugging Chart (

JavaScript Formatter:


From VK7JJ code:



A must read for building and understanding low pass filters.
A Complete Do-It-Yourself Kit with just a few simple calculations - Revd. George Dobbs G3RJV

Resources for Developers, by Developers:

This is a web browser app to program the Zachtek boards written entirly in javascript.
Control the ZachTek Desktop 80-10 device using only your browser:

Glenn Lyons VK4PK
Ver:gnl20240123 - pre published v0.9