Skip to the content
6 layers184.3 × 234 mmLightfury panel, the printed circuit board in 3D

Lightfury panel

jusdisgi/LightFury2

Light Fury Keyboard: Ergo Split with 54 PG1316S keyswitches, 54 LEDs, LCDs, and Roller Encoders.

Size
184.3 × 234 mm
Copper layers
6
Thickness
1.6 mm
Parts
284
Nets
172
Pads
1,466
Tracks, vias
1,274, 161
Pours
12
Routed
Yes
KiCad
KiCad 9.0 (file 20241229)
Created
18 Jun 2025
Updated
26 Jun 2026

Overview

Lightfury panel is an open-source printed circuit board by jusdisgi, from the jusdisgi/LightFury repository on GitHub, published under the MIT licence. It is a 6-layer board of 184.3 × 234 mm with 284 parts on 172 nets, routed with 1,274 tracks and 161 vias.

It is built around the SN74LV1T126DBVR-TP, TLV61070ADBV and WS2812B-2020, with the BAV70 among its other parts. Its parts include 82 diodes, 54 switches, 10 capacitors, 4 resistors and 4 ICs. It belongs with the nRF52 and nRF5x boards of this library.

Main components

4

README

panel/README.md

LightFury panelization (KiKit)

Run on your machine (KiKit drives KiCad's pcbnew — it won't run in the sandbox). The per-half boards (lightfury_left/right.kicad_pcb) are the source of truth; everything below rebuilds the combined board and panel from them, so re-run it any time a half changes.

Environment: use the KiCad Command Prompt (so python = KiCad's Python with pcbnew). KiKit's kikit.exe installs to ...KiCad\9.0\3rdparty\Python311\Scripts, which isn't on PATH by default — add it for the session before the kikit commands:

bat
set PATH=%PATH%;C:\Users\hunte\Documents\KiCad\9.0\3rdparty\Python311\Scripts

Full workflow (in order)

bash
cd LightFury

# 1. Merge the two halves -> lightfury_both.kicad_pcb (right-half refs get a _2 suffix,
#    nets get L_/R_ prefixes so the halves stay electrically distinct). Replaces the old
#    by-hand merge.
python panel/merge_both.py

# 2. Frame it into a panel.
kikit panelize -p panel/lightfury.kikit.json lightfury_both.kicad_pcb panel/lightfury_panel.kicad_pcb

# 3. GERBERS ONLY from the panel: open it in pcbnew and run the **Fabrication Toolkit** plugin
#    (NOT `kikit fab jlcpcb` — needs a schematic the _2 refs can't match). It writes to the
#    transient panel/production/ ; copy the gerber zip up to the canonical order folder:
copy panel\production\lightfury_panel.zip production-panel\

# 4. BOM + CPL straight from the panel (origin datum, integer rotations, RESW1 injected,
#    per-part offsets) -> the canonical production-panel/ . Then render to verify locally.
python panel/gen_cpl.py panel/lightfury_panel.kicad_pcb production-panel
python panel/render_cpl.py panel/lightfury_panel.kicad_pcb production-panel/positions.csv panel/verify

The three files you upload to JLC live in production-panel/. Full detail + the one-time JLC rotation-confirmation step: CPL_WORKFLOW.md.

Notes / gotchas

  • post.millradius eats the RE1 foot cutouts. The CKW12 encoder has two ~2 mm diamond (45°-square) Edge.Cuts cutouts per half for RE1's feet. millradius simulates a 1 mm-radius (2 mm Ø) router bit across the whole substrate — including internal holes — so a sub-bit-size cutout gets erased. Result: the diamonds are in lightfury_both but vanish from the panel. Fix is in the preset: use millradiusouter (mills only the outer ring, leaves internal cutouts intact) instead of millradius. If your KiKit predates millradiusouter, set millradius to 0mm and re-inject the 4 diamonds afterward (translate the both-board loops by the panel placement offset — footprint-only, so BOM/CPL are untouched). Always eyeball the encoder cutouts in the panel before ordering.
  • merge_both.py is the script that replaces your old hand-merge. Right-half refs become *_2 (uniform — simpler than the old mixed RS/RLED/_2 scheme; JLC only cares that refs are unique and that BOM ↔ CPL agree, which they will since both come from this pipeline). appendBoard's signature is the line most likely to need a tweak for your KiKit version.
  • Prereq: the per-half schematics need their LCSC fields filled and pushed to the PCBs (Update PCB from Schematic / F8) before step 1, or the BOM comes out without part numbers.
  • gen_cpl.py (pure Python, no pcbnew) builds the BOM + CPL directly from the panel: position = footprint origin, per-LCSC ROT_CORR/POS_OVERRIDE tables, and RESW1 (C262417) injected from the encoder's S1/S2 pads. It supersedes the old inject_resw1.py (now in old_cruft/). render_cpl.py overlays the result on the real pads for local verification before uploading.
  • The preset's 1×1 grid frames the merged pair (two outlines) as one unit, bridging each half to the rails with mouse-bite tabs. If KiKit complains about the two outlines, the fallback is to move framing into merge_both.py (KiKit Python API) — ping me and I'll extend it.

Preset details (lightfury.kikit.json)

  • Rails top & bottom, 5 mm, 3 mm gap (railstb).
  • Tabs every 25 mm, 3 mm wide, mouse-bites (0.5 mm drills @ 0.8 mm) — better than V-cuts for the filleted/curved outlines.
  • Tooling holes (1.5 mm) and fiducials (1 mm copper / 2 mm mask) in the rail corners.
  • JLCJLCJLCJLC order token in the rail, millradius 1 mm for the router.

Tune after first run

  • Tighten GAP_MM in merge_both.py if the halves sit too far apart (tighter = cheaper panel).
  • Check the panel against JLC's rules (min rail width, mouse-bite spacing); bump tab count if any edge feels under-supported for the 5 Ah / LCD weight during assembly.
  • Verify RESW1 (and any consigned/extended parts) in JLC's BOM/assembly preview before ordering.

Parts

284
QtyValueFootprintReferences
92NPTHNPTHKiKit_MB_10_2, KiKit_MB_10_3, KiKit_MB_10_4, KiKit_MB_10_5, KiKit_MB_10_6, KiKit_MB_10_7, KiKit_MB_11_2, KiKit_MB_11_3, KiKit_MB_11_4, KiKit_MB_11_5, KiKit_MB_11_6, KiKit_MB_11_7, KiKit_MB_12_2, KiKit_MB_12_3, KiKit_MB_12_4, KiKit_MB_12_5 +76
54PG1316SPG1316SS1, S10, S10_2, S11, S11_2, S12, S12_2, S13, S13_2, S14, S14_2, S15, S15_2, S16, S16_2, S17 +38
44WS2812B-2020LED_WS2812B-2020_PLCC4_2.0x2.0mmLED10, LED10_2, LED11, LED11_2, LED12, LED12_2, LED13, LED13_2, LED14, LED14_2, LED15, LED16, LED16_2, LED17, LED17_2, LED18 +28
28BAV70BAV70 SOT23D1, D1_2, D2, D2_2, D3, D3_2, D10, D10_2, D11, D11_2, D12, D12_2, D13, D13_2, D14, D14_2 +12
14ceoloide:mounting_hole_npthMH1, MH1_2, MH2, MH2_2, MH3, MH3_2, MH4, MH4_2, MH5, MH5_2, MH6, MH6_2, MH7, MH7_2
8FiducialFiducialKiKit_FID_B_1, KiKit_FID_B_2, KiKit_FID_B_3, KiKit_FID_B_4, KiKit_FID_T_1, KiKit_FID_T_2, KiKit_FID_T_3, KiKit_FID_T_4
410μF 25VCapacitor_SMD:C_0603_1608MetricC2, C2_2, C4_2, C5_2
2LCD_1.69_WaveshareLCD1, LCD1_2
2100nFCapacitor_SMD:C_0603_1608MetricC3, C3_2
210µF 25VCapacitor_SMD:C_0603_1608MetricC4, C5
210μFCapacitor_SMD:C_0603_1608MetricC1, C1_2
22.2μHhuntercook:L_CJIANG_FTC404030S_4.1x4.1x3.0_SMDL1, L1_2
2470kΩResistor_SMD:R_0603_1608MetricR1, R1_2
251kΩResistor_SMD:R_0603_1608MetricR2, R2_2
2Battery Connectorceoloide:battery_connector_jst_ph_2JST1, JST1_2
2CKW12CKW12RE1, RE1_2
2Inner BottomLED_WS2812B-2020_PLCC4_2.0x2.0mmLED21, LED24_2
2Inner TopLED_WS2812B-2020_PLCC4_2.0x2.0mmLED24, LED27_2
2LCD HEADERMolex_PicoBlade_53261-0871_1x08-1MP_P1.25mm_HorizontalCONN1, CONN1_2
2Outer BottomLED_WS2812B-2020_PLCC4_2.0x2.0mmLED1, LED1_2
2Outer TopLED_WS2812B-2020_PLCC4_2.0x2.0mmLED4, LED4_2
2Power SWceoloide:power_switch_smd_sidePWR1, PWR1_2
2Reset SWceoloide:reset_switch_smd_sideRST1, RST1_2
2SN74LV1T126DBVRPackage_TO_SOT_SMD:SOT-23-5U2, U2_2
2TLV61070ADBVPackage_TO_SOT_SMD:SOT-23-6U1, U1_2
2nice_nanoceoloide:mcu_nice_nanoMCU1, MCU1_2
1Far ThumbLED_WS2812B-2020_PLCC4_2.0x2.0mmLED15_2
1Outer ThumbLED_WS2812B-2020_PLCC4_2.0x2.0mmLED27

More from jusdisgi/LightFury

1
  • 6 layers168.3 × 218 mmLightfury both, the printed circuit board in 3D

    Lightfury both

    jusdisgi/LightFury

    Light Fury Keyboard: Ergo Split with 54 PG1316S keyswitches, 54 LEDs, LCDs, and Roller Encoders.

    184 parts2MIT

Similar boards

  • 6 layers156 × 116.4 mmToomanykeys right, the printed circuit board in 3D

    Toomanykeys right

    jusdisgi/TooManyKeys

    Work in progress, new version of BiggieSplays with lots of bells and whistles

    89 parts3MIT
  • 2 layers100.1 × 100 mmUtility board, the printed circuit board in 3D

    Utility board

    jusdisgi/sweepish

    Basically a Ferris Sweep with a Seeed XIAO nrf52840 and Choc switches. My first ever attempt at PCB design.

    115 parts
  • 2 layersBoostier, the printed circuit board in 3D

    Boostier

    jusdisgi/boostier

    Boost circuit and logic level shifter, 5V output from 3.7V LiPoly battery and 3.3V logic.

    7 parts
  • 4 layers94 × 94 mmWalter feels, the printed circuit board in 3D

    Walter feels

    benmcnelly/walter-hardware

    This repository contains all hardware information about Walter and shields

    154 partsGPL-3.0
  • 4 layers70 × 70.5 mmPCB FINAL UPDATED, the printed circuit board in 3D

    PCB FINAL UPDATED

    bash227/ECG-Motor-Control-Power-Management-PCB

    A multi-function PCB integrating biomedical signal acquisition (ECG), DC motor control, and advanced power management for wearable applications.

    111 parts2MIT
  • 2 layers139.5 × 153 mmPannel, the printed circuit board in 3D

    Pannel

    cocobot/cocotter

    370 parts2
  • 2 layers100 × 85 mmAMP RCv2, the printed circuit board in 3D

    AMP RCv2

    Autonomous-Motorsports-Purdue/AMP_RCv2

    Files relating to version 2 of the remote control PCB for AMP kart

    46 parts1MIT
  • 2 layers200 × 99.1 mmUsbchargerpanel12, the printed circuit board in 3D

    Usbchargerpanel12

    cvanbibber/USB-Charger

    A simple USB charger board for soldering, with USB-C bidirectional port, USB-A, and micro-USB as an introduction to pcb design and usb standards.

    288 parts1GPL-3.0

Questions

How big is the Lightfury panel PCB?

It measures 184.3 × 234 mm and has 6 copper layers, 1.6 mm thick.

What parts does the Lightfury panel use?

284 parts, built around the SN74LV1T126DBVR-TP, TLV61070ADBV, WS2812B-2020 and BAV70. 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 Lightfury panel KiCad files?

From the jusdisgi/LightFury repository on GitHub, at the commit this page was made from: the board is panel/lightfury_panel.kicad_pcb and its schematic lightfury_left.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Lightfury panel 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).