Skip to the content
2 layers160 × 74 mmSynth machine, the printed circuit board in 3D

Second revision of the carrier. v0.3 in ../v0.3/ is the board that was fabricated in September 2026; v0.4 applies everything in ../NEXTREVISION.md and adds onboard battery power.

Size
160 × 74 mm
Copper layers
2
Thickness
1.6 mm
Parts
123
Nets
94
Pads
397
Tracks, vias
1,168, 118
Pours
2
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
25 Aug 2025
Updated
23 Sep 2026

Overview

Synth machine is an open-source printed circuit board by zachtemkin, from the zachtemkin/synth-machine-libDaisy repository on GitHub. It is a 2-layer board of 160 × 74 mm with 123 parts on 94 nets, routed with 1,168 tracks and 118 vias.

It is built around the MAX98306ETD+T, BQ24074RGTR and USBLC6-2SC6, with the 1N4148W among its other parts. Its parts include 28 capacitors, 27 resistors, 19 switches, 18 diodes and 10 connectors. It belongs with the audio and music boards of this library.

Main components

4

README

hardware/v0.4/README.md

synthMachine carrier board v0.4

Second revision of the carrier. v0.3 in ../v0.3/ is the board that was fabricated in September 2026; v0.4 applies everything in ../NEXT_REVISION.md and adds onboard battery power. It is a new outline: 160 x 74 mm landscape instead of 100 x 100, with all 19 key headers in one row along the bottom edge in panel order. The USB-C, the Seed's own USB and the headphone jack still share the top edge.

PCB render

ChangePartsWhy
One row of key headersK1..K19 along the bottom at 7 mm pitch, diode above each, name belowEvery button lead is the same length and points the same way. The headers are rotated so the row is 132 mm wide and the corners stay free for mounting holes.
Battery powerJ17 JST-PH cell, U5 BQ24074 charger with power path, U6 TPS61023 5 V boost, J16 power-switch header, JP2 always-on jumperRuns from a single LiPo, charges from the USB-C, and runs from USB while charging. See the power section below.
Plug detect reaches 3V3Q1 is a 2N7002 MOSFETThe v0.3 BJT clamped HP_DET at 0.8 V so D13 never saw a plug. No jumper, no HP_DET=adc.
Firmware mute on its own transistorQ2 2N7002, R6 gate, R15 pull-up; MUTE on D0Muted at reset, in DFU and after a crash; firmware drives D0 low to run. Wired-OR with Q1.
I2C for encodersJ15 STEMMA QT (top-entry) on I2C1 (D11 SCL, D12 SDA) at the top right; R16/R17 pull-ups DNPFor the seesaw rotary-encoder breakouts; the cable leaves upward toward the panel.
Display headerJ9: GND, 3V3, 5V, SCK (A7), MOSI (A3), NSS (A8), D/C (D26), RST (D27)Hardware SPI1 for an OLED or a Sharp memory LCD.
Encoders instead of bank potsJ11..J14 removed; only J10 (volume) remainsThe four bank controls are seesaw rotary encoders on J15. Their old ADC pins go to the expansion header.
USB ESD, SMD fuseU4 USBLC6-2SC6, F1 1812 PTC on the USB inputData lines were unprotected; the radial fuse collided with the Seed.
USB-C receptacleJ1 is the HRO TYPE-C-31-M-12 (LCSC C165948)Same land pattern and body depth as v0.3's GCT USB4105, which went out of stock. A JLCPCB basic part.
Peripheral 3.3 V railU7 AP7361C-33 (SOT-223, 1 A) from +5V, C27/C28Feeds the encoders, the display and the expansion header's 3V3 pin, so the Seed's regulator carries only the Seed, the headphone amp and pull-ups.
Assembly-ready BOMevery part has an MPN or LCSC numberfab.sh writes pcbway_bom.csv / pcbway_cpl.csv.

Only the volume pot header remains (A0). The four bank controls are I2C rotary encoders on J15, chained over STEMMA QT. The firmware profile HW=carrier4 reads A0 only and leaves the bank inputs alone until the encoder support exists.

Power

text
USB-C J1 -> F1 2.5 A PTC -> VUSB -> U5 BQ24074 IN
                                    U5 BAT  <-> J17 cell (+ C22)
                                    U5 OUT   -> VSYS (4.4 V on USB, else the cell)
VSYS -> L1 1 uH / U6 TPS61023 -> +5V (5.1 V) -> Seed VIN, speaker amp, J8/J9 5V pins
                                       +5V -> U7 AP7361C-33 -> 3V3P -> J15 encoders, J9 display, J8 3V3
  • Charger. EN2 high and EN1 low select the resistor-programmed input limit: R19 1.1k gives 1.5 A, and the charger's input-voltage loop backs off automatically on a weak USB port. R18 1.8k sets 0.5 A fast charge, which is 0.25 C for a 2000 mAh cell and keeps the linear charger under 0.7 W. TMR and ITERM are left open for the default 30 min / 5 h safety timers and 10 % termination. CE is tied low, TS has the 10k that the part needs when there is no pack thermistor. The system runs from OUT while the cell charges, and the cell supplements USB on peaks.
  • Boost. The TPS61023 makes 5.1 V from VSYS (750k/100k on a 0.6 V reference). It carries the whole load on USB as well as on battery, which is fine: from the charger's 4.4 V it is barely working. From a 3.3 V cell it delivers about 1.5 A continuous with the 470 uF C1 covering the amp's peaks. Inductor per TI's table (Coilcraft XEL4030-102ME); XGL4030-102MEC is the LCSC-stocked equivalent.
  • Switch. J16 takes a panel SPST. Closed, it pulls the boost's EN up to VSYS through R28; open, R27 holds it low and everything downstream of the boost is off, while the charger keeps charging. The EN pin draws nothing, so any small switch works. J16 sits on the left edge at mid-height with JP2 beside it to bridge the switch on a bench board; the two enable lines run across the board to the boost, which is fine for a pull-up-and-pin signal.
  • Firmware signals. A10 reads VBAT/2 (R23/R24, 0 to 2.1 V). A5 reads ~CHG (low = charging) and A11 reads ~PGOOD (low = USB present), both open-drain with 100k pull-ups. Nothing in the firmware uses them yet.
  • Cell. Single-cell LiPo on J17, pin 1 = +. Use a protected cell (the Adafruit and SparkFun packs are); there is no protection on the board. 2000 mAh or more suits the speakers, which can pull over 1 A at volume.
  • Note. The Seed's own USB port powers only the Seed; it cannot charge the cell or run the amp. That was already true on v0.3.

Regenerate, route, fab

Same pipeline as v0.3, run from this directory:

bash
KICAD_PY=/Applications/KiCad/KiCad.app/Contents/Frameworks/Python.framework/Versions/Current/bin/python3
$KICAD_PY hardware/v0.4/gen_kicad.py                       # schematic + placed PCB
$KICAD_PY hardware/v0.4/route.py --java <java25> --jar freerouting-2.4.1.jar
$KICAD_PY hardware/v0.4/route.py --pours-only              # rebuild just the GND pours
sh hardware/v0.4/fab.sh                                    # Gerbers, BOMs, CPLs, test print

Freerouting 2.4.1 needs Java 25. Neither is installed system-wide on the Mac; a portable Temurin JRE from adoptium.net and the jar from the Freerouting GitHub releases page were used, and both can live anywhere. PREROUTES in the generator carries the audio paths, the MAX98306 fan-out and short stubs off the boost converter's 0.5 mm pitch pins, which the autorouter cannot reach with power-width tracks on its own.

Pin map (what the firmware profile HW=carrier4 expects)

Seed pinUse
D0MUTE: high = speakers muted (default via R15), low = run
D1..D3matrix rows
D4..D9matrix columns
D10C4 key
D11, D12I2C1 SCL, SDA (STEMMA QT)
D13HP_DET, high = headphones plugged in
D14HP_MUTE, headphone amp ~MUTE, low = muted
A0volume pot
A1, A2, A4, A9spare, on J8 (the old bank pot inputs)
A3, A7, A8SPI1 MOSI, SCK, NSS (display)
A5~CHG from the charger, low = charging
A6spare, on J8 (seesaw INT candidate)
A10battery voltage / 2
A11~PGOOD from the charger, low = USB present
D26, D27display D/C, RST
D29, D30USB-C data (MIDI)

Headers

RefWhatPins
K1..K19keys, JST-XH 2-pin, bottom row in panel orderrow / diode (any way round)
J10volume pot, JST-XH 3-pin, left edge below the USB-C3V3A, wiper, GND
J5, J6speakers, JST-PH+ / -
J17battery, JST-PH1 = +, 2 = GND
J16power switch, JST-XH 2-pin, left edge mid-height (JP2 beside it bridges it)either way round
J15STEMMA QT, top-entry, top rightGND, 3V3P, SDA, SCL
J9displayGND, 3V3P, 5V, SCK, MOSI, NSS, D/C, RST
J8expansionHP_MUTE, A1, A2, A4, A6, A9, HP_DET, MUTE, VSYS, 3V3P, 5V, GND

Ordering with assembly (PCBWay)

fab.sh writes fab/pcbway_bom.csv with an item per line: designators, quantity, manufacturer part number, LCSC number, value, package and whether it is SMD or through-hole. fab/pcbway_cpl.csv has both sides. Upload the Gerber zip, the BOM and the CPL; on the quote, tick at least J1 (USB-C), the 19 K headers, J10, J5/J6, J16, J17 and J15 for placement. The Seed sockets, C1 and the jack can go in the same job or be hand-fitted.

Ordering with assembly (JLCPCB)

fab/jlcpcb_bom.csv and fab/jlcpcb_cpl.csv carry every part with an LCSC number, which is all of the SMD parts and the JST connectors: the 19 key headers, the volume and switch headers (JST XH originals, C158012 / C144394) and the speaker and battery sockets (JST PH, C131337). Choose standard assembly, not economic: economic is SMD-only and drops the through-hole connectors. Still hand-fitted afterwards: the two Seed sockets, the two expansion/display sockets, the headphone jack and C1, which are on the Digi-Key list. The DNP pull-ups are excluded automatically.

Design review notes (v0.4 quality pass)

Things checked after the layout settled, and what was changed or accepted:

  • Current paths. Every net that carries real current was audited for width: VBUS/VUSB/VBAT/VSYS 0.4 mm, +5V and the filtered speaker lines 0.6 mm, with 0.5 mm-drill vias. The only narrow copper left is the unavoidable necks onto fine-pitch pads: 0.3 mm for less than 1 mm at the boost's VIN/SW/VOUT/GND pins (0.35 mm pads, 0.5 mm pitch) and 0.2 mm for about 1 mm at the amp's PVDD and speaker pins (0.4 mm pitch). The amp's two PVDD pins are joined right off the pads into one 0.5 mm feed. The boost's input and output capacitors sit at its pins with 0.6 mm copper.
  • Power switch really switches off. The TPS61023 has true input-to-output disconnect in shutdown, so with EN low nothing reaches the Seed's VIN.
  • Bulk capacitor on the boost. The 470 uF electrolytic on +5V is inside the TPS61023's stated 4 to 1000 uF effective output range.
  • Boost thermals. SOT-563 is about 120 to 140 K/W. At 1 A out from a 3.3 V cell the part dissipates about 0.5 W, so it runs warm (60 K rise) but within limits; the amp's 2 A peaks are brief. Keep the ground pour under it. If a future revision needs more headroom, the TPS61088 in a QFN is the drop-in class.
  • Seed 3V3 budget. Solved with a separate rail: the Seed's regulator feeds only the Seed, the headphone amp and the pull-ups (tens of milliamps). The encoders, display and expansion header run from U7, a 1 A SOT-223 LDO on the +5V rail (3V3P). At 300 mA it dissipates about 0.55 W, a 30 K rise on its ground tab and pour. On battery that rail is boost-then-LDO, roughly 60 % efficient, about 20 mA of extra cell current at typical loads. The headphone amp stays on the Seed's quieter rail.
  • USB-C current. The CC pull-downs advertise a sink but the firmware does not read the source's advertisement, so the charger's 1.5 A input limit applies to any port; the charger's VIN-DPM loop throttles rather than crashes a 500 mA port. A CC ADC read would let firmware lower ILIM later.
  • Battery divider on the ADC. 100k/100k is a 50k source impedance, high for the STM32 ADC's sampling time; the 100 nF across the bottom resistor is what makes the reading settle. Do not drop it.
  • Reverse cell. No reverse-polarity protection on J17 by design (a diode would cost the charger its regulation). The polarity check below is the protection.
  • Quiescent when off. Charger from the cell, boost leakage and the sense divider add up to about 25 uA, years on any usable cell.

Check before ordering

  1. J17 polarity against the cell you will use: pin 1 is + here, and the silkscreen says so. A reversed cell destroys the charger.
  2. J15 pin 1 (GND) is the pad nearest the board's right edge; check it against the cable's black wire before plugging in an encoder board.
  3. Q1/Q2 pinout: KiCad's Q_NMOS_GSD is gate 1, source 2, drain 3, the 2N7002's SOT-23 order. Check the LCSC part's datasheet agrees.
  4. U5 thermal pad has vias to the ground pour; make sure the assembler's stencil does not flood it.
  5. Enclosure: the outline changed. The top edge still carries all three ports at the same spacing from the left edge as v0.3, but the board is 60 mm wider and 26 mm shorter, and the mounting holes moved. The headphone jack's nose now stands 1.5 mm proud of the edge instead of flush.
  6. F1 and L1 look unpopulated in the render only because this KiCad install has no 3D models for the 1812 fuse and the XxL4030 inductor footprints. Both are in the BOM and the placement file.

Parts

123
QtyValueFootprintReferences
181N4148WD_SOD-123D1, D2, D3, D4, D5, D6, D7, D10, D11, D12, D13, D14, D15, D16, D17, D18 +2
10100kR_0805_2012MetricR3, R12, R13, R14, R21, R22, R23, R24, R26, R27
1010kR_0805_2012MetricR4, R5, R6, R8, R9, R10, R11, R15, R20, R28
91uC_0805_2012MetricC7, C8, C11, C12, C16, C17, C18, C19, C20
710uC_0805_2012MetricC13, C14, C21, C22, C23, C27, C28
4100R@100MHz 0805L_0805_2012MetricFB1, FB2, FB3, FB4
4220pC_0805_2012MetricC2, C3, C4, C5
4M3MountingHole_3.2mm_M3H1, H2, H3, H4
3100nC_0805_2012MetricC6, C15, C26
222u 25VC_1210_3225MetricC24, C25
22N7002SOT-23Q1, Q2
247pC_0805_2012MetricC9, C10
24k7 (DNP)R_0805_2012MetricR16, R17
25k1R_0805_2012MetricR1, R2
11k1 (ILIM 1.5A)R_0805_2012MetricR19
11k8 (ISET 0.5A)R_0805_2012MetricR18
11u 4x4 (XEL4030-102ME)L_Coilcraft_XxL4030L1
1470u 10VCP_Radial_D8.0mm_P3.50mmC1
1750k (FB, 5.1V)R_0805_2012MetricR25
1A#4 [c1 r1] JST-XHJST_XH_B2B-XH-A_1x02_P2.50mm_VerticalK11
1A4 [c2 r2] JST-XHJST_XH_B2B-XH-A_1x02_P2.50mm_VerticalK10
1AP7361C-33E-13SOT-223-3_TabPin2U7
1B4 [c1 r2] JST-XHJST_XH_B2B-XH-A_1x02_P2.50mm_VerticalK12
1BQ24074RGTRVQFN-16-1EP_3x3mm_P0.5mm_EP1.6x1.6mm_ThermalViasU5
1BTN1 [c0 r0] JST-XHJST_XH_B2B-XH-A_1x02_P2.50mm_VerticalK14
1BTN2 [c0 r1] JST-XHJST_XH_B2B-XH-A_1x02_P2.50mm_VerticalK15
1BTN3 [c1 r0] JST-XHJST_XH_B2B-XH-A_1x02_P2.50mm_VerticalK16
1BTN4 [c2 r0] JST-XHJST_XH_B2B-XH-A_1x02_P2.50mm_VerticalK17
1BTN5 [c3 r0] JST-XHJST_XH_B2B-XH-A_1x02_P2.50mm_VerticalK18
1BTN6 [c4 r0] JST-XHJST_XH_B2B-XH-A_1x02_P2.50mm_VerticalK19
1Battery 1S LiPo (JST-PH, 1 = +)JST_PH_B2B-PH-K_1x02_P2.00mm_VerticalJ17
1C#4 [c5 r0] JST-XHJST_XH_B2B-XH-A_1x02_P2.50mm_VerticalK2
1C5 [c0 r2] JST-XHJST_XH_B2B-XH-A_1x02_P2.50mm_VerticalK13
1D#4 [c4 r1] JST-XHJST_XH_B2B-XH-A_1x02_P2.50mm_VerticalK4
1D4 [c5 r1] JST-XHJST_XH_B2B-XH-A_1x02_P2.50mm_VerticalK3
1Daisy Seed / Seed3DaisySeed_2x20U1
1Display (SPI1)PinHeader_1x08_P2.54mm_VerticalJ9
1E4 [c5 r2] JST-XHJST_XH_B2B-XH-A_1x02_P2.50mm_VerticalK5
1ExpansionPinHeader_1x12_P2.54mm_VerticalJ8
1F#4 [c3 r1] JST-XHJST_XH_B2B-XH-A_1x02_P2.50mm_VerticalK7
1F4 [c4 r2] JST-XHJST_XH_B2B-XH-A_1x02_P2.50mm_VerticalK6
1G#4 [c2 r1] JST-XHJST_XH_B2B-XH-A_1x02_P2.50mm_VerticalK9
1G4 [c3 r2] JST-XHJST_XH_B2B-XH-A_1x02_P2.50mm_VerticalK8
1GAIN: 1-2 = 18dB, open = R13, 2-3 = 12dBSolderJumper-3_P1.3mm_Open_RoundedPad1.0x1.5mmJP1
1Headphones 3.5mm (CUI SJ1-3515N)Jack_3.5mm_CUI_SJ1-3515N_HorizontalJ7
1KEY C4 (direct D10) JST-XHJST_XH_B2B-XH-A_1x02_P2.50mm_VerticalK1
1MAX98306ETD+TTDFN-14-1EP_3x3mm_P0.4mm_EP1.78x2.35mm_ThermalViasU3
1MF-MSMF250/16X-2 2.5A PTCFuse_1812_4532MetricF1
1Pot VOL (10k lin, panel) JST-XHJST_XH_B3B-XH-A_1x03_P2.50mm_VerticalJ10
1Power switch (panel SPST) JST-XHJST_XH_B2B-XH-A_1x02_P2.50mm_VerticalJ16
1STEMMA QT (I2C1)JST_SH_BM04B-SRSS-TB_1x04-1MP_P1.00mm_VerticalJ15
1Speaker L (JST-PH)JST_PH_B2B-PH-K_1x02_P2.00mm_VerticalJ5
1Speaker R (JST-PH)JST_PH_B2B-PH-K_1x02_P2.00mm_VerticalJ6
1TPA6138A2PWRTSSOP-14_4.4x5mm_P0.65mmU2
1TPS61023DRLRSOT-563U6
1USB-C (MIDI + 5V power)USB_C_Receptacle_HRO_TYPE-C-31-M-12J1
1USBLC6-2SC6SOT-23-6U4
1always on (bridges the power switch)SolderJumper-2_P1.3mm_Open_RoundedPad1.0x1.5mmJP2

More from zachtemkin/synth-machine-libDaisy

1
  • 2 layers100 × 100 mmSynth machine, the printed circuit board in 3D

    Synth machine

    zachtemkin/synth-machine-libDaisy

    Second revision of the carrier. v0.3 in ../v0.3/ is the board that was fabricated in September 2026; v0.4 applies everything in ../NEXTREVISION.md and adds onboard battery power.

    93 parts

Similar boards

  • 2 layers69.4 × 113 mmEpaper reader hw, the printed circuit board in 3D

    Epaper reader hw

    mathias4833/epaper-reader-hw

    An open-source e-paper reader

    126 parts75CERN-OHL-W-2.0
  • 2 layers284.7 × 94.2 mmKeyboard 60%, the printed circuit board in 3D

    Keyboard 60%

    hw-tinkerers/TR-60

    kicad files of custom 60% keyboard inspired by bakeneko with ble support

    203 parts11MIT
  • 2 layers100 × 80 mmExitIQ, the printed circuit board in 3D

    ExitIQ

    Binita126/ExitIQ

    ExitIQ: ESP32-S3 Edge-AI Emergency Evacuation Guidance Terminal (Vishwakarma Awards 2026 Stage 2)

    74 parts
  • 4 layers27 × 34 mmChild wereable, the printed circuit board in 3D

    Child wereable

    oyeniyihakeem08-blip/child-wearable-notification-bracelet

    Wi-Fi wristband that tells children what’s expected of them, with a caregiver dashboard and offline alerts. ESP32-S3 · MQTT · KiCad.

    42 parts
  • 4 layers94 × 65 mmLink base brd, the printed circuit board in 3D

    Link base brd

    semtronik/link-hardware

    Open hardware for the Semtronik Link devices: ESP32-S3 base board, interface modules and enclosure. KiCad and Fusion sources, CERN-OHL-S v2.

    115 parts

Questions

How big is the Synth machine PCB?

It measures 160 × 74 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Synth machine use?

123 parts, built around the MAX98306ETD+T, BQ24074RGTR, USBLC6-2SC6 and 1N4148W. 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 Synth machine KiCad files?

From the zachtemkin/synth-machine-libDaisy repository on GitHub, at the commit this page was made from: the board is hardware/v0.4/synth_machine.kicad_pcb and its schematic hardware/v0.3/synth_machine.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Synth machine design in my own project?

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