No knowledge base results found.
FAQs
FAQ
When changing CAN-mode to UAVCAN (DroneCAN) the VESC CAN protocol will be disabled. This means that VESC Tool can’t be used to configure and monitor ESCs or other VESC devices on the CAN-bus at the same time as UAVCAN is enabled. This is especially a problem on the Maxim, Pronto and Duet controllers as they access the STM32 using the ESP32 using VESC CAN. The later firmwares will therefore switch back to VESC CAN on reboot.
Earlier firmwares will not switch back on reboot, meaning that it is possible to lock yourself out from them (Maxim, Pronto and Duet) when changing to UAVCAN. If you have locked yourself out you can either try connecting using the UART-port with an USB-to-UART adapter and 115200 baudrate or you can use USB to reflash the STM32.
So, how do I use UAVCAN on Maxim, Pronto or Duet? Unfortunately we don’t have a good solution for that now. As it is now UAVCAN is not widely used among our customers (and VESC-users in general), but if it becomes more popular we will look into improving UAVCAN-support in the firmware. Pull-requests on github are always welcome of course!
The controllers have been tested and can reach the stated values for continuous and burst for a short period without additional cooling. As the current is regulated down as the controllers heat up, the controllers protect themselves from damage due to overheating. However, in order to maintain the stated continuous current and to maximize the burst current duration additional cooling is required. Especially the continuous current that can be maintained will be significantly lower without an additional heatsink or water cooling block.
FAQ
Yes. The VESC Dash16L display UI can be customized. The UI is source code is in a VESC Package that can be downloaded here:
https://github.com/vedderb/vesc_pkg/tree/main/dash16
Further documentation for LispBM scripting can be found here:
https://github.com/vedderb/bldc/blob/master/lispBM/README.md
The files in the package can be edited and adapted. Uploading the file main.lisp will load the update code.
FAQ
Yes. The Dash35B display UI can be customized. The UI is source code is in a VESC Package that can be downloaded here:
https://github.com/vedderb/vesc_pkg/tree/main/dash35b
Further documentation for LispBM scripting can be found here:
https://github.com/vedderb/bldc/blob/master/lispBM/README.md
The files in the package can be edited and adapted. Uploading the file main.lisp will load the update code.
Yes, we offer a discount for all customers when ordering 3+ and 10+ units which can be seen on selected products.
For order quantities over 25 units please follow the instructions on the request approval for a wholesale account page.
Once your account has been approved for wholesale, go to wholesale products which will show show the updated prices and lead times.
FAQ
Our partner Oliver, also known as Electricfox, offers paid consulting services for BMS and motor controller integration, setup, tuning and load testing. His website is
At the bottom of the page you can find different options to contact Oliver
On the Maxim and Pronto controllers the motor sensors and UART share the same pins, so the UART app must be disabled when using sensors. This will affect the Hall 2 input as that is where UART TX is. In Firmware 7+ this should be done automatically, but on older firmware the UART-app must be disabled manually.
FAQ
From Firmware 7.00 our controllers can be factory reset by connecting the SWCLK and Hall 2 together and booting the controller. This will restore the motor configuration, app configuration and erase all scripts. This can be useful if you have locked yourself out by e.g. setting an invalid CAN configuration or if you have a script that causes a crash or boot loop.
Note that controllers that are accessed using an VESC Express device (such as the Duet, Maxim and Maxim+) also need the ESP configuration to be restored. This can be done on the VESC Express tab in VESC Tool.
- Press “Read Default”
- Press “Write”

FAQ
They are in the VESC Package for the Dash35B, which can be downloaded from here:
https://github.com/vedderb/vesc_pkg/tree/main/dash35b
Further documentation for LispBM scripting can be found here:
https://github.com/vedderb/bldc/blob/master/lispBM/README.md
FAQ
FAQ
1. Profiles and Power Modes
If you’re not using a display, profiles can be configured and switched most easily through the VESC Tool mobile application.
You can create as many profiles as you want and configure each profile independently. For each profile you can set:
- Forward speed limit
- Reverse speed limit
- Motor current scaling (acceleration)
- Brake current scaling
The current scaling is applied as a percentage of the controller’s configured motor current. For example, if the controller is configured for 200A motor current and a profile uses a 50% current scale, the controller will allow up to 100A motor current while that profile is active.
This allows you to create profiles with different acceleration characteristics, power delivery and top speeds.
A typical setup could be:
- Legal road mode: 25 km/h speed limit with reduced current scaling
- Daily riding mode: moderate speed limit and moderate current scaling
- Performance mode: full speed and 100% current scaling
When a profile is selected, the new settings are applied immediately.
2. Speed Limiting and Legal Mode
Switching between a legal mode and an unrestricted mode is very straightforward.
The simplest approach is to create separate profiles with different speed limits and current scales. Selecting a profile instantly applies the corresponding limits.
For example:
- Legal Mode: 25 km/h, reduced acceleration
- Daily Mode: moderate speed and acceleration
- Performance Mode: unrestricted speed and full acceleration
Profiles can be selected directly from the VESC Tool mobile application while connected to the scooter.
To access the profiles menu in the mobile application, simply swipe across from the real-time data screen. Once a profile has been selected, you can swipe back to return to the live telemetry page.
For a faster and more convenient method, I would recommend the VESC Dash35B display.
The Dash35B includes dedicated “+” and “-” buttons which can be used to instantly switch between drive modes without needing to open the mobile application.
The display also provides clear visual confirmation of which mode is currently active.
3. Mobile Application Connectivity
The VESC Tool mobile application can remain connected to the scooter via Bluetooth while riding.
While connected you can monitor real-time information including:
- Vehicle speed
- Battery voltage
- Battery current
- Motor current
- Power output
- Controller temperature
- Motor temperature
- Energy consumption and other telemetry data
Profile changes can also be made through the app while connected, with changes taking effect immediately.
Bluetooth connectivity is generally stable during normal riding provided the phone remains within normal Bluetooth range.
It is also worth noting that all of the profile settings and controller configuration options available in the VESC Tool mobile application are also available in the VESC Tool desktop application. The desktop version is generally preferred during initial setup, tuning and advanced configuration due to the larger screen and easier access to all settings. However, for convenience while out riding, the mobile application is recommended as it provides the same functionality over Bluetooth while allowing live monitoring and profile changes directly from your phone.
4. Display Functionality
The Dash35B display has been specifically developed to provide a better riding experience than using a phone while travelling. While the VESC Tool mobile application is excellent for monitoring data, diagnostics and changing settings, the display provides a safer and more convenient interface for everyday riding.
Benefits include:
- Always-visible speed display
- Battery information
- Active drive mode indication
- Instant drive mode switching via dedicated buttons
- No need to remove your phone while riding
- Easier operation while wearing gloves
The Dash35B currently includes the following preconfigured drive modes:
Reverse:
- Maximum speed: 10 km/h (backwards)
- Current scale: 0.4 (40% of configured current)
Neutral:
- Throttle disabled
Mode 1:
- Maximum speed: 26 km/h
- Current scale: 0.5 (50% of configured current)
Mode 2:
- Maximum speed: 46 km/h
- Current scale: 0.6 (60% of configured current)
Mode 3:
- Maximum speed: 200 km/h (This value is intentionally set much higher than the vehicle is capable of achieving, effectively removing the speed limit. The actual top speed will still be physical limitations of the vehicle)
- Current scale: 1.0 (100% of configured current)
These modes can be changed instantly using the display’s buttons.
The display profiles are currently part of the display package installed on the VESC controller. If you wish to customise them, this can be done by connecting to the VESC controller using VESC Tool and navigating to:
App Settings → LispBM Scripting
From there:
- Press Read
- Navigate to approximately line 94
- Modify the values for:
- l-current-max-scale
- l-min-speed
Press Upload to save the updated configuration to the controller
This allows the drive modes to be fully customised to suit your application.
In the next release of the Dash35B display packages, the drive modes will be configurable directly from the display itself, eliminating the need to edit the LispBM script manually.
FAQ
The Maxim and Pronto controllers have the UART-pins shared with the hall sensor pins, so when using sensors the reverse and cruise control functions in the ADC app cannot be used at the same time as hall sensors or encoders. It is possible to use a simple lisp-script to simulate these functions with other pins depending on which pins you have available. The following example activates the reverse-button when the ACD2-input goes above 1V.
(app-adc-detach 2 1)
(loopwhile t {
(app-adc-override 2 (if (> (get-adc 1) 1.0) 1.0 0.0))
(sleep 0.01)
})
You can read more about those extensions here:
https://github.com/vedderb/bldc/blob/master/lispBM/README.md#app-adc-detach
https://github.com/vedderb/bldc/blob/master/lispBM/README.md#app-adc-override
FAQ
You can recover the VESC Dash 16L by connecting a USB cable to the 6-pin connector as shown below:

Open VESC Tool and follow the steps below:
- Go to ESP Programmer
- Refresh the port until you see the ESP32 of the display
- Press Connect
- Select Dash16
- Erase LispBM
- Flash using USB
- Disconnect
Then you should be able to connect to it from the welcome and wizard page.
After connecting follow the steps below:
- Go to VESC Packages
- Update archive
- Select Dash16
- Install
Now it should be restored
FAQ
You can recover the Dash 35B by connecting a USB cable to the 3-pin button connector and 5V to the 5-pin connector as shown below:

Open VESC Tool and follow the steps below:
- Go to ESP Programmer
- Refresh the port until you see the ESP32 of the display
- Press Connect
- Select VDISP 900
- Erase LispBM
- Flash using USB
- Disconnect

Then you should be able to connect to it from the welcome and wizard page.
After connecting follow the steps below:
- Go to VESC Packages
- Update archive
- Select Dash35B
- Install

Now it should be restored
FAQ
If you need additional data fields that are not currently available on the display, you must update the “Dash35B ESC” script. This is where new variables or telemetry items are defined and sent to the display.
Further documentation for LispBM scripting can be found here:
https://github.com/vedderb/bldc/blob/master/lispBM/README.md
FAQ
Our Maxim and Pronto controllers have a regulator that needs an enable-signal from the MCU to stay on, even if the enable-pin on the 39-pin connector is powered. So if the firmware becomes corrupted they won’t be able to stay on long enough to flash new firmware using the SWD pins. This corruption can happen if you flash the wrong firmware file manually or remove power directly after a firmware upload has finished. Usually the blue LED will repeatedly flash then as the enable-pin only powers on the regulator briefly but it never fully boots.
⚠️ Note Firmware prior to 7.00 would sometimes not boot fast enough to enable the regulator, resulting in the device shutting down even with correct firmware. This was mostly a problem on the pronto and got fixed in firmware 7.00. So if you have a blue LED flashing and the controller not booting, start by removing all external loads on the 5V and 12V outputs and see if it boots then. If it does, upgrade the firmware to 7.00 and see if the problem persists. This should be done before trying any of this.
⚠️ Note the Maxim+ has a different regulator and will stay on while the enable-pin is powered, even if it has no firmware. So if the blue LED is flashing on your Maxim+ it is likely to be some different problem.
To fix corrupt firmware, the Maxim and Pronto can be powered from a 12V current-limited (0.5A) power supply through the 12V AUX-output while using an SWD-programmer to upload the correct firmware as shown in this image

⚠️ Do not power the controller from an external supply or battery at the same time!
The correct firmware for your device can be found in the firmware archive
https://github.com/vedderb/vesc_fw_archive
If you have any questions about this procedure please contact us. Also, if you are uncomfortable doing any of this you can send your Pronto or Maxim back to us and we will do it free of charge.
The shutdown behavior can be configured using the shutdown-mode in the app settings. By default it is set to ALWAYS ON, which makes the controller stay on until power is removed. Changing the shutdown mode to ALWAYS OFF means that it will turn off after disconnecting the EN-pin.
FAQ
For the CAN-bus to work all devices on it need to have the same baudrate and different CAN IDs. If both of those conditions are not fulfilled the CAN-bus will be unreliable and often not work at all.
By default all our devices have CAN baudrate 500 kbps. The default ID is are
- Nanolog, RMCore, WCore, Link: 2
- BMS: 3
- Display: 4
- ESC: random, but not 2, 3 or 4
Due to the random ESC ID you need to check for collisions and change ID accordingly before connecting them together on the CAN-bus
Note
Changing CAN baudrate has to be done on each device individually without having other devices connected over CAN as having different baudrates on the same bus will make communication on that bus stop working completely. VESC Tool has a function that allows changing CAN baudrate on all devices at once; it can be found at the top of the CAN Tools page. Once the update is done using this method it will be stored in the non-volatile settings on each device.
Note
All our devices remember the CAN ID and CAN baudrate across firmware updates. This allows reaching all devices on the CAN-bus on the same baudrate and ID as before even after a firmware update.
Note on motor controllers with an ESP32
Our motor controllers that have an integrated ESP32 (Maxim, Maxim+, Pronto, Duet) have the USB and wireless interfaces connected to the ESP32. When changing baudrate on the motor controller it will no longer be reachable on the CAN-bus from the ESP32. To resolve this, the VESC Express page can be used to change to the same baudrate on the ESP32 – this should make the motor controller appear on the CAN-bus again. The same is true for overlapping IDs – if the motor controller ID is changed to the same as on the ESP32, the ID of the ESP32 can be changed in the VESC Express page to a different one to make the motor controller appear on the CAN-bus again.
FAQ
Most likely the BMS has entered sleep-mode. Sleep mode is entered when:
- Power is off
- Nothing is connected over USB, Bluetooth or Wifi
- Not balancing
- Not charging
- Block sleep is disabled in the settings
Notice that block sleep is enabled by default, but it will disable itself after a few hours to avoid draining the battery.
In sleep-mode it is not possible to connect to the BMS over USB, Bluetooth or Wifi. To leave sleep mode you can:
- Enable the power output by bridging EN and ENs on the comm-port
- Connect a charger
FAQ
It mainly depends on what the battery cells can handle rather than the BMS. The BMS itself can take the same regen current as output current as it goes through the main power path.
Through the charging port it can only go up to the specified charge current.
Charge current, battery current, and battery regeneration current can all be individually configured using VESC Tool to suit your specific application, hardware or performance requirements.
FAQ
The regeneration (or braking) current can reach the same continuous and burst current ratings as the controller. However, the actual limit depends on your BMS and, more specifically, your battery cells, which determine how much current can safely flow back into the battery.
Additionally, the values for motor current, motor brake current, battery current, and battery regeneration current can all be individually configured using VESC Tool to suit your specific application, hardware or performance requirements.
FAQ
You can find CAN-bus documentation here:
https://github.com/vedderb/bldc/blob/master/documentation/comm_can.md
Further documentation for LispBM scripting can be found here:
https://github.com/vedderb/bldc/blob/master/lispBM/README.md
All Pronto-controllers shipped until 2026-03-15 have a hardware bug for the ABI encoder input, where the A and I signals are swapped. This can be resolved by swapping the A and I cables on the encoder. If the PCB is green it has this bug. PCBs shipped from late March and onward are black and do not have this bug – on them the ABI encoder can be connected normally.
FAQ
The controller current rating is for the phase current and the input current will always be lower than the phase current. You can read about that in our article here:
However, if you are driving a low inductance motor close to full duty cycle it is possible that the input current will exceed the rating of the fuse and blow it, especially if you are using liquid cooling. In that case you have to use an external fuse and bypass the fuse on the controller with a bus bar. Unfortunately we have not found fuses in this size rated for more than 350A.
Glossary
Glossary
The Absolute Maximum Current, often shortened to ABS Max Current or ABS Current, is a protection limit used by the controller to prevent excessive phase current.
If the measured phase current exceeds this value, the controller will trigger the FAULT_CODE_ABS_OVER_CURRENT fault to protect the controller, motor, and power stage from potential damage.
ABS Max Current is a hardware protection limit and is not a tuning parameter. It should never be increased simply to make over-current faults disappear. Raising the limit without understanding the cause of the fault can result in overheating, damaged MOSFETs, damaged motor windings, or unsafe operating conditions.
If a controller repeatedly triggers FAULT_CODE_ABS_OVER_CURRENT, the underlying cause should be investigated and corrected. Common causes include:
- Incorrect motor parameters
- Observer instability
- Poor current sensor readings
- Mechanical binding or sudden load changes
- Current limits that are too aggressive for the system
- Hardware faults
- Wiring issues
- Excessive motor inductance or resistance estimation errors
⚠️ Absolute Maximum Current is not the same as Motor Current Max. Motor Current Max is a user-configurable operating limit used during normal operation, whereas ABS Max Current is an emergency protection threshold designed to prevent hardware damage. Under normal operating conditions, the controller should rarely, if ever, reach the ABS Max Current limit.
Example
A controller may be configured with:
- Motor Current Max: 300A
- ABS Max Current: 450A
During normal operation, the controller attempts to remain within the configured motor current limits. If a fault condition causes the measured phase current to exceed 450A, the controller will trigger FAULT_CODE_ABS_OVER_CURRENT and shut down the output stage to protect the hardware.
In simple terms: ABS Max Current is the controller’s emergency over-current safety limit and should be viewed as a protection setting rather than a performance setting.
Glossary
ADC is a hardware component that converts a continuously varying analogue voltage into a digital value that can be processed by a microcontroller or processor.
Within the VESC ecosystem, ADC inputs are commonly used to connect devices such as throttles, potentiometers, joysticks, brake levers, sensors, and other analogue control inputs. The ADC continuously measures the input voltage and converts it into a numerical value that can be used to control motor speed, current, duty cycle, or other functions.
ADC inputs can also be used to connect simple buttons and switches. By connecting a switch between the ADC signal and ground, the VESC device can detect different voltage levels and perform specific actions when the switch is activated. This allows features such as drive mode selection, cruise control, reverse, traction control adjustment, or other user-configurable functions to be implemented using only two wires.
Example
A hall-effect throttle connected to an ADC input outputs 0.8V at zero throttle and 3.6V at full throttle. The VESC reads this voltage through its ADC input and maps it to the desired motor output.
As another example, a momentary push button can be connected to an ADC input and configured in VESC Tool to cycle between Eco, Sport, and Race drive modes each time the button is pressed.
In simple terms: ADC inputs allows the VESC to understand analogue signals from devices such as throttles, sensors, buttons, and switches, converting them into digital control commands.
Glossary
Battery current is the current flowing between the battery and the motor controller. It represents the amount of electrical current being drawn from the battery to power the system.
Battery current is one of the primary factors that determines battery load, electrical power consumption, battery heating, and runtime. Unlike phase current, which primarily determines motor torque, battery current determines how much power is being supplied by the battery.
⚠️ Battery Current is not the same as phase current. A motor controller functions as a power converter and can regulate phase current independently of battery current. As a result, phase current may be considerably higher than battery current, particularly at low motor speeds.
At low motor speeds:
- Phase Current can be several times higher than battery current
- High motor torque can be produced while drawing relatively modest battery current
At higher motor speeds:
- Phase current and battery current become increasingly similar
- Battery current becomes a stronger indicator of overall system load
Battery current limits should be selected based on:
- Battery cell specifications
- Battery pack construction
- BMS current limits
- Connector ratings
- Wiring ratings
- Desired performance and range
Setting battery current too high can result in:
- Excessive battery heating
- Reduced battery lifespan
- BMS over-current protection triggering
- Voltage sag
- Damage to battery cells in extreme cases
Example
A system may be configured with:
- Battery Current Max: 50A
- Motor Current Max: 200A
During low-speed acceleration, the battery may only supply 50A while the controller delivers 200A of phase current to the motor. Although the motor is receiving 200A, the battery is only required to provide 50A.
At higher speeds, battery current and phase current will become more similar as the controller’s ability to multiply current decreases.
⚠️ Battery Current Max is a normal operating limit configured in VESC Tool. The battery, BMS, connectors, and wiring must all be capable of safely handling the selected current.
In simple terms: battery current is the current being drawn from the battery and determines how much electrical power the system is consuming.
Glossary
Battery Current Max is a setting in VESC Tool that defines the maximum current the controller is allowed to draw from the battery during acceleration and driving.
This setting primarily determines how much electrical power can be supplied by the battery to the motor controller. Increasing Battery Current Max allows the system to deliver more power, while reducing it limits power consumption and battery load.
⚠️ Battery Current Max is not the same as Motor Current Max. Battery Current Max limits the current drawn from the battery, while Motor Current Max limits the torque-producing current flowing through the motor. Particularly at low speeds, motor current can be several times higher than battery current.
Battery Current Max should be selected based on:
- Battery discharge rating
- Battery chemistry
- Cell configuration
- BMS current limits
- Wiring and connector ratings
- Number of controllers connected to the battery
- Desired vehicle performance
⚠️ Battery Current Max should never exceed the continuous current rating of the battery system. This includes the battery cells, BMS, wiring, connectors, fuses, and any other components carrying battery current.
⚠️ When multiple controllers share the same battery, the combined Battery Current Max values should not exceed the battery system limits. For example, if a battery and BMS are rated for 100A continuous discharge and two controllers are connected to the same battery, each controller might be configured with a Battery Current Max of 50A. The exact distribution can vary, but the total current available to all controllers should remain within the limits of the battery system.
Setting Battery Current Max too high can result in:
- Excessive battery heating
- Excessive voltage sag
- BMS overcurrent faults
- Reduced battery lifespan
- Connector or wiring overheating
- Battery damage in severe cases
Example
A system may be configured in VESC Tool with:
- Battery Current Max: 60A
- Motor Current Max: 180A
In this example, the battery will never be required to supply more than 60A, while the controller can regulate up to 180A of motor current to produce torque at lower motor speeds.
In simple terms: Battery Current Max determines the maximum current that can be drawn from the battery during normal operation.
Glossary
Battery Current Max Regen is a setting in VESC Tool that defines the maximum regenerative current the controller is allowed to return to the battery during braking.
Because regenerative current flows back into the battery, Battery Current Max Regen is entered as a negative value. Increasing the magnitude of this value allows more regenerative braking energy to be returned to the battery, while reducing it limits battery charging current during braking.
⚠️ Battery Current Max Regen is not the same as Motor Current Max Brake. Battery Current Max Regen limits the charging current flowing into the battery, while Motor Current Max Brake limits the braking current flowing through the motor windings and therefore determines the available braking torque.
Because the controller acts as a power converter, Motor Current Max Brake can often be significantly higher than Battery Current Max Regen. This allows strong braking torque while limiting the charging current seen by the battery.
Battery Current Max Regen should be selected based on:
- Battery charge current rating
- Battery chemistry
- Cell configuration
- BMS charge current limits
- Wiring and connector ratings
- Number of controllers connected to the battery
- Desired regenerative braking performance
⚠️ Battery Current Max Regen should never exceed the peak charging current rating of the battery system. This includes the battery cells, BMS, wiring, connectors, fuses, and any other components carrying regenerative current.
⚠️ When multiple controllers share the same battery, the combined Battery Current Max Regen values should not exceed the battery system charging limits. For example, if a battery and BMS are rated for 20A continuous charging current and two controllers are connected to the same battery, each controller might be configured with a Battery Current Max Regen of -10A. The exact distribution can vary, but the total regenerative current returned to the battery should remain within the limits of the battery system.
Setting Battery Current Max Regen too high can result in:
- BMS charging overcurrent faults
- Battery overheating
- Reduced battery lifespan
- Overvoltage faults
- Damage to the battery in severe cases
Example
A system may be configured in VESC Tool with:
- Motor Current Max Brake: -120A
- Battery Current Max Regen: -20A
In this example, the controller can apply up to 120A of braking current through the motor while limiting the regenerative current returned to the battery to 20A.
⚠️ Regenerative braking is also limited by battery voltage, battery state of charge, and the configured Battery Voltage Regen Cut-Off Start and Battery Voltage Regen Cut-Off End settings. As the battery approaches full charge, regenerative braking may be reduced or disabled to prevent overvoltage.
In simple terms: Battery Current Max Regen determines the maximum charging current that can be returned to the battery during regenerative braking.
Glossary
Battery Voltage Cut-Off End determines the voltage at which power reduction reaches 100%.
Once this voltage is reached, motor output is reduced to zero to prevent further battery discharge.
⚠️ This value should always be set above the battery manufacturer’s absolute minimum recommended voltage.
The difference between Cut-Off Start and Cut-Off End determines how gradually power is reduced as the battery approaches empty.
Example
For a 22S lithium-ion battery, a common setting is 68.2V (22 × 3.1V).
If Cut-Off Start is set to 74.8V and Cut-Off End is set to 68.2V, motor power will be reduced gradually between these two voltages.
In simple terms: this is where the controller completely removes motor power to protect the battery.
Glossary
Battery Voltage Cut-Off Start determines the voltage at which the controller begins reducing available motor current.
As battery voltage falls below this point, power is gradually reduced. This helps protect the battery while still allowing the vehicle or machine to continue operating.
Higher values provide additional battery protection, while lower values allow more of the battery’s capacity to be used.
Example
For a 22S lithium-ion battery, a common setting is 74.8V (22 × 3.4V).
When the battery voltage falls below 74.8V, the controller will begin reducing available motor power.
In simple terms: this is where the controller starts limiting performance as the battery becomes depleted.
Glossary
Battery Voltage Regen Cut-Off End determines the voltage at which regenerative braking is completely disabled.
Once this voltage is reached, no additional energy will be sent back into the battery.
⚠️ This value should always remain below the Maximum Input Voltage setting and within the battery manufacturer’s specified charging limits.
Improper regen cut-off settings can result in overvoltage faults or damage to the battery and controller.
Example
For a 22S lithium-ion battery, a common Regen Cut-Off End setting is 92V.
When battery voltage reaches 92V, regenerative braking will be completely disabled to prevent the battery voltage from exceeding its safe charging range.
In simple terms: this is the voltage where regenerative braking is fully turned off to prevent overcharging the battery.
Glossary
Battery Voltage Regen Cut-Off Start determines the voltage at which regenerative braking begins to be reduced.
As the battery approaches full charge, the controller gradually limits regenerative current to prevent the battery voltage from rising too high.
This setting is particularly important on systems with strong regenerative braking.
Example
For a 22S lithium-ion battery with a fully charged voltage of 92.4V, a common Regen Cut-Off Start setting is 90V.
As battery voltage approaches 90V, regenerative braking current will begin to be reduced.
In simple terms: this is where the controller starts reducing regenerative braking to protect a nearly full battery.
Glossary
BLDC Control is a motor control method that operates a brushless motor using six-step commutation. The controller energizes the motor phases in a sequence based on the rotor position to produce a rotating magnetic field.
Unlike FOC (Field-Oriented Control), which generates smooth sinusoidal currents, BLDC Control switches between phase states in discrete steps. This makes the control algorithm simpler and requires less computational processing.
Historically, BLDC Control was widely used because it could be implemented on lower-cost hardware with limited processing power. Many traditional motor controllers still use BLDC Control today.
Compared to FOC, BLDC Control typically offers:
- Simpler control algorithms
- Lower processor requirements
- Faster startup on some motors
- Reduced tuning requirements
However, it may also result in:
- Increased motor noise
- Less smooth operation
- Reduced efficiency
- Reduced low-speed performance
- Less precise torque control
- Increased motor heating in some applications
As modern microcontrollers have become more powerful, FOC has become the preferred control method for most applications. FOC provides smoother operation, improved efficiency, quieter running, and significantly better torque control across the entire speed range.
One of the key advantages of the VESC platform compared to many traditional BLDC controllers is its advanced FOC implementation. While many conventional controllers continue to rely on six-step BLDC Control, VESC controllers are designed around high-performance FOC operation, allowing more precise motor control and improved overall system performance.
⚠️ BLDC Control is a control method, not a motor type. A BLDC motor can be operated using either BLDC Control or FOC.
Example
A VESC controller configured in BLDC mode uses six-step commutation to control the motor by switching current between the motor phases according to the rotor position.
In simple terms: BLDC Control is a traditional six-step motor control method that has largely been superseded by FOC in modern high-performance motor control systems.
Glossary
A BLDC Motor (Brushless DC Motor) is an electric motor that uses electronic commutation instead of mechanical brushes to control the flow of current through the motor windings.
Despite the name, a BLDC motor does not operate directly from DC power. A motor controller converts the battery’s DC voltage into three-phase currents that create a rotating magnetic field and produce motion.
BLDC motors are widely used because they offer:
- High efficiency
- High power density
- Low maintenance
- Long service life
- Excellent reliability
- Precise electronic control
BLDC motors are available in many forms, including:
- Outrunner motors
- Inrunner motors
- Hub motors
- Servo motors
A BLDC motor can be operated using different control methods, including BLDC Control and FOC (Field-Oriented Control).
⚠️ A BLDC Motor is a type of motor, not a control method. The motor itself does not determine whether BLDC Control or FOC is used.
Example
A three-phase outrunner motor connected to a VESC controller is a BLDC motor. The controller can operate the motor using either BLDC Control or FOC.
In simple terms: a BLDC motor is a brushless electric motor that uses electronic switching instead of physical brushes.
Glossary
A BMS (Battery Management System) is an electronic device that monitors, protects, and manages a battery pack.
Within the VESC ecosystem, a BMS is responsible for monitoring individual cell voltages, pack voltage, current, and temperatures while helping ensure the battery operates safely and within its specified limits.
A BMS can provide a range of functions, including:
- Cell voltage monitoring
- Battery current measurement
- Temperature monitoring
- Cell balancing
- Overvoltage protection
- Undervoltage protection
- Overcurrent protection
- Charge and discharge control
- State of charge estimation
- CAN Bus communication
A BMS sits between the battery cells and the rest of the system, continuously monitoring battery conditions and taking action if a fault or unsafe condition is detected.
Many VESC BMS devices communicate with motor controllers, displays, and other accessories over CAN Bus, allowing battery information such as voltage, current, temperatures, and state of charge to be shared throughout the system.
The VESC Harmony range of BMS devices also integrates a precharge switch and short-circuit protection. This allows the BMS to safely control power delivery to the system while helping protect against damaging fault conditions.
⚠️ A BMS is not a motor controller. A motor controller regulates power to the motor, while a BMS monitors and protects the battery pack.
⚠️ A BMS does not increase the inherent performance of battery cells. Its primary role is to ensure safe operation and help protect the battery from damage caused by overcharging, over-discharging, excessive current, or excessive temperatures. However, upgrading to a higher-capability BMS may allow a battery pack to deliver more of its available performance if the previous BMS was limiting current below what the cells were safely capable of providing.
Cell balancing is one of the most important functions of a BMS. During charging, the BMS can help equalise the voltage of individual cells, improving battery longevity and ensuring all cells remain within safe operating limits.
Example
A VESC Harmony BMS can monitor a battery pack, balance the cells during charging, communicate battery information to a motor controller over CAN Bus, control the precharge process, and disconnect the battery if unsafe operating conditions are detected.
In simple terms: a BMS is the device that monitors and protects a battery pack to keep it operating safely and reliably.
Glossary
CAN Bus or CAN (Controller Area Network) is a communication protocol that allows multiple electronic devices to communicate with each other over a shared two-wire connection.
Within the VESC ecosystem, CAN Bus is commonly used to connect motor controllers, BMS systems, displays, sensors, IO modules, and other accessories. Rather than requiring a separate communication connection between every device, all devices can share the same CAN Bus network.
This simplifies wiring while allowing devices to exchange data in real time.
CAN Bus devices are connected in parallel, with all CAN H connections linked together and all CAN L connections linked together. This allows every device on the network to transmit and receive messages over the same communication bus.
CAN Bus can be used for:
- Multiple VESC controllers
- VESC BMS communication
- Displays and dashboards
- GPS modules
- External sensors
- IO and expansion modules
- Custom applications and automation
One of the most common uses of CAN Bus is connecting multiple VESC controllers together. In a dual or multi-motor system, one controller can receive commands from the user and distribute them to the other controllers over the CAN Bus network, ensuring all motors operate together.
⚠️ CAN Bus must be wired as a shared parallel network. CAN H should connect to CAN H on all devices, and CAN L should connect to CAN L on all devices. Wiring devices in series or crossing the CAN H and CAN L connections will prevent communication.
⚠️ CAN Bus is a communication network, not a power connection. While CAN devices often share the same battery system, CAN H and CAN L only carry communication data and are not intended to transfer significant power between devices.
⚠️ All devices connected to the same CAN Bus network must have a unique CAN ID. If two devices share the same CAN ID, communication conflicts can occur.
One of the strengths of CAN Bus is its reliability. The protocol was originally developed for the automotive industry and includes error detection, message prioritisation, and noise immunity features that allow it to operate reliably in electrically noisy environments.
Example
A VESC BMS, VESC controller, and VESC Dash display can all be connected to the same CAN Bus network. The BMS can transmit battery information, the controller can transmit motor data, and the display can show information from both devices over a single communication network.
In simple terms: CAN Bus is a two-wire communication network that allows multiple VESC devices to exchange information and work together.
Glossary
A CAN ID is a unique numerical address assigned to a device on a CAN Bus network.
Within the VESC ecosystem, CAN IDs are used to identify devices such as motor controllers, BMS systems, displays, IO modules, and other CAN-enabled accessories. When a device sends a CAN message, the CAN ID allows other devices on the network to identify the sender and communicate with specific devices.
CAN IDs are configured within the device settings and can be changed using VESC Tool.
To change a CAN ID, connect to the device and navigate to App Settings → General. In VESC Tool, the CAN ID is labelled VESC ID. The current CAN ID can also be seen next to the device name in the CAN Devices list.
By default, VESC devices are typically assigned CAN IDs within specific ranges to help organise devices on the network:
- 20-29 – ESP-based devices such as the VESC Nanolog
- 30-39 – VESC BMS devices
- 40-49 – Displays and user interface devices
- 50-254 – Motor controllers
These ranges are conventions rather than strict requirements, but following them can make larger CAN Bus networks easier to configure and troubleshoot.
⚠️ Dual motor controllers such as the use a separate CAN ID for each motor channel. For example, a Duet may appear as CAN ID 50 and CAN ID 51, even though both channels are located within the same physical device.
⚠️ Every device on a CAN Bus network must have a unique CAN ID. If two devices share the same CAN ID, communication conflicts can occur. A common symptom is that only one device appears in the CAN Devices list despite multiple devices being connected correctly. In this case, disconnect one device, change the CAN ID of the remaining device, then reconnect the network.
Example
A CAN Bus network may be configured with:
- Front Motor Controller: CAN ID 50
- Rear Motor Controller: CAN ID 51
- VESC BMS: CAN ID 30
- VESC Dash: CAN ID 40
- VESC Nanolog: CAN ID 20
In simple terms: a CAN ID is the unique address that identifies a device on a CAN Bus network.
Glossary
A Dual Motor Controller is a motor controller that can independently control two electric motors from a single device.
Controllers such as the VESC Duet and VESC Duet XS contain two motor control channels within a single unit. By sharing common components between both channels, a dual motor controller can reduce overall cost, wiring complexity, installation space, and system weight compared to using two separate controllers.
The two motors can operate independently or in a coordinated manner, depending on the application. This allows a dual motor controller to support everything from simple dual-drive vehicles to advanced systems requiring separate control of each motor.
Benefits of a dual motor controller include:
- Reduced wiring complexity
- More compact system design
- Lower overall cost compared to using two separate controllers
- Coordinated or independent control of two motors
- Simplified installation and maintenance
Typical applications include:
- Dual-motor electric skateboards
- Electric scooters
- Electric bikes with front and rear motors
- Tracked vehicles
- Robotics and automation systems
- Any application requiring synchronized control of two motors
⚠️ A dual motor controller is not simply equivalent to two separate controllers. Although it can control two motors independently, both motor channels share the same battery input, power supply, and processing resources. This means the total available battery current must be shared between both motors, and the controller’s microcontroller (MCU) must divide its computational resources between both motor control channels and any additional functions. As a result, a dual motor controller may have different performance limits compared to using two completely independent controllers.
Example
A VESC Duet can control the left and right motors of a dual-motor electric skateboard from a single controller, reducing wiring and simplifying the overall system compared to using two individual motor controllers.
In simple terms: a dual motor controller allows two motors to be controlled from one device while sharing common power and processing resources.
Glossary
Duty Cycle is the ratio between the effective motor voltage and the battery voltage, expressed as a percentage.
A duty cycle of:
- 0% means no voltage is applied to the motor
- 50% means the motor receives approximately half of the available battery voltage
- 100% means the motor receives nearly the full battery voltage
Duty cycle is one of the most important parameters affecting motor speed. As the motor accelerates, the duty cycle generally increases. Once the controller reaches 100% duty cycle, it can no longer increase the motor voltage. Further increases in motor speed typically require field weakening, a battery with a higher voltage, or a motor with a higher KV.
⚠️ Duty Cycle is not the same as throttle position. A throttle may be at 100%, but the duty cycle can be significantly lower if the motor is operating under load, accelerating, or limited by current settings.
⚠️ Duty Cycle is not the same as power. A motor operating at a high duty cycle is not necessarily producing high power. Power depends on both voltage and current.
Duty cycle is commonly used on VESC controllers for features such as:
- Duty Cycle control mode
- Duty Cycle current limits
- Field weakening
- Maximum ERPM protection
- Telemetry and data logging
Example
A motor controller connected to a 50V battery and operating at a 50% duty cycle is applying approximately 25V to the motor.
As the motor accelerates, the duty cycle may increase from 20% to 95% as the controller increases the voltage supplied to the motor.
In simple terms: duty cycle represents how much of the available battery voltage is being applied to the motor.
Glossary
Electrical Power is the power supplied to the motor controller from the battery. It represents the rate at which electrical energy is consumed by the system.
Electrical power is determined by the battery voltage and battery current:
Electrical Power = Voltage × Battery Current
In the VESC ecosystem, electrical power is measured at the controller input and is commonly used to estimate energy consumption, battery load, and system performance.
⚠️ Electrical Power is often confused with Mechanical Power. These terms should not be used interchangeably. Electrical power describes the energy being supplied by the battery, not the useful power being delivered by the motor. System losses mean that electrical power will always be greater than mechanical power.
Example
A battery supplying 50V at 20A is providing:
50 × 20 = 1000W
of electrical power to the controller.
In simple terms: electrical power is the power being drawn from the battery.
Glossary
An Encoder is a sensor used to measure the precise position, speed, and direction of a rotating shaft.
In the VESC ecosystem, encoders are commonly used to provide accurate rotor position feedback to the motor controller. This allows the controller to know the exact position of the motor at all times, improving low-speed performance, startup behaviour, and position control accuracy.
VESC Labs currently offers two magnetic encoder formats:
- ABI Encoders
- Sin/Cos Encoders
ABI encoders provide digital position signals and are commonly used for speed, position, and sensored FOC applications. Sin/Cos encoders output analogue sine and cosine signals which only need 4 wires (5V, GND, SIN, COS) and are robust against noise when used with compatible hardware.
When connected to a VESC controller, encoder feedback can be used for:
- Sensored FOC operation
- Improved startup performance
- Position control
- Speed control
- Servo applications
⚠️ An Encoder is not required for motor operation. Most motors can operate successfully using sensorless FOC, where the controller estimates rotor position without requiring a dedicated position sensor. While encoders generally provide the highest position accuracy, they also require additional wiring, connectors, and hardware inside the motor, which can introduce additional points of failure.
In some applications, such as electric skateboards, the motor cables are repeatedly flexed during operation. Eliminating encoder or hall sensor wiring can improve long-term reliability. Similarly, some motors are fitted with low-quality sensors that may cause more problems than they solve. In these cases, a properly tuned sensorless, VSS, or HFI setup may provide more reliable operation than using the built-in sensors.
Example
A magnetic encoder mounted on a motor shaft can continuously report the rotor position to a VESC controller, allowing precise control of motor position, speed, and torque.
In simple terms: an encoder is a position sensor that tells the controller exactly where a motor shaft is rotating.
Glossary
Field weakening is a motor control technique used to increase the maximum speed of a motor beyond its normal maximum speed.
Under normal operation, a motor controller can only increase motor speed until it reaches approximately 100% duty cycle. At this point, the controller is already applying nearly the full battery voltage to the motor and cannot increase the motor voltage any further.
Field Weakening works by injecting additional current into the motor in a way that reduces the motor’s effective magnetic field. This reduces the back-EMF generated by the motor, allowing it to spin faster than would normally be possible at the available battery voltage.
On VESC controllers, Field Weakening is configured using the Field Weakening Current Max setting.
Field Weakening can be used to:
- Increase top speed
- Extend the speed range of a motor
- Reduce the need for a higher voltage battery
- Reduce the need for a higher KV motor
⚠️ Field Weakening does not increase torque. In fact, as field weakening increases, the available motor torque generally decreases.
⚠️ Field Weakening is not free speed. Increasing field weakening current increases motor losses and heat generation within both the motor and controller.
⚠️ Excessive field weakening can result in:
- Increased motor temperatures
- Increased controller temperatures
- Reduced efficiency
- Reduced runtime
- Reduced motor torque at high speed
- Motor instability
- Loss of speed regulation
In extreme cases, excessive field weakening can cause the motor to become unstable enough that the controller can no longer accurately regulate motor speed. This may result in the motor continuing to accelerate beyond the commanded speed, sometimes referred to as a runaway condition.
Generally, motors with higher inductance are better suited to field weakening than motors with very low inductance. The effectiveness and stability of field weakening can vary significantly between different motor designs, so results should not be assumed based solely on motor size or power rating.
For these reasons, field weakening should generally be used only when additional speed is required beyond what can be achieved through battery voltage and motor selection alone. Field weakening is an advanced motor control technique and should only be configured by experienced users. Any increases should be made gradually and tested after each adjustment to ensure the motor and controller remain stable and operate within safe temperature limits.
Example
A motor may naturally reach a maximum speed of 5,000 RPM at 100% duty cycle when powered from a particular battery. By applying field weakening, the controller may be able to increase the motor speed to 6,000 RPM or higher, depending on the motor, controller, and field weakening settings.
In simple terms: field weakening is a technique that allows a motor to spin faster than its normal maximum speed by reducing the effect of the motor’s magnetic field.
Glossary
Field-Oriented Control (FOC) is an advanced motor control method used to precisely control the magnetic field inside a motor. It is the primary control method used by VESC controllers for PMSM and many BLDC motors.
Unlike traditional BLDC control, which energizes the motor phases in discrete steps, FOC generates smooth sinusoidal current waveforms that continuously rotate with the motor’s magnetic field. For this reason, FOC is often referred to as sine wave motor control.
Compared to traditional BLDC control, FOC provides:
- Smoother motor operation
- Lower electrical noise
- Improved efficiency
- Better low-speed performance
- More accurate torque control
- Reduced motor heating
FOC uses mathematical transformations to separate motor current into two components:
- D-Axis Current – controls magnetic field strength
- Q-Axis Current – produces torque
In most applications, torque is controlled by regulating the Q-axis current while minimizing D-axis current.
FOC requires accurate motor parameters such as motor resistance, inductance, and flux linkage. These values are typically measured using the Motor Detection Wizard in VESC Tool.
Example
A motor operating under FOC control can run smoothly across a wide speed range while maintaining precise torque control and high efficiency.
In simple terms: FOC is a sine wave motor control method that continuously controls the motor’s magnetic field to produce smooth, efficient, and precise motor control.
Glossary
Input Voltage is the voltage supplied to a device from its power source. In the VESC ecosystem, this typically refers to the voltage measured at the controller’s battery input terminals.
The input voltage is determined by the battery pack and varies during operation. A fully charged battery will have a higher input voltage, while the voltage gradually decreases as the battery is discharged.
VESC devices continuously monitor input voltage for performance calculations, battery monitoring, fault detection, regenerative braking management, and battery protection functions.
Input voltage is also used by several important protection settings, including:
- Minimum Input Voltage
- Maximum Input Voltage
- Battery Voltage Cut-Off Start
- Battery Voltage Cut-Off End
- Battery Voltage Regen Cut-Off Start
- Battery Voltage Regen Cut-Off End
⚠️ Input voltage must always remain within the operating range specified in the controller datasheet. Exceeding the maximum rated input voltage can permanently damage the controller.
Example
A 22S lithium-ion battery has a fully charged voltage of 92.4V (22 × 4.20V). When connected to a VESC controller, the controller’s input voltage will be approximately 92.4V when fully charged and will decrease as the battery is used.
In simple terms: input voltage is the voltage that the battery supplies to the controller or device.
Glossary
Kill Switch is a safety feature that can immediately disable motor output when a configured input becomes active. The Kill Switch overrides all other control inputs and can be used as an emergency stop or safety interlock. In VESC Labs controllers the Kill Switch function does not use dedicated hardware, instead it relies upon the VESC firmware.
The Kill Switch mode can be configured in VESC Tool → App Settings → General.
The following modes are available:
- Disabled
- PPM Low
- PPM High
- ADC2 Low
- ADC2 High
When the Kill Switch is activated, the motor is disabled. If Timeout Brake Current is configured and greater than 0, braking can also be applied automatically.
Common applications include:
- Emergency stop buttons
- Safety interlocks
- Access door switches
- Machine guarding systems
- Operator enable switches
Example
An industrial conveyor system may use a safety access door switch connected to ADC2 and configured as a Kill Switch.
During normal operation, the conveyor can be controlled using the configured input method. If the access door is opened, the ADC2 input changes state and activates the Kill Switch. The controller immediately overrides all other inputs and disables motor output. If Timeout Brake Current is configured, braking can also be applied automatically.
In simple terms: A Kill Switch is an input that can immediately disable motor output regardless of what other control signals are doing. It is commonly used as an emergency stop or safety interlock.
Glossary
kV is a motor specification that describes how fast a motor will spin for each volt applied with no load attached. It is typically expressed in RPM per Volt (RPM/V).
A motor with a higher kV will spin faster for a given voltage but generally produce less torque per ampere. A motor with a lower kV will spin slower but typically produce more torque per ampere.
kV is determined by the motor’s design and winding configuration and cannot be changed through software settings. It can usually be found in your motor datasheet.
⚠️ kV is not the same as kilovolts (kV), a unit of electrical voltage. In the context of electric motors, kV refers to the motor velocity constant.
Example
A motor rated at 100 kV supplied with 50V will have a theoretical no-load speed of:
100 × 50 = 5000 RPM
In practice, the actual motor speed will be lower due to load, losses, and controller limitations.
In simple terms: kV tells you how many RPM a motor will spin for every volt applied.
Glossary
A latching button or switch remains in its selected state until it is pressed again or manually moved back to its original position.
Many VESC Labs products use latching buttons or switches for power control. When the switch is turned on, the device remains powered until the switch is turned off again. This provides a simple and reliable method of controlling power without requiring the device to monitor button presses continuously.
Latching buttons and switches can also be used for other functions such as enabling reverse, selecting drive modes, enabling accessories, or switching between operating states. For these applications, a latching switch can often be connected to an ADC input using only two wires: the ADC signal and ground.
The VESC monitors the ADC voltage and can detect the position of the switch. To perform custom actions beyond the standard ADC functionality, a LispBM script must be written and configured within VESC Tool. This script can then trigger different actions depending on whether the switch is in the ON or OFF position.
Example
A latching power switch may be used to connect or disconnect power to a display, communication module, or other accessory. Alternatively, a latching switch connected to an ADC input could be configured to enable a high-performance drive mode when ON and an economy drive mode when OFF using a custom LispBM script.
In simple terms: a latching button or switch remains in its selected position until it is changed again.
Glossary
LispBM (Lisp Bare Metal) is an embedded scripting language that allows custom applications and control logic to run directly on VESC hardware. Within the VESC ecosystem, LispBM is integrated into VESC Tool, where scripts can be written, tested, uploaded, and monitored without modifying the underlying firmware. It runs in a sandboxed environment on the device itself and automatically starts when configured to do so.
LispBM was created by Bo Joel Svensson and is the scripting language behind all VESC Packages. It is also responsible for many of the advanced features and behaviours found throughout the VESC ecosystem, including VESC Express applications, display interfaces, communication modules, CAN Bus integrations, custom user interfaces, automation, telemetry, and device-to-device interactions.
Using LispBM, developers can create custom functionality such as:
- Drive mode selection
- Button and switch handling
- CAN Bus communication
- Display interfaces
- Battery management logic
- Data logging and telemetry
- Sensor processing
- Custom vehicle control systems
- Wireless communication over WiFi and Bluetooth
- Integration with VESC Packages
LispBM has access to a wide range of VESC-specific functions, allowing scripts to read ADC inputs, monitor battery voltage, communicate over CAN Bus, control outputs, interact with displays, and exchange data with other devices on the network. VESC Tool includes an integrated development environment (IDE), REPL console, live variable monitoring, plotting tools, and example projects to help develop and debug applications.
Example
A VESC Express module uses a LispBM script to read a button connected to an ADC input. Each button press changes the active drive mode, updates a display, and sends commands to other devices on the CAN Bus network.
Learn More
Official LispBM website:
VESC-specific LispBM documentation:
https://www.lispbm.com/lispbm-reference-manual/html/vesc-lisp-documentation.html
LispBM language reference manual:
https://www.lispbm.com/lispbm-reference-manual/html
VESC firmware LispBM integration documentation:
https://github.com/vedderb/bldc/blob/master/lispBM/README.md
In simple terms: LispBM is the programmable logic layer of the VESC ecosystem. It powers VESC Packages and allows users to create custom functionality without modifying the main firmware.
Glossary
The Maximum Input Voltage setting determines the highest voltage the controller will allow before triggering an overvoltage fault.
A common starting point is approximately:
10-15% above the battery’s fully charged voltage
This provides some headroom for regenerative braking, which can temporarily increase battery voltage during operation.
⚠️ The Maximum Input Voltage must never exceed the maximum rated input voltage of the controller.
Exceeding the controller’s voltage rating can permanently damage MOSFETs, capacitors and other components, even if fault protection is configured correctly.
⚠️ Always refer to the controller datasheet when selecting voltage limits.
Example:
For a controller with an absolute maximum input voltage of 100V, the recommended maximum battery voltage is 92.4V, which corresponds to a fully charged 22S lithium-ion battery (22 × 4.20V = 92.4V).
The difference between the battery’s maximum voltage and the controller’s absolute voltage limit provides a safety margin for voltage spikes and regenerative braking events.
In VESC Tool, the Maximum Input Voltage should typically be set slightly below the controller’s absolute voltage limit. For a controller with a 100V absolute maximum input voltage, a setting of 98V is commonly used to provide an additional layer of protection against overvoltage conditions while maintaining the maximum available operating range.
Glossary
Mechanical Power
Mechanical Power is the useful power produced by a motor and delivered to the output shaft. It represents the rate at which the motor converts electrical energy into mechanical work.
Mechanical power is determined by the motor torque and rotational speed:
Mechanical Power = Torque × RPM
In VESC Tool, mechanical power is calculated using measured motor speed and torque-producing current. It represents the power available to perform useful work such as accelerating a vehicle, driving a wheel, or moving a robotic actuator.
⚠️ Mechanical Power is often confused with Electrical Power. These terms should not be used interchangeably. Mechanical power is the useful power produced by the motor, while electrical power is the power supplied by the battery. Due to system losses, mechanical power will always be lower than electrical power.
Example
A motor producing 10 Nm of torque at 3000 RPM is generating mechanical power. If the motor speed or torque increases, the mechanical power will also increase.
In simple terms: mechanical power is the useful power being delivered by the motor.
Glossary
The Minimum Input Voltage setting determines the lowest voltage the controller will allow before shutting down.
This acts as a final layer of protection against excessive battery discharge and prevents the controller from attempting to operate when the supply voltage becomes too low.
⚠️ This value should be selected based on the battery chemistry, cell count and controller datasheet.
⚠️ Setting the Minimum Input Voltage too low can result in battery damage due to over-discharge.
Example
For a 22S lithium-ion battery, a Minimum Input Voltage of 55V provides a final safety limit. If battery voltage falls below 55V, the controller will stop operating to protect the system.
In simple terms: this is the controller’s emergency low-voltage shutdown point.
Glossary
A momentary button is a switch that only remains active while it is being pressed. Once the button is released, it automatically returns to its normal state.
Many VESC Labs products use momentary power buttons. The device detects the button press and handles the power-on or power-off sequence internally. This allows features such as soft power control, controlled shutdown, and status indication.
Momentary buttons can also be used for other functions such as changing drive modes, activating reverse, triggering a horn, enabling cruise control, or navigating menus. For these applications, a momentary button can often be connected to an ADC input using only two wires: the ADC signal and ground.
The VESC monitors the ADC voltage and can detect when the button is pressed. To perform custom actions beyond the standard ADC functionality, a LispBM script must be written and configured within VESC Tool. This script can then trigger specific actions when the button is pressed, held, or released.
Example
A momentary power button connected to a communication module may be pressed briefly to turn the device on or off. Alternatively, a momentary button connected to an ADC input could be configured to cycle between Eco, Sport, and Race drive modes using a custom LispBM script.
In simple terms: a momentary button only remains active while it is being pressed.
Glossary
A Motor Controller is an electronic device that controls the operation of an electric motor by regulating the voltage, current, and frequency supplied to the motor. Motor controllers are also commonly referred to as ESCs (Electronic Speed Controllers), particularly within the RC and electric vehicle industries.
In the VESC ecosystem, the motor controller is responsible for converting the battery’s DC voltage into controlled three-phase power for the motor. It continuously monitors the motor and system conditions to provide smooth, efficient, and safe operation.
Modern motor controllers can provide a wide range of functions, including:
- Motor speed control
- Torque control
- Current control
- Regenerative braking
- Position control
- FOC (Field-Oriented Control)
- CAN Bus communication
- Data logging and telemetry
- Motor and battery protection
A motor controller sits between the battery and the motor, receiving commands from user inputs, displays, scripts, sensors, or other devices and converting them into precise motor control.
⚠️ A motor controller does not create power. It can only control and distribute the power available from the battery. The maximum performance of a system is ultimately limited by the battery, motor, cooling system, and motor controllers specifications.
Example
A motor controller can receive power from a battery, process throttle commands from a remote control, and regulate the motor current to provide the desired acceleration, speed, and braking performance.
In simple terms: a motor controller is the device that sits between the battery and motor and controls how the motor operates.
Glossary
Motor Current Max is a setting in VESC Tool that defines the maximum positive motor current the controller is allowed to apply to the motor during acceleration and driving.
This setting is one of the primary factors that determines the amount of torque a motor can produce. Increasing Motor Current Max increases the available motor torque, while reducing it limits acceleration and motor force.
Unlike Battery Current Max, which limits the current drawn from the battery, Motor Current Max limits the current flowing through the motor windings. As a result, Motor Current Max is often significantly higher than Battery Current Max.
In VESC controllers, motor current is regulated directly by the FOC or BLDC control algorithm to achieve the requested torque output.
⚠️ Motor Current Max is not the same as Battery Current Max. Motor current determines motor torque, while battery current determines the power drawn from the battery. Because a motor controller acts as a DC-to-AC power converter, motor current can be considerably higher than battery current, especially at lower motor speeds.
Motor Current Max should be selected based on:
- Motor current rating
- Motor cooling capability
- Controller current rating
- Application requirements
- Desired acceleration and torque
Setting Motor Current Max too high can result in:
- Excessive motor heating
- Reduced motor lifespan
- Over-current faults
- Controller overheating
- Demagnetisation of motor magnets in extreme cases
Example
A system may be configured in VESC Tool with:
- Battery Current Max: 60A
- Motor Current Max: 180A
Even though the battery is only supplying 60A, the controller can regulate up to 180A of motor phase current to produce higher torque at lower speeds.
⚠️ Motor Current Max is a normal operating limit, not a hardware protection limit. If the controller exceeds the Absolute Maximum Current (ABS Max Current) threshold, an over-current fault will be triggered to protect the hardware.
In simple terms: Motor Current Max is the VESC Tool setting that determines the maximum torque-producing current that can be delivered to the motor during normal operation.
Glossary
Motor Current Max Brake is a setting in VESC Tool that defines the maximum negative motor current the controller is allowed to apply during braking and regenerative braking.
This setting determines the maximum braking torque that can be produced by the motor. Increasing Motor Current Max Brake increases braking force, while reducing it results in gentler braking.
Like Motor Current Max, this limit applies to motor phase current rather than battery current. Because braking current flows in the opposite direction to acceleration current, Motor Current Max Brake is entered as a negative value.
During regenerative braking, the motor operates as a generator and converts mechanical energy back into electrical energy. The controller regulates Motor Current Max Brake to control how much braking torque is applied.
⚠️ Motor Current Max Brake is not the same as Battery Current Max Regen. Motor Current Max Brake limits the braking current flowing through the motor windings and therefore determines the available braking torque. Battery Current Max Regen limits the amount of regenerative current that can be returned to the battery during braking.
The controller acts as a power converter, so Motor Current Max Brake can often be significantly higher than Battery Current Max Regen. This allows strong braking torque while limiting the charging current seen by the battery.
Motor Current Max Brake should be selected based on:
- Desired braking performance
- Motor current rating
- Motor cooling capability
- Controller current rating
- Vehicle traction and stability
Setting Motor Current Max Brake too high can result in:
- Excessive motor heating
- Wheel lock-up or loss of traction
- Over-current faults
- Controller overheating
- Unstable vehicle behaviour on low-grip surfaces
Example
A system may be configured in VESC Tool with:
- Motor Current Max: 180A
- Motor Current Max Brake: -120A
- Battery Current Max Regen: -20A
In this example, the controller can apply up to 120A of braking current through the motor to generate braking torque, while limiting the regenerative current returned to the battery to 20A.
⚠️ Strong regenerative braking is also limited by battery voltage, battery charge state, and the configured Battery Voltage Regen Cut-Off Start and Battery Voltage Regen Cut-Off End settings. When the battery is fully charged, regenerative braking may be reduced or disabled to prevent overvoltage.
In simple terms: Motor Current Max Brake is the VESC Tool setting that determines the maximum braking torque the motor can produce during braking and regenerative braking.
Glossary
Motor Poles are the individual north and south magnetic poles located on the rotor of a motor. In permanent magnet motors, each magnet contributes one north pole and one south pole, creating a series of alternating magnetic poles around the rotor.
The number of motor poles affects the relationship between the motor’s electrical speed and mechanical speed. Motors with more poles require more electrical cycles to complete one mechanical revolution.
Motor poles are commonly specified as a total count.
Example
A motor with 14 poles contains:
- 7 north poles
- 7 south poles
for a total of 14 magnetic poles.
⚠️ Motor Poles are often confused with Pole Pairs. The total pole count is always twice the number of pole pairs.
In simple terms: motor poles are the individual magnetic north and south poles on the motor rotor.
Glossary
Phase current is the current flowing through the motor windings. In VESC motor controllers, phase current is regulated directly by the motor control algorithm (FOC or BLDC) and is the primary current responsible for producing motor torque.
Because torque in most electric motors is approximately proportional to phase current, increasing phase current increases the torque the motor can produce. This makes phase current one of the most important factors affecting acceleration, hill-climbing ability, braking force, and overall motor performance.
Unlike battery current, which measures the current flowing from the battery to the controller, phase current measures the current circulating between the controller and the motor. Since the controller acts as a DC-to-AC power converter, phase current can often be significantly higher than battery current.
⚠️ Phase Current is not the same as battery current. Many users assume that a motor drawing 200A of phase current is also drawing 200A from the battery. In reality, the controller can convert lower-voltage, higher-current power at the motor while drawing a much lower current from the battery.
⚠️ Motor controllers are limited by phase current, not by battery current. Motor controllers have to deal with the full phase current at all times, regardless what the battery current is. Therefore it is impossible to tell how much battery current a motor controller can handle as the relation between battery current and phase current depends on the operating point of the motor. At low speed most current circulates between the power stage and motor and at higher speed more and more current flows from the battery through the power stage to the motor. However, regardless of speed, the power stage always sees the full phase current.
⚠️ Motor and controller losses are proportional to the square of the phase current. This means that doubling the phase current will generate four times more heat in the motor and controller. Therefore it is very important to choose appropriate gearing for your system. Insufficient gearing where the motor always operates at low speed will cause excessive heating in the motor and controller even at low power levels.
At low motor speeds:
- Phase current can be much higher than battery current
- High torque can be produced with relatively modest battery current
At higher motor speeds:
- Phase current and battery current become increasingly similar
- The controller’s ability to multiply current decreases
- Battery current becomes a larger factor in determining available power
Phase current limits should be selected based on:
- Motor current rating
- Motor cooling capability
- Controller current rating
- Desired torque output
- Application requirements
Setting phase current too high can result in:
- Excessive motor heating
- Reduced motor lifespan
- Controller overheating
- Over-current faults
- Demagnetisation of motor magnets in extreme cases
Example
A system may be configured with:
- Battery Current Max: 50A
- Motor Current Max: 200A
When accelerating from low speed, the controller may draw approximately 50A from the battery while supplying up to 200A of phase current to the motor. This allows the motor to produce high torque without requiring the battery to deliver the same current.
⚠️ The maximum allowable phase current is limited by both the motor and controller. Always refer to the controller datasheet and motor specifications when selecting current limits.
In simple terms: phase current is the current flowing through the motor windings and is the primary factor that determines motor torque.
Glossary
A PMSM (Permanent Magnet Synchronous Motor) is a type of brushless AC motor that uses permanent magnets on the rotor and operates synchronously with the rotating magnetic field produced by the stator.
In a PMSM motor, the rotor rotates at exactly the same speed as the magnetic field generated by the controller. This synchronous operation allows for highly efficient and precise motor control.
Many motors commonly referred to as BLDC Motors are actually PMSM motors from an electrical and control perspective. The distinction largely comes from how the motor is controlled rather than its physical construction.
PMSM motors offer:
- High efficiency
- Smooth operation
- High torque density
- Precise torque control
- Excellent low-speed performance
- Reduced noise and vibration
PMSM motors are ideally suited to FOC (Field-Oriented Control), which is why FOC has become the preferred control method for most modern VESC-based systems.
⚠️ PMSM Motors and BLDC Motors are often confused because they have very similar construction and both use permanent magnets. In practice, many motors sold as “BLDC Motors” are operated as PMSM motors when using FOC. The difference is primarily in the mathematical motor model and control method rather than the physical hardware.
Compared to BLDC Control, PMSM motors operating with FOC typically achieve smoother operation, quieter running, and more precise torque control.
Example
A motor detected and configured using the FOC Motor Detection Wizard in VESC Tool is typically being operated as a PMSM motor, with the controller continuously controlling the motor’s magnetic field using FOC.
In simple terms: a PMSM motor is a permanent magnet motor designed to operate synchronously with the controller’s rotating magnetic field and is the motor type most commonly associated with FOC control.
Glossary
A Pole Pair is a pair of magnetic poles consisting of one north pole and one south pole.
Pole pairs are commonly used in motor control calculations because they determine the relationship between the motor’s mechanical rotation and electrical rotation. VESC controllers use the number of pole pairs when calculating motor speed, rotor position, and FOC control parameters.
The number of pole pairs is calculated as:
Pole Pairs = Motor Poles ÷ 2
Motors with a higher number of pole pairs require more electrical cycles to complete one mechanical revolution.
The relation between mechanical and electrical RPM (ERPM) is
Mechanical RPM = Electrical RPM ÷ Pole Pairs
Example
A motor with 14 poles has:
14 ÷ 2 = 7 Pole Pairs
If the motor completes one mechanical revolution, the controller must generate 7 electrical revolutions of the rotating magnetic field.
⚠️ Motor poles is one of the motor parameters in VESC Tool and it is entered as twice the number of pole pairs. Entering an incorrect pole count will result in incorrect RPM calculations for efficiency and speed calculations in the gauges and connected displays. The core motor control algorithms do not use pole pairs anywhere; they use ERPM (Electrical RPM) internally.
In simple terms: a pole pair is one north pole and one south pole on the rotor of the motor; the number of pole pairs determines the relation between mechanical and electrical RPM.
Glossary
VESC (Vedder Electronic Speed Controller) is an open-source motor control platform designed to control electric motors with high performance, flexibility, and efficiency.
Originally developed by Benjamin Vedder, the VESC Project has evolved from a motor controller project into a comprehensive ecosystem for electric vehicles, robotics, industrial automation, drones, and other motor-driven applications.
The VESC ecosystem includes both hardware and software. Controllers are configured and monitored using VESC Tool, which provides motor setup, tuning, data logging, firmware updates, and real-time diagnostics.
Today, the VESC ecosystem extends far beyond motor controllers. It now includes a growing range of electronics designed to support and enhance electric drive systems, including:
- Battery Management Systems (BMS)
- Communication modules
- Display interfaces
- Input and control accessories
- Sensor modules
- Data logging and telemetry devices
These devices communicate seamlessly with VESC controllers, enabling complete vehicle, robotics, and energy management systems to be built around a common platform.
As the ecosystem expanded, VESC Labs was established as the official retail and distribution platform for VESC hardware and related products. VESC Labs provides customers with access to genuine VESC controllers, accessories, and ecosystem products, helping make VESC technology more accessible to developers, businesses, and enthusiasts worldwide.
Unlike many closed motor control solutions, VESC provides extensive configuration options, open documentation, and support for advanced features such as regenerative braking, CAN Bus networking, field weakening, custom firmware development, and multi-device integration across the wider VESC ecosystem.
The open-source nature of VESC has encouraged a global community of developers, manufacturers, and users to create compatible hardware and software, making it one of the most flexible and widely adopted motor control platforms available.
In simple terms: a VESC is the intelligent control system that sits between the battery and motor, managing how electrical energy is converted into motion while also coordinating the wider ecosystem of electronics that support the vehicle or machine.
Glossary
A VESC Package is a self-contained application that runs on VESC-compatible hardware using LispBM and/or C code. The package can also include a custom User Interface loaded by VESC Tool written in Qml to configure and interface with the package. Packages provide additional functionality beyond the core motor control firmware and can be installed, updated, and managed through VESC Tool.
VESC Packages allow developers to create complete applications that interact with motor controllers, displays, communication modules, sensors, and other devices within the VESC ecosystem. A package can include user interfaces, configuration menus, graphics, scripts, communication protocols, and custom control logic.
Packages can be downloaded and installed directly from the Package Store within VESC Tool, making it easy to add new functionality to compatible devices. Developers can also create their own custom packages using LispBM and distribute them privately or publicly for others to use.
Packages are commonly used for:
- Vehicle dashboards and displays
- Remote controls
- Data logging and telemetry
- Battery monitoring
- CAN Bus device management
- Robotics applications
- Custom vehicle control systems
- WiFi and Bluetooth connectivity
- Device configuration tools
Unlike firmware updates, packages can be installed and updated independently without changing the core firmware running on the device. This makes it possible to add new features and applications while maintaining a stable motor control platform.
Many VESC devices, including VESC Express modules and compatible displays, rely on packages to provide their user interface and application-specific functionality.
Example
A display package running on a VESC Express module can show battery status, speed, motor temperature, and ride statistics while communicating with one or more VESC motor controllers over CAN Bus. The package can be installed directly from VESC Tool or developed from scratch using LispBM.
How do I make my own package?
All VESC Packages are hosted on this github repository
https://github.com/vedderb/vesc_pkg
You can edit all packages for your needs if you want to tweak them. To contribute your own package to the VESC Tool package store you can make a pull request to this github repository. If your pull request gets accepted after a review it will end up in the VESC Tool package store on all platforms.
In simple terms: a VESC Package is an application that runs on VESC hardware, adding features and functionality without modifying the core firmware.
Glossary
VESC Tool is the official open-source software used to configure, monitor, and update devices within the VESC ecosystem. It provides a user-friendly interface for setting up motor controllers, BMS devices, communication modules, displays, and other compatible hardware.
Using VESC Tool, users can perform motor detection, adjust settings, view real-time data, update firmware, analyse logs, and troubleshoot issues. It is available on Windows, macOS, Linux, Android, and iOS.
VESC Tool was created by Benjamin Vedder, the creator of the VESC project and its lead developer. Development is driven by Benjamin’s extensive experience in motor control, embedded systems, electric vehicles, and industrial applications. New features, improvements, and bug fixes are released regularly as the VESC ecosystem continues to evolve.
As an open-source project, VESC Tool also benefits from contributions from the wider community. Developers, manufacturers, and users regularly submit feedback, code contributions, and pull requests, helping to expand functionality and improve compatibility across a wide range of hardware and applications.
In simple terms: VESC Tool is the central application used to configure, monitor, and manage VESC-powered devices.
Product Downloads
Getting Started
Step by step guides to set up your device
Glossary
Definitions and explanations of common VESC terms and concepts
VESC Tool Tutorials
How to use VESC Tool to configure your device
Example Projects
See examples of projects using our products
Latest News
Keep up to date with our latest movements
Product Downloads
Download 3D files and Datasheets
