22 Commits
Author SHA1 Message Date
micheleandClaude Sonnet 5 f54bc6ef62 Import Keebio-Parts.pretty (MIT, keebio/Keebio-Parts.pretty)
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
2026-09-10 01:54:40 +02:00
micheleandClaude Sonnet 5 554a2a784f Add SnapEDA parts (AP2112K, BQ24040, MAX17048, MCP1640, MT3608, SK6812) and fix TS3425UA-3x4x2.5-160
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
2026-09-09 23:19:23 +02:00
micheleandClaude Sonnet 5 804e2a2cb8 Add generator for single-row castellated edge footprints
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
2026-09-08 00:07:33 +02:00
micheleandClaude Sonnet 5 25b09cf48a Add AS4C32M16SA/SB SDRAM parts and castellated breakout footprints
- 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
2026-09-08 00:04:13 +02:00
micheleandClaude Sonnet 5 48fefbbcef Update IS66WVE4M16EBLL-70BLI symbol to newer SamacSys export
Fixed the Footprint property to point at the registered MIKILAB
nickname (the raw vendor export left it unprefixed). Footprint and
3D model are untouched since geometry is byte-identical to what was
already imported.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JnnGYBghAsbmEByc2FFGw5
2026-09-04 08:48:31 +02:00
micheleandClaude Sonnet 5 33738d156f Add LFE5U-45F-8BG381I (SamacSys) and IS66WVE4M16EBLL-70BLI symbols
- 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
2026-09-03 17:30:08 +02:00
micheleandClaude Sonnet 5 aa4367f2e6 Add vendor 3D body for Lattice LFE5U-45F-8BG381I (BG381 package)
Symbol ECP5U_45_CABGA381 and footprint LATTICE_BGA_CABGA381 already
cover this package generically; add the SamacSys-sourced STEP model
as a more accurate alternative body for manual per-instance
assignment, same treatment as the existing BG256 body.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SLWiTVT39zMvgWZfKNvYcP
2026-09-02 21:29:39 +02:00
michele 04632ea71f Add DMT6007LFG-7, TPS2121RUXR, Lattice ECP5 FPGA symbols; fix quoted 3D model path check
- 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.
2026-09-02 20:35:53 +02:00
michele 58185c2215 Add ADG936BCPZ, OSD32MP157F-1G-BAA, TPS22965DSGR, AXP2101; add programmatic API and usage guide
- 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
2026-08-30 14:50:08 +02:00
micheleandClaude Sonnet 5 019dfcd450 Replace FSC-BT1058 footprint with FSC-BT1035 pad geometry; move to rf category
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>
2026-08-24 20:58:41 +02:00
micheleandClaude Sonnet 5 c544db45f4 Add ESD9B5.0ST5G, PESD5V0L4UW, TPD2E007DCKR, TPS22994RUKT; fix FSC-BT1058 duplicate library registration
FSC-BT1058 had ended up with two footprint/symbol libraries on disk
(FSC-BT1058 and MIKILAB_FSC-BT1058) after a re-import baked the
"MIKILAB_" nickname prefix into the component name itself. Since that
prefix is normally added automatically when sym-lib-table/fp-lib-table
are generated, the double-prefixed copy (MIKILAB_MIKILAB_FSC_BT1058)
was invisible to collision checks and left the original as a stale,
outdated duplicate.

Consolidated onto the single correct library (symbols/other and
footprints/other without the redundant prefix, matching the rest of
the library's naming convention), fixed the symbol's Footprint
property and the footprint's 3D model reference, and regenerated both
lib-tables from disk.

To stop this class of bug from recurring:
- lib_common.check_component_name() rejects any --name that already
  starts with "MIKILAB", used by import_component.py's import_symbol/
  import_footprint (and therefore also by add_component.py and the
  SnapEDA/UltraLibrarian importers, which call into the same core).
- check_library.py now flags any on-disk symbol/footprint whose name
  already carries that prefix as an ERROR, independent of how it got
  there.
- import_component.py gains --remove to cleanly delete a component
  (symbol, footprint library, 3D model) and regenerate the lib-tables
  in one step, for exactly this kind of cleanup.

Errors: 0 on check_library.py after the fix.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-24 20:06:54 +02:00
micheleandClaude Sonnet 5 db364598ad Add --update flag to importer scripts; update XTAC5212IRGER to newer UL export
The importers previously refused to touch an already-imported component by
design, which meant re-importing an updated UltraLibrarian/SnapEDA zip for
the same part-number errored out. Add --update to import_component.py's
import_symbol/import_footprint (and thread it through import_snapeda.py and
import_ultralibrarian.py) so an existing symbol/footprint can be replaced
in place instead, with the manifest recording it as UPDATED rather than NEW.

Used it to refresh XTAC5212IRGER from a newer UltraLibrarian download
(single-unit symbol layout vs. the previous split power/signal units;
same 29 pins).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-20 11:22:30 +02:00
micheleandClaude Sonnet 5 a4a20822bf Add ADG936BRUZ, SJ-series connectors, SN74AXC1T45DBVR, XTAC5212IRGER; add UltraLibrarian importer
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>
2026-08-20 09:50:13 +02:00
micheleandClaude Sonnet 5 3c22a3b948 Add BQ25896RTWT, 25AA1024, and CDCLVC1102PW via import_snapeda.py
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-18 01:35:43 +02:00
michele 5189f34882 Add TS3425UA-3x4x2.5-160 SMD tactile switch
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.
2026-08-17 00:12:30 +02:00
michele 626f141007 Add real FSC-BT1035 footprint, reconstructed from DigiRadio's EasyEDA project
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.
2026-08-16 17:03:27 +02:00
michele 8d37069c3b Import TLV320AIC3104IRHBR via import_snapeda.py
TI stereo audio codec, imported from a SnapEDA KiCad export zip
(symbol + QFN50P500X500X100-33N footprint + STEP 3D model).
2026-08-16 15:53:03 +02:00
michele 1b52535795 Import RTL8211F-CG via import_snapeda.py
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.
2026-08-16 15:48:07 +02:00
michele dbe1b71898 Add Si4684-A10-GM and FSC-BT1035 symbols, add SnapEDA import script
Si4684-A10-GM (Skyworks FM/DAB/DAB+ receiver): extracted from unmerged
kicad-symbols MR !4782 (cannot_be_merged, failing pipeline), then
independently validated with kicad-cli and cross-checked against two
unrelated sources (Skyworks public product summary block diagram, and
PE5PVB/SI4684-DAB-Receiver's built/fabricated symbol) -- all comparable
pin names/numbers agree. Symbol only, standard Package_DFN_QFN
footprint.

FSC-BT1035 (Feasycom BT 5.2 audio module): hand-authored from the
official Feasycom datasheet's Table 3-2 pin definition (all 52 pins),
validated with kicad-cli. Symbol only -- no reliable footprint/3D
source was found; see README for what was tried and how to add one
later (manvalan/DigiRadio has a fabricated footprint for this exact
part, but its geometry lives in EasyEDA's proprietary JSON format).

scripts/import_snapeda.py: unzips a SnapEDA "Download KiCad" export and
hands off to import_component.py's existing core logic (same
validation/collision/lib-table rules as every other import path).
2026-08-16 15:44:47 +02:00
michele b2396aed0e Import 19 official Espressif modules, replace easyeda2kicad ESP32-S31
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.
2026-08-16 14:06:54 +02:00
michele 0caa76acc3 Import 11 chips from FreeDSP_ki-CAD_Libraries
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.
2026-08-16 13:56:44 +02:00
michele 93a521777d Initial commit: MIKILAB KiCad personal library
Self-contained KiCad library (symbols, footprints, 3D models, docs,
import/check tooling) with no dependency on kicad-personal-library.

- Fixed sym-lib-table/fp-lib-table: single (version 7) header, one entry
  per library, MIKILAB_<name> nicknames, ${KIPRJMOD}-relative URIs
- Resolved the SOT95P280X145-5N footprint collision (TPS7A2012PDBVR vs
  TPS7A2018PDBVR): confirmed byte-identical modulo KiCad's internal
  tedit timestamp, unified into one shared footprint
- Resolved a case-insensitive filename collision between the official
  Diode.kicad_sym and a custom diode.kicad_sym
- Wrapped standalone footprints (ESP32-S31-WROOM-3, IC_TPS63020DSJT,
  SOT95P280X145-5N) into their own .pretty libraries so they're
  actually registered in fp-lib-table
- Fixed broken symbol->footprint references (including one pointing at
  a nonexistent easyeda2kicad library)
- Added scripts/check_library.py, import_component.py, add_component.py,
  import_batch.py, and lib_common.py
2026-08-16 13:08:59 +02:00