Skip to content



Firmware Flashing

First install the Arduino Firmware Uploader. Extract the zip file and, for example, to update the NINA module present on the Arduino MKR WiFi 1010, run:

./arduino-fwuploader firmware flash -b arduino:samd:mkrwifi1010 -a /dev/ttyACM0

You just have to specify the FQBN (-b or --fqbn) of the board and the serial port (-a or --address). The firmware uploader will take care of fetching everything is required to perform the update process. If no module and version are specified the latest version of the firmware will be used.

If you want to flash a specific version of a firmware you can use the -m or --module flag

For example to flash the ESP32-S3 module present on the UNO R4 WiFi with version 0.2.1 of the firmware you can run something like:

./arduino-fwuploader firmware flash -b arduino:renesas_uno:unor4wifi -a /dev/ttyACM0 -m ESP32-S3@0.2.1

Or if you want upload a local firmware you can use the -i or --input-file flag followed by the path of that firmware.

./arduino-fwuploader firmware flash -i custom_fw.bin -b arduino:renesas_uno:unor4wifi -a /dev/ttyACM0

There is a retry mechanism because the flashing process uses serial communication, which sometimes can be a bit unreliable. The retry flag is set by default to 9 retries, but it's possible to overwrite it for whatever reason. For example to update a Nano RP2040 Connect with the retry set to 2 you can use:

./arduino-fwuploader firmware flash --fqbn arduino:mbed_nano:nanorp2040connect -a /dev/ttyACM0 --retries 2

It's possible to list the available firmwares for every board/module with:

./arduino-fwuploader firmware list

but you can also filter the results by specifying the -b or --fqbn flag

The tool offers the ability to print output in JSON, with the --format json flag

Get Version

You can also obtain the version of the firmware the board is currently running with:

./arduino-fwuploader firmware get-version -b arduino:samd:mkrwifi1010 -a /dev/ttyACM0

The get-version subcommand flashes a special sketch in order to be able to read that information using the serial connection:


Firmware version installed: 1.4.8

You can also use the --format json flag to parse the output with more ease.


The tool offers also the ability to flash SSL certificates to a module:

./arduino-fwuploader certificates flash -b arduino:samd:nano_33_iot" -a COM10 -u -u

or you can specify a path to a file in .der format or in .pem format with -f or --file instead of the URL of the certificate

Due to a limitation on the handling of certs in the NINA modules, when certificates flash command is launched, all the previous certificates are going to be erased. To overcome this it's required to upload them all together:

./arduino-fwuploader certificates flash --url, --file ~/Downloads/my_self_signed_.der -b arduino:mbed_nano:nanorp2040connect -a /dev/ttyACM0

You can find the certificates that are preflashed on the NINA module here.

Command line options

The full list of command line options can be obtained with the -h option: ./arduino-fwuploader -h

For further information you can use the command reference