Skip to content

clip-boy

Open-source DEF CON badge — ESP32-S3 with an LVGL touch UI

Vendor: SafeHazard · class: badgelife

Status: supported — the identifiers and setup recipe are believed correct.

Maintainer-verified 2026-08-26 on Pop!_OS 22.04: Attached and enumerated; identifier, product string and serial captured with scripts/identify-device.sh. Nothing was run and no firmware was flashed.

What it is

An open-source DEF CON badge built around an ESP32-S3 with a touch display driven by LVGL. Licensed GPL-3.0, with the hardware design files — BOM, Gerbers, enclosure and OmniTag — published alongside the firmware.

What you can do with it

Read its serial output, build and flash modified firmware, and use it as a worked example of the badgelife class: everything here is class behaviour with a name attached.

Setup

Follow the badgelife class setup. Clone the upstream repository, build the sketch with arduino-cli against the ESP32-S3 board definition, and flash with esptool over the badge's serial port.

Known problems

The published flashing route is a web flasher using ESP Web Tools over WebSerial, which needs a Chromium-based browser and does not work in Firefox or on a machine without a graphical session. That gap is the reason this entry exists.

How it identifies itself

USB id What Confirmed Node
303a:1001 Espressif ESP32-S3 native USB JTAG/serial peripheral yes serial

⚠ 303a:1001 is not unique to this device (vendor_chip_default; also used by: free-wili-2, minino, every ESP32-S3 or ESP32-C3 board using native USB). esptool calls 0x1001 USB_JTAG_SERIAL_PID, a constant of the ESP32-S3/C3 USB-serial-JTAG peripheral. Confirmed by capture, not inferred: the Minino and the Free-WiLi 2's onboard ESP32-S3 present the identical pair AND the identical product string, all three captured on the same day on the same machine. Nothing short of the serial distinguishes them.

Access and permissions

Group membership required: dialout, plugdev — added at install, applies at next login.

Firmware modes

  • esptool — tooling: esptool, arduino-cli Firmware is an Arduino sketch in the upstream repository, so the Linux path is arduino-cli to build and esptool to flash. Upstream also offers a web flasher, but that is ESP Web Tools over WebSerial — a browser path, not a toolchain path. Building locally is what lets you modify the badge, which is the point of it being open source.

Software that makes it useful

esptool, minicom, screen, tio

Upstream: https://github.com/SafeHazard/Clip-Boy