I ran this command on a USB2.0 port on my PC:
./FirmwareUploader
-flasher firmwares/NINA/FirmwareUpdater.mkrwifi1010.ino.bin
-firmware firmwares/NINA/1.4.3/NINA_W102.bin
-port /dev/ttyACM0
-address arduino.cc:443
-restore_binary /tmp/arduino_build_619137/WiFiSSLClient.ino.bin
-programmer ~/Downloads/BOSSA/bin/bossac
The programmer started to upload the new software to the Arduino and then failed. No good explanation why.
I think my Arduino is bricked. When I plug it into my PC on a USBS2 or USB3 PC connection, I cant select a USB device.
I hve also tried tail'ing the system log for any new devices that are connected upon connection and I get no response.
There are no proper instructions from Arduino on how to update my nano 33 IoT.
Very disappointed. If anyone has any ideas I would really appreciate.
I'm glad you found it. I was just about to share that fix with you.
Unfortunately, that tutorial didn't come through the recent forum migration very well. I have now updated it, so it should be easier to follow.
The alternative option using a CMSIS-DAP compliant debug probe I added near the bottom is fairly simple: https://forum.arduino.cc/t/unbrick-nano-33-iot/644386/2#cmsis-dap
The only tricky part is making the connections to the SWD pads on the Nano 33 IoT. I describe a couple options for that in the tutorial.
Tested with a Metro M0 / Arduino Zero as the 'host' and with ATSAMD21's as the client but in theory any 3.3V Arduino board will work as host (just slower)
Note that an ATSAMD21 based board must be used as the programmer. AVR based boards like the Feather 32u4 will not work.
I tried compiling the sketch for the Mega, and it didn't have any errors. But compiling and working are not always the same things.
One thing is for certain though: the Mega runs at 5 V. The Nano 33 IoT runs at 3.3 V. If you connect the Mega directly to the Nano 33 IoT, you will expose the Nano to 5 V, which is outside its rated specifications and likely to destroy the Nano. So it will be important for you to use level shifting circuitry between the two boards. But as long as you do that, it's definitely worth a try.
If you try it, please let me know what the results are. I'll update the tutorial accordingly.
The Mega has 5v and 3v. I tried running the SD card adaptor with the 5v and the 33 IoT with the 3V, Both seemed to power on and I used the SD card sketch example to read the card info (cardinfo). I put the samd21_sam_ba_arduino_nano_33_iot.bin file on the SD card and renamed it to fw.bin and I got this directory listing for it:
I'm talking about the logic levels. The way the programmer Arduino board sends the bootloader to the target board is by changing the digital pins from LOW to HIGH to LOW many times very quickly with just the right intervals. When the Mega's pin is HIGH, it's at 5 V. That's the logic level. You should never connect anything over 3.3 V to the digital pins on the Nano 33 IoT, including the SWD pins, because doing so can destroy the Nano 33 IoT. So if you connect the Mega's digital pins directly to the digital pins on the Nano 33 IoT, you are doing something bad.
Because most of the classic Arduino boards use 5 V logic levels, Arduino specifically named these newer boards with a "33" to indicate that they use 3.3 V logic levels to raise awareness of this important difference. You will find that a lot of the popular accessories used in the Arduino world are also 5 V, so this is something that's important to be aware of in general.
The microcontroller on the Arduino NANO 33 IoT runs at 3.3V, which means that you must never apply more than 3.3V to its Digital and Analog pins. Care must be taken when connecting sensors and actuators to assure that this limit of 3.3V is never exceeded. Connecting higher voltage signals, like the 5V commonly used with the other Arduino boards, will damage the Arduino NANO 33 IoT.