Monday, January 22, 2018


Pro Micro Lobotomizer

The Lobot is my third version of a Pro Micro ISP programmer. The first version used a Pro Micro running the Arduino ISP sketch. The second version was a Raspberry Pi 0 using it's GPIO pins. I use these to replace the Arduino caterina bootloader with the standard Atmel DFU bootloader.

The caterina bootloader works fine when used with the Arduino IDE. It is automatic. However when being programmed outside of Arduino you have to manually deal with the reset timing which many people have problems with. The DFU bootloader is much simpler, once reset into bootloader mode it will stay in bootloader until power cycled or given the run command from the flashing software.

This version makes it easier to align the victim Pro Micro against the pogo pins. It also uses either an Arduino Nano or a TinyUSB programmer. Both are very cheap. There are many TinyUSB variants, these purple ones are easy to find on eBay or Aliexpress.

The Arduino Nano is programmed with the Arduino ISP sketch. The TinyUSB comes pre-programmed, but you may need to install a driver if you are running windows. The Arduino Nano shows up as a serial device, the TinyUSB is a LibUSB device.

The Arduino Nano has TX/RX lights so you can see when it is transmitting data. The TinyUSB has no activity lights, but it is faster. You can see the programming progress on screen so you don't lose much not having flashing LEDs.

You can create your own bootloader using LUFA or flash the stock DFU bootloader. Atmel was purchased by Microchip and their website is a mess. You can download the stock DFU bootloader via a Wayback snapshot. The FLIP utility for Windows is also available there.

Programming is through avrdude. To flash stock DFU with the Arduino Nano the commands are:

avrdude -p m32u4 -c avrisp -P comXX -b 19200 -U lfuse:w:0x5e:m -U hfuse:w:0x99:m -U efuse:w:0xf3:m -v

avrdude -p m32u4 -c avrisp -P comXX -b 19200 -B 4 -U flash:w:"ATMega32U4-usbdevice_dfu-1_0_0.hex" -v

Replace XX in comXX with the COM port number of the Arduino Nano. The first line sets the fuses. It will give a warning about changing them back, answer No. The second line flashes the bootloader.

With the USBtiny the commands are the same but with a different programmer and no serial port/speed.

avrdude -p m32u4 -c usbtiny -U lfuse:w:0x5e:m -U hfuse:w:0x99:m -U efuse:w:0xf3:m -v

avrdude -p m32u4 -c usbtiny -B 4 -U flash:w:"ATMega32U4-usbdevice_dfu-1_0_0.hex" -v

It takes about 10-15 seconds to program. The TinyUSB is faster than the Arduino Nano.

Gerber files on github.

Only the 6 pogo pins on the bottom row are really necessary for ISP flashing. GND, Reset, VCC, SCK, MISO, MOSI. The other pogo pins are there to support the Pro Micro when you press down.

The Pro Micro placed on the pogo pins. You press down to make solid electrical contact with the spring loaded pins during the programming process.

Arduino Nano on the left, TinyUSB on the right. You can see the TX/RX LEDs on the Nano. The TinyUSB just has a power LED.

Bottom view. A second PCB is used as the base. M2 Spacers and screws. The length of the spacers matters due to the length of the pogo pins. 6mm spacers are used, slightly longer would also work.

Side view. The pogo pins are only soldered to the top PCB. The bottom of the pogo pins are sitting in the holes of the bottom PCB. I used some tape on the bottom PCB to keep the pins from falling through during soldering. Be careful not to get flux on any of the moving parts of the pogo pins, they will stick in place.

I used two different types of pogo pins. The faceted one on the left and the smooth conical one on the right. I got them on eBay, look for P75 for the size of the pins. The different style heads all have different codes. The faceted one is T2 and the conical one is E2. There are many other styles that may work.

There is a problem with the conical E2 pins. Some Pro Micros have really large holes and they will fall right through. The T2 pin heads are large enough for these holes.

Blue, Black and Green Pro Micros. The Blue has very large holes, not all I have seen are as large as this one. The Black and Green have smaller holes.