Is it possible to update firmware to 1.4.7?

The highest version that the firmware updater tool will let me install to Uno WiFi v2 is 1.3.0

However the changelogs on github seem to show some important bugfixes (eg. packet corruption, dropped connections) since then. Can I update this board to firmware 1.4.7 somehow?

As you discovered, the NINA firmware version 1.4.7 is not available from the Arduino IDE's firmware updater tool.

The easiest way to update the firmware is by uploading a sketch to your board via the Arduino IoT Cloud sketch uploader:
https://create.arduino.cc/iot
Make sure you the Arduino IoT Cloud interface of the Arduino Cloud website for the upload, rather than going to the "Full Editor" (Arduino Web Editor) because Arduino Web Editor does not do the firmware update.

Another option is the arduino-fwupload command line tool:

Thanks Pert. I will try the fw updater tool from github.
I noticed something though, the firware file for the WiFi v2 is called

"FirmwareUpdater.unowifirev2.without_bl.ino.hex"

Does that "_bl" mean something?
I won't lose BLE support if I flash this will I ?

I'm sure it stands for "bootloader". Just look at the other filename:
FirmwareUpdater.unowifirev2.with_bootloader.ino.hex

Doh! Thanks :slight_smile:

But I can't get it to program. Maybe I have the command line wrong but the --help suggests the command line for this win64 version is pretty different to the instruction on the github page

C:_SVN\Code\Arduino\NinaFirmwareUploader>firmwareuploader -model NINA -firmware firmwares\NINA\1.4.7\NINA_W102-Uno_WiFi_Rev2.bin -port com30
2021/06/27 17:00:20 Connecting to programmer
2021/06/27 17:00:20 Opened the serial port with baud rate 115200
2021/06/27 17:00:22 Sync with programmer
2021/06/27 17:00:52 Error: Programmer is not responding
2021/06/27 17:00:52 Waiting 1 second before retrying...
2021/06/27 17:00:53 Retrying upload (1 of 9)
2021/06/27 17:00:53 Connecting to programmer

C:_SVN\Code\Arduino\NinaFirmwareUploader>firmwareuploader --help
Usage of firmwareuploader:
-address value
address (host:port) to fetch and flash root certificate for, multiple values allowed
-certs string
root certificate directory
-firmware string
firmware file to flash
-flasher string
firmware upload binary (precompiled for the right target)
-get_available_for string
Ask for available firmwares matching a given board
-model string
module model (winc, nina or sara)
-port string
serial port to use for flashing
-programmer string
path of programmer in use (avrdude/bossac)
-read
read all firmware and output to stdout
-restore_binary string
binary to restore after the firmware upload (precompiled for the right target)
-retries int
Number of retries in case of upload failure (default 9)

I forgot to include

-flasher firmwares\NINA\FirmwareUpdater.unowifirev2.without_bl.ino.hex

but even if I add that to the command line it tells me it wants me to specify programmer (avrdude or bossac). So I told it avrdude and it gave me this

C:_SVN\Code\Arduino\NinaFirmwareUploader>firmwareuploader -programmer avrdude -flasher firmwares\NINA\FirmwareUpdater.unowifirev2.without_bl.ino.hex -model NINA -firmware firmwares\NINA\1.4.7\NINA_W102-Uno_WiFi_Rev2.bin -port com30
2021/06/27 17:15:52 Flashing firmware uploader nina
2021/06/27 17:15:52 Flashing firmwares\NINA\FirmwareUpdater.unowifirev2.without_bl.ino.hex
2021/06/27 17:15:57 Error: exec: "avrdude": executable file not found in %PATH%
2021/06/27 17:15:57 Waiting 1 second before retrying...

And now I tried adding avrdude directory

C:\Program Files (x86)\Arduino\hardware\tools\avr\bin

to my path. And I tried again.

Now it says

System wide configuration file is "..\etc\avrdude.conf"
avrdude: can't open config file "..\etc\avrdude.conf": No such file or directory
avrdude: error reading system wide configuration file "..\etc\avrdude.conf"

AH - NOW I GET IT. I have to give it full path to avrdude.exe
Full command line for Windows (Win10 x64) that seems to work for me was

firmwareuploader -programmer "C:\Program Files (x86)\Arduino\hardware\tools\avr\bin\avrdude.exe" -flasher firmwares\NINA\FirmwareUpdater.unowifirev2.without_bl.ino.hex -model NINA -firmware firmwares\NINA\1.4.7\NINA_W102-Uno_WiFi_Rev2.bin -port com30

Yeah, there has been a major reworking of the command line interface since the 0.1.10 release came out. The readme you see at the home page is for the development version of the tool, so it reflects the new interface. You can see the readme for the release version of the tool here:

Work is in progress now to provide an easy means to get the documentation associated with each future release on a nice website:
https://arduino.github.io/arduino-fwuploader/

Great work! Thanks for taking the time to post an update with your findings.

I can't get this to work with Arduino NANO 33 IoT.
It looks tome like the board does not enter bootloader mode. I can tell because if I upload the standard "Blink" sketch first, then it stays running. The uploader hangs when it tries to upload FirmwareUpdater.nano_33_iot.ino.bin and the BLINK LED is still blinking.

I tried putting it into bootloader mode manually first (ie. dbl-press reset button) with the new COM port but then it fails with "Flash erase failed".

Note: I'm pretty sure the board is OK as I was able to update with the Arduino IDE firmware updater, but of course that can only get me to 1.3.0

C:_SVN\Code\Arduino\NinaFirmwareUploader>firmwareuploader -programmer "C:\Users\andy\AppData\Local\Arduino15\packages\arduino\tools\bossac\1.9.1-arduino2\bossac.exe" -flasher firmwares\NINA\FirmwareUpdater.nano_33_iot.ino.bin -model NINA -firmware firmwares\NINA\1.4.7\NINA_W102.bin -port com31
2021/07/01 14:45:48 Flashing firmware uploader nina
2021/07/01 14:45:48 Entering board into bootloader mode
2021/07/01 14:45:58 Flashing firmwares\NINA\FirmwareUpdater.nano_33_iot.ino.bin
*** IT JUST HANGS INDEFINITELY HERE

*** THIS TIME WITH BOARD MANUALLY SET TO BOOTLOADER MODE...
C:_SVN\Code\Arduino\NinaFirmwareUploader>firmwareuploader -programmer "C:\Users\andy\AppData\Local\Arduino15\packages\arduino\tools\bossac\1.9.1-arduino2\bossac.exe" -flasher firmwares\NINA\FirmwareUpdater.nano_33_iot.ino.bin -model NINA -firmware firmwares\NINA\1.4.7\NINA_W102.bin -port com32
2021/07/01 14:51:55 Flashing firmware uploader nina
2021/07/01 14:51:55 Entering board into bootloader mode
2021/07/01 14:52:05 Flashing firmwares\NINA\FirmwareUpdater.nano_33_iot.ino.bin
Erase flash

Flash erase failed

I thought maybe I was missing something much simpler so I tried the IOT method suggested.

However, I cannot get the Arduino IOT Cloud Create interface to update this board either. After I create a new "thing" and go to "Select Device", it finds my NANO 33 IOT board and does the setup where it should update the firmware, however this hangs at stage 1 "Uploading sketch" for ages and then shows a "We were not able to configure your device" "Something went wrong!" dialog.

There's a very confusing thing, which is that there is a version of bossac for the Nano 33 BLE and another for the SAMD boards like your Nano 33 IoT. They are not interchangeable. This 1.9.1-arduino2 used in your command is the one for the Nano 33 BLE. The one for the Nano 33 IoT is 1.7.0-arduino3. If you already have Arduino SAMD Boards platform installed on your computer then you will have it at C:\Users\andy\AppData\Local\Arduino15\packages\arduino\tools\bossac\1.7.0-arduino3\bossac.exe

So just update that part of your command and it should work.

Ah - thanks for the explanation. Working now.

I can also now confirm, having tried a few other boards here, that by far the easiest way to update these boards with NINA modules is, just as you said, to just let the arduino cloud setup (at Arduino IoT Cloud ) do it. Once I had installed the "ArduinoIoTCloud" in arduino library manager (I think that is necessary - I had hangs until I did that, unless that was a USB3 vs USB2 thing as I also switched USB ports) and then created a project and picked my device the "Preparing your device" automation just took care of it. Thanks for the tip.

You're welcome. I'm glad to hear it's working now. Enjoy!
Per

Hi Pert,

I've been struggling to understand how to use this tool--I'm not very well versed in programming, so it's all very confusing. If possible, is there somewhere you could point me with a more step-by-step walkthrough of how to run it? (Every time I try to run the application file, the thing runs for a moment then immediately crashes. Lol.)

Thanks so much for all of the info already here.

Hi Nrr

Have you tried the IoT Cloud method?
I resisted at first because I'm not really very interested in cloud solutions generally but I have to say that just for the purpose of updating NINA firmware it was much simpler and mainly just worked (I did install the IoT Cloud libs first but I don't use them).
Whilst I did eventually manage to get the firmware upgrade tools working it was a lot more fiddly to mess with.

I agree with EvFm that uploading via Arduino IoT Cloud is a good option if you just want to get your firmware updated in a simple point and click fashion.

If you are still interested in using the Arduino Firmware Uploader tool, please tell me which Arduino board you're using and I'll provide instructions tailored to that board.

I've tried using the IoT Cloud, but I'm trying to update the Uno WiFi Rev2, which it says is incompatible with the service. :frowning: . Apologies--I thought I'd mentioned the board type in my previous comment!

Thanks so much for the help on this.

Hi @nrr57. Here are the instructions for using Arduino Firmware Uploader to update the NINA firmware on the Uno WiFi Rev:

  1. Open the page containing the latest release of Arduino Firmware Uploader:
    https://github.com/arduino/arduino-fwuploader/releases/latest
  2. From the "assets" section of that page, find the version for your operating system. For example, if you are using Windows 64 bit, you want "arduino-fwuploader_1.0.0_Windows_64bit.zip". Click on it.
  3. Wait for the download to finish.
  4. Unzip the downloaded file.
  5. Open the unzipped folder in a command line terminal (e.g., Windows cmd, PowerShell, Bash).
  6. Connect your Uno WiFi Rev2 to your computer with the USB cable.
  7. Start the Arduino IDE.
  8. Open the Arduino IDE's Tools > Port menu. Take note of which port the Uno WiFi Rev2 is on. It will be identified "(Arduino Uno WiFi Rev2)".
  9. Return to the command line terminal you opened previously.
  10. Run the following command, replacing the "<port>" part at the end of the command with the port of your Uno WiFi Rev2.
    arduino-fwuploader firmware flash --fqbn arduino:megaavr:uno2018 --address <port>
    
  11. Wait for the flashing process to finish. This will take a couple minutes. You should see some output in the terminal indicating the progress.

Please let me know if you have any questions or problems.

1 Like

i have an Arduino Nano RP2040 connect that has an older firmware version. I tried this solution on it and it did not work. Is there another solution?

Which solution. Several have been mentioned in this thread.

Please provide a detailed description of what you mean by "did not work", including the full and exact text of any errors or warnings you might have encountered.