Skip to the content
PCBKitNew board
4 layers56.9 × 37.2 mmModchip, the printed circuit board in 3D

RP2350 management board for RTL8372 switches (SWTG024AS-V2.0): KiCad hardware, MicroPython tools and design notes; pairs with the bridge firmware in wrcrooks/RTLPlayground

Size
56.9 × 37.2 mm
Copper layers
4
Thickness
1 mm
Parts
53
Nets
66
Pads
204
Tracks, vias
432, 82
Pours
8
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
22 Oct 2026
Updated
3 Nov 2026

Overview

Modchip is an open-source printed circuit board by wrcrooks, from the wrcrooks/rtlplayground-modchip repository on GitHub, published under the MIT licence. It is a 4-layer board of 56.9 × 37.2 mm with 53 parts on 66 nets, routed with 432 tracks and 82 vias.

It is built around the RP2350A, W25Q128JVSIQ and LM66100DCK. Its parts include 21 capacitors, 20 resistors, 4 connectors, 3 ICs and 1 diode. It belongs with the RP2350 boards of this library.

Main components

3

README

hardware/poe/README.md

Mod chip for the MokerLink POE-2G040210GSM

A second board for the PoE switch (PCB 2M-PCB49-V1.1, RTL8372 with 2 MiB of flash): the same RP2350 circuit as the SWTG024AS-V2.0 board in ../, cut down to what this switch offers and made as small as it can be.

  • Size. The board is 18.9 × 27.5 mm, with a corner cut away for the screw head beside T7. For comparison, the first board is 57 × 37 mm.
  • Placement. It sits on T7 (the slave interface) beside the right SFP cage, on a male header soldered on its underside.
  • Wiring. Four wires run from its pads J3 to T9 (the serial console), about 17 mm away.

outline on the board photo

Status: designed and routed with a clean DRC. Not built yet. The T7 and T9 signal pins are guesses. Check them before ordering (see the end of this page).

FileWhat
modchip-poe.kicad_pcb, modchip-poe.kicad_proKiCad 10 board. The outline is on Edge.Cuts and J1 is on the bottom side on T7's holes. The switch's parts are drawn on Dwgs.User and notes are on Cmts.User. The aux and grid origin is T7 pin 1
make_pcb.py, build.sh, modchip-poe.kicad_druLayout and routing pipeline (as in ../, with ../finish.py), and JLCPCB's design rules
modchip-poe.kicad_sch, schematic-poe.pdfSchematic, and a PDF of it
make_sch.pyGenerates the schematic. It uses ../make_sch.py's generator and lists every pin's net
check_sch.py, expected-nets.jsonERC, plus KiCad's netlist compared pin by pin with the intended nets
outline.py, overlay.jpgThe outline, T7/T9/T10 and the obstacles in one place. Running it checks the clearances; --photo draws them on the photo
lib/Footprints for U5 and L1, imported from LCSC, and L1's 3D model. U5 uses KiCad's Winbond USON-8 model
production/JLCPCB files: Gerbers and drill zip, BOM, positions
mechanical/STL and STEP of the assembled board, without J1/J3/J5, for a printed fit check

Rebuild everything from the schematic to the production files with:

text
KAK=~/Desktop/Workspace/KiCad/kicad-agent-kit ./build.sh
python3 outline.py --photo headers.jpg   # RTLPlayground doc/devices/photos/2M-PCB49-V1.1/headers.jpg

Circuit

The circuit is that of ../make_sch.py, with these changes:

  • No USB. Power comes from the switch's 3.3 V on T7 pin 4, through the LM66100 ideal diode U2. Programming and debug go over SWD (J5).

  • Bench power. A debug probe can power the board on J5 pin 1; U2 keeps that supply out of the switch.

  • Flash. U5 is a W25Q16JVUXIQ, 2 MiB in USON-8 2×3 mm, fitted with an RP2350A. The RP2354A has the same 2 MiB inside its package, but JLC has only a handful in stock. With an RP2354A in U1's place, leave U5 and C19 off.

  • Not on this board. There is no T8-style GPIO header, since this switch has none, and no reset driver, since no reset point is known.

  • GPIO use is the same as the first board, so the firmware's pin map holds:

    GPIOUse
    GP0 / GP1UART0
    GP11 / GP10I²C1 SCL / SDA
    GP9 / GP8T7 pins 5 / 6
    GP22LED
    GP26Switch-power sense
  • Series resistors and pull-ups. Every line to the switch has 100 Ω in series. The I²C lines have 4.7 kΩ pull-ups to the switch's 3.3 V.

PadSignal
J1 (into T7)1 SCL, 2 GND, 3 SDA, 4 3.3 V from the switch, 5 GP9, 6 GP8
J3 (wires to T9, pad n to pin n)1 the switch's U0TXD, 2 GND, 3 the switch's U0RXD, 4 not connected
J5 (SWD, 1.27 mm)1 3.3 V, 2 SWCLK, 3 GND, 4 SWDIO, 5 RUN

python3 check_sch.py reports a clean ERC and all 168 pins on their intended nets (33 nets).

Layout

The board has 4 layers, 1.0 mm thick:

LayerUse
F.CuParts, signals and a GND pour
In1GND
In2+3V3
B.CuSignals and a GND pour

Only J1 is on the bottom side. make_pcb.py places these parts by hand:

  • U1 with GP0-GP11 facing J1.
  • The series resistors in a column between J1 and U1.
  • The core regulator (L1, CIN, COUT and the VREG_AVDD RC) above U1's VREG pins.
  • U5, turned so that its SD0, SCLK, SD3 and VCC pins sit straight over U1's QSPI pins.
  • The crystal in the corner below U1.
  • The SWD pads along the right edge.

The other parts are auto-placed. Locked hand routes cover:

  • VREG_LX and VREG_AVDD;
  • the +3V3 trunk to CIN;
  • the three straight QSPI lines and T7_P6;
  • +1V1: a via at each DVDD pin and VREG_FB, joined on B.Cu by a cross through U1's exposed-pad vias. The footprint's B.Cu copper under the pad is removed for that.

Freerouting routes the rest, with analytics and telemetry off on its command line. The result has no DRC errors or warnings and is fully connected.

Ordering (production/)

  • Board. 4 layers, 1.0 mm thick, 0.2 mm minimum via drill.

  • Assembly. PCBA on the top side only: 41 parts, 18 BOM lines, every line with an LCSC number.

  • Parts. All are in stock as of 2026-11-02. Basic parts throughout, except five Extended ones:

    PartLCSCStock
    RP2350AC424111184,697
    W25Q16JVUXIQC2843335450
    ABM8 crystalC206257318,774
    LM66100C286973411,326
    3.3 µH inductor, FNR201610S3R3MTC1676731,380
  • The inductor. The first board's AOTA-B201610S3R3 (C42411119, the part the RP2350 datasheet names) is down to 1 in stock. This board uses a shielded 2016 3.3 µH instead, rated 880 mA, plenty for the core supply. The first board's BOM needs the same substitute until the AOTA is back.

  • Not assembled. J1 is a 1×6 2.54 mm male header, hand-soldered from below. J3 and J5 are bare pads.

  • Check in JLC's preview. The rotation of U1, U5 (USON-8), U2, Y1 and L1.

Before ordering a board

  1. Confirm T7's pinout. Pin 2 GND and pin 4 3.3 V were measured on the switch. Pins 1/3 (SCL/SDA) and 5/6 are copied from the 2M-PCB23-V3.1's T7. Check them with continuity, from T7 to the RTL8372's slave-interface pins, before ordering. If SCL and SDA are swapped, the RP2350's PIO can run I²C on either pin, so the board still works with a firmware change.
  2. Confirm T9's pinout. Pin 1 TX and pin 3 RX are also a guess. Check with a USB-serial adapter at boot; a swap there only means crossing two wires.
  3. Keep T10 bare. T10, three holes beside T7, sits under the board, so it must stay without pins.
  4. Check the fit. The positions come from a photo, at 16.93 px/mm and about ±0.5 mm away from T7. The outline keeps at least 1.0 mm from the SFP cage, the screw head and the main PCB's edge. Print mechanical/modchip-poe-no-headers.stl or lay a 1:1 print of the outline on the switch.
  5. Measure the height. The board sits on J1's plastic spacer, about 2.5 mm above the switch PCB. It is 1.0 mm thick and its tallest part reaches 1.1 mm above it. Trim J1's pins flush on top, and check the lid's clearance over T7.
  6. Firmware. Build the RP2350's with -DMODCHIP_BOARD=poe (firmware/rp2350/README.md) and the 8051 bridge with MACHINE=POE_2G040210GSM, plus the PoE image (RTLPlayground's modchip/bridge/README.md). Neither has run on this switch yet.

Parts

53
QtyValueFootprintReferences
13100nCapacitor_SMD:C_0402_1005MetricC1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C19
10100Resistor_SMD:R_0402_1005MetricR10, R11, R12, R13, R14, R15, R16, R17, R18, R19
44.7uCapacitor_SMD:C_0402_1005MetricC13, C14, C15, C16
3100kResistor_SMD:R_0402_1005MetricR22, R23, R24
215pCapacitor_SMD:C_0402_1005MetricC17, C18
21kResistor_SMD:R_0402_1005MetricR6, R25
24.7kResistor_SMD:R_0402_1005MetricR20, R21
110kResistor_SMD:R_0402_1005MetricR8
110uCapacitor_SMD:C_0603_1608MetricC22
112MHzCrystal:Crystal_SMD_3225-4Pin_3.2x2.5mmY1
11uCapacitor_SMD:C_0402_1005MetricC24
12N7002Package_TO_SOT_SMD:SOT-23Q1
13.3uHInductor_SMD:L_Murata_DFE201610PL1
133Resistor_SMD:R_0402_1005MetricR5
1330Resistor_SMD:R_0402_1005MetricR9
1LM66100Package_TO_SOT_SMD:SOT-363_SC-70-6U2
1RP2350APackage_DFN_QFN:QFN-60-1EP_7x7mm_P0.4mm_EP3.4x3.4mm_ThermalViasU1
1Reset wire to D3 anodeTestPoint:TestPoint_THTPad_D1.5mm_Drill0.7mmTP1
1SWDConnector_PinHeader_1.27mm:PinHeader_1x05_P1.27mm_VerticalJ5
1To switch T3 (I2C slave)Connector_PinHeader_2.00mm:PinHeader_1x06_P2.00mm_VerticalJ1
1To switch T5 (UART0)Connector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_VerticalJ3
1To switch T8 (GPIO46-49)Connector_PinHeader_2.00mm:PinHeader_1x06_P2.00mm_VerticalJ2
1W25Q128JVSIQPackage_SO:SOIC-8_5.3x5.3mm_P1.27mmU5
1redLED_SMD:LED_0603_1608MetricD1

Questions

How big is the Modchip PCB?

It measures 56.9 × 37.2 mm and has 4 copper layers, 1 mm thick.

What parts does the Modchip use?

53 parts, built around the RP2350A, W25Q128JVSIQ and LM66100DCK. 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 Modchip KiCad files?

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

Can I use the Modchip design in my own project?

Its repository publishes it under the MIT 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 wrcrooks/rtlplayground-modchip

1
  • 4 layers18.9 × 27.5 mmModchip poe, the printed circuit board in 3D

    Modchip poe

    wrcrooks/rtlplayground-modchip

    RP2350 management board for RTL8372 switches (SWTG024AS-V2.0): KiCad hardware, MicroPython tools and design notes; pairs with the bridge firmware in wrcrooks/RTLPlayground

    44 partsMIT

Similar boards

  • 4 layers48.9 × 49.8 mmFC REV2, the printed circuit board in 3D

    FC REV2

    xXsenseiXx/KHATAF-F411

    Open-hardware 4-layer STM32F411 drone flight controller designed in KiCad for INAV and Betaflight.

    73 parts2
  • 4 layers65.5 × 42.2 mmUSB thumb drive, the printed circuit board in 3D

    USB thumb drive

    Arhamee/hardware-portfolio

    Multi-layer PCB designs in KiCad 10 schematic capture to fabrication-ready Gerbers. High-speed routing, BGA escape, power electronics.

    126 partsMIT
  • 4 layers68.6 × 56 mmCartridge, the printed circuit board in 3D

    Cartridge

    coco-chameleon/chameleon-hardware

    TRS-80 Color Computer cartridge emulator

    95 partsCERN-OHL-W-2.0
  • 4 layers63.7 × 41.1 mmKiCad Advanced Design a smart USB thumb drive, the printed circuit board in 3D

    KiCad Advanced Design a smart USB thumb drive

    gorkemguven/RP2040-Dual-TypeC-eMMC-Board

    A 4-layer embedded development board featuring RP2040, USB2244 high-speed eMMC bridge, dual Type-C ports, and INA226/TMP119 power & telemetry monitoring.

    133 partsMIT
  • 4 layers87.9 × 46.5 mm2. IndicationBoard, the printed circuit board in 3D

    2. IndicationBoard

    SshgurkiratSingh/CCMS_PORTAL

    A full-stack smart streetlight fleet management system with real-time monitoring, remote control, and analytics.

    66 parts2
  • 2 layers96.8 × 91.4 mmInkbadge, the printed circuit board in 3D

    Inkbadge

    cheyao/inkbadge

    Undercity eink PCB badges controlled by a rp2350

    98 parts22
  • 2 layers21 × 58 mmPicoAlt, the printed circuit board in 3D

    PicoAlt

    profdc9/PicoAlt2

    An alternative Pi Pico 2 (RP2350) type board you can have made yourself.

    42 parts11