variESC Tool [SRO]

Tired of waiting for others to make what I want to use, I made this.

If it helps anyone else, it’s here.

It’s a tool for programming ESCs, and it also contains variESC firmwares which are compatible with the VESC :tm: project by Benjamin Vedder.

The main things this has are

  • Duty Cycle Current Limit Start default default updated to 85% per the poll
  • Fault Stop Time default default updated to 85ms
  • Support for Unity Super Single Mode
  • Support for Cheap FOCer 2 version 0.9
  • Cheap FOCer 2 version 0.9 funwheel lights and buzzer controls on the extra IO header
  • Willingness to accept code contributions and work in a normal open source manner
  • Your feature here

This software is licensed under the GPL which is a copyleft license. You are free to use it and modify it, but if you send it to others you MUST also send them the modified source code upon request. For this reason I have the binaries and executables being distributed by the very place that also distributes the source code. It makes things much easier.

Download: The binaries and source code are available from Microsoft vari_v

This software is provided as-is with no warranty of any kind. If this helps you, please consider donating to Benjamin Vedder.



The Unity Super Single firmware needs this wiring:

:warning: WARNING: connecting them that way without the Super Single firmware installed WILL destroy your ESC right away.

Allowing a tool to update your firmware could also be very bad.


The Cheap FOCer 2 version 0.9 firmware has an included file called VESC_funwheel.bin which allows this

courtesy of @surfdado



1 Like

WATT MODE aka ackmaniac firmware is missing :zipper_mouth_face:

1 Like

What does this do? I think mine is default set to 500ms

1 Like

The fault just goes away after that amount of time. It’s a self fix feature.


Any chance of incorporating the field weakening pull request or substituting MTPA for field weakening?


Both of those are impossible on the motors we use, and incompatible with the flux linkage observer.


1 Like

I know MTPA is for PMSM but im pretty confident you can use field weakening on bldc motors. I’m also confident that the VESC hardware can do field weakening as it has done so in the past using @district9prawn’s firmware :

1 Like

Field weakening requires modulating the flux linkage. This will wreak havoc with the sensorless position observer if it actually DID happen.

you need rotor iron for this. Our motors don’t have rotor iron.

There’s so much shit wrong in the VESC’s position estimate that messing around with just about anything causes the motor to spin a little faster because doing so causes the current waveform to align closer to the Q axis.


Fault Stop Time is the amount of time you loose throttle and brakes after a fault. It needs to be long enough to protect the FETs but short enough to also protect the rider. I personally feel 500ms is way too long and I have been using values between 50ms to 85ms for years.

If you slam the brakes and hit a tiny pebble which throws an overcurrent fault — the difference between a 500ms fault timeout and an 85ms one is the difference between falling off the back of the skate versus merely saying “whoa, what was that?”


Unfortunate, thanks for the info.


“default defaults” are exactly that, a default default.

Each hardware can provide its own default value — like for example Stormcore 60D provides a 90% Duty Cycle Current Limit Start default value — and then in all cases you can adjust those as you desire. The default default is used if your hardware provider hasn’t provided a default AND you haven’t adjusted the setting yet.


@b264 this is fantastic, well done. Our community has needed something like this for a long time.

I’m looking forward to seeing where this goes, if you can successfully manage this with the latest updates I am all in. Are you doing this alone? Or are you seeking help from others?


The part about iron makes no sense, ebike hub motors are basically the as ours, jus more poles and larger diameters and they run field weakening all day


There’s a difference between “phase advance” and “field weakening”

Or maybe they do have rotor iron and it’s not obvious.

The bottom line is field weakening requires increasing the motor’s effective kv, which means decreasing the strength of the magnetic field. That is accomplished by generating an opposing field in the rotor using the stator, ergo requires rotor iron.

Because of this, field weakening will decrease the effective flux linkage, which will wreak havoc with the observer the vesc uses because the PLL structure derives its correctional error from a static flux linkage value.


I’m open to all ideas. I don’t know yet.


I think a core of people with experience in coding and knowledge of the project could be a powerful source. I’m thinking people like @ducktaperules and @DerelictRobot etc, I’m not saying they would be interested, but if they are…

Small steps of course, but this is a giant step in the right direction. Hats off to you


Will this repository be kept concurrent with the latest VESC firmware developments (within reason?)

Also curious about metr and davega compatibility, if versioning will read the same / compatible by default.