Arduboy custom bootloader

I’m finding that I am having issues uploading a sketch more than once with this build

Sketch uses 29020 bytes (97%) of program storage space. Maximum is 29696 bytes.
Global variables use 1834 bytes (71%) of dynamic memory, leaving 726 bytes for local variables. Maximum is 2560 bytes.
Found programmer: Id = "ARDUBOY"; type = S
    Software Version = 1.1; Hardware Version = 1.A

This latest build? What kind of issues? and what are you uploading? I’d like to recreate your issues


The programmer fails to respond during programming the arduboy reboots as if it has been flashed but nothing changed

i’ll PM you a link

Thanks for the PM. It seems I was a little quick with the update. I forgot to make a litle change to the USB init code after moving it. It’s fixed now.


My appologies for the inconvenience

1 Like

I thought it was me for awhile till I rolled back a build :smiley:

I did a minor update to the custom bootloader to support the new alternate wiring for Pro Micro.

Last week of this month I’m having a work break and will dive some deeper into the bootloader again for some more optimisation and adding SPI flash memory support.

1 Like

Managed to sueeze out more space of the bootloader. The Arduboy Homebrew bootloader takes currently ~2.63K with read and write flash sector commands added to the bootloader protocol. It’s pretty easy now to burn and dump an 8/16 Mbyte image to the SPI flash chip.

Need to work on a game select/flasher menu now. Basically the idea is to browse through a list of splash/title screens using D pad and flash upon pressing the A button.


Just to let you know, the main post doesn’t have any external links.
You might want to put a link to the repo up so people don’t have to read through the thread to find one.

(And maybe an “I take no responsibility if this thing bricks your unit” just to be safe.)

A few more suggestions while I’m thinking of it:
May I suggest adding a list of the commands that your bootloader supports?
(I originally came here looking to find out if your bootloader supports EEPROM save/restore. It’s probably going to turn out that the original cathy does, but when I think of “cool features” your bootloader comes to mind first :P.)

Yes I should update the first post with that.

the bootloader can’t brick your unit on it self. But burning the wrong fuse settings can. I’ll add a warning.

With some projects out of the way I’m now back on the custom bootloader. There will be a few changes.
I’ll put an updated command list up soon.

Thanks for the feedback @Pharap

1 Like

However, one of the advantages of this bootloader is that it frees up an extra 1K for sketches. If someone wrote an Arduboy game that took advantage of the extra space, it would be too big to fit in an Arduboy with the standard bootloader.

A person who wasn’t informed, could specify that their Arduboy, with the standard bootloader, had the Cathy3K bootloader. If this happened to be one of the ones that was manufactured without the proper bootloader protection fuses set, an oversized sketch could overwrite the bootloader and “brick” the unit.

I realise this isn’t a problem with the actual custom bootloader and package itself, but it’s something that someone should make an effort to prevent.

That’s sort of what I mean.

Just a bit of extra warning to remind people to take precautions and not to go trying it if they aren’t completely sure about the process.
I know most people here aren’t likely to try to blame you but it happens and we do get younger visitors too.

No problem.

It’s a good project, making sure that people can access the information about it easily will help it get the recognition that it deserves.

I’ve edited the first post adding some info and a warning. Will do more changes later.

Lately I’ve been crunching down the bootloader size more to gain extra free space. Not that I need the space though but I also want a ‘plain’ bootloader that fits in 2K. (I’m not far away from that goal atm :slight_smile: )


Cathy2K is alive! :smiley: I’ve got a stripped down Caterina bootloader under 2K (-8 bytes) that’s 100% Arduino compatible. I’ll try some more optimizing so I can fit the ‘hold down to enter and remain in bootloader mode on power up’ feature as minimum for Arduboy.

Here’s a test version

And here’s the bare minimum Cathy2K Arduboy version.

All the cool features but the down button feature where stripped for the lite Arduboy version.

Cathy2K has the same functionality as the standard Caterina bootloader exect the following:

  • LED breathing feature removed.
  • unused/obselete AVR109 commands removed:
    ‘C’ byte Write high byte to page buffer
    ‘c’ byte Write low byte to page buffer
    ‘D’ byte write EEPROM byte
    ‘d’ Read EEPROM byte
    ‘e’ erase chip (erases application flash area only)
    ‘m’ Flash pagebuffer
    ‘R’ Read flash word

Edit 3:

I’ve managed to optimize cathy2k a bit more and put back the erase chip command and added OLED reset for Arduboy. Also added two experimental vectors for selfprogramming from application area.

Time to start working on Cathy2.5K with all the cool Arduboy features added back in :smiley:



Cathy 2K is now public

I’m now continuing with Cathy3K again. It has all the old Cathy3K features with Cathy2K benefits (smaller size, self programming vector) and write to SPI FLASH memory feature. There’s just under 500 bytes left for a game browser and flasher. Pretty doable! :smiley:


Awesome i’ll have to get ordering some components for flash cards.


Cathy3K Update:

Added code to flash a sketch from flash (cart) memory to Arduboys program memory.

Here’s a clip showing a test of how two different games are flashed with A and B button.


That’s great now I know how to complete level 2 on circuit dude.

Joking aside I’m really impressed with the flash speed its looking virtually seamless.

:hearts::hearts::hearts::hearts::hearts::hearts::hearts: One like is not enough :wink:


Yes flashing is pretty fast for these full size games! One of the advantages of using flash memory.


I like where this is heading. Can you post details on how to make a cartridge?

Like a schematic ?  

Yes, a schematic, a diagram, list of parts, etc.