How to Update to VESC FW 6 / VESC Tool 6

The newest update to VESC Firmware and VESC Tool is here, with the biggest change being that the Balance App is moved over to a new feature called VESC Packages, allowing package updates with no firmware update needed, custom UI, XML saving/loading from mobile, writing Balance config while riding, and the freedom for other developers to create custom packages with their own parameters and functionality. Taking advantage of this, we have ported all the features from Dado’s ATR Firmware into the “Float Package,” which features removed unneeded parameters, properly named new parameters and features, usable default/min/max values, informative Help text, and more.

This guide will walk you through the simple process of upgrading to the latest VESC Tool and FW to try for yourself, while maintaining your motor and app (IMU) configurations. Note that this guide assumes you already have a working VESC 5.3 setup. If you are setting up for the first time, the process is fairly similar. Instead of recovering configs, just follow along with guides that are already out there for motor setup, and for IMU Calibration, use the newly included IMU Wizard. I will likely make a video on this process at some point.

The following is a pretty hefty wall of text to keep things clear, but the process is honestly pretty straight forward. If you are comfortable with VESC, just follow the TL;DR below, and reference the following text as needed for clarifications.


  • Take note of your current Balance settings (for manual input later)
  • Download VESC Tool 6
  • Backup working FW 5.3+ Configs (also save to XMLs, with recognizable names)
  • Upload stock VESC 6 Firmware
  • Restore your backed-up configs
  • Set App to Use to UART (App CFG → General) - do not set to “None/No App” or you may lose Bluetooth!!
  • Set Accel Lowpass Filter Z to 1.0 Hz (App CFG → IMU)
  • Install the Float / Balance Package
  • *Balance Package Only* Load up a known working Config XML
  • Adjust Loop Hertz and HV/LV Tiltback Thresholds to match your board specs
  • Manually tweak default settings to match your previous / preferred Tune

Note your current Balance configs!

The new packages feature means that Balance Configs are no longer stored in the App Config, and will not transfer over! If you want to keep track of your tune and move it over to the new update, I highly recommend taking note in someway of the different values, such as by screenshotting or screen recording. You could just reference the raw XML itself as well, though with parameter names changing and what not, this could get pretty confusing. Luckily, following this guide, either Package will have solid values to start with, so you only have to take note of your most notable tune tweaks to get up and running. Once you’re ready to go, feel free to move forward.

Download VESC Tool 6:

The latest VESC Tool can be accessed in the same way it has in the past, either through the VESC Project website for Desktop, or your device’s app store for Mobile.

For Desktop, navigate to If you have downloaded VESC Tool before, you can simply log in at the top right of the page. If not, scroll down and choose the version of VESC Tool you desire (same features, just a way to support the developer), and go through the checkout process to gain access to VESC Tool.

Once you are logged in, select “Purchased Files” at the top right of the web page. Here, you will see the various download options for VESC Tool. Select the option that corresponds to your operating system, and extract the zip folder to access the latest VESC Tool.

Flash VESC FW 6:

This process can be done on either Desktop or Mobile, whichever you prefer. If you have ever flashed firmware before, this process will be no stranger to you. First, backup your configs using your preferred method. On Mobile, this is done on the Start screen using the Backup Configs button. On Desktop, from the Menu Bar found at the top left of the Window, you can either backup under ConfBackup → Backup Configuration, or you can save your Motor and App XML’s individually under File → Save Motor/App Configuration XML as… .

Once your configs are safely backed up, navigate to the Firmware Menu (found on left sidebar on Desktop, or on top NavBar on Mobile). Go to the “Included Files” page/tab, where you will see a VESC_default.bin ready to go with your controller listed (i.e. Little_FOCer_V3_1). If there is no discrepency here, feel free to hit the upload button and proceed through any pop-up warnings to begin flashing (“Upload” on Mobile, or a Down Arrow on Desktop). Upon successful completion (may need to try again if it disconnects / times out), you will receive an alert confirming the upload is done, and the controller will automatically reboot itself after about 10 seconds. You may need to disconnect and reconnect following this.

From here, simply restore your backed up configs. On Mobile, this is done using the Restore Configs button on the Start tab. On Desktop, this is done through the Menu Bar, either through ConfBackup → Restore Configuration, or through File → Load Motor/App Configuration XML and writing the changes, just depending on which method you used to save your backups. You may get a warning about the motor configuration potentially not being compatible, but this hasn’t seemed to be the case so far as long as you were on FW 5.3 or newer. If you run into any issues, consider running Motor Setup.

Once this is all done, assuming you had a working VESC FW 5.3 config, you only need to make two changes. First, navigate to App CFG → General, and set your App to Use from Balance (or whatever it may be) to UART. Second, navigate to App CFG → IMU, and set your Accel Lowpass Filter Z to 2.0 Hz. This applies the same Nose Hunting / IMU Confusion fix found in Dado’s latest custom firmwares. And of course, make sure to WRITE your App CFG to apply these changes.

Install the Float / Balance Package:

The only step left to do is load up the desired package! The stock Balance App has been packed into its own package, which replaces the Balance App completely. Along with the Balance Package, we have now developed the “Float” Package, which is tailored for Onewheels specifically and packs in all the features of Dado’s ATR firmware, all with properly named parameters, usable default values, informative help text, safe to use max/min values, and more. For the majority of riders, we strongly recommend the Float Package for the best experience, though the original Balance Package is still available to you, just requiring a few extra steps. Luckily, both can be installed with ease from either desktop or mobile. Here’s how:

EDIT: The packages tab seems bugged currently on iOS, not updating properly. If this is the case for you, you must use desktop or Android VESC Tool for this step

Navigate to either the “VESC Packages” tab on Desktop’s left sidebar, or the “Packages” tab on Mobile’s top NavBar. From here, if you are on Desktop, make sure you are under the “Package Store” tab. And from either device, locate the “Update Archive” button and select it to refresh the list of available packages. Once this is loaded, you can either select “Float” or “Balance”, depending on your desired package, and select “Install.” This process will take a moment, and upon completion, you will receive an alert confirming the upload was successful. From here, you must disconnect and reconnect for the package to properly update the VESC Tool UI. A custom “AppUI” tab (found on Desktop version in the Welcome & Wizards screen) should now be available, as well as the new “Float CFG /Balance Settings” tab, where you can find your config.

Float Package:

The Float CFG tab is where you can find your config. Usable default values will automatically be loaded and ready to go, though feel free to look around, check the help texts for more information, and change parameters to your liking to fit your preferred tune. Just note that some parameters will be scaled differently than you might be used to. For example, a previous “Deadzone” value of 3 is now an “I Term Limit” value of 30, and an ATR Strength of .15 is now 1.5. And lastly, be sure to check out the “Specs” tab under Float CFG to make sure the values match your setup. By default, it’s loaded up for a 63V battery and Little FOCer V3.1 (832 Hz).

Float Package adds many new features and parameters, and it may be overwhelming at first. That’s why the Help texts for all parameters, old and new, have been overhauled to be much more helpful and informative! Be sure to check out the Help text for more context on what certain features might do.

As a note, ATR is enabled by default, and is now in it’s own tab separate from Torque Tiltback. If you’re coming from Stable (not Dado’s ATR Firmware) and would like to start with the tune you’re familiar with and tweak from there, feel free to set ATR strength to 0, and setup Torque Tiltback however you would like. Or even feel free to enable both ATR and Torque Tiltback simultaneously, as they can now be used together! It’s setup in a way to prevent them from stacking and overreacting on steep inclines, so feel free to give it a shot and see how you like it!

If you are coming from Dado’s ATR Firmware, you are likely used to the variety of features that were accessed through repurposing unused parameters and using the decimal values of other parameters. This is no longer necessary, and all features now have their own parameters and are properly organized! If you struggle figuring out what’s what compared to the old way of doing things, be sure to reference Dado’s spreadsheet; most new parameter names are based on how they are named there.

Balance Package:

The Balance Settings tab is where you can find your config. Parameters will look a bit different than what you are used to from 5.3 due to new additions, and some parameters you may know from Dado’s custom firmware (such as what is formerly accessed through Deadzone and Yaw P) now get their own parameters (I Term Limit and Rate P respectively).

While you can reference your previous Balance config by accessing the Balance tab under App CFG (Will need to change App to Use to Balance to access on Desktop), I highly suggest just starting with a solid working config XML to start and adjusting from there. I’ve attached one here. This XML can be loaded using buttons found at the bottom of the config screen itself. And as always, don’t forget to Write after loading! Just note, this is based on a 63V Battery and Little FOCer V3.1 (833Hz), so you may need to change your Loop Hertz and HV/LV Tiltback Thresholds if you differ from that.


As a final note, I do want to clarify things on two new features. First, you are now able to write Balance/Float config settings while riding! Please use this with caution; it’s generally safest to still come to a stop before doing so. Be smart about it. And note, that this does NOT apply to App/Motor configs, which WILL still disengage the board when written to.

Second, saving XML’s is now possible, allowing easily switching between saved tunes! There’s a few things to note. First, when saving, make sure to name your file with “.xml” at the end. Otherwise, the save will likely fail. Additionally, I know I personally have had issue with trying to overwrite existing XML’s. I’m not exactly sure why this is or if this applies to all devices, and Vedder was unable to fix it for now, so just keep this in mind. I personally keep all my XML’s in their own folder, and if needed, I use Android’s built in file manager to delete old configs since I’m not able to overwrite them.

That should about cover things. If you have any questions at all, or discover any issues with this guide, please feel free to leave a reply below so we can help everyone out and make sure things stay accurate and up-to-date. Excited for you all to try this out, take it easy and happy shredding! :v:


The VESC Tool (and the VESC mobile app) can only remember one backup per VESC, so if you want to keep using backup for your current v6.0 config and also want to keep a backup of your v5.3 stuff, you need to save your 5.3 configs to XML files

The package setup seems super cool. Does the balance package offer any features that I’m missing with dado’s V6 stable firmware? or is this just for getting a head start on the VESC FW update? I would like to get the surestart working on my board if possible.

1 Like

The Balance Package is very similar to Dado’s Stable V6 in functionality. The biggest difference is the way Rate P (set under Yaw P in Dado’s firmware) is applied, as it uses “Cascading PID’s.”

In Dado’s firmware, the Angle PID is calculated, and then Rate P is simply added to it. However in the Balance Package, Rate PID is not only added, but it also influences Angle PID as well. For example, if you use Rate P of 0.6, the Angle PID is actually multiplied by 0.6 before adding the result of the Rate PID. Bit oversimplified, but point being, your PID’s may need to be altered to get the desired tune.

The Float Package being developed reverts this behavior back to just Angle PID + Rate PID like most people know.

If app —>set None , is ble or uart communication still running? I need run uart communication in balance .

1 Like

I hadn’t thought about that actually, good question! Built-in BLE, as well as a BLE receiver running over CAN, work fine. However, I don’t have any devices running off UART communication to test. But if I were to bet, I would guess that setting the App to Use to UART would be required for this case scenario. I don’t see any reason for issues doing this, so this may be the better bet to recommend to people, thanks for the question!

1 Like

I have another question, in the previous balance app, in the app.h
void app_balance_start(void);
void app_balance_stop(void);
void app_balance_configure(balance_config *conf, imu_config *conf2);
float app_balance_get_pid_output(void);
float app_balance_get_pitch_angle(void);
float app_balance_get_roll_angle(void);
uint32_t app_balance_get_diff_time(void);
uint32_t app_balance_get_loop_time(void);
float app_balance_get_motor_current(void);
uint16_t app_balance_get_state(void);
uint16_t app_balance_get_switch_state(void);
float app_balance_get_adc1(void);
float app_balance_get_adc2(void);
float app_balance_get_debug1(void);
float app_balance_get_debug2(void);

Do these functions work properly.

They do yes, you can find their definitions in app_balance.c, I believe the get functions are primarily just used to populate the Balance App’s RT Data screen (very bottom RT Data screen on mobile app)

Key is to set “enable permanent UART” to true in App - General. In future versions of the Float package we intend to force that flag to be set so people don’t get stranded without bluetooth working…


Updated to reflect the launch of VESC Tool / FW 6.0!


I just update on iOS and now nothing works :disappointed:
On iOS I can’t see nothing on packages, I tried to restore everything on android. I got an error message saying that “couldn’t read firmware version. make sure that the selected port really belongs to the VESC”

What can I do ?

Hi, had that too. I did a firmware update just by android app, so no computer in between. Hope it helps.

if you get to a point where it says “can not read firmware version” you’re out of luck I’m afraid. You will need to open up your board and connect via USB now

1 Like

Is there a custom bin to update the Spintend UBOX75 to 6.0?

Just wanted to say that this guide worked well for me when swapping from ATR24 to FW6/Float package. My testing so far is going great so far and I think I’m just about confident enough to swap my other 2 boards over. Thanks!


Just wanted to let you know that V6 seems to work correctly on Flispky.
The only difference is that I need to select: App to Use to None as otherwise my external IMU (BMI160) was not working properly.
I also have Enable Permanent UART to True

1 Like

This is the short guide tested on Android


Question for you - why set the accel lowpass Z filter to 1Hz? Didn’t we use to say 2Hz for that? Any particular reason that 1Hz is better?

1Hz should be a more aggressive filtering and in theory could be even more effective, if it doesnt cause any negative side effects. I’ve ridden 1Hz a bit myself and so far havent really noticed any issues or noticable differences.

I told you long time ago when the filter got implemented that the board doesn’t snap back to level so well. It stays low and if you do it repeatedly it goes lower and lower and ends up nose dragging. I was testing a bit and realized that it snaps back to level much better with 1 Hz. Also it is used by the balance skateboard imu wizzard. I didn’t notice any negative side effects so far.