Skip to the content
4 layers50 × 40 mmLlm kicad, the printed circuit board in 3D

Small one port USB-C hub, similar to YKUSH XS, but uses USB-C connectors

Size
50 × 40 mm
Copper layers
4
Thickness
1.58 mm
Parts
100
Nets
93
Pads
372
Tracks, vias
634, 177
Pours
61
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
27 Sep 2026
Updated
17 Oct 2026

Overview

Llm kicad is an open-source printed circuit board by fgihl, from the fgihl/usb-c-one repository on GitHub. It is a 4-layer board of 50 × 40 mm with 100 parts on 93 nets, routed with 634 tracks and 177 vias.

It is built around the SN74LVC1G125DBVR-TP, CP2102N-A02-GQFN28 and TPD4E05U06DQAR, with the CH334F, LTV-217D and TLV76733DRVR among its other parts. Its parts include 32 resistors, 24 capacitors, 12 ICs, 6 diodes and 4 transistors.

Main components

12

README

README.md

HIL USB-C Control

A bench device that sits between a Raspberry Pi and a USB-C device under test (DUT). Host software gets controlled access to the DUT's USB 2.0 data, USB-C CC attachment and 5 V VBUS, so it can emulate unplugging and reconnecting the DUT without touching its cable.

It is intended for controlled hardware-in-the-loop (HIL) lab rigs. It is not a general-purpose USB-C charger, dock or power-distribution product.

HIL USB-C Control PCB, V2.0 (3D render)

Features

  • USB 2.0 high-speed hub with a fixed on-board control interface. The Pi always sees the controller, whether or not a DUT is connected.
  • Software-controlled J3 (DUT) state: data, CC/Rp and 5 V VBUS are switched independently.
  • Priority power mux: external 5 V on J2 is preferred; J1 (the Pi) is the fallback and is reverse-blocked when J2 is valid.
  • J3 VBUS is protected by an eFuse (about 3.6 A typical, below 4.0 A worst case) with over-voltage protection, fault reporting and active discharge.
  • Fixed 3 A Rp advertisement on J3. No USB PD, BC1.2, VCONN, SuperSpeed or alternate modes.
  • One opto-buffered external control line (J4) and test points for the key rails and signals.
  • Controlled via libgpiod on the standard Linux cp210x gpiochip.

Connectors

RefRole
J1USB-C upstream to the Raspberry Pi: USB 2.0 data, and fallback VBUS
J2USB-C 5 V power input (power only, no data). Preferred over J1
J3USB-C downstream to the DUT: switched data, CC and VBUS
J4External opto-buffered control line

Architecture

mermaid
flowchart LR
  J1[J1 USB-C to Pi] -->|D+/D-| H[CH334F USB 2.0 hub]
  J1 -->|VBUS_UP| MUX[TPS2121 priority mux]
  J2[J2 5 V input] -->|VBUS_PWR| MUX
  MUX --> VSYS((VSYS))
  VSYS --> LDO[TLV76733 3.3 V LDO]
  LDO --> H
  H -->|port 1, fixed| C[CP2102N GPIO control]
  H -->|port 2| SW[TS3USB221A data switch]
  SW --> J3[J3 USB-C to DUT]
  LDO --> RP[Rp buffer] --> J3
  VSYS --> EF[TPS259470L eFuse] -->|VBUS_HIL| J3
  C --> EF
  C --> SW
  C --> RP
FunctionPart
USB 2.0 hubCH334F
Control ICCP2102N-A02 (7 GPIO)
Power muxTPS2121
J3 eFuseTPS259470L
Data switchTS3USB221A
3.3 V LDOTLV76733
Rp bufferSN74LVC1G125
ESDTPD4E05U06

Board: 4 layers, 50 x 40 mm, top-side SMT, designed for JLCPCB assembly.

Operating cases

CasePower sourceUse
A. Pi-poweredJ1 onlyLow-current DUTs only. Enumeration, data path and low-power control.
B. External 5 VJ2, with the Pi supplying data on J1Normal mode for high-current tests. The source must supply the DUT load plus about 0.1 A board consumption (at least 3.5 A for a 3 A DUT).
C. Split-cableExternal 5 V on J1 VBUS, Pi supplies data and GNDQualified fixtures only. The Pi-side VBUS must be isolated from the external supply.

J1 and J2 accept regulated 5 V only. Sustained 12 V or 20 V input is outside the product contract.

Software contract

Software owns the state machine. The hardware does not detect DUT attach and does not enforce source capability.

  • Disconnect: data off, wait 20 ms, CC off, wait 20 ms, VBUS off, then wait for the discharge confirmation.
  • Connect: CC on, VBUS on, confirm VBUS present and no fault, wait 40 ms, data on.

Before a high-current test, confirm that J2 is powering the board. Turn J3 VBUS off before planned J2 removal. The CP2102N GPIO map, configuration image and a control-service example are in architecture/architecture_final.md section 6.

Repository layout

PathContents
product_description.mdProduct requirements, operating cases, accepted limitations, acceptance checks
architecture/architecture_final.mdSchematic-level architecture, power budget, GPIO map, BOM, risks, prototype tests
architecture/schematic_overview.mdSchematic overview
architecture/pcb_floor_plan.mdPCB floor plan and layout constraints
llm-kicad/KiCad 10 project (hierarchical schematic, PCB, custom symbols)
llm-kicad/schematic_review_report.mdSchematic review report and finding log
tools/Audit and helper scripts

The schematic sheets are 01_power_cc, 02_usb_hub_control, 03_dut_interface and 04_test_validation. Open llm-kicad/llm-kicad.kicad_pro in KiCad 10.

Tools

tools/audit_schematic.py checks symbol pin numbers against placed footprint pad numbers, schematic versus PCB footprint sync, Value text versus the JLCPCB catalogue part, and Datasheet coverage. It exits non-zero if the pin/pad or footprint-sync checks fail.

sh
python3 tools/audit_schematic.py

Known limitations

  • Fixed 3 A Rp: the advertisement can exceed the active source's real capacity.
  • No hardware DUT-attach detection: an unplugged DUT can leave J3 VBUS live until software disables it.
  • A single priority mux is the only isolation between J1 and J2. It is not an independent-source isolator, and a split cable that joins an external supply to the Pi is not protected against.
  • No per-input current limit or input over-voltage disconnect.

The full list and the release acceptance checks are in product_description.md sections 7 to 9.

Status

Hardware revision V2.0. Five units are built, identified 1-5, each programmed with the CP2102N configuration image carrying Release Version 2.00 (0x0200) — the host reads this back as bcdDevice = 0x0200, though only after the board has been power-cycled. All five units were verified 2026-10-14: correct configuration image and power-up safe state, VBUS rising in 18–21 ms, and a USB mass-storage DUT enumerating at J3 on connect and dropping off on disconnect. Per-unit evidence is in code/fleet-record.tsv. The unit ID is carried in the CP2102N USB serial descriptor (0001-0005); the manufacturer and product strings stay at the Silicon Labs defaults, so the serial descriptor is what distinguishes one unit from another. See architecture/architecture_final.md section 6.3 for the Release Version and serial-number policies and the per-unit read-back gate.

Before release, see the open items in the schematic review report and the mandatory prototype tests in architecture/architecture_final.md section 10. The CP2102N must be programmed with the configuration image before use.

Parts

100
QtyValueFootprintReferences
9100nFCapacitor_SMD:C_0402_1005MetricC6, C10, C13, C20, C22, C24, C26, C27, C28
51kResistor_SMD:R_0402_1005MetricR27, R47, R50, R51, R52
4100kResistor_SMD:R_0402_1005MetricR45, R46, R48, R49
410kResistor_SMD:R_0402_1005MetricR28, R33, R34, R35
44.7uF 25VCapacitor_SMD:C_0805_2012MetricC1, C3, C23, C25
4BSS138P,215Package_TO_SOT_SMD:SOT-23Q2, Q3, Q6, Q7
4MountingHoleMountingHole:MountingHole_2.2mm_M2H1, H2, H3, H4
310uF 25VCapacitor_SMD:C_0805_2012MetricC9, C11, C12
3SMAJ6.5ADiode_SMD:D_SMAD1, D2, D3
3TPD4E05U06DQAPackage_SON:USON-10_2.5x1.0mm_P0.5mmU3, U9, U10
210k 0402Resistor_SMD:R_0402_1005MetricR38, R79
21uF 25VCapacitor_SMD:C_0402_1005MetricC19, C21
24.7kResistor_SMD:R_0402_1005MetricR5, R6
25.1kResistor_SMD:R_0402_1005MetricR1, R2
25.1k 0402Resistor_SMD:R_0402_1005MetricR3, R4
2TYPE-C-31-M-12Connector_USB:USB_C_Receptacle_HRO_TYPE-C-31-M-12J1, J3
1+3V3TestPoint:TestPoint_Pad_D1.5mmTP4
1100k 0402Resistor_SMD:R_0402_1005MetricR37
1100nF 0402Capacitor_SMD:C_0402_1005MetricC18
1100pFCapacitor_SMD:C_0402_1005MetricC2
110uF 0805 25VCapacitor_SMD:C_0805_2012MetricC17
112kResistor_SMD:R_0402_1005MetricR30
118k 0402Resistor_SMD:R_0402_1005MetricR39
11k 0402Resistor_SMD:R_0402_1005MetricR40
11nFCapacitor_SMD:C_0402_1005MetricC14
11uF 0402 25VCapacitor_SMD:C_0402_1005MetricC16
122kResistor_SMD:R_0402_1005MetricR43
124kResistor_SMD:R_0402_1005MetricR32
1330R 0402Resistor_SMD:R_0402_1005MetricR76
1470R 0805Resistor_SMD:R_0805_2012MetricR36
147kResistor_SMD:R_0402_1005MetricR44
147uF 10VCapacitor_SMD:C_1206_3216MetricC5
149.9kResistor_SMD:R_0402_1005MetricR29
1931R 0.1%Resistor_SMD:R_0402_1005MetricR31
1CH334FPackage_DFN_QFN:QFN-24-1EP_4x4mm_P0.5mm_EP2.7x2.7mmU1
1CP2102N-A02-GQFN28Package_DFN_QFN:QFN-28-1EP_5x5mm_P0.5mm_EP3.25x3.25mmU2
1Conn_01x02_SocketConnector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalJ4
1Crystal 12MHzCrystal:Crystal_SMD_3225-4Pin_3.2x2.5mmY1
1EN_HILTestPoint:TestPoint_Pad_D1.5mmTP8
1EXT_02TestPoint:TestPoint_Pad_D1.5mmTP16
1EXT_I01TestPoint:TestPoint_Pad_D1.5mmTP9
1GreenLED_SMD:LED_0805_2012MetricLED1
1HIL_CC_EN_NTestPoint:TestPoint_Pad_D1.5mmTP12
1HIL_DATA_EN_NTestPoint:TestPoint_Pad_D1.5mmTP11
1HIL_VBUS_ENTestPoint:TestPoint_Pad_D1.5mmTP10
1LTV-217Package_SO:SOP-4_4.4x2.6mm_P1.27mmU15
1RedLED_SMD:LED_0603_1608MetricLED3
1SN74LVC1G125DBVRPackage_TO_SOT_SMD:SOT-23-5U6
1TLV76733DRVRPackage_SON:WSON-6-1EP_2x2mm_P0.65mm_EP1x1.6mm_ThermalViasU8
1TPD4E05U06DQARPackage_SON:USON-10_2.5x1.0mm_P0.5mmU11
1TPS2121RUXRPackage_DFN_QFN:Texas_VQFN-HR-12_2x2.5mm_P0.5mmU14
1TPS259470LRPWRTPS259470ARPWR:TPS259470LRPWRU4
1TS3USB221APackage_DFN_QFN:Texas_UQFN-10_1.5x2mm_P0.5mmU5
1TYPE-C-31-M-17Connector_USB:USB_C_Receptacle_HRO_TYPE-C-31-M-17J2
1U4_ILMTestPoint:TestPoint_Pad_D1.5mmTP7
1VBUS_HILTestPoint:TestPoint_Pad_D2.0mmTP5
1VBUS_HIL_SNSTestPoint:TestPoint_Pad_D1.5mmTP14
1VBUS_PWRTestPoint:TestPoint_Pad_D1.5mmTP2
1VBUS_UPTestPoint:TestPoint_Pad_D1.5mmTP1
1VSYSTestPoint:TestPoint_Pad_D1.5mmTP3
1YellowLED_SMD:LED_0805_2012MetricLED2

Similar boards

  • 2 layers36.6 × 63.6 mmSmps, the printed circuit board in 3D

    Smps

    bayavahmed/PCB_LIBS

    37 parts
  • 2 layers100 × 95 mmRRFExtRP2040, the printed circuit board in 3D

    RRFExtRP2040

    nyarurato/RRFExtRP2040Board

    DIY Duet3 Extension Board

    92 parts
  • 4 layers90 × 56.1 mmK2-cm5-traeger, the printed circuit board in 3D

    K2-cm5-traeger

    Gamecard/k2-plus-cm5

    K2 Plus CM5 – Creality K2 Plus mit Upstream-Klipper auf einem Raspberry Pi CM5

    137 partsGPL-3.0
  • 4 layers128.5 × 40 mmScalenode cm4-baseboard, the printed circuit board in 3D

    Scalenode cm4-baseboard

    antmicro/scalenode-cm4-baseboard

    Baseboard for Raspberry Pi 4 Compute Module optimized for clustering

    146 parts152Apache-2.0
  • 4 layers100 × 83 mmModule17-Mainboard, the printed circuit board in 3D

    Module17-Mainboard

    M17-Project/Module_17

    M17 modem board for 9600-baud capable radios

    209 parts129CERN-OHL-W-2.0
  • 4 layers202 × 125 mmM17-rru rf, the printed circuit board in 3D

    M17-rru rf

    M17-Project/rru-rf-hw

    Remote Radio Unit - RF board

    241 parts47
  • 2 layers65 × 56 mmCopilot ext-3xUSB, the printed circuit board in 3D

    Copilot ext-3xUSB

    BayLibre/Copilot-extension-triple-usb-2.0

    Extension board for Copilot Lite providing 3 USB 2.0 passthrough channels.

    46 parts2MIT
  • 4 layers260 × 110 mmPandore, the printed circuit board in 3D

    Pandore

    filliformes/pandore

    pandore is an open-source digital audio instrument protyping platform based on the LattePanda Mu.

    804 parts2

Questions

How big is the Llm kicad PCB?

It measures 50 × 40 mm and has 4 copper layers, 1.58 mm thick.

What parts does the Llm kicad use?

100 parts, built around the SN74LVC1G125DBVR-TP, CP2102N-A02-GQFN28, TPD4E05U06DQAR and CH334F. 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 Llm kicad KiCad files?

From the fgihl/usb-c-one repository on GitHub, at the commit this page was made from: the board is llm-kicad/llm-kicad.kicad_pcb and its schematic llm-kicad/01_power_cc.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Llm kicad design in my own project?

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