Bricked Nano IoT after update

I'm using Fedora Linux 33. I followed the instructions to update the firmware on my new Nano IoT board:

After spending a couple of hours I found the FirmwareUploader github repo and downloaded the binary.

I downloaded the bossac command from:
GitHub - shumatech/BOSSA: BOSSA is a flash programming utility for Atmel's SAM family of flash-based ARM microcontrollers. The motivation behind BOSSA is to create a simple, easy-to-use, open source utility to replace Atmel's SAM-BA software. BOSSA is an acronym for Basic Open Source SAM-BA Application to reflect that goal. . It doesn't come in the Fedora repos, so I compiled it myself.

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.

There are no user instructions in the Examples/NINIWIFI/Tools/FirmwareUpdater sketch

Hi @jamesaharrisonuk. I'm sorry to hear you had trouble with FirmwareUploader.

Please try pressing and releasing the reset button on your board quickly twice.

After doing that, do you see the "L" LED pulsing and the port of the board recognized once more?

Hello,
I've tried that. The LED does not flash.

The Port menu item is blank and I don't have /dev/ttyACM0. Below is the error message:

Arduino: 1.8.13 (Linux), Board: "Arduino NANO 33 IoT"

Open On-Chip Debugger 0.10.0+dev-gf0767a31 (2018-06-11-13:40)
Licensed under GNU GPL v2
For bug reports, read
OpenOCD: Bug Reporting
debug_level: 0
none separate
adapter speed: 400 kHz
cortex_m reset_config sysresetreq
Error: unable to find CMSIS-DAP device

Error while burning bootloader.
Board at /dev/ttyACM0 is not available

This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.

I found this: Unbrick Nano 33 IoT

I saw the procedure to follow. ARE YOU KIDDING ME? Is there not a simpler method?

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.

Can I use a Arduino Mega 2560 with a MicroSD card reader connected into the MOSI/MISO, instead of a MKR Zero?

Unfortunately, I don't have an answer for that. The documentation gives conflicting information:

From https://github.com/adafruit/Adafruit_DAP#readme:

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)

From https://learn.adafruit.com/programming-an-m0-using-an-arduino#alert-content-2804741:

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:

FW.BIN 2021-04-25 08:00:10 107602

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.

There is a note about this here:
https://www.arduino.cc/en/Guide/NANO33IoT#please-read

Please Read...

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.

Thanks for the info. I understand now what you're talking about. Would a voltage divider work?

Data Pin >---------xxxxx-------|------xxxxx-------GND

5V is reduced to 3.3v with the right resistor pairs (xxxxx). At the point | there ashould be a 3.3v signal which is the input to the 33 IoT data pins.

I think that should work. It will certainly protect the Nano 33 IoT, so no harm in trying it.

I tested it by setting up D9 on the Mega 2560 to HIGH, OUTPUT. R1=47Kohm and R2=100Kohm and the voltage at V1 is 3.25v on my meter.

D9 >-------R1--------V1-------R2--------GND

Will 3.2V be high enough for the 33 IoT?

Thanks

Yes.

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.