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: FT8, JT9, 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.


Uploading a program

USB and the Windows operating system are not the best match in the world. Therefore, if you experience problems with uploading a program to the RFzero please check if you can see the RFzero in the Windows Device Manager. The RFzero identifies itself as an Arduino Zero.

The second check you should do is to check your USB cable. Some of the cheaper USB cables are made for charging only and not for communication purposes.

You may also try to upload a different program, e.g. the RFzero Blink or BoardTest example programs.

During the actual uploading Windows changes the COM-port and when successfully uploaded it goes back to the original COM-port. However, sometimes Windows cannot find the “upload COM-post” and then the upload goes wrong. If so you can try to monitor the bottom part, i.e. the black area, of the Arduino IDE but first make sure you have marked the checkbox found Menu | File | Preferences | Show verbose output during upload. When the Arduino IDE starts the upload process you should see something like the below taking place.

This will go on until it times out. The trick is now to double click the reset button on the RFzero, before the time out occurs, and you should see something like the below.

COM23 is the actual upload port, in this case but not necessarily the same in your case, and the process should be rolling now. You may have to try the trick a couple of times to get it right. In severe cases unplugging the RFzero and restarting your computer may be needed.

RFzero.h no such file or directory

If you experience that the Arduino IDE says: “RFzero.h no such file or directory” you have most likely not selected the RFzero as the board.

To set the target board to RFzero go to Menu | Tools | Board “…” and scroll down the list until you see the RFzero board and select it.

exec: “/bin/arm-none-eabi-g++”: file does not exist

If you see the

exec: “/bin/arm-none-eabi-g++”: file does not exist
Error compiling for board RFzero.Error compiling for board RFzero.

error message you have not installed the Arduino SAMD library. Please see the installation procedure step 2).

An error occurred while uploading the sketch

The most likely reason when you see the error message “An error occurred while uploading the sketch” is that you have not selected the right COM port for the RFzero.

If so you select the right COM port from the Menu | Tools | Port … The RFzero identify itself as an “Arduino/Genuino Zero (Native USB Port)”.

Couldn’t find a Board on the selected port

You have probably selected the wrong COM port for your RFzero board.

Please verify that have selected the right COM port from the Menu | Tools | Port … The RFzero identify itself as an “Arduino/Genuino Zero (Native USB Port)”.

Software bugs

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

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

(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 | 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.

0.8.5Pre-release2019-06-02New are
- the QO100 example program for the QO-100/Es'hail satellite
- 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)

Corrections of
- 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

Updating is recommended
0.8.3Pre-release2019-05-04Same as 0.8.3
0.8.2Pre-release2019-05-03Fixes several bugs in 0.8.0

Updating is recommended
2019-04-24Major 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