
Freerouting rejected-3-opens In1
okbrainhq/sMove
Applied to power.kicadsch, compute.kicadsch and smove-r2-main.kicadsch:

Applied to power.kicadsch, compute.kicadsch and smove-r2-main.kicadsch:
Smove r2-main is an open-source printed circuit board by okbrainhq, from the okbrainhq/sMove repository on GitHub, published under the MIT licence. It is a 4-layer board of 25 × 30 mm with 53 parts on 72 nets, routed with 426 tracks and 85 vias.
It is built around the ESP32-C3-MINI-1-N4, AP2112K-1.8TRG1 and BQ24074RGTR, with the ICM-20948, PCA9306DCUR and PESD5V0S2BT,215-JSM among its other parts. Its parts include 23 resistors, 12 capacitors, 8 ICs, 3 switches and 2 connectors. It belongs with the ESP32 and RISC-V boards of this library.
Applied to power.kicad_sch, compute.kicad_sch and smove-r2-main.kicad_sch:
PACK_P node. Schematic symbol uses the same 2.54 mm two-pad wire footprint as J2 (smove-r2-main:BatteryWire_2x_PTH_P2.54mm_D1.0mm), in_bom no (user-supplied off-board part: ≥0.5 A rating, contacts <50 mΩ, ≥6 V DC). Net split: /Power/PACK_RAW = J2.1 + SW1.2, /Power/PACK_P = SW1.1 + C2.1 + R14.1 + U6.2 + U6.3. This provides the True OFF that docs/revision-r2/integrated/RADIO-BATTERY.md records as missing./CHG_N net — charger status to the MCU. Charger open-drain CHG_N (U6 pin 9) is pulled up to 3V3_MAIN and routed to U1 pad 20 = GPIO6; /CHG_N = U6.9 + R24.2 + U1.20. New sheet pin added to both the Power and Compute sheet symbols.AP2112K-3.3TRG1. The SOT-25 pin map 1=VIN 2=VSS 3=CE 4=NC 5=VOUT is the same function map as the AP2112K SOT-23-5 it replaces, so no rewire and no pad remap was needed. New footprint assets/smove-r2-main.pretty/SOT-25_XC6220.kicad_mod (JEDEC MO-178 Var AA land pattern, identical geometry to SOT-23-5); the SW1 symbol was added to assets/smove-r2-main.kicad_sym.J2 was moved down 10.16 mm on the sheet only (cosmetic, no connectivity change) to make room for SW1.Verification (KiCad 9.0.8): kicad-cli sch erc reports 0 violations — identical to the HEAD baseline, and kicad-cli sch export netlist confirms the three nets above.
Deliberately not done — no PCB change and no routing. The board still carries the AP2112K SOT-23-5 at U4 (its footprint field now differs from the schematic) and has no SW1/R24 footprints, so a forward update (F8) plus manual placement is required before parity is restored. dist/ and the enclosure data remain stale and must be regenerated (python3 scripts/jlcpcb/export.py PCB/main --overwrite) after the board is updated. Engineering prototype — no charge or fabrication approval.
All project-local KiCad libraries and models now live under assets/ (moved from the project root; content byte-identical apart from the references below):
| Path | Contents |
|---|---|
assets/smove-r2-main.pretty/ | main footprint library (nickname smove-r2-main) |
assets/imu.pretty/ | integrated-IMU footprint library (nickname imu) |
assets/smove-r2-main.kicad_sym, assets/imu.kicad_sym, assets/Device.kicad_sym, assets/power.kicad_sym | project-local symbol libraries |
assets/imu-models/ | local STEP models, referenced as ${KIPRJMOD}/assets/imu-models/... |
fp-lib-table/sym-lib-table stay at the project root and point at ${KIPRJMOD}/assets/.... Schematic sheets, project/design-rule files and dist/ are untouched; only the U2 3D-model path (in the board and in assets/imu.pretty/InvenSense_QFN-24_3x3mm_P0.4mm.kicad_mod) changed text.
Verified with KiCad 9.0.8: the board reloads with the same 47 footprints, 461 tracks and 7 zones; DRC reports 0 violations / 0 unconnected / 0 schematic-parity (the DRC library check covers footprint-library resolution), ERC reports 0 violations, and all four symbol libraries parse and still contain every referenced symbol. Historical ECO scripts under scripts/r2/ (for example integrated/migrate.py, integrated/layout.py) still name the pre-move project-root paths; they are documented as destructive historical helpers and must not be rerun on this board.
Status note: the headings below describe earlier working states. DRC on the currently saved smove-r2-main.kicad_pcb reports 0 violations, 0 unconnected items and 0 schematic-parity issues, and no footprint origin lies outside the board outline, so the "UNROUTED / components staged" wording below is stale and has not been rewritten here.
Three plated 3.2 mm M3 clearance holes were added to the three free board corners, each with a 5.0 mm grounded copper ring on all four copper layers:
| Ref | Corner | Centre (native mm) | Hole | Ring | Net |
|---|---|---|---|---|---|
| H1 | top-left | 103.20, 103.20 | 3.2 mm plated | 5.0 mm Ø, 0.90 mm annular, mask open | GND |
| H2 | bottom-left | 103.20, 126.80 | 3.2 mm plated | same | GND |
| H3 | bottom-right | 121.80, 126.80 | 3.2 mm plated | same | GND |
smove-r2-main:MountingHole_3.2mm_M3_Pad_5mm lives in
assets/smove-r2-main.pretty/. It is a reduced-ring variant of KiCad's
MountingHole:MountingHole_3.2mm_M3_Pad: that part's 6.4 mm pad needs 3.45 mm of
board-edge clearance and does not fit any corner of this board. 5.0 mm is the largest
ring that keeps ≥0.25 mm copper-to-edge (actual 0.70 mm), ≥0.15 mm foreign-net
clearance (actual 0.44/1.10/0.81 mm) and a non-overlapping courtyard (actual
0.26/0.41/0.33 mm, courtyard = the 5.5 mm M3 head envelope) at all three positions.board_only, excluded from BOM and position files, no schematic symbol: mounting
hardware is not a purchased or placed part, and schematic parity stays 0.bom.csv and pick_and_place.csv are
byte-identical; the Gerbers gain only the three 5.0 mm rings and their mask openings,
and the PTH drill gains one T4C3.200 tool with three hits.verification.json; reproduce with python3 scripts/r2/final/m3_mounting_holes.py --check --geometry and python3 scripts/r2/m3-mounting-holes/verify.py.housing/ is still the screwless
revision (no bosses, threads or inserts); it needs a companion revision before M3
hardware is usable. Physical fit, torque and the RF effect of the new metal near the
ESP32-C3 antenna are unqualified.All 46 assembled parts still carry verified LCSC+MPN fields, and the export
(python3 scripts/jlcpcb/export.py PCB/main) now also reflects these changes; see the
change record and its
verification.json, renders and live BOM audit.
F.Fab.
F.Fab is not part of the Gerber set, so JLCPCB's placement preview showed the module
as bare 0.4 mm pads — that is why it "did not line up" there. The body outline is now
copied to F.SilkS, clipped at the 100.0 mm board edge where the module overhangs,
and the F.Fab corner chamfer is deliberately not copied (it crosses the left anchor pad).F.Fab — so the same problem applied. Its shell sides and pad-side end are now on
F.SilkS, offset past the S1 shell pads and clipped at the board-edge notch.assets/smove-r2-main.pretty/*.kicad_mod), so the DRC library check stays clean.C29277 (22 µF 10 V, Extended, $3 setup fee) to C45783
(22 µF 25 V X5R 0805, Basic). Every other resistor and capacitor is already
Basic/Preferred Extended and therefore fee-free, including R21 (C25924); the
estimated extended-part fee drops from $33.00 to $30.00, and the remaining charge is
the ten design-fixed actives.Verification: DRC 0 violations / 0 unconnected / 0 schematic-parity, ERC 0, added
silk keeps ≥0.17 mm to the nearest pad (board rule 0.10 mm), F_Silkscreen.gto gains 36
draw commands, bom.csv differs only in the C3 row and pick_and_place.csv is
byte-identical. C45783's pocket-height check and a fresh DC-bias screen are still open.
/usr/bin/python3 scripts/jlcpcb/export.py PCB/main (add --overwrite to refresh an existing
set) writes dist/jlcpcb/: gerber.zip (all four copper layers, masks, silkscreen, paste, edge
cuts, separate PTH/NPTH millimetre drills), bom.csv, pick_and_place.csv and
export-report.json. See the export tool documentation.
LCSC field,
together with MPN, on both the schematic symbols and the board footprints. The verified
numbers are recorded in main-parts.csv and
stock.json. J2 (the two plated battery wire holes) is
intentionally PCB-only and excluded from both BOM and CPL.housing/
remains a separate historical snapshot.All 47 schematic footprints are now present. U1 (ESP32), J1 (USB-C), U2 (IMU), and J2 (battery +/− holes) retain their poses and geometry. The other 43 footprints are staged outside the board to the right for manual placement. No tracks or vias were added.
The reported dialog was Update Schematic from PCB, the reverse direction. Use Tools → Update PCB from Schematic (F8) to bring schematic components into the board. The four old footprint paths also contained an extra root-sheet UUID; one reference-based re-link repaired them without replacing or moving the footprints. Re-link is now off for normal updates. A repeat forward-update preview reports 0 errors and 0 warnings, without duplicate additions. KiCad also repaired duplicate pad UUIDs on save; all pad geometry/nets and footprint UUIDs remain unchanged.
Update verification: 0 schematic-parity issues, 148 expected unconnected items, and one pre-existing J2/U1 courtyard overlap, left unchanged to preserve both fixed positions. Schematics and design rules on disk are unchanged. The latest saved zone state was preserved: five rule areas and one filled In1 GND plane; the earlier six-unfilled-zone reset below is historical. Not for manufacture or charging; exports remain stale.
Only U1 (ESP32), J1 (USB-C), U2 (IMU), and J2 (battery +/− through-hole pads) remain in the PCB layout, with their complete footprint definitions, positions, orientations and pad/net assignments unchanged. The other 43 footprints were deleted from the PCB only; all schematic sheets and project/rule files remain unchanged.
Removed 500 track segments, 124 vias, and all 38 cached copper-fill polygons. All six copper-zone definitions are retained unfilled, including In1 GND and the In2 GND / 3V3_MAIN / PACK_P regions. Board outline, stackup, drawings and all keepouts are unchanged. This is actual copper removal, not merely hidden pours.
Verification: exact-token preservation check and native board load pass; native DRC reports 0 geometric violations, 45 intentionally unconnected items, and 43 expected missing-footprint parity warnings, plus the existing J2 library-footprint mismatch warning. Previous routed-board acceptance scripts/reports below are historical and are not acceptance criteria for this reset. Not for fabrication/assembly/charging; existing exports and enclosure placement data are stale.
For manual placement, open smove-r2-main.kicad_pro in KiCad and use Update PCB from Schematic (F8) when ready to re-add the missing footprints. Do not delete their schematic symbols. The standalone PCB Editor has this command disabled; launch the editors through the project. J2 was restored verbatim from the pre-reset board at the user’s request, retaining both battery +/− holes. The other 43 missing components have not been re-added or parked outside the board.
See the routing completion and plane-selection evidence. The user's rotated-U8 USB routing is preserved, remaining nets are connected on F.Cu/B.Cu, In1 is continuous GND, and In2 has bounded 3V3_MAIN / PACK_P power regions with GND elsewhere. C7 alone is rotated 180° to fix its isolated ground connection; other placements, pad nets and keepouts are unchanged.
Fresh native checks: 0 DRC errors, 0 unconnected items, 0 schematic-parity issues, 0 ERC violations; one existing J2 footprint-library warning. Reusable coordinate routing, via placement, rotation previews, explicit rip-up and cleanup tools are documented in scripts/pcb_tools. Run /usr/bin/python3 scripts/r2/main-routing/verify.py for current acceptance checks.
Not released for fabrication or charging. USB impedance, current/thermal margins and return paths still need engineering review. Some low-speed paths take long perimeter detours. dist/ and the enclosure are stale; no manufacturing exports were regenerated.
See the placement revision and researched routing strategy. U1, USB, battery pads, outline and both M3 reserved positions are unchanged. The LED/buttons are upper-left, charger/regulator parts are together beside USB, and U2 remains at X112.5 with its original orientation, now at Y126.5. RED is reassigned from GPIO6 to GPIO3; GREEN=GPIO7 and BLUE=GPIO10 remain unchanged. Firmware must adopt the RED pin change.
Placement only: 152 unconnected items; zero tracks/vias. Obsolete routing was removed deliberately, not left connecting the wrong pads. Current zone definitions are retained but unfilled; the researched power-region strategy is not implemented yet. Placement geometry, ERC and schematic parity pass, with the existing J2 library-footprint warning. This is not a finished reroute or manufacturing/charging release. Existing dist/ and enclosure openings are stale.
Run /usr/bin/python3 scripts/r2/placement-routing/review.py for this revision's checks. Do not use the historical LED-only verifier or layout generators as current acceptance tests.
The LED routing update builds on the user's b155f03 routing setup. All RGB channels are connected, with D1 and every other footprint left in place. Top-left and bottom-right 6 mm clear disks are protected for future M3 hardware; no mounting holes were added. Fresh checks report 0 DRC errors, 0 unconnected items, 0 schematic-parity issues, with three unchanged pre-existing warnings.
The native PCB is authoritative. dist/ and the enclosure are older snapshots, not regenerated for this routing update. Do not use the older manufacturing bundle without regeneration and review. Run scripts/r2/main/verify_led_routing.py for current checks; do not run historical layout generators over this board.
Current: screwless revision. Not released for manufacture, assembly or charging.
dist/ is regenerated for this native PCB: Gerbers/drills, BOM/CPL, assembly PDF, board/installed-model STEP and renders. Conservative populated STEP uses exactly one instance per reference, no duplicate display copies. Missing vendor models remain limitations of installed-model renders.The native board is authoritative. Do not run legacy routing or historical sync tools over it. scripts/r2/screwless/pcb.py is the targeted, idempotent ECO/check entry; scripts/r2/screwless/verify.py compares against recorded aligned predecessor b8f2836ac2fb26fc0bf774b803c6613a79e66f1b. The enclosure uses insulated lands, optional adhesive and travel stops, not PCB or pouch clamping. Physical support/fit still needs qualification.
Historical PCB repair and button alignment retain their original scope. Current exports are indexed by dist/manifest.json.
| Qty | Value | Footprint | References |
|---|---|---|---|
| 5 | 100k | smove-r2-main:R_0402_1005Metric | R5, R14, R15, R24, R25 |
| 4 | 10k | smove-r2-main:R_0402_1005Metric | R7, R8, R9, R10 |
| 4 | 4.7k 1% | imu:R_0402_1005Metric | R16, R17, R18, R19 |
| 3 | 100n / 16V | imu:C_0402_1005Metric | C7, C8, C9 |
| 3 | 1k | smove-r2-main:R_0402_1005Metric | R11, R12, R13 |
| 3 | MountingHole_3.2mm_M3_Pad_5mm | smove-r2-main:MountingHole_3.2mm_M3_Pad_5mm | H1, H2, H3 |
| 2 | 100nF / 16V | smove-r2-main:C_0402_1005Metric | C4, C11 |
| 2 | 22R | smove-r2-main:R_0402_1005Metric | R3, R4 |
| 2 | 4.7u / 16V X5R | imu:C_0603_1608Metric | C5, C6 |
| 2 | 47uF / 6.3V | smove-r2-main:C_0805_2012Metric | C2, C13 |
| 2 | 5.1k | smove-r2-main:R_0402_1005Metric | R1, R2 |
| 1 | 10k B3435 NTC (cell-bonded) | smove-r2-main:NTC_0402_1005Metric | TH1 |
| 1 | 1uF / 25V | smove-r2-main:C_0402_1005Metric | C10 |
| 1 | 200k 1% | imu:R_0402_1005Metric | R20 |
| 1 | 22uF / 25V | smove-r2-main:C_0805_2012Metric | C3 |
| 1 | 4.7k | smove-r2-main:R_0402_1005Metric | R22 |
| 1 | 4.7uF / 16V | smove-r2-main:C_0603_1608Metric | C1 |
| 1 | 8.2k | smove-r2-main:R_0402_1005Metric | R21 |
| 1 | AP2112K-1.8TRG1 | imu:SOT-23-5 | U5 |
| 1 | BOOT / USER | smove-r2-main:TS1088 | SW3 |
| 1 | BQ24074RGTR | smove-r2-main:BQ24074_RGT | U6 |
| 1 | Battery wire pads 2x 2.54mm | smove-r2-main:BatteryWire_2x_PTH_P2.54mm_D1.0mm | J2 |
| 1 | ESP32-C3-MINI-1-N4 | smove-r2-main:ESP32-C3-MINI-1 | U1 |
| 1 | ICM-20948 | imu:InvenSense_QFN-24_3x3mm_P0.4mm | U2 |
| 1 | LTST-C19HE1WT / CA | smove-r2-main:LED_LiteOn_LTST-C19HE1WT | D1 |
| 1 | Off-board pack toggle switch (2x wire pads 2.54mm) | smove-r2-main:BatteryWire_2x_PTH_P2.54mm_D1.0mm | SW1 |
| 1 | PCA9306DCUR | imu:PCA9306_DCU0008A | U3 |
| 1 | PESD5V0S2BT,215 | smove-r2-main:SOT-23 | U9 |
| 1 | RESET | smove-r2-main:TS1088 | SW2 |
| 1 | TYPE-C-31-M-12 | smove-r2-main:USB_C_Receptacle_HRO_TYPE-C-31-M-12 | J1 |
| 1 | USBLC6-2SC6 | smove-r2-main:SOT-23-6 | U8 |
| 1 | XC6220B331MR-G | smove-r2-main:SOT-25_XC6220 | U4 |

okbrainhq/sMove
Applied to power.kicadsch, compute.kicadsch and smove-r2-main.kicadsch:

RobbyV2/smart_latch_lock
A self-closing bike lock built as a clamshell ring. A fixed arc bolts to the housing, a hinged arc swings 180 degrees to meet it, and a worm gearmotor closes the loop around the frame and rim on a button press or a BLE…


robocore-labs/link101-hardware
link101 is a multi-protocol USB interface board. One Type-C cable gives you CAN-FD, RS485, Dynamixel, Feetech, UART, I2C, and MIT Cheetah-protocol ports, all as stable Linux devices.

aminewe898/nexus-pear-reva
NEXUS PEAR Rev A hardware design, schematics, PCB, manufacturing review exports and engineering documentation

HeyPCB/whisker
Drop-in controller for Petoi's Nybble robot cat running the stock OpenCat firmware: ATmega328P, PCA9685, MPU-6050, USB-C, 3 A buck, protected battery input. 4-layer KiCad 10 board plus printed cradle.

weiiwang01/picard
PiCard is a miniaturized Raspberry Pi Compute Module carrier board optimized for Linux server use cases.


dubnubdubnub/Giris
open source 32 key/half (64 total) analog TMR split ortholinear keyboard w/ 8kHz USB HS
It measures 25 × 30 mm and has 4 copper layers, 1 mm thick.
53 parts, built around the ESP32-C3-MINI-1-N4, AP2112K-1.8TRG1, BQ24074RGTR and ICM-20948. 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.
From the okbrainhq/sMove repository on GitHub, at the commit this page was made from: the board is PCB/main/smove-r2-main.kicad_pcb and its schematic PCB/main/compute.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
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).