Skip to the content
PCBKitNew board
2 layers50 × 114.5 mmHecate target, the printed circuit board in 3D

Hecate: A Trivial UART tool

Size
50 × 114.5 mm
Copper layers
2
Thickness
1.6 mm
Parts
47
Nets
60
Pads
153
Tracks, vias
182, 31
Pours
2
Routed
Yes
KiCad
KiCad 9.0 (file 20241229)
Created
29 Apr 2026
Updated
8 Aug 2026

Overview

Hecate target is an open-source printed circuit board by tigard-tools, from the tigard-tools/hecate repository on GitHub. It is a 2-layer board of 50 × 114.5 mm with 47 parts on 60 nets, routed with 182 tracks and 31 vias.

It is built around the ESP-12F, HE6206-33NR and WS2812B. Its parts include 13 switches, 8 diodes, 7 resistors, 4 connectors and 3 capacitors. It belongs with the interfaces and adapters boards and the ESP8266 boards of this library.

Main components

3

README

README.md

Hecate

Hecate: A Trivial UART tool

Objectives

UART is pervasive. Nearly every piece of hardware can speak it. It can be a treasure trove of access when it's not properly secured, an entrypoint to explore even when it is secured, and often a spot to tap plaintext communications between devices.

Hecate is a CircuitPython framework designed to make it quick and easy to work with UART data streams, both interactively and standalone. Hecate makes it possible to implement a customized UART logger, payload dropper, implant-in-the-middle, and more with little or no code.

Inspiration

In Greek mythology, Akheron is the river Charon ferries the dead across and Cerberus is the 3-headed guard dog that guards the underworld. In keeping with the theme, Hecate is a goddess of crossroads. It's typically pronounced "eh-kah-tee" but you're more than welcome to pronounce it like "Tecate".

Essential Features

  • Passthrough Device: When not doing anything else, Hecate should be able to sit in the middle of a UART line, passing through all traffic with minimal (sub-millisecond) delays
  • Tap or Tee In addition to passing through data, Hecate should be able to mirror a copy of that data to an additional UART or to a USB-serial interface.
  • Standalone Logger: Without any USB host involved, Hecate should be able to log all UART traffic that passes through it to a text file. The text file will be retrievable by plugging the device in over USB and copying it off like a flash drive.
  • Payload Dropper Without any USB host involved, Hecate should be able to transmit over UART the contents of a text file stored in it's EEPROM.
  • Pattern Detector Hecate should be able to have basic pattern matching so that when a device transmits a preconfigured UART sequence, it triggers an additional action.
  • Pattern Patcher Hecate should also be able to match/patch basic sequences to
  • Triggers Hecate should be able to do any of these things, triggered or enabled by button presses, timestamps, or other stimuli
  • Alerts Hecate should be able to fire alerts such as LED output or other UART actions
  • Extensible Users should be able to implement custom Triggers or Alerts, like temperature sensors or buzzers or wireless actions.

Installing and Using Hecate

Flashing with make (recommended, esp. for many boards)

On Linux you can flash CircuitPython and Hecate in one step. Hold BOOTSEL while plugging a Xiaomao in (it appears as the RPI-RP2 drive), then:

text
make all         # flash CircuitPython, wait for reboot, copy Hecate
make forever     # hub mode: repeat for each board you plug in, until Ctrl-C
make hecate      # just (re)copy Hecate onto an already-CircuitPython board
make list        # show detected boards

make pulls the pinned tigard-tools CircuitPython .uf2 on first use (cached in firmware/, offline afterwards; drop your own at firmware/firmware.uf2 to override). forever skips the firmware step for boards that already run this build, and handles a hub full of same-labelled drives by tracking each device as it appears. Mounting uses sudo on boxes with no automounter (set SUDO= if you're root). Target-board (keypad/authorizer) flashing is a TODO stub — see the Makefile. Details: make help.

Manual install

  1. Install CircuitPython on your device:
  2. Copy everything from the CIRCUITPY directory to your device:
    • Either clone this repository or download a release and unzip the files
    • Connect your board. If CircuitPython is properly installed, a drive named CIRCUITPY should appear
    • Copy all the files over to the CircuitPython drive
    • The Drive should have a folder named lib and files named code.py and boot.py. It should not contain another folder named CIRCUITPY
  3. Recommended for workshops — the Web Console. Instead of juggling a serial terminal and a text editor, you can drive the whole thing from a browser. In the web/ directory run python3 -m http.server, open http://localhost:8000/ in Chrome/Edge/Brave, and you get the live monitor, a file browser, and a code.py editor in one page — no screen/nano needed. See web/README.md for details.
  4. To work interactively with your device the classic way, connect to the usb serial interface:
    • On Linux systems, this could be typing 'screen /dev/ttyACM0' on a terminal
    • If you're using mu or circuitpy.dev, you can access the console from those programs
    • Each line on the monitor is tagged with a <timestamp> [<wire>] header so you can tell which wire (or Hecate itself) produced it.
    • You can type commands at the monitor: help lists them, status reports what lit the red status LED, and exit tells you how to detach your terminal and quiets the port (Hecate keeps running). Set monitor_headers=False on Hecate(...) if you'd rather see raw bytes.
  5. To edit the standalone code on your device, open the code.py file found on the USB storage that shows up when you plug it in

Saving Files

If you're using Xiaomao or another RP2040-based device, the files on your device are stored in the SPI flash chip. Who can write to thos files is managed by some code in boot.py

  • When you plug in over USB, you can read and write those files from your computer, but your code can only read them
  • When it is self-powered, your code can read and write those files. USB, if it is later connected, can only read them.
  • To change the access mode - meaning, you want your code to be able to write files while you're plugged in over USB - make sure boot.py is on your device, then hold down the BTN as you power it on.

Recommended Hardware

Xiaomao is an RP2040-based device that can run CircuitPython, has 2 hardware UARTs, lives under the Tigard-Tools umbrella, and should work well with Hecate. Otherwise, any device that can run CircuitPython and has a UART should work just as well with Hecate.

In order to use Hecate implant-style in a system, you'll need to find a way to get power from the target device. Your implant's power requirements may vary.

Parts

47
QtyValueFootprintReferences
13SW_PushButton_Switch_SMD:SW_SPST_B3U-1000PSW0, SW1, SW2, SW3, SW4, SW5, SW6, SW7, SW8, SW9, SWpound1, SWreset1, SWstar1
7WS2812BLED_SMD:LED_WS2812B_PLCC4_5.0x5.0mm_P3.2mmD1, D2, D3, D4, D5, D6, D7
410kResistor_SMD:R_0402_1005MetricR1, R2, R3, R4
3Conn_01x02libs:PinHeader_1x02_P2.54mm_Horizontal_SMDJ1, J2, J3
210uCapacitor_SMD:C_0402_1005MetricC16, C22
25k1Resistor_SMD:R_0402_1005MetricR6, R7
2ESP-12FRF_Module:ESP-12EU1, U2
2G***kibuzzard-6A5751B8kibuzzard-6A5751B8, kibuzzard-6A5751B8
2G***kibuzzard-6A575194kibuzzard-6A575194, kibuzzard-6A575194
1100nCapacitor_SMD:C_0402_1005MetricC19
1200Resistor_SMD:R_0402_1005MetricR5
1600RInductor_SMD:L_0603_1608MetricFB1
1D_SchottkyDiode_SMD:D_SOD-523D9
1G***kibuzzard-6A575238kibuzzard-6A575238
1G***kibuzzard-6A5758F9kibuzzard-6A5758F9
1G***kibuzzard-6A575206kibuzzard-6A575206
1HE6206-33NRPackage_TO_SOT_SMD:SOT-23-3U3
1LOGOlibs:hecate-logo-inverseG***
1USB_C_Receptacle_USB2.0Connector_USB:USB_C_Receptacle_HRO_TYPE-C-31-M-12J4

Questions

How big is the Hecate target PCB?

It measures 50 × 114.5 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Hecate target use?

47 parts, built around the ESP-12F, HE6206-33NR and WS2812B. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the Hecate target KiCad files?

From the tigard-tools/hecate repository on GitHub, at the commit this page was made from: the board is target-pcb/hecate-target.kicad_pcb and its schematic target-pcb/hecate-target.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Hecate target design in my own project?

Its repository states no licence, so its author keeps all rights: ask tigard-tools before reusing the design.

Similar boards

  • 2 layers36 × 45.8 mmXiaomao, the printed circuit board in 3D

    Xiaomao

    tigard-tools/xiaomao

    Xiǎomāo is a development board geared toward hardware hacking and hardware implant design that can safely interfacing with a wide range of logic levels

    84 parts37CERN-OHL-S-2.0
  • 2 layers66.7 × 85.7 mmOpentaxus, the printed circuit board in 3D

    Opentaxus

    OpenTaxus/opentaxus

    Opentaxus is a permissively licensed set of hardware, software, and tooling to help as a starting point for customized conference badges.

    54 parts19
  • 2 layers127 × 57.1 mmGlowtie, the printed circuit board in 3D

    Glowtie

    sphawes/glowtie

    The light-up bowtie you control over Wifi

    56 parts25
  • 2 layers88.5 × 100 mmSpiralboard, the printed circuit board in 3D

    Spiralboard

    casartar/Spiralboard

    86 parts4
  • 2 layers66 × 55.9 mmNightlight, the printed circuit board in 3D

    Nightlight

    adb-sh/nightlight

    a little wled 5x5 matrix with an esp8266

    59 parts2GPL-3.0
  • 2 layers78.7 × 40.2 mmBadgeThing, the printed circuit board in 3D

    BadgeThing

    dj505/Untitled

    A badge thing

    74 parts
  • 2 layers25 × 40 mmESP8266-WLED, the printed circuit board in 3D

    ESP8266-WLED

    dokuhn/ESP8266-WLED

    This work is licensed under a [Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License][cc-by-nc-sa].

    32 parts