Development Paths (Future Planning)

So as we transition into the kickstarter Arduboy, there will be some changes to the product and the tool chains that will give users some options on how they want to use and play their Arduboy.

So going forward this is my general plan for 3 paths of development:

1. Beginner - Tutorials, Programming & Arduboy Arcade w/ Codebender
2. Intermediate - Custom Driver (or Codebender Driver), Modified boards.txt & Offline HEX Uploader
3. Advanced - Custom Driver & Makefile for gcc, eclipse… etc

We will be getting a unique USB ID that will identify the Arduboy as it’s own device and it will no longer be recognized as a Arduino Leonardo. This means that everyone will need an Arduboy specific driver to be installed. If you want to continue using Arduino you will also need to modify your board files. Using codebender will streamline this process because they can include the Arduboy profile in their WHQL certified driver and the board configuration is all included online.

There has been a number of developers that have made a good point for a hex uploader. We would work to enable this with codebender so games promoted on the “Arduboy Arcade” could be delivered in this way. For intermediate and above users then there is some discussion of developing an offline hex uploader as well that we can support.

Really interested to get input on this. Especially if anyone has any experience working with making an arduino compatible device with it’s own USB ID! :smile: What does everyone think?

A couple of thoughts - but off the top of my head, so hopefully I don’t say something too dumb.

I guess I’m going to argue that (2.5) is the Arduino IDE. I blogged about doing this – it’s terse, but I’d be happy to participate in a thread that worked out more details (cross platform) on using the Arduino IDE.

The Arduino IDE appears to depend on avrdude for transferring the .hex files to the AVR device (Arduboy in this case). I’ll guess that if you get your own USB ID – it’ll be really important to make sure avrdude gets update as soon as possible so it will work with the Arduboy. Similarly, but I don’t have direct knowledge of this fact, I suspect the Arduino IDE also needs to be updated to support the Arduboy. Without support here – I suspect you’ll break a lot of developers.

Maybe do a poll / thread to see what development environments people are using? Having your own USB ID is useful, but will break everyone who is developing things now.

You’ll need to create instructions and provide the new bootloader / firmware install for the existing DevKits. It’d make me sad to have my DevKit not act just like a real Arduboy.

I’m not anti-codebender – it’s actually not too bad. It’d be nice if they let you integrate with github to version control your code there. Having Arduboy unique support on would make it much better – as a community we could also better embrace the environment and make sure it was easy to find all of the existing (working) Arduboy games there. (perhaps a curated list by @ekem?)


Having our own USB ID is actually required for legal reasons, because if we use the Arduino USB ID we would have to license it from them. Theoretically we are in violation of the current developer kits. But as soon as we start selling these in retail it becomes an issue.

To enable Arduino IDE to use the new setup, you just need to modify the board files and point it to the new bootloader we will have for the arduboy. This is enough to tell avrdude what it needs to know to program the chip. Keep in mind avrdude is made for the avr chipset and not unique to arduino, it’s merely taking advantag eof it.

We plan to make the transfer from developer kit to full version arduboy as seamless as possible. One solution is to actually reflash the bootloader on your developer kit to the one for the final version of the Arduboy. This would give it the new USB ID and keep it compatible (although the pinouts do change still).

Yeah there will be native Arduboy support in codebender. But I actually have some issue with it too, mostly UX stuff like automatically closing “” quotation marks and other stuff like that. So the real key takeaway is that whatever your preferred way of development is, it should fit into one of these 3 paths.

If you don’t see how your workflow could fit into one of these three ways to operate then please let us know.

1 Like

Ok - my concerns with the Arduino IDE are taken care of there. It’d be nice to get Arduboy baked into the ‘master’ version(s) so that there isn’t any requirement to go hacking board files – but hacking a few board files is not so hard to do.

I know Massimo Banzi a little bit, he is a fan of Arduboy I’ll see what strings can be pulled. :smile:

Seeed studio is also doing manufacturing of the genuino for Asia so I have some pipeline into their business that way too.

Yeah each path will have its own set of instructions and tutorials on how to get started. The key is that we’ve got a bunch of different kind of developers from 10 year olds learning to program for the first time to professional game developers flexing their muscle on the system. So it’s really important that everyone finds a comfortable way to interact with Arduboy.

1 Like

@bateske only one question: Is arduboy going to buy the USB ID license ? When will you buy it?

Why I ask? We are working on a hex loader for Win, Lin and Mac. of course we can make it for both USB ID’s and will start with the Leonardo USB ID anyway.

@bateske ,
If you haven’t already, you may wish to consider whether getting Arduino AtHeart certification would be worthwhile (there is some cost involved).

I don’t think you actually have to modify existing board file(s). You can create your own standalone boards.txt file (and other product specific hardware files, including the bootloader) and just place them under the hardware folder of Arduino’s sketchbook folder. No modification of the base Arduino files is necessary, or even knowledge of where they exist.

Arduino IDE 1.5 3rd party Hardware specification

Looking at the way SparkFun does it may be of some help. It appears that all the user has to do is copy and paste a URL into the Additional Boards Manager URLs field in the Arduino IDE preferences and then do an install from the Tools > Board > Boards Manager menu.

I’d suggest making the USB product ID for the Dev Kit different from the KickStarter version, since their hardware is slightly different. That way it would be easier if it turns out that the Dev Kit needs a slightly different bootloader (for example, due to the Dev Kit’s lack of a reset button), or if there’s any other need to identify which is which.

There’s no reason that two different product IDs couldn’t share the same bootloader (and other files) if it turned out to be identical, but having different IDs makes things more “future proof”.

1 Like

I’m looking hard into Arduino at Heart at this point


I’ve already done this, just not tested them:

I’m honestly not sure why the devkit isn’t ok “as is” with sharing the USB ID, unless it’s like really badly illegal or something. But yeah if the hardware is slightly different it might be nice… though still someone can pick which they are using with the board configuration, even if the USB ID is the same - we could still be able to compile things differently based on the board selected.

Just of note:
If a hex uploader is developed, there’s an easy way to create the sketch .hex files. There’s a menu item in the IDE: Sketch -> Export compiled Binary.

The .hex file will be placed in the folder containing the sketch’s source (you can use Sketch -> Show Sketch Folder to open this folder.

1 Like

Yeah just to confirm we kept the Arduino Leonardo boot loader and usb ID for kickstarter to keep it as simple as possible for kickstarter.

These development paths still may be valid in the future as we move into Retail likely will make the changes that will require new software.