Skip to the content
4 layers70 × 30 mmTdr dongle, the printed circuit board in 3D

A Linux-powered handheld network multitool with real cable diagnostics.

Size
70 × 30 mm
Copper layers
4
Thickness
1.6 mm
Parts
90
Nets
99
Pads
393
Tracks, vias
900, 205
Pours
2
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
28 Sep 2026
Updated
5 Nov 2026

Overview

Tdr dongle is an open-source printed circuit board by MostlyWithinSpec, from the MostlyWithinSpec/Network-Goblin-ND-2 repository on GitHub. It is a 4-layer board of 70 × 30 mm with 90 parts on 99 nets, routed with 900 tracks and 205 vias.

It is built around the 88E1512-A0-NNP2C000, LAN7801-I/9JX and TLV62569DBVR-TP, with the 93AA66/SN, PRTR5V0U2X,215 and TPD4EUSB30DQAR among its other parts. Its parts include 51 capacitors, 26 resistors, 6 ICs, 2 connectors and 2 inductors. It belongs with the computers and single-board computers boards of this library.

Main components

12

README

hardware/tdr-dongle/README.md

ND-2 TDR Proof Dongle — Rev A

Top copper

A small USB 3 → Gigabit Ethernet dongle that is just the ND-2 test-port circuit: Microchip LAN7801 (USB 3 to RGMII MAC) + Marvell 88E1512 (GbE PHY with VCT/TDR) + HanRun 1G magjack. Plug it into a Pi 5 / CM5 IO board and prove ethtool --cable-test / --cable-test-tdr before building the CM5 carrier.

Status: ERC and DRC clean, schematic/PCB parity clean, ordered from JLCPCB in Sept 2026. Not yet tested on real hardware. Bring-up plan: docs/bring-up.md.

Files

FileWhat it is
tdr-dongle.kicad_schSchematic (KiCad 10, one A2 sheet, label-based wiring)
ND2.kicad_sym + sym-lib-tableProject symbols: ND2:LAN7801, ND2:88E1512, ND2:HR911130C
ND2.pretty + fp-lib-tableProject footprints (from LCSC/EasyEDA, cleaned up — see below)
bom_jlcpcb.csvGrouped BOM in JLCPCB format (Comment, Designator, Footprint, LCSC Part #)
bom.csvOne line per part with MPN + LCSC
netlist_report.txtEvery net and the pins on it
tdr-dongle.kicad_pcbPCB: 70 x 30 mm, 4-layer
tdr-dongle.kicad_proKiCad project (design rules, net classes)
tdr-dongle.netKiCad netlist export
fab/Fabrication package: Gerber zip, JLC BOM + CPL, layer PDF, schematic PDF, STEP, renders
scripts/Python scripts that generated the schematic and PCB (see scripts/README.md)

Parts (LCSC, checked 2026-09-25)

RefPartLCSCFootprintNotes
U1LAN7801-I/9JXC633491ND2:LAN7801_QFN-64-1EP_9x9mm_P0.5mm_EP6.1mmOnly ~13 in stock at LCSC
U288E1512-A0-NNP2C000C845579ND2:88E1512_QFN-56-1EP_8x8mm_P0.5mm_EP4.4mmOnly ~13 in stock at LCSC
U3TLV62569DBVRC141836SOT-23-53V3 buck
U493AA66/SNC615340SOIC-8ORG pin (6) tied to GND = 512 x 8
U5TPD4EUSB30DQARC90627USON-10USB 3 ESD
U6PRTR5V0U2X,215C12333SOT-143USB 2 ESD
J1HC-USB3.0-C26 (USB 3 Type-A plug, SMD)C7501854ND2:USB3_A_Plug_HongCheng_HC-USB3.0-C26Flash-drive style plug at the board edge
J2HanRun HR911130C (1G magjack, 2 LEDs)C50933ND2:RJ45_HanRun_HR911130C_HorizontalReplaces the Pulse JK0654219NL (0 stock)
Y1, Y2X322525MOB4SI 25 MHz, CL 12 pFC9006Crystal_SMD_3225-4PinLoad caps changed to 15 pF
L1SMNR4020-2.2UH (3.4 A)C135262ND2:L_4.0x4.0mm_SMNR4020Buck inductor
L2SMNR3015-3R3MT (1.32 A)C135239ND2:L_3.0x3.0mm_SMNR3015LAN7801 1V2 switcher
FB1MPZ2012S601AT000 (600 Ω, 2 A)C21519L_0805VBUS filter
Caps100 nF C1525 · 1 µF C52923 · 220 nF C16772 · 15 pF C1548 (0402) · 10 µF C15850 · 22 µF C45783 (0805)
Resistors (0402, UNI-ROYAL)22R C25092 · 330R C25104 · 0R C17168 · 1.5k C25867 · 2k C4109 · 4.99k C25903 · 10k C25744 · 12k C25752 · 100k C25741 · 453k C27009

Changes from the first draft

  • Magjack → HanRun HR911130C. The Pulse part had no stock. The HR911130C has one common center tap (pin 1 → one 100 nF to GND) and an internal Bob-Smith termination on pin 10 (tied to GND). LEDs: 11/12 green (anode/cathode), 14/13 yellow (anode/cathode).
  • EEPROM → 93AA66/SN (the x8-only 93AA66A wasn't stocked in SOIC). ORG pin tied low selects 512 x 8.
  • Crystals → 12 pF load (YXC, 70k in stock); load caps now 15 pF.
  • Real footprints for U1, U2, J1, J2, L1, L2, taken from LCSC/EasyEDA and fixed up:
    • LAN7801 pads resized to Microchip's recommended land pattern (0.30 × 0.85 mm pads, 6.1 mm exposed pad), plus 5 × 5 thermal vias (0.33 mm) and a split paste stencil.
    • 88E1512 exposed pad 4.4 mm (datasheet D2/E2 = 4.37 mm), 3 × 3 thermal vias numbered to the pad, split paste.
    • HR911130C / USB plug pads renumbered to match the symbols; the RJ45 plastic posts made non-plated.

Known issues and Rev B ideas

  1. Stock on U1 / U2 — about 13 of each at LCSC right now. Enough for a few prototypes; for more, JLCPCB global sourcing or Mouser/Digi-Key.
  2. J1 plug hangs over the board edge and was left off the JLC assembly (hand-soldered). Rev B: USB-C receptacle + cable.
  3. RGMII series resistors (22 Ω) are a starting value; tune after the first boards.
  4. Optional: low-capacitance TVS on the MDI pairs, test points on RGMII/MDIO.

Bring-up plan

  1. Power only: check +5V, +3V3, LAN_1V2, LAN_2V5, PHY_1V8, PHY_1V0.
  2. Plug into a Pi 5: lsusb should show 0424:7801. Program the EEPROM with MAC + HW_CFG (hybrid RGMII delay, CLK125_EN).
  3. dmesg should show lan78xx attaching the Marvell 88E1510-family PHY at address 0.
  4. Link test: clean 1 Gb/s link, iperf3, watch for CRC errors (wrong RGMII delay).
  5. TDR: ethtool --cable-test ethX and ethtool --cable-test-tdr ethX on known cables (open, short, known lengths).

PCB and fab package (Rev A)

  • Board: 70 x 30 mm, 4-layer 1.6 mm (JLC04161H-7628). F.Cu signals, In1 = GND plane, In2 = +3V3 plane, B.Cu signals.
  • Rules: 0.1 mm min track (Freerouting necks to ~0.11 at the QFN pins), 0.127 mm clearance, 0.6/0.3 mm vias.
  • Routing: plane fan-out by script (scripts/fanout.py), the rest by Freerouting 2.4.1, and 2 nets fixed by hand (scripts/fix_last2.py).
  • DRC: 0 errors, 0 warnings, 0 unconnected, schematic parity clean (KiCad 10.0.5).

fab/ holds:

  • tdr-dongle_gerbers_JLC.zip: Gerbers + Excellon drills. Upload this to JLCPCB and pick 4 layers, 1.6 mm, JLC04161H-7628.
  • tdr-dongle_BOM_JLC.csv: the BOM (R7 is DNP and left out).
  • tdr-dongle_CPL_JLC.csv: pick and place (89 parts, all top side, origin at the board's lower-left corner).
  • tdr-dongle_layers.pdf, tdr-dongle_schematic.pdf, tdr-dongle.step, and top/bottom renders for review.

Caveats:

  • USB3 and MDI pairs were autorouted. They are not length-matched or impedance-controlled. That is fine for a proof dongle but not final.
  • Check part rotations in JLC's CPL preview, especially J1, J2, U1, U2 and the crystals.
  • LAN7801 and 88E1512 LCSC stock was low (~13 each) when checked.

Parts

90
QtyValueFootprintReferences
33100nFCapacitor_SMD:C_0402_1005MetricC2, C3, C11, C12, C15, C16, C17, C18, C19, C23, C24, C25, C26, C27, C28, C29 +17
1222RResistor_SMD:R_0402_1005MetricR9, R10, R11, R12, R13, R14, R15, R16, R17, R18, R19, R20
610uFCapacitor_SMD:C_0805_2012MetricC1, C5, C21, C35, C42, C48
510kResistor_SMD:R_0402_1005MetricR5, R6, R8, R22, R23
415pFCapacitor_SMD:C_0402_1005MetricC8, C9, C32, C33
41uFCapacitor_SMD:C_0402_1005MetricC10, C14, C20, C22
322uFCapacitor_SMD:C_0805_2012MetricC6, C7, C13
225MHzCrystal:Crystal_SMD_3225-4Pin_3.2x2.5mmY1, Y2
2330RResistor_SMD:R_0402_1005MetricR25, R26
10RResistor_SMD:R_0402_1005MetricR7
11.5kResistor_SMD:R_0402_1005MetricR21
1100kResistor_SMD:R_0402_1005MetricR2
112kResistor_SMD:R_0402_1005MetricR3
12.2uHND2:L_4.0x4.0mm_SMNR4020L1
1220nFCapacitor_SMD:C_0402_1005MetricC34
12kResistor_SMD:R_0402_1005MetricR4
13.3uHND2:L_3.0x3.0mm_SMNR3015L2
14.99kResistor_SMD:R_0402_1005MetricR24
1453kResistor_SMD:R_0402_1005MetricR1
1600RInductor_SMD:L_0805_2012MetricFB1
188E1512-A0-NNP2C000ND2:88E1512_QFN-56-1EP_8x8mm_P0.5mm_EP4.4mmU2
193AA66/SNPackage_SO:SOIC-8_3.9x4.9mm_P1.27mmU4
1HC-USB3.0-C26ND2:USB3_A_Plug_HongCheng_HC-USB3.0-C26J1
1HR911130CND2:RJ45_HanRun_HR911130C_HorizontalJ2
1LAN7801-I/9JXND2:LAN7801_QFN-64-1EP_9x9mm_P0.5mm_EP6.1mmU1
1PRTR5V0U2XPackage_TO_SOT_SMD:SOT-143U6
1TLV62569DBVPackage_TO_SOT_SMD:SOT-23-5U3
1TPD4EUSB30Package_SON:USON-10_2.5x1.0mm_P0.5mmU5

Similar boards

  • 2 layers100 × 64 mmRf power monitor rev2, the printed circuit board in 3D

    Rf power monitor rev2

    TheKingOfChaos/RF-Power-Monitor

    A 2-layer carrier board for the WIZnet W5500-EVB-Pico-PoE. It is 80 x 51.5 mm: exactly as long as the module, so both short edges line up with the module.

    129 parts
  • 4 layers160 × 80 mmAmos, the printed circuit board in 3D

    Amos

    des256/pcbs

    Making electronics as well

    401 parts
  • 2 layers95.7 × 92.9 mmJustadongle, the printed circuit board in 3D

    Justadongle

    Ains0X1/UART-Wand

    It is an open-source, ultra-compact USB-to-Serial converter. It uses the CH340E IC to provide a stable asynchronous serial interface (UART) via a USB-C connector.

    33 parts
  • 6 layers50 × 20 mmQuick nic, the printed circuit board in 3D

    Quick nic

    tobycm/quick-nic

    usb 3 to ethernet adapter :b

    26 partsMIT
  • 4 layers150 × 100 mmCm4-robo controller, the printed circuit board in 3D

    Cm4-robo controller

    jrseti/roboclaw-cm4-dc-dish-controller

    Satellite dish controller using a ROBOCLAW-2X15A-OEM controlled by a Raspberry Pi CM4 module. Powered by DC battery.

    292 partsMIT
  • 6 layers124.5 × 55.9 mmEos tm4c1294-board, the printed circuit board in 3D

    Eos tm4c1294-board

    embeddedos-org/eCAD-Hardware-Products

    Hardware designs + EE docs + Board datasheets of Multiple products

    131 parts8MIT
  • 4 layers64 × 55.4 mmInteli210AT, the printed circuit board in 3D

    Inteli210AT

    ssmiao/Intel-I210-network-card

    A standrad PCIe x1 Ethernet Card Using Intel i210 chipset

    56 parts6MIT

Questions

How big is the Tdr dongle PCB?

It measures 70 × 30 mm and has 4 copper layers, 1.6 mm thick.

What parts does the Tdr dongle use?

90 parts, built around the 88E1512-A0-NNP2C000, LAN7801-I/9JX, TLV62569DBVR-TP and 93AA66/SN. 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 Tdr dongle KiCad files?

From the MostlyWithinSpec/Network-Goblin-ND-2 repository on GitHub, at the commit this page was made from: the board is hardware/tdr-dongle/tdr-dongle.kicad_pcb and its schematic hardware/tdr-dongle/tdr-dongle.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Tdr dongle design in my own project?

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