Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/vedderb/bldc/llms.txt

Use this file to discover all available pages before exploring further.

Introduction

VESC firmware is an open source motor controller firmware developed by Benjamin Vedder. It runs on a wide range of STM32-based hardware targets and supports DC, BLDC, and FOC (Field-Oriented Control) motor control modes. The project lives at github.com/vedderb/bldc and is licensed under the GNU General Public License v3.0.

What VESC solves

Controlling brushless motors well requires precise, real-time current and position sensing, configurable protection limits, and a reliable communication layer. VESC firmware provides all of this in a single, auditable codebase:
  • Field-Oriented Control (FOC) — smooth, efficient torque control with sensor or sensorless operation
  • BLDC mode — traditional six-step commutation for simpler setups
  • DC motor support — for brush motor applications
  • CAN bus networking — chain multiple controllers together with a single CAN cable
  • Extensive protection — over-current, over-voltage, over-temperature, and configurable hardware limits
  • Custom UI support — embed QML interfaces directly into VESC Tool via conf_general.h
  • Open hardware abstraction — a clean hwconf/ layer makes porting to new boards straightforward

Who it is for

Hobbyists

Build electric skateboards, scooters, and DIY e-bikes. Dozens of off-the-shelf boards are supported out of the box.

Engineers

Integrate VESC firmware into robotics, industrial actuators, and custom hardware using the documented hardware abstraction layer.

EV builders

High-voltage targets such as the Trampa 100/500 and Ubox 126V handle serious electric vehicle drivetrains.

Project structure

The repository is organized as follows:
bldc/
├── hwconf/              # Hardware configuration files, one folder per manufacturer
│   ├── trampa/          # Trampa boards (VESC 6, 75/300, 100/250, 100/500, …)
│   ├── vesc/            # VESC-branded boards (Basic, Classic, Duet, Maxim, …)
│   ├── flipsky/         # Flipsky 75/100, 75/300 community boards
│   ├── flipsky_official/# Flipsky V4, V6, 110-series official boards
│   ├── makerx/          # MakerX GO-FOC series
│   ├── Ubox/            # Ubox 75V, 100V, 126V controllers
│   ├── stormcore/       # Stormcore 60D, 100D, 100S
│   ├── shaman/          # Cheap FOCer 2, Little FOCer series
│   ├── teamtriforceuk/  # A50S, A100S, A200S series
│   └── …                # Many more manufacturers
├── conf_general.h       # Global firmware configuration and version defines
├── datatypes.h          # Core data types shared across the firmware
├── mcconf_default.h     # Default motor controller configuration
├── appconf_default.h    # Default application configuration
├── Makefile             # Build system entry point
├── make/                # OS-specific and toolchain makefiles
├── tools/               # Downloaded toolchain (ARM GCC, Qt)
└── build/               # Compiled firmware output
The firmware version is defined in conf_general.h:
#define FW_VERSION_MAJOR        7
#define FW_VERSION_MINOR        00
Every hardware target provides a hw_<target>.h header and a hw_<target>.c source file. The build system discovers all targets automatically by scanning hwconf/ for hw_*.h files.

Where to go next

Quickstart

Clone the repo, install the ARM toolchain, build your first firmware image, and flash it to your controller.

Supported hardware

Browse the full list of supported boards grouped by manufacturer.

Motor control

Learn about FOC, BLDC, and DC control modes and how to tune them.

Communication

CAN bus, UART, USB, and the VESC serial protocol.
The VESC community is active on the VESC Project forums and on Discord. Both are good places to ask hardware-specific questions.

Build docs developers (and LLMs) love