More on fabduinos

April 25th, 2013

So again, this is about making your own arduinos using fablab inventory parts and milling the circuit on a modela.

fabduino 328

So you can make these boards as listed on the fab academy website, including using the components,traces, interior, and cad file.

Then, if instead of a 168 like listed on the schematic, you only had 328s (and not 328ps), you’d have to solder on a 20MHz crystal, and follow the steps in the previous blog post to get your avrisp recognized in linux correctly, and edit the avrdude.conf file to tell avrdude about the existence of atmega328s, and then….

Step 4: We make our own hardware folder containing this board.

Put the contents of this zip into your sketchbook folder. You should now have a file structure like sketchbook>hardware>fabduino328. This zip file includes a compiled bootloader for the 328 using a 20MHz external crystal, a boards.txt description file of the fabduino, and a shell script to flash the bootloader, and some other crap.

To flash the bootloader, run ./ This assumes you are using an avrisp2.

Now when you run the arduino IDE, you should be able to program your fabduino as expected.

Addendum: some more notes

So the burn bootloader script just runs these two avrdude scripts:
avrdude -c stk500v2 -p atmega328 -P usb -b 115200 -e -u -U lock:w:0×3f:m -U efuse:w:0×05:m -U hfuse:w:0xDC:m -U lfuse:w:0xFF:m
avrdude -c stk500v2 -p atmega328 -P usb -b 115200 -U flash:w:optiboot_fabduino328.hex -U lock:w:0×2f:m
The reason you can’t burn the bootloader from within arduino is because after burning the bootloader I pretend the mcu is actually a 328p so you can use the regular arduino compilation.

Should for some reason zips break the internet, here’s the boards.txt file: with Atmega328 (not p) with 20MHz external clock


fabduino328-20.bootloader.lock_bits=0×0F is by nadya peek. she'd love to hear from you.