Vendor footprint library for mechanical-keyboard hardware (switches,
stabilizers, encoders, connectors, MCU/passive footprints), added
whole as MIKILAB_Keebio_Parts under footprints/mechanical, following
the same "keep vendor .pretty intact" precedent as altera.pretty /
xilinx.pretty / lattice.pretty.
Rewrote every 3D model reference that leaked the original author's
absolute local paths (/Users/danny/..., /Library/Application
Support/kicad/...) so the library stays self-contained:
- resolvable refs -> ${KIPRJMOD}/3dmodels/mechanical/Keebio-Parts/...
(7 STEP files actually present upstream, copied alongside)
- genuinely missing vendor assets -> ${KISBLIB}/Keebio-Parts.pretty/...,
the same known-gap convention already used for other vendor
libraries in this repo
- one hardcoded stock-KiCad path -> ${KISYS3DMOD}/...
Also stripped a stray "Sheet file" property pointing at the original
author's own project.
fp-lib-table/.global regenerated from the tree; MANIFEST.csv rows
added for every imported footprint and 3D model. check_library.py:
0 errors (was 0 before, still 0).
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TnzoFuRZAhRGeHAdz8UzR2
Import SnapEDA-sourced symbols/footprints/3D models for a handful of
power and LED parts. Also corrects the TS3425UA-3x4x2.5-160 tactile
switch: courtyard was undersized (used the simplified 4.2x3.4mm
headline package size instead of the full 5.2x3.35mm mechanical
envelope), datasheet/sourcing metadata was empty, and no 3D model was
present -- now verified against the official SHOUHAN/CAX mechanical
drawing and LCSC C51927439, with a real STEP body added.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GjmdnB2SyPYKHbSq9Lasmr
New scripts/generate_castellated_edge.py produces a reusable footprint
(round PTH pads + an embedded Edge.Cuts line through their centers) for
mounting a module flush onto another board's edge, ESP32-WROOM style --
distinct from the QFP/SSOP breakout-adapter footprints already in
footprints/other/castellated_breakouts.pretty/. Default pad size (1.0mm
dia / 0.5mm drill) matches the vias used in reference/kicad-castellated-breakouts.
Generated CASTELLATED_EDGE_1x20_P1.27MM (20 pins, 1.27mm pitch) into
footprints/other/castellated_edge.pretty/, registered as
MIKILAB_castellated_edge.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01T5pjBJQ7tf9pwsSs8rG2sm
- AS4C32M16SA-7TCNTR (TSOP-54) and AS4C32M16SB-7BIN (TFBGA-54) 512Mb
SDRAM symbols/footprints, imported via UltraLibrarian/SnapEDA sources
(see MANIFEST.csv for full provenance).
- Fix Lattice LFE5U-45F-8BG381 symbol's Value/manf# grade suffix.
- Import 3 castellated breakout footprints (QFP48/QFP64/SSOP8,
1.27mm castellation pitch) from coddingtonbear/kicad-castellated-breakouts
into footprints/other/castellated_breakouts.pretty/, plus the upstream
reference board projects under reference/ for future consultation.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01T5pjBJQ7tf9pwsSs8rG2sm
- Import LFE5U-45F-8BG381I as a proper named/valued SamacSys symbol
(symbol, footprint, 3D model) instead of relying on the generic
ECP5U_45_CABGA381 placeholder, so it's findable by exact MPN in the
Symbol Chooser. Dedupe the vendor STEP file (byte-identical to the
one already added for the BG381 package) and repoint the footprint's
bare, unresolvable "LFE5U-45F-8BG381I.stp" model reference to
${KIPRJMOD}/3dmodels/fpga_cpld/LFE5U-45F-8BG381I.step.
- Also make the existing 9-unit ECP5U_45_CABGA381 symbol (split by
bank, easier to use on a schematic than the flat SamacSys one)
findable under the same MPN: Value/manf# set to LFE5U-45F-8BG381I
after verifying its 381 CABGA381 ball assignments match the SamacSys
symbol 1:1, and link its Footprint to the newly imported footprint.
- Import IS66WVE4M16EBLL-70BLI (SamacSys) symbol, footprint and 3D
model.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013gndCxJXQfouCQy4hP7NSX
- Add DMT6007LFG-7 (transistor) and TPS2121RUXR (dual-input power mux) with
footprints and TPS2121RUXR's 3D model.
- Import Lattice_ECP_FPGA symbol library (ECP5U-45 CABGA256/381/554,
CSFBGA285) from mattvenn/basic-ecp5-pcb's legacy .lib, converted via
kicad-cli sym upgrade; symbol-only, footprints resolved via the standard
Package_BGA KiCad library. Add a vendor-accurate BG256 3D body
(LFE5U-25F-8BG256I) for manual per-instance assignment.
- Fix check_library.py's 3D model reference regex to strip surrounding
quotes, which KiCad 10's re-save format adds around (model "...") paths
-- was causing a false "missing 3D model" error for SJ-3506-SMT-TR after
its footprint got re-saved in the new format.
- scripts/mikilab_lib.py / mikilab_cli.py: typed Python API + JSON CLI
for add/update/remove/query, for other apps to integrate without
shelling out to add_component.py
- lib_common.py/import_component.py/import_batch.py: regenerate
sym-lib-table.global/fp-lib-table.global on every mutating call, not
just the project-local tables
- scripts/find_missing_3d_models.py: lists components with no 3D model
and search links to fill the gap
- docs/GUIDA_USO.md: practical Italian usage guide (companion to README.md)
- checkup fixes: removed orphan duplicate footprint
footprints/other/CP_20_1_ADI.kicad_mod, and a dangling
${easyeda2kicad}/tmp 3D model reference in AXP2101's footprint that
pointed at a file that never existed on disk
The auto-generated FSC-BT1058 footprint used roundrect pads with a
slightly different body outline than the physical module. Since the
FSC-BT1035 footprint (pad geometry verified against the Feasycom
datasheet perimeter walk) matches the same physical package/pinout,
FSC-BT1058.kicad_mod now reuses that geometry directly.
Also recategorized FSC-BT1058 from "other" to "rf" (symbol, footprint,
3D model), matching FSC-BT1035 and the rest of the Bluetooth/RF parts.
Regenerated sym-lib-table/fp-lib-table (project and global) and synced
the real KiCad global library tables. Added "bt1058" to the rf
classification tokens in lib_common.py so a future re-import doesn't
land back in "other".
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Add the footprint entries (missing in KiCad's real global fp-lib-table)
and the XTAC5212IRGER symbol entry for the components added in the
previous commit, so the tracked .global snapshot matches what's now
registered in KiCad.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Imports were done via import_snapeda.py for the SnapEDA parts and the new
scripts/import_ultralibrarian.py for XTAC5212IRGER (UltraLibrarian export),
mirroring import_snapeda.py but handling UL's timestamp-named symbol files
and its multiple pad-size footprint variants (nominal/-L/-M).
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Symbol + footprint reconstructed from manvalan/DigiRadio's EasyEDA
project (same method as the FSC-BT1035 footprint), cross-checked
against the manufacturer datasheet found in that same project. The
datasheet's own circuit diagram shows two independent, mechanically
-ganged contact pairs (not a simple SPST), reproduced faithfully in
the symbol. Pin numbering preserved exactly as extracted, kept
internally consistent between symbol and footprint.
Extracted 52 pad records + silkscreen geometry from the raw JSON-Lines
document format inside manvalan/DigiRadio's fabricated EasyEDA Pro
project (epro2kicad couldn't handle this project's newer multi-doc
export format, so the relevant FOOTPRINT document was located and
parsed directly). Pad size/pitch independently match the official
FSC-BT1035 datasheet's mechanical spec exactly; pad numbering follows
the same perimeter walk as the datasheet's own pin table, so pad N =
pin N. The underlying component was originally a SnapEDA export for the
mechanically-compatible FSC-BT806 (same 13x26.9mm 52-pad family
package), relabeled BT1035 by the designer -- documented in README.
Validated with kicad-cli fp export + visual SVG comparison against the
datasheet's own footprint layout figure before import. No 3D model.
Realtek Gigabit Ethernet PHY, imported from a SnapEDA KiCad export zip
(symbol + QFN40P500X500X90-41N footprint + STEP 3D model, all bundled
together). This is the first real-world use of scripts/import_snapeda.py.
Imports ESP32-C3/C5/C6/H2/S2/S3 MINI/WROOM/WROVER/SOLO modules and
ESP8684-WROOM-02C/U from the official espressif/kicad-libraries repo,
each with symbol + footprint + 3D model. Skipped bare SoC/die symbols
(no footprint of their own) and DevKit board symbols (not components
you'd place on your own board).
ESP32-S31-WROOM-3 is replaced: the previous easyeda2kicad.py export had
a fatal unquoted-URL syntax bug (fixed in an earlier commit, but the
official symbol/footprint/3D model is simply better -- real chip is
brand new, Espressif's own library already supports it).
All 19 footprints referenced their 3D model via ${KICAD8_3RD_PARTY} /
${KICAD9_3RD_PARTY} (KiCad Plugin & Content Manager install path, not
defined since this library isn't PCM-installed). Repointed to
${KIPRJMOD}/3dmodels/microcontrollers/ using the STEP files copied in
alongside each part, so every model resolves without PCM.
Adds ADAU1467WBCPZ300RL (the SigmaDSP chip previously missing), plus
PCM1808QPWRQ1, PCM9211PTR, Combo384, MW-1466CORE (ADAU1466 core module),
LME49720MA, CS8421-CZZ, PCM1861DBT, FDC608PZ, IMN10T108, AK5384.
Source repo used legacy KiCad .lib/.dcm format; converted via
kicad-cli sym upgrade. Parts already covered by the official mirrored
libraries (PCM5102A, INA194, AZ1117-3.3, ADAU1452) were intentionally
skipped to avoid duplication. PCM1681-Q1 skipped (KiCad 'extends'
variant, can't stand alone without duplicating PCM1681).
Fixed real defects found in the source footprints during import:
- PCM1808QPWRQ1 had an absolute 3D model path pointing at the upstream
maintainer's own machine (/Users/HILO/...)
- ADAU1467WBCPZ300RL and PCM9211PTR each had two dead 3D model
references (${KICAD_USER_TEMPLATE_DIR} and a bare filename)
All three now use a single ${KIPRJMOD}-relative reference to the STEP
files under 3dmodels/audio/.
LME49720MA imported symbol-only, Footprint property repointed at the
existing MIKILAB_ipc_soic:IPC_SOIC127P600X175-8N instead of duplicating
a generic SOIC-8 footprint.
- scripts/generate_global_tables.py generates sym-lib-table.global /
fp-lib-table.global using a custom env var (default MIKILAB) instead
of ${KIPRJMOD}, for use across every KiCad project
- README §1 now has concrete, tested install steps for this machine's
KiCad 10.0 setup (per-project vs. global), including a merge script
and a note about stale kicad-personal-library entries already
present in the user's global sym-lib-table