Methods for multi-upload

Carrying over from what started in the ProjectABE thread, discussions of how to efficiently upload code to 300 (or more) Arduboys.

The method used will be via USB, as in this situation, the cases are fully assembled. We do this in the factory with a test jig one at a time with the bare circuit boards.

I know this is something @JayGarcia has done, if he has insights it would be good to know.

This is a discussion of process engineering as much as software development.


What is your current method?

And how does the proposed method sound in comprarison?

… and what does a test jig look like?

Honestly haven’t put too much thought into it… just gonna try to come up with something and brute force it… But as mentioned in the other thread I’ll try to recruit at least one other person to help me.

Generally I like to do everything at one time, this is probably the wrong way to do it but, let’s call this the brute force method would be to unpackage all the units, have a stack of Arduboys that I’m working through. Then repackage all of them.

With a helper, I could have someone unpacking them while I’m reflashing the units and then have them repack them after they are finished. Do that in batches of 5 or 10 units at a time.

If there is a method to do simultaneous uploading, that would certainly save some time. As I mentioned before I hadn’t really planned it out but at the very least I would be outside the IDE just running avrdude from the command line. It may be possible to run in parallel multiple units by writing a small script to open several instances of the command line, but I don’t know how happy windows serial driver would be with that. Probably ok, but there is an issue of com port collision as the units auto-reset potentially.

Have we confirmed if ProjectABE reliably can re flash multiple units in parallel? Or is it glitchy?

If I have to, I can use multiple laptops. Or maybe invest in some raspberry pi zero’s. That might be the easiest method, just have 5 or 10 headless pi’s setup with a button to re flash and an LED to indicate it’s complete.

This is one I had made for the developer kits… forever ago…


It’s a fixture that has spring loaded contacts (pogo pins) and an arm to hold it in place. Inside there was a raspberry pi hooked up to an ISCP programmer.

This is something @eried made that’s kind of the home built version of the same.


Still glitchy, unfortunately, but it shouldn’t take too long to iron out the problems. I was aiming at getting 1 board to flash and now we’re going for N. :stuck_out_tongue:

Am in the car now (parked), so I can’t type too much.

I imagine this could be scripted. Connect 10 arduboys to the computer, have a BASH script enumerate all devices connected (Mac is /dev/cu.usbmodem or something) and then use avrdude to upload to each one sequentially.

… or have the bash script spawn processes for each enumerated connection at the same time

On Linux and Windows they might get different addresses when they reboot, I don’t think a script would handle this well. I don’t know about Mac.

Knowing me, If I had to flash 300 I would start making a 3d printed jig with a small conveyor belt to load them all in batches. And probably that would take more than flashing them manually…

I was just suggesting multiple laptops because getting 1 to flash in a loop is trivial, not even needing to touch any button, just plug, wait, unplug, etc…

You’re more than welcome to like, you know, reply later when you are at a keyboard :laughing:

Yeah this. I do have a mac but would likley get done on a PC. I think one of my laptops has has GNU tools installed on it. But then also a google search reveals… wtf?

1 Like

Linux is similar to Mac in this regard. I’ve not had much experience with windows since XP :laughing:

So much has changed since then, it’s now more Unix-like than a Mac. :rofl:



Sorry, couldn’t resist. :stuck_out_tongue:
Back on track: conveyor belt or robot arms?


The only challenge is how to enumerate the connected devices. Power shell may work well in this case on the windows box.

Both probably. We need to drift this topic to “how to design a robot arm that places them in the conveyor belt in a reliable way”

I think that would work. Ubuntu bash works really well in W10.

Reminds me of this


How did you upload onto all your evade systems @JayGarcia I’m assuming you just had an army of people with many machines?


I wonder how much time it took that person to develop that robot to do it. There is no way that would pay off until after several hundred units. Also automating micro-usb plugging and unplugging would be a nightmare. Although maybe better if you could find a male connector that doesn’t actually have the little clips that hold it in place.

Actually I was just thinking about trimming the metal off a micro usb for softer penetration.

Properly aligned, USB goes smooth. Like for example… in a dock :smiley: