How to: Ackmaniac ESC Tool

Originally published at:

It seems there are some issues with the newest VESC Tool (as of 06/20/2019) including the absence of an ERPM limit for direction change (reverse) and unusable values applied with the motor setup wizard.

After a recent discussion with Trampa, it appears that feature requests are equal to “You are all very good at complaining instead of actually be thankful“. With that being the case I figured I’d write a tutorial, or “How-To”, for the Ackmaniac ESC-Tool so you guys have options for a safe & reliable reverse and a wizard that give accurate values.

I have been running this firmware for almost 2 years and have used this method dozens, likely hundreds, of times. If we can assume you have no pre-existing hardware issues and the install has been done correctly this WILL work, you will be riding in minutes.

If you see a mistake, please let me know and I will evaluate the requested change and commit it if needed.

Start with downloading the Ackmaniac ESC-Tool.

Ackmaniac ESC-Tool Link
Download file name:

After downloading the file, do this…
Right Click > Extract All > Extract
Double click the extracted folder named ACKMANIAC_ESC_TOOL_3_103
Double click the executable named ACKMANIAC-ESC-Tool.exe

If User Account Control (UAC, a protection schema in Windows 7, 8 & 10) prompts you to allow this program to run, click Run.

This is what you should see, this is the opening window of the ACKMANIAC ESC-Tool

From here there are 3 major tasks you can do.

  1. Firmware update
    This is the firmware you load on the VESC\ESC that enables you to use the Ackmaniac app to configure the VESC\ESC as well as use the Ackmaniac android app (discussed later on).
  2. Motor Setup
    This is where you configure the options for your specific motor or motors, including battery specifics, BLDC & FOC modes, etc.
  3. App/Input setup
    This is where you setup input values such as PPM type and values, Bluetooth, throttle curve, current vs. current with reverse, etc.

Firmware Update

Let’s begin with the Firmware Update by clicking the Firmware link on the right/top of the ESC-Tool window.

If you have a FocBox, Maytech 4.12 or FlipSky 4.12/4.20 ESC (VESC) you will want to use the Hardware Version 410 & 411 & 412. I will include instructions on updating VESC 6 variants if there is sufficient interest, but for now, this is for 4.12 & 4.20 VESC variants.

Now, power on your VESC and connect the USB cable to the VESC and then to the PC. Click the Connect button then click the Update Firmware button, now wait.

After you click update you will see this warning:

Click OK and let the app do its thing.

After a minute or so, the VESC will reboot with the new firmware loaded. After you see lights and the lights are steady, click the Connect button again. At the bottom right you will see a message with a green background defining the connection status and firmware level. As of this date (06/20/2019), the latest firmware version is 3.103, that is what it should report.

At this point we are going to use the wizards to set the major data values, then go back and specifically update a couple of things. I am not going to waste your time explaining all the intricacies of each value. I will explain the ones that are important, you can google the rest if you’re interested.

Motor Setup Wizard

Next, click the Welcome & Wizards button on the top/Left of the window.

We will start with the Motor Setup Wizard. Click the Motor Setup Wizard button.

You will see the 1st screen of the Motor Setup Wizard, as shown below.

Click Next to advance. You will then see a warning asking if you want to load the default configuration. Say yes to this as we will specify all of the user defined values and allow the wizard to detect the rest.

The next option is to choose your motor type. In this tutorial, we are using FOC/Hybrid mode. Feel free to use BLDC mode, it’s a much simpler setup and typically should be performed before FOC if this is your first time using the ESC Tool. Click OK to advance.

Next, you will see a warning about current limits. You need to know the amperage (or current) limits of your battery. A 10s3p battery pack made with Samsung 30Q cells has a 60a maximum. A 10s4p has an 80a maximum. This value is divided by 2 if you are using 2 VESC’s. In this instance, we are using a 10s4p 30Q pack, so our limits are 40a per VESC. If you don’t know the limits for your pack stop here and go find out. Battery amps and motor amps are not the same thing. Click OK to advance.

Here is where we set those limits. The VESC I am using for this tutorial is a FlipSky Dual FSESC4.20 Plus which has a 50a max per side. The battery limits are 80a total, 40a per side.

Here we have set the Motor Max to 50a as that is the ESC’s limit and motor amps should always be of a higher value than battery amps. We have defined the Motor Max Break at -40a and the Battery Max at 40a as this is our battery limit. We have defined the Battery Current Max Regen at -12a because that is low-speed breaks, with thane and this VESC I have found that to be perfect. Click Next to advance.

Here is where we set the Voltage Cutoff Start and End. All this does is tell you when your battery is almost dead. At the Cutoff start point, you will have much less power than normal. Take your rear-end to the house, cause you almost out of juice. When you reach the Cutoff end point, the VESC will no longer drive your motors. Be careful about pushing with a dead battery, badness can happen.

You can choose the value for series cells that you have in your pack and then click Apply, it does the math for you. Click Next to advance.

In this next section will need to decide if you want to run FOC or BLDC, if FOC Sensored or Unsensored. In this tutorial we are using Sensored FOC.

Next you will see FOC Settings section of the setup. This is where the VESC will spin up the motors to detect values. I like to do this without warning my daughter’s cat, as the process influences him to remove his hairy ass from the vicinity of my beer :).

Click the RL button, your wheel will spin up. After the wheel has stopped click the A button (yeah, I know it’s not actually an A, we will cover that later…maybe). After the wheel has stopped click Apply and the Next.

You should see something like this.

The former detections have defined the necessary values. Click Next to advance.

Next, you will detect the FOC values specific to your Hall Sensors.

Click the tiny little Play button, next to the Apply button. You will see a warning telling you that your wheel will turn slowly, click OK. Your wheel will do a strange sort of jog, that’s normal (it’s also good for a further lesson to the cat). When the process is complete you will see something like this.

Some motors will have problems. I have seen otherwise perfect motors fail FOC detection over and over, specifically Direct Drive and Hub Motors. I have had success by raising and lowering the I value by 2 to 4 amps, do this at your own risk.

Click Next to advance. Now you are done!

Actually, you aren’t, that was just the Motor Detection, and only 1 of them in case your running dual motors.

So don’t be a crybaby and go back to the beginning of the Motor Detection setting and do it all again on your 2nd VESC. Oh, and you still have to do the App/Input setup, so yeah.

Input Setup Wizard

This is actually pretty fast and not at all difficult. Unless you’re on your 4th beer (like me), then you might be in for a challenge. Keep going, it’s fiiiiiiine :).

Make sure the USB cable is plugged into the master VESC and click the Input Setup Wizard button on the bottom/right of the Welcome & Wizards section.

You will see the ESC Input Setup Wizard screen. Click Next to advance.

You will now see a warning about loading the default configuration, do this as it makes life a lot easier. Click Yes to advance.

This is where you define if you’re using 1 or 2 VESC’s. This can get a little confusing as you can be physically using 2 VESC’s but would define this value as a single VESC if you’re using Split-PPM. In this tutorial, we are using 2 VESC’s with Can-Bus.

If you don’t know what Split-PPM and Can-Bus is just stop, go read, go read some more, come back, then go read some more. Seriously, without knowing this you can burn up a couple of VESC’s quick.

Since we are configuring your Master VESC click the middle option that says “My setup has more than one ESC and I am configuring the Master ESC now”.

Here you define the ESC CAN ID. For the Master VESC use 0, for the Slave you will use 1. Click Next to advance.

Next, you will define your application/input type. In most cases, you will use PPM Input. If you are using a TorqueBoards Nano, FlipSky Nano, Nano-X, Mini Remote, Hoyt Puck, Maytech V2 or any of a 100 other PPM devices this is what you select. Click Next to advance.

Next, you will see the PPM Mapping screen. This is really important so pay attention.

You need to define the maximum and minimum throw for the trigger/wheel on your remote. To do this run the trigger to max throttle, then to neutral, then to max brake. Do this 3 or 4 times. You will notice the Min, Max & Center values change, this is what you want.

Once you see those values click Apply and then Next to advance.

Now we are at the ever confusing, so much hated, not fun at all…Control Type. It’s really not that bad, let me lay it out for you.

99% of the boards in the world use Current No Reverse with Brake or Current. With Current No Reverse with Brake you have throttle forward control and brake control. With Current you have throttle forward control and throttle reverse control. In Current mode reverse is actually the brake. This can be a PIA when your trying to stop at a light or to talk to someone and all of sudden you’re going backwards because you didn’t let go of the trigger at exactly the right time. I will introduce you to Max Direction Switch ERPM Enabled, but we will get to that in a bit.

For now, if you want reverse select Current. If you don’t want reverse select Current No Reverse with Brake. If this is your first esk8, just pick Current No Reverse with Brake until you get some experience, trust me its a lot simpler to get used to.

Either way, set Traction Control to True. You’ll thank me later. This is what mine looks like. I kinda like reverse, mostly it’s just that @sender makes fun of me if I don’t have it enabled :(. Click Write Configuration To ESC and then click Next to advance.

You’re done with the Input Setup Wizard.

But are you? Actually, you’re not. You have to do it again on the Slave VESC, but it’s really easy.

Move the USB cable to the Slave VESC & click Connect then click the Input Setup Wizard button.

Do you remember how you picked “My setup has more than one ESC and I am configuring the Master ESC now“? This time pick “My setup has more than one ESC and I am configuring the Slave ESC now” then click Next.

Make sure the ESC CAN ID is set to 1, click Write Configuration To ESC and then click Next to advance.

Now you really are done. Button that S.O.B up and go ride. Let me know how it goes. Unless it goes bad, keep that to yourself :).

EXTRAS: Bluetooth (HM-10 Module)

So you want bluetooth. You just want everything don’t you, you damned millennials. Naw, I’m just messing with you, it’s easy.

Assuming you have your HM-10 Module installed there are only a couple of steps. Insert your USB cable in the Master VESC, click Connect the click the Read App Config button (it’s the up arrow with an A beside it on the right-hand side of the window).

Go to App Settings > General.

There is a field labeled App to use, change that from PPM to PPM and UART.

Go to App Settings > UART. Set the Baudrate to 9600 bps. Click the Write App Config button (it’s the down arrow with an A beside it on the right-hand side of the window).

All done.

EXTRAS: Throttle Curves

Throttle curves are so awesome. It makes acceleration at low speeds more reliable and at higher speeds less finicky. Feel free to experiment, it can’t hurt, just be careful on the first few rides until you get used to it.

The throttle curve I’m going to show you is what I use most of the time. It works great on batteries that output 40a to 80a, on both urethane and pneumatic wheels.

Insert your USB cable in the Master VESC, click Connect the click the Read App Config button Click App Settings > PPM > Throttle Curve

This is the default view, you will see there is no curve. This means the throttle is linear from full positive to neutral to full negative.

Change the Throttle Exp value to -20%, the Throttle Expo Brake value to -20% and the Throttle Expo Mode to Expo-Natural.

Now your curve will look like this.

In practice, this means that from neutral to acceleration and neutral to break the same amount of throttle will exert less impact, 20% less. I have an esk8 that runs 18/36 pulleys, that’s a lot of speed on 100mm wheels, I set both values at 35% to make the throttle more manageable. Give it a shot and let me know what you think.

EXTRAS: Good Reverse (You CAN’T Handle the Good Reverse!)

What, you want the ever elusive “Good” Reverse? Too bad, Frank says you can’t have it. But we don’t respect authority around here, we’re just a bunch of skaters, right? Here’s how you do it:

Insert your USB cable in the Master VESC, click Connect the click the Read App Config button. Go to App Settings > PPM > General. There is a value labeled Max Direction Switch ERPM Enabled. By default, it is set to False.

Set it to True (it should look like this).

Click the Write App Config button (it’s the down arrow with an A beside it on the right-hand side of the window). Give the remote a test throttle up, the down. Then return to neutral and pull down again, now you’re in reverse.

Finito 🙂

EXTRAS: Hybrid or Sensored Mode

By default you are in Hybrid mode. That means you’re running FOC at low speed and Sensorless at high speeds. This is good for your VESC, FOC can eat a VESC, it has been known to happen.

Using Hybrid mode you are minimizing the impact of FOC on the VESC while still getting the smooth start and quiet running at low speeds. Road noise kills the value of the quiet FOC gets you, in most cases, so FOC at high speeds is not that noticeable.

Do what you want, experiment, see what feels right. If you decide to go full Sensored mode, here’s how you do it.

Insert your USB cable in the Master VESC, click Connect the click the Read App Config button. Go to Motor Settings > BLDC > General.

Set the value for Sensor Mode to Sensored. Click the Write App Config button and go test it out.

Click the Write App Config button and go test it out.

EXTRAS: Ackmaniac Android App

Here is a link to the Ackmaniac Android app (ESC Monitor) at the Google Play Store. It has lots of options, including the ability to change the modes, and it’s another benefit of having the Ackmaniac firmware installed on your ESC(s).


@mmaner didn’t read all yet, but does the hybrid mode is completely different on ack firmware?

On the oficial the hybrid mode only means that at low speed you are running sensored and after that the observer is used, nothing to do with runing FOC at low speed and then switching to BLDC


I could be wrong, that was my understanding from the help file. I’ll check to be sure. Thanks for letting me know.


I run ackmaniac on my vesc6s. I like it a lot. Good write up!


Same here, much better and smoother ride than normal (raptor 2)


@mmaner, why do you want to slam Vedder in the face, for all the good work he has done for the community? Such an unfair childish move against someone you don’t even know and are not in contact with.

Your introduction is FAKE NEWS with bad intentions in mind (damaging Vedder):

It seems there are some issues with the newest VESC Tool (as of 06/20/2019) including the absence of an ERPM limit for direction change (reverse) and unusable values applied with the motor setup wizard.

First you do completely wrong statements, then you confuse about who is actually publishing VESC-Tool and who’s to be asked for changes via pull requests or forum.

Please kindly ask Vedder if you would like a feature implemented! It is 100 % perfect to request something!

A good way to take part in the project is actually writing a post on Vedders forum with your comments on VESC-Tool, what you like and what you don’t like for what reason and what could be improved from your point of view. And if you find a Bug you can also report it there. This can be done as a single person or a group.

To clarify it:
VESC-Tool doesn’t even have PPM reverse yet, so an absence of ERPM limits for switching to reverse is purely logic and not a bug or safety issue. Reverse via NRF remotes is done via communication protocol at zero RPM. There is no setting you need to adjust.
PPM reverse is on the to do list, like some other features.
One thing is coded after another…

The VESC can’t know if the PPM signal it receives is user intended or a bad signal the receiver sends because it has a fault or interference. The VESC or any clone Hardware is blind to that, due to the nature of the simple PPM signal. Any feature that is implemented for PPM therefore needs to be tested to always work 100 reliably.

Get yourself informed and get in touch with the guy who wrote 99% of the code your board runs on before putting statements into the world that are factually wrong. The wizards that are promoted in the summery are actually all coded by Vedder. As a News editor you should also do some research first and maybe get in touch with the authors of the software, so they can actually give you explanations to why some things are as they are. Vedder is one of the most reasonable guy you can possibly imagine and he does know exactly what he is doing.

I will also leave this here:


Ackmaniac firmware put the final touch of refinement on my vesc. I experience heat throttling a lot less. When I am throttle it is not that severe. The watt mode is nice and linear, I can feel when the phase advance kicks in like VTEC. This is the firmware to use for sure.


@mmaner This is awesome, and a great asset to have! Thank you :smiley:


With all due respect for Vedder, I strongly dislike the VESC forum because it sucks. This Rails/Discourse-based forum is so much nicer to use. Even on the old builder’s forum I felt the same way.

I love what Vedder has done and strongly support open-source, but the php engine powering that forum leaves a whole lot to be desired.

Furthermore, if you think we should interact with Benjamin Vedder himself, nobody is stopping him from coming here and interacting with the community.

Vedder =/= Trampa


Thanks @mmaner! This is solid! I have yet to run Ackmaniacs and I’m really excited I don’t have to find info “here and there”! Rest assured, I donated to the site and your contribution does not go unnoticed!


Great article. Should be stickied if we had stickies. Wish I had this clear of a tutorial when I started using VESCs. It really is pretty easy to use this tool once you’ve done it a few times. Noobs need not fear anymore.

Do you have any suggested settings to make the brakes stronger on hub/direct drives? I haven’t messed with the settings yet, but I think I recall reading about enabling reverse at some point to create stronger braking force. I usually only ride in forward only & brake mode, so I wonder if this works by just enabling reverse mode like you’ve explained or if there are better settings for these drive systems?


@mishrasubhransu did a nice write-up on eLofty DDs with a braking solution:


Frank I will spar with you.

The Ack firmware has long been regarded as the best firmware that lived by many. Stable, no bugs and great features.

If you want the latest firmwares to take that crown you/Vedder have to do some work. 1, listen to feedback objectively. 2, fix the bugs. 3, look into implementing the features that make Ack firmware so good.

It really is that simple


Holy crap, I wasn’t even aware that it works with HW60. OOOOOOOOOOOOOH. FUNCTIONAL BLUETOOTH? YUSSSSS. :open_mouth:


Please ask yourself what you can I for the project! How can I help?

An appropriate way to get features implemented is sending in a Pull Request and find some nice words along with it. If you don’t know how to do that, find someone who has the knowledge and work together with him/her. There are people here who do know the code base or who do know how to send a pull request. Submit that request to Benjamin’s Git hub once it is finished. He will look at it and will merge things.

In the past months, the requests sent via Git Hub were pretty much all merged, since Vedder is motivated to implement useful features.

However, please also not that this is a Open Source Project and it’s coded by enthusiasts that use spare time to make things happen for the community.

Vedder is a busy man and beside working full time he recently finished his PHD, organized his wedding and coded for you guys in the evening or on weekends.

Requesting something is 100% perfect, but you can all help by gathering information,
organizing a pull request or putting feedback together in a condensed and structured way.

Yes. 10chars.


tell us more about it


He found a very nice lady to spend the rest of his life with. Despite that he coded like a ninja for the community.


@trampa it was a sarcasm. Seriously, people don’t care how he organized his wedding. In fact I think it is not appropriate to share such information with public, this is just weird!


Come on, that is nothing to be ashamed of. It’s life at it’s best.