Software

The RFzero library is in fact divided into three libraries called the RFzero standard library and the RFzero_modes library and a general purpose library called RFzero_util.

The RFzero library provides functions to work with all the RFzero hardware, e.g. EEPROM, GPS, MCU pins and Si5351A. This library should be included whenever you work with the RFzero. This is done by inserting the following piece of code in your program.

The RFzero modes library has functions to convert messages and work with CW and digital modes (MGM: FST4, FST4W, FT4, FT8, JS8, JT9, ModeX, PI4, WSPR …) and is always used in combination with the RFzero standard library. The modes library is included by inserting the following piece of code in your program after the #include <RFzero.h>.

The RFzero utilities library has a collection of handy functions that are not  specific to the RFzero. The utilities library is included by inserting the following piece of code in your program after the #include <RFzero.h>.

The above lines should be inserted at the top of the .ino file.


Software bugs

If you find bugs or oddities in the programs or tutorials please contact us for clarification or fixing the bugs. You may also post a message in the RFzero user group.

If you are in doubt, whether the bug is software or hardware related, you can try to run the BoardTest program first. It has been thoroughly tested and is known to run flawlessly.

You may also consult the troubleshooting page.


(Re)burning the bootloader

The bootloader has been burned into the RFzero at the factory. Should you ever want to reburn the bootloader, for whatever reason, you will need an Atmel SAM-ICE programmer and a SAM to Cortex cable.

Then the process is as follows

  1. Connect the programmer to the JP9 connector on the RFzero and to the computer
  2. Select the RFzero board in the Arduino IDE Menu | Tools | Board | Arduino SAMD (32-bits ARM Cortex-M0+) Boards | RFzero
  3. Select the Atmel SAM-ICE programmer in the Arduino IDE Menu | Tools | Programmer | Atmel SAM-ICE
  4. Finally select Arduino IDE Menu | Tools | Burn Bootloader

Release history

The following versions will show up in Board Manager when the RFzero library path has been installed.

Legacy versions are provided for compatibility with older applications that are not easily rewritten. Unless you have an otherwise unsolvable issue that requires a specific version, it is highly recommended using the latest version.

VersionDateNotes
1.6.02024-08-10New
- Beacon PI4 + CW + chirp + carrier: the chirp can be triggered by the PPS
- FST4CWcarrier, FST4W, FT4CWcarrier, FT8CWcarrier, FT8CWdashes and FT8x3CWcarrier beacon programs: can now be used above 290 MHz. The multiplier is automatically set by the program. The upper frequency limit is unknown but should be on par or better than for WSPR which is 1,5 GHz. The multiplier sets in above 230 MHz
- Multi LO: the lower frequency limit changed to 2289 Hz
- VFO: the lower LO frequency limit changed to 13 kHz
- WSPR transmitter, FST4W transmitter and WSPR + CW + carrier beacon program: can now be used up to 1,5 GHz. The multiplier is automatically set by the program. The multiplier sets in above 230 MHz
- All programs: the GPS wr echo MODE command has been renamed to wr gps MODE
- RFzero Modes library: new function called calculateTonesReversed() that reverses the location of the tones/frequencies which is useful if the RFzero signal is mixed with an LO which is above the wanted frequency
- Timed Events: a program that demonstrates how to work with time slots
- IC-9700 development: new features

Bugs
- Beacon ModeX + CW + carrier: using more than one ModeX did not work
- Beacon WSPR + CW + carrier: if CW was not used a random frequency was transmitted
- Signal generator: the wr response MODE did not work
- WSPR transmitter and FST4W transmitter: typo corrected in the help texts
1.5.12023-10-08Bugs
- GPS library: the waitUntilTime() function did not work for WAIT_MIN_TEN and WAIT_MIN_TWENTY
- Chip Manager: if <CR> was appended to the command it was not accepted in all cases
- Multi LO: the wr freq command did not work when saving to number 0. Lower frequency range extended all the way down to 2289 Hz
- Signal generator: the "wr mem" command did not work, the "wr pwr" command added 10 dB to the entered value, updating memory 9 using the rotary encoder did not work
1.5.02023-05-16New
- EEPROM library: readWord() and writeWord() functions added
- FST4 and FST4W library: frequency offset changed to 0 Hz
- Chip manager: reading and writing a word command added, setting the EEPROM type ID and H/W to match RFzero v.1.x or v.2.x
- EEPROM_HW_Ver1: replaces EEPROM_24LC08B. Set the EEPROM type ID and H/W to match RFzero v.1.x rescue program
- EEPROM_HW_Ver2: replaces EEPROM_M24128. Set the EEPROM type ID and H/W to match RFzero v.2.x rescue program
- EEPROM: 24AA128 added to the list of qualified EEPROMs
- MultiLO: The locator shown in the display is now from the GPS and not the set locator
- JT9 beacon: all sub-modes implemented both slow and fast
- QO100: The locator shown in the display is now from the GPS and not the set locator
- Signal generator: the attenuator configuration command has been changed to wr atten MODE
- All beacon and transmitter programs: the GPS wr echo MODE command has been renamed to wr gps MODE

Bugs
- Chip Manager: if <CR> was appended to the command it was not accepted
- Frequency counter: replaced call to deprecated function to si5351a.refFreqRefresh();
- VFO: power and current levels missing in the help text
1.4.02022-12-05New
- IC-9700: 49,152 MHz GPSDO program. The program is work-in-progress
- EEPROM_24LC08B: set the EEPROM type ID rescue program if EEPROM_TYPE_AUTO fails
- EEPROM_M24128: set the EEPROM type ID rescue program if EEPROM_TYPE_AUTO fails
- EEPROM_TYPE_AUTO: type name covering the default EEPROMs in RFzero v.1.x and v2.x, i.e. 24LC08B and M24128 respectively

Bug
- Signal generator: EEPROM set to EEPROM_M24128 in both v.1.2.0. and v.1.3.0 when it should have been EEPROM_24LC08B
- All programs: if the gpsEcho parameter was set to 2 all programs would start in configuration mode
- JS8 beacon: array overflow
1.3.02022-11-27New
- FSTW4 beacon and FST4W transmitter: Type 2 messages, i.e. a call with either prefix or suffix
- Morse: H3A carrier and modulation OOK and H3A modulation OOK
- WSPRTX: graphical user interface communication with the RFzero Manager
1.2.02022-09-09New
- All programs with the "wr echo" command: mode 2 echoes the $GPGGA, $GPGLL, $GPGSA, $GPGSV, $GPGST, $GPRMC, $GPVTG and $GPZDA NMEA frames, e.g. for use in the RFzero Manager GPS view
- Chip Manager: pin high/low command and I2C scanner on user bus or internal bus
- PI4 + CW + chirp + carrier: sequence includes five times chirp 2 s long and 1 kHz wide
- EEPROM: 24FC128, M24128 and M24C32 added to the list of supported EEPROMs

Bug fix
- FST4 + CW + carrier beacon: serious bug in encoding. Only worked for some messages
- Signal generator: attenuator mode 6 did not work between 60 dB and 76,5 dB
1.1.02021-07-28New
- FST4W transmitter: new program but very much like the WSPRTX program
- Chip manager: now includes Si5351A commands to dump, read and write to registers
- GPSDO: AM/PM time parameter added to the local time
- WSPR transmitter: the number of timeslots can be set to 5, 10 or 15 instead of being fixed to 15
- Library: ten character locators added to the gps.getLocator() function
- Library: gps.getUtcHours() function

Bug fix
- ucenter: did not always run when uploaded from the RFzero Manager
1.0.12021-04-12Bug fix
- The WSPR transmitter program was transmitting FST4W-120 instead of WSPR
1.0.02021-04-09New
- FST4 + CW + carrier beacon program
- VFO program
- Signal generator program now has 16 filters instead of eight. PLEASE RESET ALL FILTER VALUES AND MEMORIES
- EEPROM map extended with 16 filters that is currently used by the signal generator and VFO programs
- Two ModeX functions: Modes.loadModeXSymbols() and Modes.setupModeXMetrics()

Bug fix
- Signal generator program: error in display mode 3 and 4, i.e. LCD via I2C
0.9.52021-03-18New
- Menu added to the signal generator program
- In some of the programs it is now possible to set the output stages' drive strength current level with the wr level LEVEL command
- FT8 + CW + dashes beacon program
- FT8 x 3 + CW + carrier beacon program
- ModeX + CW + carrier beacon program
- Chip Manager program (replaces the EEPROM Manager program)
0.9.42021-03-04New
- FST4W beacon program
- Type 3 messages added to the WSPR transmitter program
- Listing the configuration in the various programs does not show the reference frequency any longer as it is irrelevant. Please use the EEPROM manager program to show it if necessary

Bug fixes
- The DoubleToString function could not handle negative numbers properly. Use the dtostrf() function instead and add #include <avr/dtostrf.h> to the file where it is used. DoubleToString has been removed.
- OOK keying in the CW beacons program did not work consistently
- Small correction in the library to the post CW delay
0.9.32020-10-03New
- I2C user bus scanner program

Bug fixes
- SBP mask input is not in hex but in binary
- In all programs where it is possible to set the IC2 address for the PCF8574 the help text was wrong. It should have been: wr pcf8574 ADDR
0.9.22020-07-15New
- Support for two graphical displays, ILI9341, display mode 5, and ILI9488, display mode 6, in most programs. The libraries needed for these displays are included in the RFzero library
- TFT designer program
- All display types added to the frequency counter program

Bug fixes/changes/corrections/optimizations
- The PTT detect pins in the QO-100 program has been changed to A0 because the graphical display may use D16
- The frequency control pins in the Multi LO program have been changed to A0-A3 because the graphical display may use D18 and D19
- Minor typos in programs
- Minor corrections and optimizations
0.9.12020-06-18New
- WSPR + CW beacon program
- EEPROM manager program
- New functions to get and set the T1 H/W and implemented in relevant programs
- Optimized use of the T1 H/W
- Added a frequency step marker/value in the signal generator
- Added the RFzero LCD I2C library
- Added support for two I2C LCDs 16x2 (display mode 3) and 20x4 (display mode 4) in most programs using a PCF8574 port expander
- Added a new transmission mode to the WSPR transmitter

Bug fixes/changes/corrections/optimizations
- Bug fixed in library and signal generator vs T1 and power level for non transformer H/W
- Typos in the signal generator program
- The EEPROM defaults and the EEPROM dump programs have been removed. Please use the EEPROM manager program instead
0.9.02020-05-28New
- Signal generator program, and two support programs (SigTest SX1509 test and SigGen I2C disable)
- Most of the programs are now able to use both 16x2 and 20x4 LCDs
- Online library documentation

Bug fixes/changes/corrections/optimizations
- Big library upgrade and streamlining
- In the WSPR transmitter program the syntax of the "wr seq" command has been changed from BAND to INDEX to allow a less rigid configuration, e.g. twice on the same band but with different control bits
- All existing programs have been updated to match the new library
- The low frequency limit has been changed from 2605 Hz to 2289 Hz
0.8.72020-03-17Bug fixes
- JS8 encoding unintentionally printed symbols to the USB port
- QO-100/Es'Hail default frequencies did not match help
- WSPRTX day/night sequence did not work
0.8.62019-12-03New
- FT4 + CW + carrier beacon program
- JS8 (HB) + CW + carrier beacon program
- Multi LO with five frequencies with pin detection (D16-D19) program
- Most programs show library and program version when starting

Bug fixes/changes/corrections/optimizations
- Improved handling of GPS and USB communication
- QO-100/Es'Hail with much better frequency precision
- WSPR offset moved 1½ tone down to match the "specification"
- Local time can now be +14 hours relative to UTC
0.8.52019-06-02New
- The QO100 example program for the QO-100/Es'hail satellite program
- Framework for two-tone generation
- Correction for leap seconds before received from the GPS satellites
- An example program called Template that you may use as the foundation for writing your own program(s)

Bug fixes/changes/corrections/optimizations
- Frequencies above ~298 MHz in the PI4 and WSPR multiplied beacons example programs
- Max length messages/calls for FT8, JT9, PI4 and WSPR
- Automatic locator updating in WSPRTX
- Other minor bugs
0.8.32019-05-04Same as 0.8.2
0.8.22019-05-03Fixes several bugs in 0.8.0
0.8.02019-04-24First pre-release and base for future builds

Release policy

In general the latest version should be used, however, a increase in major release number may introduce an incompatibility with older application code. Version numbers are X.Y.Z and should be regarded as follows:

Number (X.Y.Z)ReleasePurpose
First (X)MajorMajor rewrite, upgrades are likely to be break existing code
Second (Y)MinorNew feature or severe bug fix. Likely transparent
Third (Z)MaintenanceTransparent clean-up or trivial bug fix