ESP32-C3 WSPR

Page in English only

After the success of the ESP6288 WSPR beacon transmitter, I decided to build an even smaller, “headless” version. The main motivation was the availability of a WiFi-enabled ESP board in a postage stamp-sized form factor. This processor board is the Seeed XIAO ESP32-C3. Besides offering similar functionality to the ESP6288, it even provides slightly more flexibility when it comes to available digital pins.

Another motivation was that I previously owned a WSPR-Lite (see blog). This unit, developed and sold by Sotabeams, is no longer available, but it represented a highly optimized solution for portable WSPR operation and antenna performance analyses.

The device was USB-programmable and featured an integrated low-pass filter (LPF) network optimized for the 30 m and 20 m bands. Operation on lower frequency bands (160 m through 40 m) required the use of an external LPF module to ensure adequate harmonic suppression and spectral compliance.

With current technology, it is possible to design a more capable and flexible system by integrating WiFi connectivity, NTP-based time synchronization, and optional GPS disciplining for enhanced timing accuracy and autonomous operation.

For the firmware, I reused my earlier ESP6288-WSPR codebase. At the same time, I took the opportunity to improve efficiency – especially in the generation of the integrated web pages. Since this C3-based WSPR Transmitter version does not include a GPS module or display, a significant amount of code could be removed, resulting in a leaner implementation.

The logic part with WiFi antenne, led and switch.
and now with Low Pass Filter and PA (BS170).

The hardware remains largely unchanged and intentionally kept simple. It uses a Si5351 synthesizer module for generating accurate HF signals, combined with a low-pass filter similar to designs from QRP-Labs for their QMX transceiver. The RF signal is amplified using a BS170, resulting in a straightforward and efficient circuit. The low-pass filter can be designed to cover two bands. In my case, I choose the 30 m and 20 m bands, but combinations such as 60 m and 40 m are equally possible.

The schematic.
The C3 is connected to the Si5315 for power (5V, GND) and I2C (SDA, SCL). The rest is RF circuitry and the LED plus Switch.

The idea behind the “headless” design is to control everything via WiFi. When operating at home, the device connects to your local network and is fully managed through a web interface. In the field, you can switch to an “offline” mode, where the unit creates its own WiFi access point, allowing direct connection to the device.

Time synchronization normally happens via NTP when online. In offline mode, however, you can manually start the timing by pressing a button exactly on an even minute. A red LED indicates the current status of the WSPR transmitter and guides the offline startup.

The firmware is once again hosted on GitHub, making it easy to access, modify, and extend. The integrated website’s look and feel remain similar to the ESP8266-WSPR interface, but there are differences in band and LPF configuration. Additionally, this web server includes a real-time status page for live monitoring.

> 50dBm supression of harmonics @14 MHz.
PCB mounted in a small case with hotglue. (70x50x20mm)

Key Features

  • Multi-band WSPR transmitter (max. 2 active bands) based on LPF applied.
  • 200 mW of output power, with sufficient harmonic suppression to ensure a clean signal.
  • Integrated web server:
  • Status page (/) (see picture left).
  • Configuration page (/config) (see picture below).
  • Calibration page (/calibrate) to calibrate the Si5351.
  • TX test page (/txtest) to measure output and LPF.
  • NTP synchronization when online against ’time.google.com’.
  • EEPROM-based configuration keeping WiFi credentials and all parameters.
  • Easter egg: entering “ERASE” as locator resets the device to the defaults.

Status LED Normal Operation (Online)

  • Power up by connecting 5 Volt to the USB-C.
  • Blinks 3 times → setup complete.
  • Blinks every 2 seconds → idle.
  • Continuously ON → transmitting.

Status LED Offline Operation

  • Hold button while powering up.
  • LED stays ON → release button.
  • Blinks twice per second → wait for even minute.
  • Press button to start clock.
  • Blinks 3 times → setup complete.
  • Blinks every 2 seconds → idle.
  • Continuously ON → transmitting.
Enclosed and transmitting.
Space remains for optional GPS to enable fully off-grid operation.
Morning session on an end-fed antenna: 30 m (green), 20 m (orange).

This project demonstrates how a fully functional WSPR beacon can be reduced to a compact, efficient, and portable design without sacrificing usability.