Bricked my Odrive 3.6? Firmware update problem

Hi!

Just tried to update my v3.6 to the newest RC firmware RC2 v0.5.1.
https://github.com/madcowswe/ODrive/releases/download/v0.5.1-rc2/ODriveFirmware-v3.6-24V.hex

(The original need for firmware update is related to can-bus, and I was adviced to update to 0.5.0, but I couldn’t find the HEX file for it.)

During firmware update, I get this:

(base) C:\Users\Magnar Tharaldsen>odrivetool dfu ODriveFirmware-v3.6-24V.hex
ODrive control utility v0.4.11
Waiting for ODrive…
Found ODrive 20763370304B (v3.6-24V) with firmware [unknown version] in DFU mode

You are about to flash firmware [unknown version] which is the same version as the firmware on the device ([unknown version]).
Do you want to flash this firmware anyway? [y/N] y
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 0/6)

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

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

~\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:

~\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))
188
189 def read_sector(self, sector):

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

Now the Odrive won’t boot up and connect with odrivetool, what to do? :stuck_out_tongue:

This is what the DFU switch is for. :slight_smile:

It will force it to enter the bootloader immediately on power on, for cases just like this.

Yes, I needed to use the switch for my second, third and forth attempt, but, it fails with different error each time.

Maybe I need to test another hex file?

You may need to try a different DFU tool (see here https://docs.odriverobotics.com/odrivetool#device-firmware-update)