

Dongle probe
Reformat an Apple Silicon mac from any platform.
- Size
- 16 × 43 mm
- Copper layers
- 2
- Thickness
- 1.62 mm
- Parts
- 36
- Nets
- 62
- Pads
- 162
- Tracks, vias
- 350, 54
- Pours
- 2
- Routed
- Yes
- KiCad
- KiCad 10.0 (file 20260206)
- Created
- 3 Jul 2026
- Updated
- 28 Oct 2026
Overview
Dongle probe is an open-source printed circuit board by fcjr, from the fcjr/restorekit repository on GitHub, published under the Apache-2.0 licence. It is a 2-layer board of 16 × 43 mm with 36 parts on 62 nets, routed with 350 tracks and 54 vias.
It is built around the RP2354A, RT9013-33GB and KT-0603R, with the AOTA-B201610S3R3-101-T, TS-1187A-B-A-B and TYPE-C-31-M-12 among its other parts. Its parts include 14 capacitors, 11 resistors, 3 diodes, 2 ICs and 2 connectors. It belongs with the sensors and measurement boards and the RP2350 boards of this library.
Main components
8RP2354A
QFN-60(7x7)150MHz 32 Bit ARM Cortex-M33 Built-in+External Power-on reset (POR)、Undervoltage detection (BOR/LVD/LVR/LVI)、Watchdog reset、Built-in general-purpose timer、Integrated LDO、Calendar function、True random number generator (TRNG)、Hardware ECC check、Independent watchdog (IWDG) QFN-60(7x7) Microcontrollers (MCU/MPU/SOC) ROHSRaspberry PiMicrocontrollers (MCU/MPU/SOC)RT9013-33GB
SOT-23-5-40℃~+125℃@(Tj) 1 25uA 3.3V 30uVrms 400mV@(500mA) 5.5V 500mA 50dB@(10kHz) Fixed Over Current Protection、Over Temperature Protection、Enable Positive SOT-23-5 Voltage Regulators - Linear, Low Drop Out (LDO) Regulators ROHSRICHTEKVoltage Regulators - Linear, Low Drop Out (LDO) RegulatorsKT-0603R
0603-40℃~+85℃ 1.6mm x 0.8mm square LED 1.8V~2.4V 120° 20mA 300mcd 40mW 615nm~630nm 645nm Discrete Diode Red Water Clear 0603 LED Indication - Discrete ROHSHubei KENTO ElecLED Indication - DiscreteAOTA-B201610S3R3-101-T
0806115mΩ 2.1A 2.4A 3.3uH Molded inductor 0806 Molding Power Inductors ROHSAbraconPower InductorsTS-1187A-B-A-B
SMD-4P,5.1x5.1mm-30℃~+85℃ 1.5mm 1.6N 100,000 cycles 12V 5.1mm 5.1mm 50mA Gold No Round Button SPST Surface Mount,Vertical Without Bracket SMD-4P,5.1x5.1mm Tactile Switches ROHSXKB ConnectionTactile SwitchesTYPE-C-31-M-12
SMD-30℃~+80℃ 1 10,000 cycles 16P 20V 5A 7.35mm Female Surface Mount, Right Angle Type-C SMD USB Connectors ROHSHRO ElectronicsUSB ConnectorsUSBLC6-2SC6
SOT-23-60.35pF、0.8pF 100nA 150W@8/20us 15V 2 5V 6A@8/20us 6V ESD SOT-23-6 ESD and Surge Protection (TVS/ESD) ROHSUMWESD And Surge Protection (TVS/ESD)X322512MSB4SI
SMD3225-4P-40℃~+85℃ 12MHz 20pF 80Ω Crystal Oscillator ±10ppm ±20ppm SMD3225-4P Crystals ROHSYXCCrystals
README
hardware/dongle-lite/README.mdDongle-Lite — KiCad hardware
The USB 2.0 variant of the RecoverKit dongle: an RP2354A + FUSB302B board that
forces an Apple Silicon / T2 Mac into DFU over USB-PD, no keyboard dance
required. See ../README.md for how the dongle family works
and how the Lite compares to the Dongle-Pro, ./PRD.md for
the product spec, and ./BOM-sourcing.md for parts sourcing.
How it works (short version)
The host plugs into J1, the target Mac into J2. A CH334F USB 2.0 hub puts two
devices on the host's bus: the RP2354A (control + CDC serial for restorekit)
and the target itself. The FUSB302B drives the target CC line with Apple's
vendor-defined USB-PD messages to flip the Mac into DFU; an AP22653 load
switch power-cycles target VBUS for clean re-enumeration; two 74AVC1T45s
break out the target's SBU debug UART at 1.2 V. Restore data flows host ↔
target straight through the hub — the MCU only triggers, never proxies.
Status
- Schematic: complete, single sheet, functionally clustered, ERC 0.
- Layout: two builds of the same netlist:
dongle-lite.kicad_pcb— original two-sided 4-layer layout (mfg-jlcpcb/).dongle-lite-1s4l.kicad_pcb— single-sided 4-layer relayout for JLCPCB Economic PCBA (mfg-jlcpcb-1s4l/, DRC report checked in). This is the one to order.
- Firmware:
../../crates/dongle-lite-fw(Embassy,rp235xa). The GPIO map lives in the firmware source and matchesgen/board.py.
Clusters
One flat sheet (dongle-lite.kicad_sch), five functional clusters — parts
that talk to each other are drawn wired together, only cross-cluster signals
use labels:
| Cluster | Contents |
|---|---|
| MCU core | RP2354A (internal stacked flash — no external QSPI part), 12 MHz crystal, BOOT button, Tag-Connect J3 |
| USB-PD | FUSB302B, I²C pull-ups, target CC |
| USB hub + ports | CH334F hub, both 16-pin USB-C receptacles, ESD arrays, host CC pull-downs |
| SBU serial | 2× 74AVC1T45 1.2 V level translators |
| Power | 3.3 V + 1.2 V LDOs, target-VBUS load switch, LEDs |
USB D+/D− pairs are impedance-controlled differential pairs on the PCB.
How this was built
Every part is a real LCSC component. Symbols, footprints, and 3D models were
pulled with easyeda2kicad into
the project-local libraries under lib/ (shared with the Pro via its lib
symlink); sym-lib-table / fp-lib-table register them via ${KIPRJMOD}.
The schematic is generated, not hand-drawn: gen/board.py is the
authoritative netlist (every part → cluster placement, every pin → net) and
gen/gen.py emits the .kicad_sch. Regenerate:
cd hardware/dongle-lite
python3 gen/board.py # writes dongle-lite.kicad_sch
kicad-cli sch erc dongle-lite.kicad_schKey parts (all LCSC)
| Ref | Part | LCSC | Function |
|---|---|---|---|
| U1 | RP2354A | C41378174 | MCU (USB-native composite; 2 MB internal flash) |
| U2 | FUSB302BMPX | C132291 | USB-PD PHY, drives target CC (Apple DFU VDM) |
| U3 | CH334F | C5187527 | USB 2.0 hub — host sees MCU + target. PSELF (18) and RESET#/CDP (16) are left open — see below |
| U5 | RT9013-33GB | C47773 | 3.3 V LDO from host 5 V |
| U6 | TLV70212 | C81462 | 1.2 V LDO for the SBU translator low side |
| U8, U9 | 74AVC1T45GW | C282330 | SBU1/SBU2 level translators (3.3 ↔ 1.2 V) |
| U10 | AP22653 | C2158037 | Target-VBUS load switch (current-limited) |
| D10, D11 | USBLC6-2SC6 | C7519 | ESD arrays on host / target D± |
| J1, J2 | HRO TYPE-C-31-M-12 | C165948 | Host / target USB-C (16-pin) |
| Y1, Y2 | 12 MHz 3225 | C9002 | MCU + hub crystals |
Full BOM/CPL for ordering are in the mfg-jlcpcb*/ packages.
Hub strap pins
PSELF (18) and RESET#/CDP (16) on U3 are both left open, matching Adafruit's
CH334F breakout (product 5997).
PSELF has a built-in pull-up and defaults high = self-powered, which is
what makes the hub advertise 500 mA per downstream port. Tied to GND it
advertises bus-powered and caps every port at one unit load, 100 mA. A target
Mac in DFU fits under that, but every later restore stage asks for 500 mA, so
the host refuses to configure the target and the restore dies partway through
with a power error. The board still draws from the host's VBUS — this is a
declaration, not a supply.
RESET#/CDP is sampled at power-up too: held high it enables CDP (downstream
charging-port advertisement) and turns off the hub's low-power sleep. The
datasheet wants it "completely suspended when not reset", so there is no
pull-up on it.
ERC configuration
pin_not_driven, pin_to_pin, lib_symbol_issues, and lib_symbol_mismatch
are set to ignore in the project files: the LCSC-generated symbols type
passive/IO pins as "Input/Unspecified", not real disconnections. Everything
else keeps default severity.
Parts
36| Qty | Value | Footprint | References |
|---|---|---|---|
| 6 | GCM155R71H104KE02D | stdlib_kicad-footprints_Capacitor_SMD:C_0402_1005Metric | C9, C10, C11, C12, C13, C14 |
| 5 | ERJ-2RKF33R0X | stdlib_kicad-footprints_Resistor_SMD:R_0402_1005Metric | R3, R6, R7, R8, R11 |
| 3 | 4.7uF | stdlib_kicad-footprints_Capacitor_SMD:C_0402_1005Metric | C3, C4, C5 |
| 3 | ERJ-2RKF1001X | stdlib_kicad-footprints_Resistor_SMD:R_0402_1005Metric | R5, R9, R10 |
| 3 | ERJ-2RKF5101X | stdlib_kicad-footprints_Resistor_SMD:R_0402_1005Metric | R1, R2, R4 |
| 2 | GCM1555C1H220FA16D | stdlib_kicad-footprints_Capacitor_SMD:C_0402_1005Metric | C6, C7 |
| 2 | GRM155Z71A105KE01D | stdlib_kicad-footprints_Capacitor_SMD:C_0402_1005Metric | C2, C8 |
| 2 | KT-0603R | fcjr_restorekit_lib_dongle-probe:LED-SMD_L1.6-W0.8-R-RD | D1, D2 |
| 1 | stdlib_kicad-footprints_Jumper:SolderJumper-2_P1.3mm_Open_Pad1.0x1.5mm | JP1 | |
| 1 | 2.54-2*3P | stdlib_kicad-footprints_Connector_PinHeader_1.27mm:PinHeader_2x03_P1.27mm_Vertical | J2 |
| 1 | AOTA-B201610S3R3-101-T | fcjr_restorekit_lib_dongle-probe:IND-SMD_L2.0-W1.6_AOTA-B201610S3R3-101-T | L1 |
| 1 | GRM21BZ71E106KE15K | stdlib_kicad-footprints_Capacitor_SMD:C_0805_2012Metric | C1 |
| 1 | RP2354A | fcjr_restorekit_lib_dongle-probe:QFN-60_L7.0-W7.0-P0.40-TL-EP3.4 | U1 |
| 1 | RT9013-33GB | fcjr_restorekit_lib_dongle-probe:SOT-23-5_L3.0-W1.7-P0.95-LS2.8-BL | U2 |
| 1 | TS-1187A-B-A-B | fcjr_restorekit_lib_dongle-probe:SW-SMD_4P-L5.1-W5.1-P3.70-LS6.5-TL_H1.5 | SW1 |
| 1 | TYPE-C-31-M-12 | fcjr_restorekit_lib_dongle-probe:USB-C_SMD-TYPE-C-31-M-12_1 | J1 |
| 1 | USBLC6-2SC6 | fcjr_restorekit_lib_dongle-probe:SOT-23-6_L2.9-W1.6-P0.95-LS2.8-BL | D3 |
| 1 | X322512MSB4SI | fcjr_restorekit_lib_dongle-probe:CRYSTAL-SMD_4P-L3.2-W2.5-BL | Y1 |
Questions
How big is the Dongle probe PCB?
It measures 16 × 43 mm and has 2 copper layers, 1.62 mm thick.
What parts does the Dongle probe use?
36 parts, built around the RP2354A, RT9013-33GB, KT-0603R and AOTA-B201610S3R3-101-T. 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 Dongle probe KiCad files?
From the fcjr/restorekit repository on GitHub, at the commit this page was made from: the board is hardware/dongle-probe/layout/layout.kicad_pcb and its schematic hardware/dongle-lite/dongle-lite.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Can I use the Dongle probe design in my own project?
Its repository publishes it under the Apache-2.0 licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).
More from fcjr/restorekit
2- 4 layers26 × 98 mm

- 6 layers16 × 55 mm

Similar boards
- 4 layers50 × 36 mm

Minicontrol
Jotrorox/minicontrol
RP2354A + 868 MHz LoRa (Ai-Thinker Ra-01SH) USB-C controller board, designed in KiCad 10.
66 partsBSD-2-Clause - 2 layers40 × 89.5 mm

Mono
jmcpheron/pico-quorum
Several people, several keys, one Safe. Hardware approvals for Safe multisig wallets.
89 partsMIT - 4 layers63 × 85 mm

FujiNet O2-Rev0
FujiNetWIFI/fujinet-hardware
Schematics and design files for FujiNet hardware
132 parts142 - 2 layers200 × 22 mm

- 4 layers21 × 51 mm

Easy2350
sequoia-hope/ultraroute
PCB autorouting experiments around copperroute: route jobs, leaderboards, board morphing
58 parts1MIT - 4 layers130 × 105 mm

HomeDeck
Kilan777/HomeDeck
Jarvis HomeDeck: a Raspberry Pi CM4 carrier board and voice-assistant software for a 7-inch smart display (KiCad hardware, generated from Python, plus the Python/JS assistant)
228 parts1 - 2 layers284.7 × 94.2 mm

- 2 layers238.1 × 76.2 mm

Chai45HE
gohanda11/Chai45HE
Chai45HE is a 40% Hall-effect keyboard based on the HE60 project. This is a modified version that adapts the original 60% design to a compact 40% layout.
228 parts1GPL-3.0