From 33C3_Public_Wiki
Jump to: navigation, search
Description A tiny ARM microprocessor which hides *inside* your USB port.

Has a BOM of $10 in individual quantities when ordered off Digikey, constructable by hobbyists! Designed for 2factor authentication or anything else you can think of.

Has website
Persons working on
Tags hardware, arm, security, 2factor, authentication, usb, yubikey, fido
Located at assembly RIAT Crypto Lab, Fail0verflow
Other projects...


I'm Tomu

I'm Tomu a tiny ARM microprocessor which fits in your USB port. I have two buttons and two LEDs!

I'm fully open source, have a BOM of ~$10 (in individual quantities) and am constructable by hobbyists! Designed for 2-factor authentication or anything else you can think of.

Lots more details in Mithro's 33C3 Lightning Talk on Tomu.

Tomu Prototype Running Blinky Firmware

Help us!

These are currently the top items which need to be done related to the Tomu. If you help out, [@mithro]( will probably send you a Tomu device!

Creating (or porting) a FOSS USB stack to EFM32HG

To make it easy for people to develop new applications of the Tomu, we need a good USB stack which is compatible with the EFM32HG.

There are a couple of possible options;

  • Porting LUFA - Someone seems to have already started the EFM32 series, just not the EFM32HG.
  • Other options?

Creating (or porting) U2F / FIDO compatible firmware

The ultimate goal of the Tomu is to be used as a 2nd factor authentication device. For this to work someone needs to write firmware compatible if the FIDO protocol.

There are already a bunch of things which seem like it would make this easier like; micro-ecc, Nitrokey, u2f-zero and stm32-u2f.

QEmu Emulation of the EFM32HG

We would like to have good emulation of the features in the EFM32HG309 processor so that people can write software for the board without having to have the hardware.

The biggest part of this is the emulation of the USB stack.

Creation of Tomu bootloader programming rig

The EFM32HG come with a bootloader which doesn't work without an external crystal. We thus need to replace the bootloader with a version that does. It would be good to have a standard rig which allows programming of multiple Tomu boards (a whole panel) at once.


Tomu Hardware

Built out of a 3d printed part + 2 layer "thin" PCB (0.4mm, 0.6mm or 0.8mm thick).

Both boards have;

  • 6mil traces
  • 6mil clearance
  • 0.3mm drill / 0.6mm vias

All Tomu boards have;

  • At least 2 different color LEDs
  • At least 2 touch buttons


  • Status: Hardware complete, simple flashing firmware working. Needs proper firmware.
  • GitHub Repository


  • Uses a Silicon Labs Happy Gecko EFM32HG309
  • 25MHz ARM Cortex-M0+
  • 8kb^ RAM
  • 64kb^ Flash
  • USB 2.0
  • Literally 12 Parts
  • BOM ~$10 USD from Digikey (in individual quantities)


The important thing to note is that you need a PCB that is 0.8mm thickness or less. The default thickness is normally 1.0mm and 1.0mm is too thick.

These gerbers should be possible with the following manufacturers;


The Tomu hardware is under your choice of;

  • the "Creative Commons Attribution-ShareAlike 4.0 International License" (CC BY-SA 4.0) full text of this license is included in the LICENSE file and a copy can also be found at
  • the "TAPR Open Hardware License" full text of this license is included in the LICENSE file and a copy can also be found at

Software for Tomu is under various licenses, please consult the license included with the code.

Open Source Hardware Certification AU0000001