PI4 + CW + carrier and multiplier

The PI4 + CW + carrier beacon program makes the RFzero capable of transmitting on any frequency from 100 kHz to 200 MHz and beyond running on the fundamental frequency.

There is also a special version of the PI4 + CW + carrier program where the output is to be used on much higher frequencies, e.g. using the harmonics or using a multiplier circuit. This way you can use the PI4 + CW + carrier multiplied program to transmit on e.g. 432 MHz using the third harmonic or on 10 GHz using a x96 multiplier. If using the multiplied program it is recommended to cover the clock with a foam cover or other measures to reduce the airflow (perturbation) around the clock circuit. Using a simple foam cover we have 100% decodes PI4 on 10 GHz where the RFzero generated the signals on 108 MHz followed by a x96 multiplier.

The configuration is done via the USB port. It is possible to wait for the RFzero to warm up for up to 255 s before starting to transmit. It is also possible to wait for the GPS to be valid before starting to transmit.

During the PI4 part of the sequence the TX LED will flash at half the symbol rate, i.e. 3 Hz, during the CW part of the sequence the TX LED will flash with the CW and during the carrier part of the sequence the TX LED will be constantly lit.

When GPS signals are received the PPS LED flashes ones per second and when the status of the GPS signal is valid the Valid LED is lit.



Geoff, GI0GDP, is using an RFzero as beacon driver for his 10 GHz personal beacon. The RFzero generates 216 MHz that is multiplied 48 times to reach 10 GHz.

The 10 GHz personal beacon with x6, x2 and x4 multipliers. Picture courtesy Geoff, GI0GDP.


The PI7ALK beacons consist of seven bands from 1296 MHz up to 47 GHz. Except for the 47 GHz beacon, they all have omni-directional antennas. The height of the beacon antennas is 35 meter above sea level located in the city of Alkmaar.

The RFzero is mounted in the top housing and includes the power supply for the beacon outside. It’s being fed via the coaxial cable. Picture courtesy Hans, PA0HSM.

The RFzero generates a 108 MHz signal that is fed into a Kuhne x96 multiplier followed by a 1 W amplifier into a 16 slots wave guide.


Jemtlands Radioamatörer, SK3JR, has since 4 January 2019 operated the SK3SIX beacon on 50,468 MHz transmitting 15 W using PI4 + CW + carrier. The beacon uses an RFzero and was built by Mikael, SA3AZK.

The RFzero and PA for SK3SIX during testing. Picture courtesy Mikael, SA3AZK.

The beacon sequence

When the GPS time is valid the beacon transmits PI4 for the first 24 1/3 s, then followed by a short break of 2/3 s, then the call sign and locator is sent in CW followed by a short break of 500 ms and then a carrier until the full minute. Then the sequence repeats again.

If the GPS signal is invalid the beacon suspends the PI4 and just transmits CW and a fixed length 20 s carrier.


To setup the type of display used please use the “wr display” command. If you want to change what is shown on the display please edit the display.cpp file.

Please see the display page for more information.

LCD 16×2

The display shows the UTC seconds, the GPS status, the number of satellites and the HDOP.

Example of an LCD 16×2.

LCD 20×4

The display shows the GPS status, the number of satellites, the HDOP as a bar graph, the UTC, call sign and locator of the beacon and the frequency.

Example of an LCD 20×4.


The configuration of the program is done via the USB port, 9600 Baud, 8 bits, no parity and one stop bit, using a terminal program (e.g. Arduino IDE Serial Monitor, Termite Terminal (Windows), CuteCom (Linux) or Terminal (Mac OS)). Please connect the RFzero via a USB B cable to your computer and connect the terminal program to the right COM port in the terminal program. The RFzero identifies itself as an Arduino Zero (Windows Device Manager).

If you don’t see the RFzero> or RFzero config> prompts please press the enter key. When you want to execute a command you don’t have to enter the prompt but only the command and parameters after the >.

Changes to the configuration does not take effect before leaving the configuration mode.

All input to the RFzero must be in lowercase.

To enter the configuration mode please enter   config   at the RFzero> prompt, i.e.

RFzero> config

To see the available commands please enter   ?   at the RFzero config> prompt, i.e.

RFzero config> ?

To leave the configuration mode please enter   exit   at the RFzero config> prompt, i.e.

RFzero config> exit

When in configuration mode, i.e. when you see the RFzero config> prompt, the most frequent commands are

rd cfg

to see the configuration that will be used after exiting the configuration mode.

wr defaults

to set most of parameters to their default values. Please see the actual program for the specific default values.

wr t1 MODE

to set the T1 H/W mode where MODE is

  • 0: Transformer (default)
  • 1: Combiner
  • 2: None

wr display MODE

to set the display mode where MODE is

  • 0: None
  • 1: LCD 16 characters and two lines, HD44780 interface
  • 2: LCD 20 characters and four lines, HD44780 interface
  • 3: LCD 16 characters and two lines, HD44780 via I2C PCF8574 interface
  • 4: LCD 20 characters and four lines, HD44780 via I2C PCF8574 interface
  • 5: Graphics display, ILI9341 SPI interface
  • 6: Graphics display, ILI9488 SPI interface

wr bcn CALL

where CALL is the beacon call sign, max 15 characters.

wr loc LOCATOR

where LOCATOR is the locator up to eight characters, i.e. AA00AA00.

wr mgm MESSAGE

where MESSAGE is the PI4 message, max eight characters where space, ” “, is replaced with an underscore, “_”.


to set the CW DURATION, i.e. duration in ms, 1 ms to 255 ms. 100 ms = 12 WPM/60 LPM.

wr key STYLE

to set keying STYLE where 0: is on-off keying (OOK), or 1: for frequency shift keying (FSK).

wr freq FREQ

where FREQ is the nominal on-air beacon frequency in Hz from 100 kHz and up.

 wr multi MULTIPLIER

(multiplied beacon only)

where MULTIPLIER is the harmonic/multiplication factor. Valid values are from 1 to 255, e.g.if using the fifth harmonic on 902 MHz

wr multi 5

wr warmup SECONDS

where SECONDS is the number of seconds to wait for the RFzero to warm up.

wr level LEVEL

where LEVEL is the drive strength current in the output stages. This effectively changes the output power by up to 10 dB, but varies somewhat with frequency. Valid LEVEL values are

  • 0: 2 mA
  • 1: 4 mA
  • 2: 6 mA
  • 3: 8 mA, default level

To read more about the drive strength current please consult the Si5351A datasheet.

wr wait  ONOFF

to turn on or off waiting for the GPS to be valid before transmitting where ONOFF is either 0: for off/don’t wait for the GPS to be valid, or 1: for on/wait for the GPS to be valid.

wr echo MODE

  • 0: hide all NMEA strings
  • 1: show the $GPGGA and $GPZDA NMEA strings
  • 2: show the $GPGGA, $GPGLL, $GPGRS, $GPGSA, $GPGST, $GPGSV, $GPRMC, $GPVTG and $GPZDA NMEA strings

More commands are available so please enter a question mark (?) at the RFzero config> prompt to see them.