Smallest possible USB compliant device with V-USB
Clone or download
Latest commit 27bfb25 Nov 16, 2014
Type Name Latest commit message Commit time
Failed to load latest commit information.
firmware license Nov 16, 2014
software updated with version info request Jan 7, 2014
.gitattributes Initial commit Jan 3, 2014
.gitignore gitignore Jan 3, 2014 license Nov 16, 2014
USB-Timing.png image of bus timing Mar 2, 2014 license Nov 16, 2014
test-with-WS2812D.jpg pic with ws2812d Mar 2, 2014
u-wire-test.jpg photo Jan 7, 2014
v5 bot.png Added images of PCB Nov 16, 2014
v5 top.png Added images of PCB Nov 16, 2014


This is an attempt at the smallest possible USB compliant device with V-USB. It uses an ATtiny10 to control a single WS2812 LED via USB.

The source started out as an amalganation of micronucleus and littlewire. All excess functionality was cut away.

Update 2014-01-07:

  • It actually works on a ATtiny 10 now, yay! It still suffers from AVR-GCCs inability to generate proper 16 bit STS/LDS. Ticket to Atmel was submitted, let's see if they fix it.

Update 2014-03-19:

  • I published a more detailed write-up of the project here.
  • Custom PCB design is finished and ordered.


  • Enumeration.
  • Only SETUP-request can be received.
  • Responses are limited to strings from flash memory or zero sized replies.
  • All SETUP packets that are not system request are forwarded to a WS2812 RGB LED on PB0.

Memory usage

  • 1020 bytes Flash - Now down to 988 bytes with STS/LDS workaround.
    • Leaves 36 bytes of flash for addtional functionality!
  • SRAM:
    • 28 bytes static variables
    • 2 bytes return stack
    • 2 bytes free
  • Uses only regs R16-R31


This design is open source hardware shared under GPL V3.

Parts of this design are derived from and V-USB.

Please honour the license by publishing the design files of derived designs and attributing the original work by linking back to the original repository.

Test set up