arduino / arduino-ide

Arduino IDE 2.x
https://www.arduino.cc/en/software
GNU Affero General Public License v3.0
2.28k stars 388 forks source link

Firmware update fails if Serial Monitor is open #684

Closed per1234 closed 2 years ago

per1234 commented 2 years ago

Describe the bug

The Arduino IDE includes a "WiFi101 / WiFiNINA Firmware Updater"" tool that can be used to update the firmware on the WiFi radio module of Arduino boards such as the MKR WiFi 1010 and Nano 33 IoT.

If the Serial Monitor is open when a firmware update is attempted, it fails.

To Reproduce

  1. Connect an Arduino board that has a u-blox NINA-W102 module to your computer via the USB cable.
  2. Select the board and port in the IDE.
  3. Open the Arduino IDE Serial Monitor (Tools > Serial Monitor).
  4. Select Tools > WiFi101 / WiFiNINA Firmware Updater from the Arduino IDE menus.
  5. Select the board in the Firmware Updater dialog.
  6. Click the Check Updates button.
  7. Click the Install button (it doesn’t matter which firmware version you flash).
  8. Wait for the update process to finish.

The process fails without any indication of the cause

⚠️ Installation failed. Please try again.

Expected behavior

Ideally, the IDE's Firmware Updater tool would automatically close the serial port as needed, reopening it in Serial Monitor once done, similar to how it is handled during the Upload process.

If that is not feasible, it should check for open Serial Monitor at the start of the firmware update process and clearly communicate to the user that they must close it. This is the approach taken by the classic IDE's firmware updater tool:

Clipboard01

Desktop

Additional context

I think it could be a common occurrence because most often people are motivated to update their firmware after seeing the outdated firmware message that is printed to Serial Monitor by the "CheckFirmwareVersion" example of the WiFiNINA library or by the ArduinoIoTCloud library.

ubidefeo commented 2 years ago

When this kind of prioritised workflows are intiated (we might have something else in the future) we should force close the Serial Monitor and Serial Plotter views/apps and close the connection. Firmware update is a blocking operation anyway, and messing with serial ports in the process will sure lead to failure