i think i bricked my arduino nano 33 iot trying to program it with bossa

hi, i have started working with the arduino for a school project. For this project we cannot use the arduino ide so i had to find another way to program my arduino. I tried programming the arduino nano 33 iot with bossa (version 1.9.1). I pressed the reset button twice and after that tried to write the standard example blink program to the device. I did not give an offeset and i may or may not have selected the erase button (i'm not sure). During the write, the program got stuck and so i tried to reset the device. After that didn't work i unplugged the device and that stopped the write. However now the device doesn't show up in device manager nor does it show up in either the arduino ide or bossa. The only thing working when the device is plugged in is the power led.

My question is: did i turn my arduino nano 33 iot in an expensive usb led or is there anyway i can fix this?

thanks in advance!

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

After doing that, do you see the “L” LED pulsing?

@pert i tried your suggestion, but the built in led won't turn on. Only the power indicator led works unfortunately.

You should be able to recover it by burning the bootloader. I'll share some instructions for doing that:

You'll need:

  • An extra Arduino board that runs at 3.3 V.
  • An SD slot. This could be built into your Arduino board (e.g., MKR Zero), a shield (e.g., MKR SD Proto Shield), or one of the common SD modules.
  • An SD card that fits your SD slot.
  • A way to connect the SD card to your computer.
  • A way to make the connections to the SWD pins on your target Arduino board. For the Nano 33 IoT and the MKR boards other than MKR1000, I like to use a 0.1" pitch 2x3 POGO adapter. You could also solder wires to the test points if you prefer. On the MKR boards other than the MKR1000, the SWD header is on the bottom of the board and is the footprint for a 0.1" pitch 2x3 SMD header (e.g., https://www.digikey.com/short/z3dvdv). On the MKR1000, it is a 0.05" pitch 2x5 male header on the top of the board, which you will need an adapter and cable for.

It is possible to use an Arduino board that runs at 5 V as the programmer, but you'll need to use level shifting circuitry on the programming lines to avoid exposing the target board to 5 V logic levels, which would damage it.


Instructions:

Connect an SD card to your computer.

Open this link in your browser: ArduinoCore-samd/bootloaders at master · arduino/ArduinoCore-samd · GitHub

Click the folder that matches the name of your target board.

Click the file that ends in .bin.

Click the "Download" button.

Rename the downloaded file to fw.bin

Move fw.bin to the SD card.

Eject the SD card from your computer.

Plug the USB cable of the Arduino board you will be using as a programmer into your computer.

(In the Arduino IDE) Sketch > Include Library > Manage Libraries

Wait for the download to finish.

In the "Filter your search..." field, type "Adafruit DAP library".

Press "Enter".

Click on "Adafruit DAP library by Adafruit".

Click the "Install" button.

Wait for the installation to finish.

Click the "Close" button.

File > Examples > Adafruit DAP library > flash_from_SD

Change this line:

#define SD_CS 4

according to the Arduino pin connected to the SD CS pin. If your board has a built-in SD slot (e.g., MKR Zero), then you can change this line:

if (!SD.begin(SD_CS)) {

to:

if (!SD.begin()) {

Select the correct board from the Tools > Board menu.

Select the correct port from the Tools > Port menu.

Sketch > Upload

Wait for the upload to finish successfully.

Unplug the programmer Arduino board from your computer.

Plug the SD card into the SD slot connected to your Arduino board.

Connect the programmer Arduino board to the target Arduino board as follows:

| Programmer | | Target |
| - | - |
| ----------- | |------- |
| VCC | | +3V3 |
| ----------- | |------- |
| 10 | | SWDIO |
| ----------- | |------- |
| 9 | | SWCLK |
| ----------- | |------- |
| GND | | GND |
| ----------- | |------- |
| 11 | | RESETN |
| ----------- | |------- |

MKR board (except MKR 1000) SWD pads:
MKRZero_labeled.jpg
MKR 1000 SWD header pinout:
MKR-1000-SWD.jpg
Nano 33 IoT SWD pads:
Nano33IoT_labeled.jpg

Plug the USB cable of the programmer Arduino board into your computer.

Tools > Serial Monitor. You should now see the target board detected, and the bootloader file flashed to it successfully.

Unplug the programmer Arduino board from your computer.

Disconnect the programmer Arduino board from the target Arduino board.


Note: if you have a CMSIS-DAP debugger, you can just do this instead:

  • Connect the debugger to your Arduino board.
  • (In the Arduino IDE) Tools > Programmer > Atmel EDBG
  • Tools > Burn Bootloader

I use this little open source debugger.

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