Every VESC firmware build is tied to a specific hardware target. The hardware configuration system uses two preprocessor macros —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.
HW_SOURCE and HW_HEADER — to inject the correct pin assignments, peripheral configuration, and electrical limits for a given board at compile time.
How hardware config files work
The build system passesHW_SOURCE and HW_HEADER as compiler -D defines. conf_general.h enforces that both are set before any other headers are included:
hw.h then includes the board header through the macro:
HW_HEADER must expand to a quoted string containing the path to a .h file, for example "hwconf/trampa/vesc6/hw_vesc6.h". The HW_SOURCE macro works the same way for the corresponding .c file.
After including the board header, hw.h conditionally pulls in the appropriate gate driver header based on which driver the board declares:
HW_NAME, which is required. If it is missing, the build fails immediately:
hw.h also provides safe defaults for any optional macros a board does not define — for example gate control, phase filters, temperature sensors, and current measurement. A board only needs to override the macros that differ from the defaults.
Hardware types
Every board belongs to one of three hardware types defined indatatypes.h:
HW_TYPE_VESC. BMS boards that run VESC firmware use HW_TYPE_VESC_BMS. Custom peripheral modules use HW_TYPE_CUSTOM_MODULE.
Supported boards by manufacturer
All hardware configuration files live underhwconf/. Each manufacturer has its own subdirectory.
Trampa
Trampa
The primary VESC hardware designer. Configurations are in
hwconf/trampa/.| Target | Directory |
|---|---|
| VESC 6 | trampa/vesc6/ |
| VESC 6 GP | trampa/vesc_gp/ |
| VESC EDU | trampa/vesc_edu/ |
| 60/75 | trampa/60_75/ |
| 60 Alva | trampa/60_alva/ |
| 75/300 | trampa/75_300/ |
| 75/300 MKIV | trampa/75_300_MKIV/ |
| 100/250 | trampa/100_250/ |
| 100/250 MKIII | trampa/100_250_MKIII/ |
| 100/500 | trampa/100_500/ |
| 140/300 | trampa/140_300/ |
| HD | trampa/hd/ |
| RB | trampa/rb/ |
| Sparkf | trampa/sparkf/ |
| STR500 | trampa/str500/ |
VESC
VESC
Official VESC boards. Configurations are in
hwconf/vesc/.| Target | Directory |
|---|---|
| Basic | vesc/basic/ |
| Classic | vesc/classic/ |
| Classic P | vesc/classicp/ |
| Duet | vesc/duet/ |
| Duet XS | vesc/duet_xs/ |
| Maxim | vesc/maxim/ |
| Maxim P | vesc/maximp/ |
| Minim | vesc/minim/ |
| Pronto | vesc/pronto/ |
| STR365 | vesc/str365/ |
FlipSky
FlipSky
Configurations are in
hwconf/flipsky/.| Target |
|---|
hw_75_100 |
hw_75_100_V2 |
hw_fsesc_75_200_alu |
hw_fsesc_75_300 |
| No-limits variants for each board |
FlipSky Official
FlipSky Official
Additional official FlipSky boards in
hwconf/flipsky_official/.MakerX
MakerX
Configurations are in
hwconf/makerx/.| Target |
|---|
hw_go_foc_dv6_pro |
hw_go_foc_g300 |
hw_go_foc_hi200 |
hw_go_foc_hv200 |
hw_go_foc_m100 |
Makerbase
Makerbase
Configurations are in
hwconf/makerbase/.| Target | Directory |
|---|---|
| 75/100 | makerbase/75_100/ |
| 75/100 V2 | makerbase/75_100_V2/ |
| 75/200 V2 | makerbase/75_200_V2/ |
| 100/300 HP | makerbase/100_300_HP/ |
| 84/100 HP | makerbase/84_100_HP/ |
| 84/200 HP | makerbase/84_200_HP/ |
StormCore
StormCore
Configurations are in
hwconf/stormcore/.| Target | Directory |
|---|---|
| 60D | stormcore/60D/ |
| 100D | stormcore/100D/ |
| 100S | stormcore/100S/ |
Ubox
Ubox
Configurations are in
hwconf/Ubox/.Luna
Luna
E-bike motor controllers. Configurations are in
hwconf/luna/.| Target | Directory |
|---|---|
| BBSHD | luna/bbshd/ |
| M600 | luna/m600/ |
ENNOID
ENNOID
Configurations are in
hwconf/ENNOID/.| Target | Directory |
|---|---|
| MK8 | ENNOID/MK8/ |
Other boards
Other boards
Additional boards in
Community boards from
hwconf/other/:| Target |
|---|
hw_axiom |
hw_gesc |
hw_mbot |
hw_r2 |
hw_raiden7 |
hw_spesc |
hw_unity |
hw_warrior6 |
VESC 4 (other/vesc4/) |
hwconf/fungineers/, hwconf/ipm/, hwconf/itr/, hwconf/JetFleet/, hwconf/repas/, hwconf/shaman/, hwconf/teamtriforceuk/, and hwconf/tronic/ are also included.Selecting hardware at build time
The top-levelMakefile automatically discovers all hw_*.h files under hwconf/ and generates a build target for each one. To see all available targets, run:
[Firmware].
To build for a specific board, use the fw_<board> pattern:
PROJECT directly:
Some boards have a
_no_limits variant (for example hw_75_100_no_limits.h). These disable the hardware safety limits on configuration parameters. They are intended for advanced use cases such as testing. The DISABLE_HW_LIMITS define sets FW_NAME to "no_hw_limits" to make it visible in VESC Tool.