Skip to the content
PCBKitNew board
2 layers42.8 × 19 mmSquidgrip, the printed circuit board in 3D

squidgrip auto-reset ESP32 flasher based on a CP2102N

Size
42.8 × 19 mm
Copper layers
2
Thickness
1.6 mm
Parts
28
Nets
35
Pads
103
Tracks, vias
155, 31
Pours
1
Routed
Yes
KiCad
KiCad 9.0 (file 20241229)
Created
14 Oct 2026
Updated
29 Oct 2026

Overview

Squidgrip is an open-source printed circuit board by unixvoid, from the unixvoid/squidgrip repository on GitHub. It is a 2-layer board of 42.8 × 19 mm with 28 parts on 35 nets, routed with 155 tracks and 31 vias.

It is built around the MBT3904DW1T1G-HXY. Its parts include 8 resistors, 3 capacitors, 3 ICs, 3 diodes and 2 switches.

Main components

1

README

README.md

Squidgrip

Squidgrip is a clamp-on USB-UART probe for programming ESP32 boards. It is a CP2102N on a small USB-C board with a 6-pin pogo pin array on a thin tongue, plus a 3D printed clamp that presses that tongue onto the programming pads of a target board.

It carries the ESP32 auto-reset circuit, so esptool, the ExpressLRS Configurator, PlatformIO, Arduino IDE, etc can drop a target into the bootloader and flash it without you touching anything. There are RESET and BOOT buttons for doing it by hand, power/TX/RX LEDs, and a 3.3 V LDO so the probe can power the board it is flashing.

squidgrip in its clamp (3D render)
squidgrip in the clamp (3D render)

Front copper and silkscreen Rear copper and silkscreen
Copper and silkscreen: front and rear

Assembled squidgrip, front Assembled squidgrip, side Assembled squidgrip, rear
Assembled: front, side and rear

Bare PCB, front Bare PCB, rear CAD view of the assembly
Bare PCB front and rear, and the CAD assembly

Contents

Features

  • CP2102N USB-UART bridge on USB-C. It shows up as a normal serial port, no drivers needed on Windows 10 or newer, macOS and Linux.
  • The one-time CP2102N configuration is in firmware/, so a clone comes up with a proper name instead of as a generic bridge.
  • ESP32 auto-reset circuit (a dual transistor driven by DTR and RTS), so flashing tools can put the target into the bootloader on their own.
  • RESET and BOOT buttons for manual control.
  • Power, TX and RX LEDs.
  • 6-pin pogo array on a thin tongue, 2x3 at 1.27 mm pitch, so you can reach a small pad array on a crowded board. Or get a 90 degree header for even tighter access.
  • 3.3 V LDO on board: the probe can power the target while flashing, no second supply needed.
  • 3D printed clamp (upper jaw, lower jaw, pivot pin) that holds the pogo pins on the target pads.
  • 42.75 x 19.00 mm, 2 layers, 1.6 mm FR-4.

Specs

ItemValue
USBUSB-C receptacle (Molex 2171790001), USB 2.0 only, 5.1 kΩ CC pulldowns
USB-UART bridgeSilicon Labs CP2102N-A02-GQFN24 (QFN-24)
RegulatorTLV75733, 3.3 V out from USB 5 V
Programming pins6 pogo pins on a 2x3 array at 1.27 mm pitch (Mill-Max 855-22-006-30-001101)
Auto resetMBT3904DW1T1G dual NPN plus two 10 kΩ resistors, driven by DTR and RTS
ButtonsRESET (SW1) and BOOT (SW2), C&K PTS526 SM15 SMTR2 LFS
LEDsPWR (blue), TX (yellow), RX (green)
Board42.75 x 19.00 mm, 2 layers, 1.51 mm FR-4 core, 1 oz copper, about 1.6 mm total
Mounting2 x M2 holes plus the 3D printed clamp
Clamp partsclamp_upper.step, clamp_lower.step, pin.step

How it works

text
   USB-C ─────▶ +5V ─────▶ TLV75733 ─────▶ +3.3V ─────▶ pogo VCC (powers the target)
     │                        (3.3 V LDO)
     │ D+ / D-
     ▼
  CP2102N ── TXD ──▶ pogo RX   (target RXD0)
     │    ── RXD ◀── pogo TX   (target TXD0)
     │
     │ DTR / RTS
     ▼
  MBT3904 (dual NPN) ──▶ pogo RST/EN (target EN) and pogo BOOT (target IO0)

  SW1 = RESET, SW2 = BOOT, D1/D2/D3 = PWR/TX/RX LEDs

The auto-reset part is the standard ESP32 arrangement: DTR and RTS from the CP2102N drive two transistors through 10 kΩ resistors, which pull EN low and hold IO0 low in the right order. That is the same trick an ESP32 dev board uses, so esptool and friends can reset the target into the bootloader by themselves. The buttons do the same job by hand if you need them.

The CP2102N runs off the 3.3 V rail (VREGIN, VDD and VIO are all tied to +3.3 V), senses USB VBUS on +5 V, and has a 1 kΩ pull-up on its reset pin.

Main connections on U1:

U1 pinNameNet
3, 4D+, D-USB data from J1
8VBUS+5V
5, 6, 7VIO, VDD, VREGIN+3.3V
9~RSTR5 1 kΩ pull-up to +3.3V
20, 21RXD, TXDpogo TX (pad 5), pogo RX (pad 6)
19, 23~RTS, ~DTRauto-reset transistors (U2)
13, 14~TXT, ~RXTRX and TX LED cathodes
2, 25GNDGND

Pinout

Six pins, 2x3 array at 1.27 mm pitch. One column is GND / RST-EN / VCC and the other is RX / TX / BOOT, and the silkscreen labels match the layout. TX and RX are named from the target's point of view, so the pin marked RX is the one the probe drives and the pin marked TX is the one the probe reads.

SilkPadNetProbe sideTarget side
GND1GNDgroundground
RST/EN2/RESETauto-reset transistor, SW1EN (reset)
VCC3+3.3V3.3 V from the LDO3V3
BOOT4/BOOTauto-reset transistor, SW2IO0 (boot select)
TX5/RXDCP2102N RXD (input)target TXD0
RX6/TXDCP2102N TXD (output)target RXD0

To put it on your own board: 6 pads, 1 mm diameter, 0.54 mm holes, 1.27 mm pitch, in a 2x3 block with that pinout. It is in this repo as hardware/squidgrip_pogo_2x03_P1.27mm.kicad_mod, and the SquidTX Nano TX board carries it as SG1, so the two work together out of the box.

Configuring the CP2102N

The CP2102N leaves the factory with a generic identity, so it needs a one-time configuration before the probe behaves like a squidgrip. That configuration is in firmware/, and Silicon Labs' own tool programs it.

Tool: Simplicity Studio with the Xpress Configurator. The firmware/ folder is a Simplicity Studio project, and its settings file pins the exact part (ffd.usbxpress.cp2102n.cp2102n_a02_gqfn24).

FileWhat it is
firmware/.project, firmware/.settings/Simplicity Studio project metadata, so the folder opens straight in the IDE
firmware/squidgrip.documentthe device configuration document
firmware/squidgrip.configurationthe saved configuration: FilterVidPid 10C4:EA60 plus the config byte array

Steps:

  1. Install Simplicity Studio, then plug the squidgrip into USB-C.
  2. Open the firmware/ project, or make a new Xpress Configurator project and open its document file.
  3. Use Import From Device to read the chip's current configuration, then set the fields you want. The one that matters is the Product String, because that is the name your OS shows for the port (set it to squidgrip). The manufacturer string and serial number are also there.
  4. Click Program to Device.
  5. Unplug and replug the probe. It comes up under the new name.

The configuration keeps Silicon Labs' VID/PID (10C4:EA60) instead of a custom one, and that is deliberate: the stock VCP driver matches it, so there are no .inf edits and no driver install. If you change the VID/PID you are on your own for driver matching.

Two notes from Silicon Labs' documentation. If Simplicity Studio does not pick up the new name after programming, clear its device cache: delete the device's .info file from SimplicityStudio/<workspace>/.metadata/.plugins/com.silabs.ss.platform.device.core/device and replug. And if the product string in squidgrip.configuration is still Silicon Labs' default (CP2102N USB to UART Bridge Controller), then that is the field to change in step 3.

Using it

  1. Plug the squidgrip into USB. The blue PWR LED lights up and a serial port appears. The CP2102N needs no drivers on Windows 10 or newer, macOS and Linux.

  2. Line the tongue up with the pad array on the target board and close the clamp. The pogo pins point down from the underside of the tongue, so the target sits below it.

  3. Flash. The auto-reset circuit does the reset and boot pin dance for you, so anything that talks to a serial port works: the ExpressLRS Configurator (pick the target, set the upload method to UART, choose the COM port, Build & Flash), PlatformIO, the Arduino IDE, or plain esptool, for example:

    text
    esptool.py --chip esp32 --port COM5 --baud 921600 write_flash 0x0 firmware.bin

The TX and RX LEDs blink with traffic, so you can see whether the target is answering. If a tool cannot get the target into the bootloader, do it by hand: hold BOOT, tap RESET, release BOOT.

Two things worth knowing:

  • The probe feeds 3.3 V to the target through the VCC pin, so a bare board can be flashed with nothing else connected. If the target already has its own supply, be aware the two will be tied together.
  • The 3.3 V rail comes from the TLV75733 and USB VBUS, so what you can pull depends on the USB port you are plugged into. It is plenty for an ESP32 (and an RF module while flashing).

The clamp

It works like an alligator clip. Three printed parts in hardware/clamp_design/:

FilePartQty
squidgrip - clamp_upper.stepupper jaw (SQUIDGRIP embossed on it)1
squidgrip - clamp_lower.steplower jaw1
squidgrip - pin.steppins that connect the PCB to the print2

Hardware:

PartMcMaster-CarrQty
M3 x 16 mm socket head cap screw91292A1151
M3 nyloc nut93625A1001
Spring (in the handle)9271K5772

The two printed pins hold the PCB to the clamp, the M3 screw and nyloc nut are the pivot, and the two springs sit in the handle so the jaws spring back open. The target board goes between the jaws, under the tongue. The one in the photos is FDM printed, so print settings are up to you. squidgrip.step in hardware/manufacturing/ is the finished assembly if you want to check clearances before printing.

Bill of materials

Parts that LCSC can assemble (this is the CSV in hardware/manufacturing/):

RefValue / PartPackageLCSC
U1CP2102N-A02-GQFN24RQFN-24 4x4C969151
U2MBT3904DW1T1GSOT-363C110150
U3TLV75733PDRVRWSON-6 2x2C2868428
C14.7 µF0805C1779
C2, C30.1 µF0805C1711
R1, R810 kΩ0805C17414
R51 kΩ0805C17513
R6, R75.1 kΩ0805C27834
R9, R10, R112.2 kΩ0805C17520

Everything else is hand soldered:

RefPartNotes
J1Molex 2171790001USB-C receptacle
SG1Mill-Max 855-22-006-30-0011016-position pogo pin header
SW1, SW2C&K PTS526 SM15 SMTR2 LFSRESET and BOOT switches
D1, D2, D30805 LEDs, yellow / green / blueTX, RX, PWR
-2 x M2 screwsPCB to clamp
-pivot pin or screw for the hingesee hardware/clamp_design/

Manufacturing

FileDescription
hardware/squidgrip.kicad_proKiCad project (design rules and netclass)
hardware/squidgrip.kicad_schschematic (title block: Squidgrip ESP32 Interface, rev 1.4, Midnight CAD)
hardware/squidgrip.kicad_pcbPCB layout
hardware/manufacturing/squidgrip-v1.4-gerbers.zipgerber and drill package, ready to upload
hardware/manufacturing/gerbers/the same files unpacked (F and B Cu, mask, paste, silk, Edge_Cuts, PTH and NPTH drills, job)
hardware/manufacturing/squidgrip_v1.4_BOM.csvBOM with LCSC part numbers, in the JLCPCB assembly format
hardware/manufacturing/squidgrip.step3D model of the assembled board
hardware/clamp_design/clamp STEP files
hardware/squidgrip_pogo_2x03_P1.27mm.kicad_modthe 6-pin pogo footprint on its own, for your own boards
docs/photos, layer renders and the CAD image used here

Fab options that match the layout:

  • 2 layers, 1.6 mm FR-4, 1 oz copper (1.51 mm core plus 2 x 0.035 mm copper).
  • 0.1524 mm minimum track and clearance, 0.2 mm netclass tracks with 0.16 mm clearance, 0.6 mm vias with a 0.3 mm drill, 0.5 mm copper to the board edge. Those are the values in the project file.
  • ENIG is worth the extra if you want the pogo pads and the USB-C shell to hold up.
  • The USB-C receptacle, pogo header, switches and LEDs are hand soldered, so order those yourself along with the LCSC parts.

Repo layout

text
.
├── README.md
├── LICENSE                      # CERN-OHL-S-2.0
├── docs/
│   ├── squidgrip.gif                    # 3D render of the assembly
│   ├── squidgrip_assembled_front.jpg    # photo, assembled front
│   ├── squidgrip_assembled_side.jpg     # photo, side view in the clamp
│   ├── squidgrip_assembled_rear.jpg     # photo, assembled rear
│   ├── squidgrip_pcb_front.jpg          # photo, bare PCB front
│   ├── squidgrip_pcb_rear.jpg           # photo, bare PCB rear
│   ├── squidgrip_assembly_cad.png       # CAD view of the assembly
│   ├── squidgrip_copper_front.png       # KiCad render, front copper and silk
│   └── squidgrip_copper_rear.png        # KiCad render, rear copper and silk
├── firmware/
│   ├── squidgrip.configuration          # CP2102N configuration
│   ├── squidgrip.document               # Xpress Configurator device document
│   ├── .project                         # Simplicity Studio project
│   └── .settings/                       # Simplicity Studio tool settings
└── hardware/
    ├── squidgrip.kicad_pro      # KiCad project
    ├── squidgrip.kicad_sch      # schematic
    ├── squidgrip.kicad_pcb      # PCB layout
    ├── squidgrip_pogo_2x03_P1.27mm.kicad_mod   # the 6-pin pogo footprint
    ├── clamp_design/

License

squidgrip is licensed under the CERN Open Hardware Licence Version 2 - Strongly Reciprocal (CERN-OHL-S-2.0). The full licence text is in LICENSE.

text
Copyright (C) 2026 Midnight CAD / SquidTX

This source describes Open Hardware and is licensed under the CERN-OHL-S v2.

You may redistribute and modify this source and make products using it under
the terms of the CERN-OHL-S v2 (https://ohwr.org/cern_ohl_s_v2.txt).

This source is distributed WITHOUT ANY EXPRESS OR IMPLIED WARRANTY, INCLUDING
OF MERCHANTABILITY, SATISFACTORY QUALITY AND FITNESS FOR A PARTICULAR PURPOSE.
Please see the CERN-OHL-S v2 for applicable conditions.

Source location: https://github.com/unixvoid/squidgrip

Parts

28
QtyValueFootprintReferences
32.2kResistor_SMD:R_0805_2012MetricR9, R10, R11
2clipboard:60fcd304-72be-431f-978f-28c27a912257,
2.1uFCapacitor_SMD:C_0805_2012MetricC2, C3
210kResistor_SMD:R_0805_2012MetricR1, R8
25.1kResistor_SMD:R_0805_2012MetricR6, R7
2LOGOLOGOG***, G***
2PTS526 SM15 SMTR2 LFSextras-2:GSPTS004901SW1, SW2
11kResistor_SMD:R_0805_2012MetricR5
12171790001extras-2:MOLEX_2171790001J1
14.7uFCapacitor_SMD:C_0805_2012MetricC1
15v testpointTestPoint:TestPoint_Pad_1.0x1.0mmTP1
1BLUELED_SMD:LED_0805_2012MetricD3
1CP2102N-Axx-xQFN24Package_DFN_QFN:QFN-24-1EP_4x4mm_P0.5mm_EP2.6x2.6mmU1
1GRNLED_SMD:LED_0805_2012MetricD2
1MBT3904DW1T1Gextras-2:SOT236U2
1SQUIDGRIPextras-2:UntitledSG1
1TLV75733PDRVRextras-2:TLV75733PDRVRU3
1YLWLED_SMD:LED_0805_2012MetricD1

The 26 most common of 28 parts.

Questions

How big is the Squidgrip PCB?

It measures 42.8 × 19 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Squidgrip use?

28 parts, built around the MBT3904DW1T1G-HXY. 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 Squidgrip KiCad files?

From the unixvoid/squidgrip repository on GitHub, at the commit this page was made from: the board is hardware/squidgrip.kicad_pcb and its schematic hardware/squidgrip.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Squidgrip design in my own project?

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

Similar boards

  • 2 layers134 × 88 mmTulipcc, the printed circuit board in 3D

    Tulipcc

    shorepine/tulipcc

    The Tulip Creative Computer and AMYboard - portable Python synthesizers

    103 parts978
  • 2 layers75 × 40 mmClockcore, the printed circuit board in 3D

    Clockcore

    ansemjo/chronovfd

    hardware project for a clock around a russian ivl2-5/7 vfd and an esp32-wroom module

    61 parts13CERN-OHL-P-2.0
  • 2 layers120 × 67 mmSilvia pid board, the printed circuit board in 3D

    Silvia pid board

    haydenridd/silvia-pid-board

    The following outlines: - Board circuit design - Hookup/wiring guide - Board mounting - BOM/Fabrication info

    39 parts10MIT
  • 4 layers40 × 17.6 mmNk LoRa, the printed circuit board in 3D

    Nk LoRa

    Nitrokey/nitrokey-lora-hardware

    93 parts2
  • 4 layers50 × 75 mmOneroiV1, the printed circuit board in 3D

    OneroiV1

    HomeOnDuna/Nyx-Flight-Computers

    Contains the Nyx flight computer family developed for UNSW Rocketry Avionics team.

    166 parts1
  • 2 layers50.2 × 22.6 mmDog collar light, the printed circuit board in 3D

    Dog collar light

    mattinglot/dog-collar-light

    This is the LED dog collar light PCB and firmware that I built for my dog Joey and a few of his friends.

    25 parts1
  • 4 layers75 × 59.2 mmData logger, the printed circuit board in 3D

    Data logger

    Mutzi1211/Wasserrakete

    Ein Überblick über alle Projektbestandteile – von CAD über Code bis zu Anforderungen und Abgaben.

    65 parts1
  • 2 layers42.2 × 28.7 mmESP Programmer, the printed circuit board in 3D

    ESP Programmer

    DerekParks/FTDI_ESP_Programmer

    FTDI Breakout with Auto reset for ESP chips

    28 parts