> ## 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.

# VESC Firmware

> Open source motor controller firmware for BLDC, FOC, and DC motors running on STM32-based VESC hardware.

<CardGroup cols={2}>
  <Card title="Quickstart" icon="rocket" href="/quickstart">
    Build and flash your first VESC firmware in minutes.
  </Card>

  <Card title="Supported Hardware" icon="microchip" href="/supported-hardware">
    See all supported VESC boards and hardware variants.
  </Card>

  <Card title="Motor Control" icon="bolt" href="/motor-control/overview">
    FOC, BLDC, and DC motor control modes explained.
  </Card>

  <Card title="LispBM Scripting" icon="code" href="/lispbm/introduction">
    Write custom Lisp scripts that run directly on the VESC.
  </Card>
</CardGroup>

## What is VESC Firmware?

VESC Firmware (`vedderb/bldc`) is the open source firmware powering the VESC motor controller family. Originally designed for electric skateboards, it now drives robots, e-bikes, electric vehicles, CNC systems, and countless other motor-driven applications.

The firmware runs on STM32F4 microcontrollers and supports a wide range of motor types and control algorithms:

* **FOC (Field Oriented Control)** — smooth, efficient sinusoidal control with sensorless, Hall sensor, and encoder feedback
* **BLDC** — trapezoidal commutation for high-speed, lower-overhead control
* **DC motor** — support for brushed DC motors

## Key features

<CardGroup cols={3}>
  <Card title="FOC Motor Control" icon="wave-sine">
    Sensorless and sensored FOC with HFI startup assist, field weakening, and MTPA optimization.
  </Card>

  <Card title="CAN Bus Networking" icon="network-wired">
    Connect multiple VESC devices over CAN bus for coordinated multi-motor control.
  </Card>

  <Card title="LispBM Scripting" icon="brackets-curly">
    Run sandboxed Lisp programs on the VESC itself for custom control logic.
  </Card>

  <Card title="Multiple Encoders" icon="rotate">
    ABI, AS504x, SinCos, BiSSC, PWM, MA782, and more encoder types supported.
  </Card>

  <Card title="IMU Support" icon="compass">
    Integrated IMU support for BMI160, ICM20948, LSM6DS3, and MPU9150.
  </Card>

  <Card title="Broad Hardware Support" icon="server">
    Trampa, FlipSky, MakerX, Ubox, Luna, StormCore, and many more boards.
  </Card>

  <Card title="Input Applications" icon="gamepad">
    PPM, ADC, UART, Nunchuk, PAS, and custom application support.
  </Card>

  <Card title="USB & UART Comms" icon="usb">
    Full VESC protocol over USB and UART for integration with VESC Tool.
  </Card>

  <Card title="Open Source" icon="code-branch">
    GPLv3 licensed. Community-driven development with hundreds of contributors.
  </Card>
</CardGroup>

## Getting started

<Steps>
  <Step title="Check your hardware">
    Identify your VESC board variant. Run `make` in the source directory to see all supported targets.
  </Step>

  <Step title="Install prerequisites">
    Install `git`, `make`, and optionally the ARM SDK by running `make arm_sdk_install`.
  </Step>

  <Step title="Build the firmware">
    Run `make <target>` — for example `make 100_250` for the VESC 100/250.
  </Step>

  <Step title="Flash to your VESC">
    Upload via VESC Tool (USB) or flash directly using an SWD debugger with `make <target>_flash`.
  </Step>
</Steps>

## Community

* [VESC Project Forum](https://vesc-project.com/forum) — get help and share builds
* [Discord Server](https://discord.gg/JgvV5NwYts) — real-time chat and support
* [GitHub Repository](https://github.com/vedderb/bldc) — source code and issue tracker
