Onewheel-specific VESC firmware 6.06 release: Refloat Extras (rflt-xtras-0.1)

Release stage: beta

I’ve accummulated a number of firmware fixes and improvements which are either in various stages of getting submitted for inclusion in the stock firmware or are not possible to include. I’ve now compiled them into a release.

IMU improvements (LSM6DS3 only)

  • Add an option to increase the LSM6DS3 IMU communication speed to 700kHz
  • Rework the sampling of the LSM6DS3 IMU

These changes together clean up the data path from the IMU to the package (at least as much as possible with the current hardware). They massively improve the static vibration rejection as demonstrated in this video:

They also have the potential of getting rid of some cases of nose hunting. I have very little data on that atm., but they have resolved a particular case of nose hunting for me (on cobblestones at around 25km/h) and have improved stability for another rider at speeds close to or over 60 km/h.

List of common Onewheel controllers with the LSM6DS3 IMU (The rest of common Onewheel controllers use the BMI160 IMU, to which no changes were made in this release. If you have a niche controller, you should verify.):

  • ADV500
  • JetFleetF6_20s
  • JetFleetF6_24s
  • JetFleetF6_32s
  • Little_FOCer_V3_1
  • Little_FOCer_V4
  • Thor300
  • Thor301
  • Thor400
  • Thor400v2
  • TRONIC_250R
  • X12_PRO24
  • X12_PRO30

The increase in IMU communication speed to 700 kHz is experimental! It should be safe after testing it over ~10 minutes of careful riding.

The higher speed can be configured by setting the “Use magnetometer” IMU config option to False (false = fast). Setting True (default) results in slow (400 kHz) speed being used.

Tested combinations of IMU configurations and their status:

  • Common IMU sample rates of 416 or 833 Hz safe
  • IMU BUS speed: 400 kHz (slow), IMU Sample Rate: 1200 Hz safe
  • IMU BUS speed: 700 kHz (fast), IMU Sample Rate: 1200 Hz should be safe after an initial test
  • IMU BUS speed: 700 kHz (fast), IMU Sample Rate: 1600 Hz possible, but 1200 Hz may provide more stable results

List of controllers tested at 700 kHz speed (single unit each):

  • Tronic 250R (riding for ~2 months)
  • JetFleet F6 (riding for ~5 months)
  • Thor 400v1 (900 km)
  • Thor 300 (benchtop testing)
  • Thor 301 (brief benchtop testing)

Recommended IMU settings (after careful testing)

  • Use magnetometer: False (fast 700 kHz speed)
  • IMU Sample Rate: 1200 Hz
  • Accel/Gyro Filter: IMU_FILTER_LOW

Other changes

  • Disable Motor/MOSFET temeperature fault if Temp Cutoff End is set to 100°C or above

    Setting the Temp Cutoff End to 100°C or higher for either Motor or MOSFET will completely disable the VESC firmware throttling and fault logic. Useful as a precaution for a hardware failure causing a fault and a nosedive.

    It is expected you rely on and respect the temperature alerts from the package (those are based off the Temp Cutoff Start config values).

  • Support for Data Recording

    Allows to store a short time period of realtime data in the board itself without the need to be connected, which can be later viewed in Refloat.

  • Don’t cut the motor during package config writes

    Reverts the VESC firmware change of now cutting the motor while writing the package config.

  • Add the crash_diag VESC Terminal command

    Can be used to debug spurious controller resets.

Please read the changelog for more details on all the changes (linked below).

Testing the firmware after installing

Make sure to follow my experimental software testing guide to ensure the firmware works properly on your board before riding it.

Download and changelog

v6.06-rflt-xtras-0.1

Support me

I invest a lot of time and energy into developing and testing of these improvements. If you would like to support the development, here’s a few options to do so.

Double checking, does the Floatwheel GTV kit use an ADV200 controller with the BMI160 IMU and if so I don’t need to upgrade?

Ennoid’s controllers also recently (08/2025) switched to the LSM6DS3 due to scarcity of the BMI160.

It’s noted on his product page - ENNOID - MK8 - ESC .

Yes, ADV200 uses BMI160 so you don’t get the IMU benefits. You could upgrade for the other improvements if you wanted.

1 Like

Ah, yes. It’s a sensitive topic. Ennoid didn’t submit the hardware configs for all his hardware variants to upstream. He doesn’t even have them in git. He’s got them on a google drive somewhere and would hear nothing about doing things the right way. I’m not gonna be manually coping his source files from somewhere and figuring out if I’ve done it correctly, not even having the hardware to test them (even if I wanted to go out of my way testing them). So sadly, no support for those until Kevin gets his stuff straight :frowning:

So in your initial list of controllers with the LSM6 the F6 isn’t on there, but then scrolling down it looks like you’ve tested it on the F6. I believe the LSM6 is used on the F6 - is that one of the controllers that would benefit from this update, or no?

1 Like

Damn, you’re right, an omission on my part. Added.

1 Like

Quick question, some users asked me for the data recording aspect of your firmware.

Is the feature for development purpose only or for actual short term data logging? How does that work exactly? Do you still need an sd card somewhere or it is stored on the VESC internal memory itself?

Related to post above where I’m concerned: I should be able to add the file on GitHub eventually. I had some valid reasons to not do so until recently and I understand the frustration.

It’s an actual short term data logging, stored in the VESC RAM. That’s why it needs a special firmware, to allocate the buffer and expose it to the package. It’s logging at the native Control Loop frequency (so you have complete data), though especially with the frequency increasing the time period it captures is really short. I’ll be adding a sampling rate divider for the final 1.3 Refloat release to increase the captured time span by dropping samples.

The way it’s wired (by default) it starts logging on board engage and stops on disengage, so it can be used to diagnose nose dives even if you aren’t connected.