Skip to content

OpenServoCore/open-servo-core

OpenServoCore logo

OpenServoCore

An open platform for turning cheap servos into smart actuators.

OpenServoCore (OSC) is open hardware and firmware that drops a CH32V006 control board into a $2-3 cloned hobby servo (SG90 and friends) and turns it into a DXL-style smart actuator — position feedback, current sensing, bus-addressable, programmable.

The thesis is the price point: at mass-production volume, an OSC swap board should add no more than ~$1 to the BOM of a cloned servo. Cheap enough that "upgrade every servo in a robot to smart" stops being a premium decision and starts being a default.

Status

In active development. Nothing here is shippable yet. The firmware is being rewritten, the dev board is validated and integrating with firmware, and the swap board is designed but not spun.

  • OSC Dev CH32 (osc-dev-v006) — Rev B validated. Firmware integration ongoing.
  • OSC SG90 CH32 (sg90-prod-ch32v006) — designed, not spun. Waiting on firmware v2 to be testable against.
  • Firmware v1 (firmware-old/) — legacy. First pass was vibe-coded and got poor Reddit feedback. Kept as historical reference; not a target for new work.
  • Firmware v2 (rewrite) — in progress.
  • tinyboot (OSC bootloader) — v0.4.0 shipped. Lives at OpenServoCore/tinyboot.

Repo map

open-servo-core/
├── hardware/
│   ├── boards/
│   │   ├── osc-dev-v006/             # OSC Dev CH32 — has its own README with pinouts, jumpers, bringup notes
│   │   ├── sg90-prod-ch32v006/       # OSC SG90 CH32 swap board (designed, not spun)
│   │   ├── servo-dev-board-stm32f301/# Retired hobby-phase STM32 dev board (legacy)
│   │   ├── encoder-board/            # Optional quadrature encoder breakout for J8 experiments
│   │   └── motor-mount/              # 3D-printable test fixtures
│   ├── shared.kicad_sym / shared.pretty / shared.3dshapes  # Shared KiCad libraries
│   └── templates/                    # KiCad project templates
├── firmware/                         # Firmware v2 lives here once the rewrite starts
└── firmware-old/                     # Legacy firmware (do not use)

The OSC bootloader, tinyboot, is a separate repo. It's part of the OSC firmware stack but versioned and released independently — its chip-support matrix (V003 / V00x / V103) is broader than the OSC boards on purpose.

Naming

OSC boards follow OSC <Form> <ChipFamily>:

  • OSC Dev CH32 — dev board, exposes every rail and signal for firmware bringup. Directory: osc-dev-v006.
  • OSC SG90 CH32 — swap board that physically replaces the SG90 factory PCB. Directory: sg90-prod-ch32v006.

Engineering SKUs (osc-<form>-<chip>-rev-<letter>) appear in BOMs and schematic title blocks; the names above are what you'll see in posts and docs.

Hardware

OSC standardizes on the CH32V006 — 48 MHz RISC-V, 62 KB flash, 8 KB RAM. Chosen because it's the chip that makes the ≤$1 BOM uplift work. No multi-chip roadmap; one chip, done well.

Each board has its own README with full schematics, pinouts, jumper behaviour, and bringup notes:

  • OSC Dev CH32 — accepts any gutted hobby servo, USB-C / 1S-2S LiPo / WCH-LinkE power, full edge test-point fanout. Rev B validated.
  • OSC SG90 CH32 — compact swap board, 10×12.5 mm, double-sided. Designed; not yet spun.

Firmware

The Rust firmware is mid-rewrite. The legacy firmware-old/ tree contains the original architecture (multi-crate workspace targeting STM32F301 and partly CH32V003) and is kept for reference, but the v2 rewrite starts from a cleaner architecture targeting CH32V006 first. Plan: DXL-compatible register table, persistence, control loops, safety features.

Build instructions will appear here as the rewrite matures.

Contributing

This is early — the most useful thing right now is following along and asking questions, not opening PRs.

  • Discussions: github.com/OpenServoCore/open-servo-core/discussions — design questions, ideas, "is this on the roadmap?" go here.
  • Build journey: posts at aaronqian.com document the design decisions, dead ends, and what shipped each week.
  • Issues: open ones on this repo are scoped to specific work (README, LICENSE, board revisions). Pre-firmware-v2, contributor scope is small.

Hardware sponsorship

Dev boards are fabricated and assembled by PCBWay — sponsor since Feb 2026.

Rev A

Five PCBA boards delivered. Build and assembly quality clean across all five — no fabrication issues. Bring-up turned up design issues on my side (VDD/VSS swap, silkscreen errors), but those traced back to my own schematic, not the manufacturing. The process itself was painless. A late BOM swap (RS1 shunt 100 mΩ10 mΩ) was accepted without fuss; the pre-fab assembly review caught a pad-clearance concern before manufacturing.

Full spin + bring-up writeup: CH32V006 dev board first spin.

Rev B

Five PCBA boards delivered, May 2026. Validated. PCBWay's pre-fab manufacturability review flagged nothing, and build/assembly quality was again clean. A small bug found in the sponsored boards (shared nRST / OPN2 pin) didn't warrant another validation round — patched in-rev with a solder bridge. The published files include the patch.

Reference design available as a PCBWay community project for one-click ordering.

License

OSC is fully open. No dual licensing, no commercial gates.

  • FirmwareMIT OR Apache-2.0, at your option (Rust ecosystem convention).
  • Hardware (schematics, layouts, board files) — CERN-OHL-P v2.0.

About

The goal of this project is to create an open servo controller board and firmware.

Topics

Resources

License

Apache-2.0 and 2 other licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
CERN-OHL-P-2.0
LICENSE-HARDWARE
MIT
LICENSE-MIT

Stars

Watchers

Forks

Contributors

Languages