Closed per1234 closed 1 year ago
11. Attempt to select the target board from the "Select Board" menu in the "WiFi101 / WiFiNINA Firmware Updater" dialog. π The menu doesn't open.
What do you expect to see in the <select>
before confirming the board between steps (12)
and (15)
? Do you expect to see two board items? This would imply showing 27 different ESP32 boards on the same port in some corner cases. Thank you
Do you expect to see two board items?
The menu should only offer the boards that are supported by Arduino Firmware Uploader:
$ ./arduino-fwuploader.exe firmware list
Board FQBN Module Version
Arduino MKR1000 arduino:samd:mkr1000 WINC1500 19.4.4
Arduino MKR1000 arduino:samd:mkr1000 WINC1500 19.5.2
Arduino MKR1000 arduino:samd:mkr1000 WINC1500 19.5.4
Arduino MKR1000 arduino:samd:mkr1000 WINC1500 β 19.6.1
Arduino MKR WiFi 1010 arduino:samd:mkrwifi1010 NINA 1.0.0
Arduino MKR WiFi 1010 arduino:samd:mkrwifi1010 NINA 1.1.0
Arduino MKR WiFi 1010 arduino:samd:mkrwifi1010 NINA 1.2.1
Arduino MKR WiFi 1010 arduino:samd:mkrwifi1010 NINA 1.2.2
Arduino MKR WiFi 1010 arduino:samd:mkrwifi1010 NINA 1.2.3
Arduino MKR WiFi 1010 arduino:samd:mkrwifi1010 NINA 1.2.4
Arduino MKR WiFi 1010 arduino:samd:mkrwifi1010 NINA 1.3.0
Arduino MKR WiFi 1010 arduino:samd:mkrwifi1010 NINA 1.4.0
Arduino MKR WiFi 1010 arduino:samd:mkrwifi1010 NINA 1.4.1
Arduino MKR WiFi 1010 arduino:samd:mkrwifi1010 NINA 1.4.2
Arduino MKR WiFi 1010 arduino:samd:mkrwifi1010 NINA 1.4.3
Arduino MKR WiFi 1010 arduino:samd:mkrwifi1010 NINA 1.4.4
Arduino MKR WiFi 1010 arduino:samd:mkrwifi1010 NINA 1.4.5
Arduino MKR WiFi 1010 arduino:samd:mkrwifi1010 NINA 1.4.6
Arduino MKR WiFi 1010 arduino:samd:mkrwifi1010 NINA 1.4.7
Arduino MKR WiFi 1010 arduino:samd:mkrwifi1010 NINA 1.4.8
Arduino MKR WiFi 1010 arduino:samd:mkrwifi1010 NINA β 1.5.0
Arduino NANO 33 IoT arduino:samd:nano_33_iot NINA 1.0.0
Arduino NANO 33 IoT arduino:samd:nano_33_iot NINA 1.1.0
Arduino NANO 33 IoT arduino:samd:nano_33_iot NINA 1.2.1
Arduino NANO 33 IoT arduino:samd:nano_33_iot NINA 1.2.2
Arduino NANO 33 IoT arduino:samd:nano_33_iot NINA 1.2.3
Arduino NANO 33 IoT arduino:samd:nano_33_iot NINA 1.2.4
Arduino NANO 33 IoT arduino:samd:nano_33_iot NINA 1.3.0
Arduino NANO 33 IoT arduino:samd:nano_33_iot NINA 1.4.0
Arduino NANO 33 IoT arduino:samd:nano_33_iot NINA 1.4.1
Arduino NANO 33 IoT arduino:samd:nano_33_iot NINA 1.4.2
Arduino NANO 33 IoT arduino:samd:nano_33_iot NINA 1.4.3
Arduino NANO 33 IoT arduino:samd:nano_33_iot NINA 1.4.4
Arduino NANO 33 IoT arduino:samd:nano_33_iot NINA 1.4.5
Arduino NANO 33 IoT arduino:samd:nano_33_iot NINA 1.4.6
Arduino NANO 33 IoT arduino:samd:nano_33_iot NINA 1.4.7
Arduino NANO 33 IoT arduino:samd:nano_33_iot NINA 1.4.8
Arduino NANO 33 IoT arduino:samd:nano_33_iot NINA β 1.5.0
Arduino MKR Vidor 4000 arduino:samd:mkrvidor4000 NINA 1.0.0
Arduino MKR Vidor 4000 arduino:samd:mkrvidor4000 NINA β 1.1.0
Arduino Uno WiFi Rev2 arduino:megaavr:uno2018 NINA 1.2.1
Arduino Uno WiFi Rev2 arduino:megaavr:uno2018 NINA 1.2.2
Arduino Uno WiFi Rev2 arduino:megaavr:uno2018 NINA 1.2.3
Arduino Uno WiFi Rev2 arduino:megaavr:uno2018 NINA 1.2.4
Arduino Uno WiFi Rev2 arduino:megaavr:uno2018 NINA 1.3.0
Arduino Uno WiFi Rev2 arduino:megaavr:uno2018 NINA 1.4.0
Arduino Uno WiFi Rev2 arduino:megaavr:uno2018 NINA 1.4.1
Arduino Uno WiFi Rev2 arduino:megaavr:uno2018 NINA 1.4.2
Arduino Uno WiFi Rev2 arduino:megaavr:uno2018 NINA 1.4.3
Arduino Uno WiFi Rev2 arduino:megaavr:uno2018 NINA 1.4.4
Arduino Uno WiFi Rev2 arduino:megaavr:uno2018 NINA 1.4.5
Arduino Uno WiFi Rev2 arduino:megaavr:uno2018 NINA 1.4.6
Arduino Uno WiFi Rev2 arduino:megaavr:uno2018 NINA 1.4.7
Arduino Uno WiFi Rev2 arduino:megaavr:uno2018 NINA 1.4.8
Arduino Uno WiFi Rev2 arduino:megaavr:uno2018 NINA β 1.5.0
Arduino Nano RP2040 Connect arduino:mbed_nano:nanorp2040connect NINA 1.4.5
Arduino Nano RP2040 Connect arduino:mbed_nano:nanorp2040connect NINA 1.4.6
Arduino Nano RP2040 Connect arduino:mbed_nano:nanorp2040connect NINA 1.4.7
Arduino Nano RP2040 Connect arduino:mbed_nano:nanorp2040connect NINA 1.4.8
Arduino Nano RP2040 Connect arduino:mbed_nano:nanorp2040connect NINA β 1.5.0
Arduino UNO R4 WiFi arduino:renesas_uno:unor4wifi ESP32-S3 0.1.0
Arduino UNO R4 WiFi arduino:renesas_uno:unor4wifi ESP32-S3 0.2.0
Arduino UNO R4 WiFi arduino:renesas_uno:unor4wifi ESP32-S3 β 0.2.1
Even when there are multiple board identifications for a port in general, it is likely that only one of those will ever be supported by the Firmware Updater. Even if at some point in the future there was a situation where the tool supported multiple boards that shared the same port identification properties, as long as the boards supported by tool continues to be curated by Arduino, there would never be a case where there was a problematic number of supported boards for a given port.
In the demo I provided, there are two general identifications for the port (e.g., arduino:renesas_uno:unor4wifi
, fwuploader-board-dummies:foo:unor4wifi
), but only one of the identifications is for a board supported by the Firmware Uploader.
Describe the problem
Arduino boards platforms may associate a board definition with port identification properties. Arduino IDE identifies a port as being that board when the port has these properties.
The platform framework doesn't provide any mechanism for restricting the association of a given set of identification properties to a single board definition, so it is possible (and even inherent to some use cases) for a port to be identified with multiple board definitions.
π If the port of the target board is identified with multiple board definitions, the Firmware Updater fails.
To reproduce
Equipment
One of the boards supported by the "WiFi101 / WiFiNINA Firmware Updater" feature:
Steps
π The update process immediately fails:
Clean up
hardware/fwuploader-board-dummies
subfolder of your sketchbook folder.Expected behavior
It is possible to update firmware on target boards for which the port has multiple identifications.
Arduino IDE version
69ae38e
Operating system
Windows
Operating system version
11
Additional context
I bisected the regression to 69ae38e (neither of the faults occur when using the build from the previous commit 9a6a457bc44fb16f646b9e61a9e8b336b3666412 under the same conditions).
The minimal "dummy" boards platform used to produce the required conditions in the demo is not anything a real user would have installed, but the fault also occurs in the more common (but more work to reproduce) conditions of having an additional real boards platform installed that associates a board definition with the identification properties of the target board's port. A real world example of this would be having both a release version and a development version of a platform installed at the same time, as is common for platform developers and beta testers.
Issue checklist