Multi-Pass (DC27) · Volume 1
Multi-Pass (DC27) — Volume 1
Introduction
The Multi-Pass is BoZe’s Fifth Element-themed indie badge from DEF CON 27 (August 2019). The Multi-Pass is famously the document Korben Dallas keeps having to flash at officials — so the badge is, literally, a portable e-paper display you can flash. It’s also a competent ESP32-class embedded platform with a real firmware ecosystem behind it (badge.team).
This volume is the hardware tour. Vol 2 covers the badge.team / MicroPython app stack; vol 3 walks through writing a custom app.
📷 Hero photo:
03-outputs/figs/multi_pass_hero.jpg(TBD — pull from Hackaday.io project page or Openverse).
1. Block diagram
+--------+ +--------------+ +----------+
| USB | <----> | CP2102 UART | <----> | |
+--------+ +--------------+ | |
| ESP32- |
+--------+ +--------------+ | WROOM | +------------+
| LiPo | <----> | TP4056 chg | -----> | (16 MB) | <----> | 2.9" EPD |
| 1000mAh| +--------------+ | | | 296x128 |
+--------+ | | +------------+
| | +------------+
+--------------+ | | <----> | MPR121 |
| ATmega48 | <----- | | | (cap touch)|
| (LED coproc) | | | +------------+
+------+-------+ | | +------------+
| | | <----> | µSD slot |
v +----+-----+ +------------+
+--------------+ |
| 13 LEDs | v
+--------------+ +--------------+
| 2× SAO |
| (v1.69bis) |
+--------------+
2. Compute: ESP32-WROOM (16 MB)
- Dual-core Tensilica Xtensa LX6 at 240 MHz
- 520 KB SRAM
- 16 MB SPI Flash (large for ESP32-class — most badges use 4 MB)
- WiFi 802.11 b/g/n + Bluetooth 4.2 (Classic + LE)
- The extra Flash matters for the badge.team app store — apps + Python interpreter + media all coexist
3. Display: 2.9” e-paper 296×128
- Grayscale e-paper, zero-power persistence (image stays after power-off)
- Full refresh: ~1.5 s typical, with visible flash sequence
- Partial refresh: faster (~0.3 s) but ghosts after several updates — needs occasional full refresh to clear
- Driven by ESP32 SPI; exact controller IC to confirm from schematic (typically a UC8151 or SSD1675 family for this panel size)
App design implication: budget refreshes. Apps that try to animate at video frame rates will look terrible and burn battery. Status displays and slow UIs are the sweet spot.
4. Input: MPR121 capacitive touch
- 12-channel cap-touch controller, I²C-attached
- The Multi-Pass uses some channels for the front-panel touch buttons (exact count TBD from schematic)
- Configurable thresholds; debouncing handled in MPR121 hardware
5. LED coprocessor: ATmega48 + 13 LEDs
This is the most interesting design choice. The ESP32 has plenty of GPIO and could drive LEDs directly via PWM — but a dedicated AVR ATmega48 runs the LED show, freeing the ESP32 to do real work without interrupt jitter affecting LED smoothness.
- 13 individually-addressable LEDs
- ATmega48 communicates with ESP32 via UART or I²C (TBD from schematic)
- The ATmega48 has its own firmware — modifying LED behavior may require flashing the AVR via ICSP separately from the ESP32
6. Power
- 1000 mAh single-cell LiPo
- TP4056 USB charger (constant-current then constant-voltage; default 1 A charge, configurable via Rprog)
- Separate power switches for badge and LED sections — clever, lets you keep the badge running but kill the LED light show (which probably dominates current draw)
- CP2102 USB-UART for programming + console
Battery age note: 2019-era LiPos in 2026 are likely degraded. Capacity check + possible replacement before any serious use.
7. Storage
- 16 MB SPI Flash (ESP32-WROOM internal) — primary
- micro-SD slot — secondary, presumably for apps + media via badge.team
8. Expansion: dual SAO v1.69bis
- Two SAO (Shitty Add-On) headers, both v1.69bis (the more-common-than-not variant)
- 4-pin: GND, +3V, SDA/Tx, SCL/Rx
- Twice the SAO real estate of most badges — supports two add-ons or a chain
9. Software entry points
- MicroPython on badge.team — boot loader hands off to the app loader, apps run as user Python with access to a wrapped HAL
- App repository — apps installable over WiFi from badge.team’s repo
- Native C / ESP-IDF — possible but loses the app ecosystem; reserve for performance work
10. What stands out
- E-paper choice is rare for badges (most go RGB LED matrix or OLED) and well-suited to the Multi-Pass theme (a document, not a screen)
- ATmega48 LED coprocessor is overkill in transistor count but elegant in software separation
- Dual SAOs + 16 MB Flash + battery + SD = “real platform” not “toy”
References
- Schematic PDF (release date TBD — BoZe committed to post-DC27 release; check
02-inputs/research/after pulling) 02-inputs/research/— upstream repo clone (CromulonB/DC27-MULTI-PASSper Hackaday.io)- Hackaday articles + Hackster writeup — see
02-inputs/research/links.md - badge.team platform docs: https://badge.team/