ODrive V3.5 not available any more after failed device firmware update


I tried to update my V3.5 motor controller with
odrivetool dfu
in anaconda/Windows.
During the update, the new device “STM32 BOOTLOADER” appeared.
Therefore I opened the Zadig utility and set the driver for “STM32 BOOTLOADER” to libusb-win32.
After that the odrivetool dfu finished with an error.

Now the odrivetool does not detect the motor controller anymore.
I am also not able to reproduce that dfu error anymore.
The motor controller is not listed as device in Zadig anymore.

Did I break the firmware or is that a usb driver issue?


  1. try to reflash

  2. change USB driver again


odrivetool dfu did not find the controller so I put it in dfu mode swiching the dip switch. odrive dfu then gives this error:

odrivetool dfu
ODrive control utility v0.4.9
Waiting for ODrive…
Found ODrive 385B37563437 (v3.5-48V) with firmware [unknown version] in DFU mode
Checking online for newest firmware… found v0.4.10
Downloading firmware v0.4.10…
The configuration cannot be backed up because the device is already in DFU mode. The configuration may be lost after updating. Do you want to continue anyway? [Y/n] Y
Erasing… done
Flashing… (sector 1/6)

RuntimeError Traceback (most recent call last)
C:\ProgramData\Anaconda3\Scripts\odrivetool in
140 print_version()
141 import odrive.dfu
–> 142 odrive.dfu.launch_dfu(args, logger, app_shutdown_token)
144 elif args.command == ‘liveplotter’:

C:\ProgramData\Anaconda3\lib\site-packages\odrive\dfu.py in launch_dfu(args, logger, cancellation_token)
452 firmware = FirmwareFromFile(args.file) if args.file else None
–> 454 update_device(device, firmware, logger, cancellation_token)

C:\ProgramData\Anaconda3\lib\site-packages\odrive\dfu.py in update_device(device, firmware, logger, cancellation_token)
380 for i, (sector, data) in enumerate(touched_sectors):
381 print(“Flashing… (sector {}/{}) \r”.format(i, len(touched_sectors)), end=’’, flush=True)
–> 382 dfudev.write_sector(sector, data)
383 print(‘Flashing… done \r’, end=’’, flush=True)
384 finally:

C:\ProgramData\Anaconda3\lib\site-packages\odrive\dfuse\DfuDevice.py in write_sector(self, sector, data)
185 status = self.wait_while_state(DfuState.DFU_DOWNLOAD_BUSY)
186 if status[1] != DfuState.DFU_DOWNLOAD_IDLE:
–> 187 raise RuntimeError(“An error occured. Device Status: {!r}”.format(status))
189 def read_sector(self, sector):

RuntimeError: An error occured. Device Status: (0, 2, 0, 0)

Had this kind of errors on slow computer.