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_diagVESC Terminal commandCan 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
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.