Skip to the content
PCBKitNew board
2 layers33 × 46 mmM18-usb interface pcb, the printed circuit board in 3D

M18-usb interface pcb

fred314159265/m18-usb-interface

Isolated USB-C adapter for Milwaukee M18 battery diagnostics. KiCad design and v1.0 fab files. Software: m18-protocol-rs.

Size
33 × 46 mm
Copper layers
2
Thickness
1.6 mm
Parts
31
Nets
27
Pads
102
Tracks, vias
187, 78
Pours
92
Routed
Yes
KiCad
KiCad 9.0 (file 20241229)
Created
15 Sep 2025
Updated
21 Oct 2026

Overview

M18-usb interface pcb is an open-source printed circuit board by fred314159265, from the fred314159265/m18-usb-interface repository on GitHub, published under the Unlicense licence. It is a 2-layer board of 33 × 46 mm with 31 parts on 27 nets, routed with 187 tracks and 78 vias.

It is built around the FT234XD-R, LTV-817S and SMF26CA, with the SMF12CA among its other parts. Its parts include 10 resistors, 6 capacitors, 5 diodes, 4 ICs and 2 transistors. It belongs with the power and interfaces and adapters boards of this library.

Main components

4

README

README.md

M18 USB Interface

A USB-C board that plugs into a Milwaukee M18 battery so a PC can talk to the pack's diagnostic pins.

3D render of the M18 USB interface, component side

Revision v1.0. The M18 connector is on the back of the board.

3D render of the M18 connector on the back of the board

Companion software

Read a health report, cell data, and charge history with m18-protocol-rs:

bash
cargo run --example health_report -- COM3

On Linux or macOS, pass the serial device instead, for example /dev/ttyUSB0.

The protocol comes from the reverse engineering in mnh-jansson/m18-protocol. That Python tool works with this board as well.

Features

  • USB-C and an FT234XD serial bridge, with RX and TX LEDs.
  • Two LTV-817S optocouplers. The battery UART is on its own ground, separate from the PC.
  • J2 is driven as a roughly 0–12 V signal, which is what the pack expects. J1 comes back from the pack at about 3.3–5 V.
  • ESD diodes on the exposed battery pins.
  • Everything except the M18 connector is chosen from the JLCPCB assembly library. Solder the connector on afterwards.
  • KiCad 9 sources. The v1.0 fabrication package is in the repo and on the v1.0 release.

Battery pins

These photos are from the Tool Scientist video and the m18-protocol hardware notes. They show the pack terminals this board connects to.

PinRoleLevel
B+Pack positiveAbout 12.5–21 V
J1Output from the packAbout 3.3–5 V
CCharge terminal
J2Input to the packAbout 0–12 V
B−Pack negative
M18 pack terminals labelled ground, J2, charge, J1, and pack voltage Which way the interface plugs into an M18 pack J2 swings between about 2 V and 12 V, above ordinary logic levels

Images/wiring.png is the discrete FTDI adapter and level shifter that this PCB replaces.

One-time FTDI setup

The optocouplers invert TX and RX. Program the FT234XD once with FT_Prog, or the link will not decode.

Template: m18-usb-interface-pcb/Releases/v1.0/M18_Interface_FT_Prog_Template.xml

  1. Install FT_Prog.
  2. Choose File → Open Template… and select the template.
  3. Plug in the board. Choose Devices → Scan and Parse.
  4. Right-click the device, choose Apply Template, and select the template.
  5. Choose Devices → Program.

The template writes:

  • USB product name M18 USB Interface
  • TX and RX inverted
  • the VCP driver, so the board shows up as a normal COM port
  • 8 mA drive, slow slew, and Schmitt trigger inputs

Build

Fabrication files for v1.0:

Top view of the assembled v1.0 board
  1. Order the board from the production zip. It includes the gerbers, BOM, and pick-and-place file.
  2. Solder on an M18 battery connector. The footprint matches common shells such as this one.
  3. Program the FTDI chip with the template above.
  4. Plug the board into an M18 pack, and plug USB-C into the PC.
  5. Run health_report from m18-protocol-rs.

Safety

This is not a Milwaukee Tool product, and Milwaukee has not endorsed it. Lithium-ion packs can burn if they are shorted or wired wrong. Isolation on this board is not a guarantee if it is assembled incorrectly. Use it at your own risk.

License

Public domain under The Unlicense.

Thanks

Tool Scientist and the contributors to m18-protocol documented the pins and the protocol this board is built for.

Parts

31
QtyValueFootprintReferences
45.1kResistor_SMD:R_0603_1608MetricR9, R10, R11, R12
31kResistor_SMD:R_0603_1608MetricR6, R7, R8
2100nFCapacitor_SMD:C_0603_1608MetricC4, C6
227RResistor_SMD:R_0603_1608MetricR1, R4
22N7002Package_TO_SOT_SMD:SOT-23Q1, Q2
247pFCapacitor_SMD:C_0603_1608MetricC1, C2
2LTV-817SPackage_DIP:SMDIP-4_W9.53mmU3, U4
2SMF26CADiode_SMD:D_SOD-123FD3, D4
110nFCapacitor_SMD:C_0603_1608MetricC3
1120Ω@100MHz 2A 50mΩInductor_SMD:L_0603_1608MetricFB1
122kRResistor_SMD:R_0603_1608MetricR3
14.7uFCapacitor_SMD:C_0603_1608MetricC5
1FT234XDPackage_DFN_QFN:WDFN-12-1EP_3x3mm_P0.45mm_EP1.7x2.5mmU1
1M18M18_USB_Interface:M18_Battery_InterfaceU2
1RXLED_SMD:LED_0603_1608MetricD1
1SMF12CADiode_SMD:D_SOD-123FD5
1TXLED_SMD:LED_0603_1608MetricD2
1USB_C_Receptacle_USB2.0Connector_USB:USB_C_Receptacle_XKB_U262-16XN-4BVC11J1

The 29 most common of 31 parts.

Questions

How big is the M18-usb interface pcb PCB?

It measures 33 × 46 mm and has 2 copper layers, 1.6 mm thick.

What parts does the M18-usb interface pcb use?

31 parts, built around the FT234XD-R, LTV-817S, SMF26CA and SMF12CA. 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 M18-usb interface pcb KiCad files?

From the fred314159265/m18-usb-interface repository on GitHub, at the commit this page was made from: the board is m18-usb-interface-pcb/m18-usb-interface-pcb.kicad_pcb and its schematic m18-usb-interface-pcb/m18-usb-interface-pcb.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the M18-usb interface pcb design in my own project?

Its repository publishes it under the Unlicense licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).

Similar boards

  • 2 layers25.4 × 42.9 mmLIN Click, the printed circuit board in 3D

    LIN Click

    michpro/mikroBUS

    Collection of add-on boards in mikroBUS™ standard

    34 parts5CERN-OHL-P-2.0
  • 4 layers121.9 × 44.4 mmBurnedHead, the printed circuit board in 3D

    BurnedHead

    justinbalexander/BurnedHead

    A handheld game console

    92 parts45Unlicense
  • 4 layers250.8 × 30 mmLedTubeFixture, the printed circuit board in 3D

    LedTubeFixture

    adamvotocek/Open-Tube-Light

    work in progress

    201 parts
  • 4 layers68.9 × 112.1 mmRP2350 V2, the printed circuit board in 3D

    RP2350 V2

    Stefan1623/VoidLink_Hardware

    Four-layer RF PCB design files for a wireless communication system

    151 parts
  • 2 layers64.1 × 40 mmWALKIN PIR IF, the printed circuit board in 3D

    WALKIN PIR IF

    ThunderSloth/walkin-pir-interface

    Battery-Powered PIR Motion Interface (Isolated Dry Contact)

    24 partsMIT
  • 2 layers70 × 110 mmPlaits clone, the printed circuit board in 3D

    Plaits clone

    lennartquerter/euro-rack-synth

    Lenimal Github for DIY for a Eurorack Synth

    150 parts13
  • 2 layers36.5 × 49.5 mmV485 controller, the printed circuit board in 3D

    V485 controller

    gabrielyoung92/gabs_microSMT_PickAndPlace

    Independent reorganisation of MicroSMT feeder and PNPv3 files, previews and documentation, with upstream attribution and ChatGPT assistance.

    33 parts1
  • 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