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)

So there is no bug in the firmware, only how the dfu tool uploads it?

Is RC2 V0.5.1 ok to install to get can-bus support?

Right. If you have an STLink you can flash that way, that always works. And yes, v0.5.1 has CAN support :slight_smile:

1 Like

Hi!

In STLink, you mean a device like this?

Yes, although that one seems odd. We typically recommend one that looks like this https://odriverobotics.com/shop/st-link-and-usb-extension-cable (regardless of where you buy it)

Hi Guys!

I’ve tried uploading firmware today, but the DFUse program will not find my Odrive.
It is present in Device Manager as STM32 BOOTLOADER (under libusb-win32 devices) when put in bootloader mode manually by the switch.
bootloader

But in DFUse Demo program I downloaded last time I fiddled with this, it is not showing up.

What can I do to access my device?