How to Reset Arduboy if it's Bricked

Exactly the same thing happened to me.
Have no experience with arduino so i have no idea what and how you have to flash but i’m following this post.

This is normal for a factory flashed unit.

Is there a reason to reset the device? You should only need to reset it if the software upload fails, or there are some bugs with the software that reloads.

If you plug it into your PC or Macbook and the device is not recognized then you should try to use a different USB cable that has support for data transfer (preferably something that you’ve used to transfer files before). If using different cables does not work and you are still on the original software then please contact us via the store page and we can try to help you out directly.

Both Arduino and Codebender will prevent you from trying to flash a file that is too large, I have no idea if this is baked into AVRdude and I’m not familiar enough with Platformio to make any suggestions there. I didn’t think it was technically possible to overwrite the bootloader memory space over USB (without some creative hacks to do it intentionally).

@veritazz if you could take a video and post it in a new thread of this behavior I think it would be helpful because I’ve not run into it before.

The pins required for re flashing have circles around them and are clearly labeled. You can use any online tutorial for flashing an arduino leonardo on the arduboy.

NOTE: We are currently using the leonardo bootloader but will likely switch to something custom in the future.

It seems that we need to update the bootloader to take advantages to the changes in arduino that will eliminate the bug related to programs taking up too much RAM. Still trying to dig into that one fully.

@Botisaurus Were you using platformio also? Or is it a more general error, let us know some more details and feel free to open a separate support thread with a video or picture if you want.

If the fuses were set properly at the factory to protect the program area used by the bootloader, it should be near impossible to overwrite or otherwise corrupt it in any way, regardless of the size of the sketch you’re trying to write, or what software you’re using to write it.

@bateske, You may wish to check how the fuses are being set in the Arduboy and how they compare to a Leonardo. The Leonardo uses LOW:0xFF HIGH:0xD8 EXTENDED:0xCB LOCK:0x2F

For bootloader protection the important ones are the HIGH and LOCK fuses.

I like to use this fuse calculator for working with AVR fuse configurations.

Not sure the LOCK fuse was set :frowning: It should be the same as leonardo but I can only confirm the other bits. Maybe these occurrences with platformio means it’s not, and we’ve get something more that can be fixed in our next batch…

Jup i was using it.
I have already uploaded 2 videos on another thread. I can’t search for it right now since i’m on the phone.

this thread.

Thanks to all for the help. I finally brought it back to life by reflashing the bootloader using an AVR MKII ISP and some wooden clothespin. It was quite a ride as the connections where not very stable but I could hold it until the write was finished.
Here are two videos when it was still bricked:

This is a video (could be also a picture) where I tried to flash the bootloader via the Arduino IDE. You need to select the leonardo board and choose Tools->Burn Bootloader (before that select the programmer you have, do not forget to switch on your Arduboy). Use Arduino IDE 1.6.9.

I do not know if the lock fuse is set. How can I read it? Avrdude prints this:

avrdude: safemode: lfuse reads as FF
avrdude: safemode: hfuse reads as D8
avrdude: safemode: efuse reads as CB
avrdude: safemode: Fuses OK (H:CB, E:D8, L:FF)


Here is a closeup of the clothespins. A bit flimsy but after some tries it worked. :sweat_smile:


I’m only interested in one thing: TELL US MORE ABOUT YOUR GAME !!! :slight_smile:

Oh boy… good job.
Sadly too complicated for me since i have no necessary equipment nor the knowledge to do that. :frowning:
In addition to that my battery broke down (yeah i’m pretty talented) so i would need an replacement for that too and need to solder everything. :frowning:

I hope to finish it soon. Actually your character can throw things on the people passing by. They in turn want to break the door into the house. If they succeed you loose… kind of makes me feel like a kid.
The code is a mess and I constantly have new ideas. So I want to finish it soon. The graphics take me ages… I am not very skilled in that. Its my first game ever. My goal was this weekend… fingers crossed.

@Botisaurus Sorry to hear that. You can also use another Arduino to program it. Maybe you have a fablab in your home town? Usually there are people that are familiar with that.

1 Like

Did anybody try to upload a game using Arduino IDE 1.6.9? I have the feeling that with big sketches the upload fails even when pressing the reset button (or holding the UP key while switching on).

BTW: When I use the latest platformio (2.10.1) there is no such issue.

Arduino did make a change to how the reset and reprogramming works on 32u4 boards in the latest revision but it shouldnt effect us. But it seems like it is.

@veritazz did you have a specific sketch that was causing a problem on 1.6.9?

I did a few tests. Actually I have two Arduboys. The yellow one in the pictures above has a new bootloader that I needed to flash. The other one was vanilla with a TeamARG game installed.
The state is the following:

The yellow one refused to be flashed. What I need to do to flash it is holding the UP button then switch on the Ardoboy, then flash (either platformio and recently also the Arduino IDE works)

The red one worked once with the Arduino IDE. After I have flashed my sketch, the behavior is the same as on the yellow

Conclusion is that the bootloader version has no impact.

The sketch that I am using is the game Fatsche. I just pushed some changes to be able to use it easily in the IDE.

The reason why I can flash it now with the Arduino IDE is that I reduced the RAM usage. Seems like anything near 2kb is critical for the normal flash process.
Maybe we should note that it is essential to keep the Hold the UP button feature in the Arduboy library. Only this option allows me to flash again.
If the option is not included that I needed to have the right timing of pressing the reset button + calling avr-dude manually to flash the image. Or use the following sequence:

I think I’ve done almost every version of bringing images to the arduboy. :joy:

F.Y.I. The “Hold the UP button” feature is officially known as the “flashlight” feature. It turns all three of the RGB LEDs on full, so the LED lights up bright white.

It’s intended to provide a bright light for use in the dark, but it also stops the main part of the sketch from executing. This prevents sketches which use a large amount of RAM from corrupting the RAM location that causes problems with uploading new sketches.

Unfortunately, for the 8000 or so Arduboys that have their RGB LED installed incorrectly, the LED will remain unlit while in flashlight mode.

You can exit flashlight mode by pressing the DOWN button, to continue running the sketch. Sorry, not yet. In the next library release. Currently you have to power off to exit the flashliight.

I don’t think there are any plans to remove the flashlight feature.

1 Like

Recently some people also try to flash a bootloader after things went wrong. I just thought about it to have a nice adaptor to be able to nicely connect an ISP or an Arduino (used as ISP) to the 6 pins on the back of the Arduboy PCB.

Having this adaptor would enable people to recover from such issues. All things can be done be the Arduino IDE then.

Maybe somebody with enough 3D printer knowledge can craft one an publish how to create them so people can reproduce it. If we find a good design it could be sold in the Arduboy store.

@bateske What do you think?

1 Like

Oh that would be amazing.

A “Community Market” would be a nice idea. I’m sure if say, sweatpants or shirts were ever made by someone the store could sell them, and other such items like 3d printed products from the community.

We do also have a #classifieds section, and I believe our current Terms of Service would cover us pretty well if users wanted to try and sell items to each other, within some reason of course. I rarely see forum classifieds working with any great effect, but I did see a group buy offer posted the other day :slight_smile:

It would be fun to try and source a few hours on a few dozen 3d printers if the design is solid, and just do a round of orders that way.

This is my report.
If you know wrong, please tell me.

very sry. my english is super wrong. pls rewrite my document.


  1. My Arduboy can’t Sketch!
  2. My Arduboy can’t detect COM port!(tool -> Serial Port)


Problem There are multiple.
Here, I talk about the process of up to play the game.

  1. Turn ON Arduboy.
  2. run Bootloader.
  3. run Arduboy Library.
  4. run Sketch.

How to recovery.

case number 4.

Game or your original sketch break.
Possibility is CPU of Program Counter, Memory leak, Pointer Problem.

Please use flashlight mode.
Library prevents the sketch of the intrusion.

  1. Keep push UP Button.
  2. Turn ON Arduboy.
  3. Write Sketich form Arduino IDE.
  4. Recovery!

case number 2.

Serious sickness.

Possibility is Big Sketich, Big Global and Local Variable.
Max Variable is 2,560 bytes. but probably 2000 over break Arduboy.
I don’t have answer. It might conflict sections.

Arduino IDE can’t write Big Sketich.
Probably you use platformio or original makefile.

Max is 28672 bytes. if 28672 bytes over write, Arduboy will break.

reset switch video here.

but reset timing is very short. 500ms - 1sec?
I found 100% timing.

  1. keeping reset switch
  2. turn on.
  3. write sketich(Library of Hello World) from Arduino IDE. and keeping reset siwtch!

log(in japanese).

PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}

Did you have the same result?
In the case of the same result, it has worked a reset switch.

Next step. You don’t keep reset switch when you find log of “PORTS”.
Your Arduboy can write Sketich.

but if you see log, bootloader break!
log(in japanese).

PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {} => {}
PORTS {} / {COM3, } => {COM3, }
Found upload port: COM3
E:\program\Arduino\hardware\tools\avr/bin/avrdude -CE:\program\Arduino\hardware\tools\avr/etc/avrdude.conf -v -patmega32u4 -cavr109 -PCOM3 -b57600 -D -Uflash:w:C:\Users\fletcher\AppData\Local\Temp\build622a37fead4ee654a1b9a5613f737b3a.tmp/HelloWorld.ino.hex:i 

avrdude: Version 6.0.1, compiled on Apr 15 2015 at 19:59:58
     Copyright (c) 2000-2005 Brian Dean,
     Copyright (c) 2007-2009 Joerg Wunsch

     System wide configuration file is "E:\program\Arduino\hardware\tools\avr/etc/avrdude.conf"

     Using Port                    : COM3
     Using Programmer              : avr109
     Overriding Baud Rate          : 57600
     AVR Part                      : ATmega32U4
     Chip Erase delay              : 9000 us
     PAGEL                         : PD7
     BS2                           : PA0
     RESET disposition             : dedicated
     RETRY pulse                   : SCK
     serial program mode           : yes
     parallel program mode         : yes
     Timeout                       : 200
     StabDelay                     : 100
     CmdexeDelay                   : 25
     SyncLoops                     : 32
     ByteDelay                     : 0
     PollIndex                     : 3
     PollValue                     : 0x53
     Memory Detail                 :

                              Block Poll               Page                       Polled
       Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
       ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
       eeprom        65    20     4    0 no       1024    4      0  9000  9000 0x00 0x00
       flash         65     6   128    0 yes     32768  128    256  4500  4500 0x00 0x00
       lfuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
       hfuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
       efuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
       lock           0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
       calibration    0     0     0    0 no          1    0      0     0     0 0x00 0x00
       signature      0     0     0    0 no          3    0      0     0     0 0x00 0x00

     Programmer Type : butterfly
     Description     : Atmel AppNote AVR109 Boot Loader

Connecting to programmer: .avrdude: butterfly_recv(): programmer is not responding

Arduboy does not heal by itself.

You need Arudino Board or AVR ISP mkII.

Arduino UNO - devkit

pin13 - CLK
pin12 - MISO
pin11 - MOSI
pin10 - RESET
3.3V  - VCC

i dont have kickStarter Arduboy. sry. picture is My devkit.
devkit pins is VCC, RST, MISO, MOSI, CLK, GND.
pls set cable.

next. Arduino IDE write Arduino UNO.

[file]→[sketch example]→[11.ArduinoISP]→[ArduinoISP]

you change target. Arduboy Setting here.

[tool]->[board]->[Arduino Leonardo]
[tool]->[Burn board]->[Arduino as ISP]
[tool]->[Burn bootloader]

Burn time is 1,2 min. You will feel long time :slight_smile:
last. it write Hello World of Arduboy Libary.
All is complete.


@akkera102, glancing through the guide, it seems everything is straight forward. I will break out my dev kit and step through this process, and do any clarification needed. I’ll post any edits here, and then we can make the new topic for a guide from the source here. Thanks a ton!!! This is amazing work, thank you. どうもありがとうございました!

1 Like