I have been working for weeks using the STM32CubeProgrammer workflow as described here. (This is the one that involved flipping the DIP switch between RUN and DFU modes - I did this because iirc the python method didn’t work for me.)
Yesterday I began seeing intermittent behaviour where:
- the Odrive in RUN mode works fine
- the Odrive in DFU mode is totally undetected.
When I say ‘intermittent’, I mean that randomly turning it off/on, or plugging/unplugging the usb cable would eventually sort it out. I was unable to find any logic for what change (if any) was actually making it work.
Today the Odrive is totally unresponsive and no amount of messing around will get it to be detected. I have wasted a lot of time with this and found it very frustrating.
The ODrive in RUN mode still functions fine - Windows chimes when it’s plugged in, odrivetool talks to it without problems. So the Odrive itself is healthy, it’s only the DFU mode that’s broken.
I need to be able to update the firmware. The current code running on the Odrive is half-finished and has a bug that renders it effectively useless. (The bug is trivial to fix, but showstopping.)
Zadig does not pick up the odrive in dfu mode. In run mode it sees Odrive 3.6 CDC and Odrive 3.6 Native.
Running odrivetool dfu
(in RUN mode) gives this result:
ODrive control utility v0.5.1.post0
Waiting for ODrive...
Found ODrive 20593687424D (v3.6-56V) with firmware v0.5.1-dev
Checking online for newest firmware... found v0.5.4
Downloading firmware v0.5.4...
Saving configuration to C:\Users\tog\AppData\Local\Temp\odrive-config-20593687424D.json...
Configuration saved.
Putting device 20593687424D into DFU mode...
Still waiting for the device to reappear.
Use the Zadig utility to set the driver of 'STM32 BOOTLOADER' to libusb-win32.
‘STM32 BOOTLOADER’ never appears in Zadig’s device list.
I was already far behind schedule with what I was doing before this happened.
Can anyone tell me what is going on?