We’re having this really strange issue where ODrivetool (0.4.9, 0.4.12, 0.51) succesfully loads firmware (via dfu-util and odrive dfu) but for all firmware versions except the very latest release we keep getting the following motor errors when opening odrive tool that block all motor functionality. ERROR_MODULATION_MAGNITUDE, etc. We’ve cleared the errors using dump, still not able to put a motor in calibration and when we restart the errors re-appear at startup.
Even boards we’ve previously been using have this issue as soon as we plug our USB cable into it and load ODrivetool. We’ve also tried the previous releases of the 0.5.1 ODrive firmware with same result. Official and our custom hex files all result the same unless except when using the latest release.
OK, making some headway here. It seems like there’s something going on with the configs when switching between firmware builds. If we upgrade a locked unit to ODrive 5.1, run calibration commands and save configs, then downgrade to our custom version (forked from ODrive 4.12) everything comes back online.
I’ve started to look at the diffs between the configs of each board using ODrive backup-config and still parsing through there.
- Do existing configs remain when a board is reflashed?
- Is there some config conflict between V4 and V5 that would cause a V5 config not downgrade to V4?
You won’t be able to flash a 4.12 config to a 0.5.1. Just erase_configuration() and start over. Same thing going the other way.
Make sure everything is in terms of revs and revs/sec now instead of cpr.
@Wetmelon thanks for the response. After further investigation we found that the erase_configuration() needs a reboot to take effect. Ergo, we were erasing configs but not ultimately saving that change. When going to V5, it just completely replaces the configs so that’s why we could recalibrate in v5 but just keep getting errors when switching to v4. My assumption is that v4 and v5 configs are saved in the broken configs during download of v5 and kept putting them back in when switching down to v4.
Downloading firmware v0.5.1...
Saving configuration to /var/folders/8y/64nn0cn955z5rbn2v6hk89h80000gn/T/odrive-config-
ANYWAY, we’re sticking with V4 for now since that’s what the rest of our codebase is written for and will look at v5 in the future. Hope no one else finds themselves in this crazymaking loop. Be sure to use odrv0.reboot() after erasing configuration as @madcowswe says here Erase configuration!
Ah, yes. In 0.5.1 it reboots automatically after erase to eliminate this problem