DFU to 4.6 problematic, need help

Hi all you brilliant young minds; the past three days have been troublesome to say the least.

Tried every which way (followed every instruction) to update firmware to no avail.

And this the following text is the closest I get.

What little hair I have is almost gone, please help :disappointed:

(base) C:\Users\me>odrivetool dfu
ODrive control utility v0.4.1
Waiting for ODrive...
Found ODrive 205C36A03548 (v3.5-48V) with firmware v0.4.1-dev
Checking online for newest firmware... found v0.4.6
Downloading firmware v0.4.6...
Saving configuration to C:\Users\me\AppData\Local\Temp\odrive-config-205C36A03548.json...
Configuration saved.
Putting device 205C36A03548 into DFU mode...
USBError                                  Traceback (most recent call last)
~\Anaconda3\lib\site-packages\fibre\usbbulk_transport.py in process_packet(self, usbBuffer)
     96     try:
---> 97       ret = self.epw.write(usbBuffer, 0)
     98       if self._was_damaged:

~\Anaconda3\lib\site-packages\usb\core.py in write(self, data, timeout)
    386         """
--> 387         return self.device.write(self, data, timeout)

~\Anaconda3\lib\site-packages\usb\core.py in write(self, endpoint, data, timeout)
    947                 _interop.as_array(data),
--> 948                 self.__get_timeout(timeout)
    949             )

~\Anaconda3\lib\site-packages\usb\backend\libusb0.py in bulk_write(self, dev_handle, ep, intf, data, timeout)
    532                             intf,
--> 533                             data, timeout)

~\Anaconda3\lib\site-packages\usb\backend\libusb0.py in __write(self, fn, dev_handle, ep, intf, data, timeout)
    615                         length,
--> 616                         timeout
    617                     )))

~\Anaconda3\lib\site-packages\usb\backend\libusb0.py in _check(ret)
    430             return ret
--> 431     raise USBError(errmsg, ret)

USBError: [Errno None] b'libusb0-dll:err [submit_async] submitting request failed, win error: The device does not recognize the command.\r\n'

During handling of the above exception, another exception occurred:

TimeoutError                              Traceback (most recent call last)
~\Anaconda3\Scripts\odrivetool in <module>()
    140         print_version()
    141         import odrive.dfu
--> 142         odrive.dfu.launch_dfu(args, logger, app_shutdown_token)
    144     elif args.command == 'liveplotter':

~\Anaconda3\lib\site-packages\odrive\dfu.py in launch_dfu(args, logger, cancellation_token)
    448     firmware = FirmwareFromFile(args.file) if args.file else None
--> 450     update_device(device, firmware, logger, cancellation_token)

~\Anaconda3\lib\site-packages\odrive\dfu.py in update_device(device, firmware, logger, cancellation_token)
    347     if dfudev is None:
    348         find_odrive_cancellation_token = Event(cancellation_token)
--> 349         put_into_dfu_mode(device, find_odrive_cancellation_token)
    350         stm_device = find_device_in_dfu_mode(serial_number, cancellation_token)
    351         find_odrive_cancellation_token.set()

~\Anaconda3\lib\site-packages\odrive\dfu.py in put_into_dfu_mode(device, cancellation_token)
    224     print("Putting device {} into DFU mode...".format(device.__channel__.usb_device.serial_number))
    225     try:
--> 226         device.enter_dfu_mode()
    227     except fibre.ChannelBrokenException:
    228         pass # this is expected because the device reboots

~\Anaconda3\lib\site-packages\fibre\remote_object.py in __call__(self, *args)
    122         for i in range(len(args)):
    123             self._inputs[i].set_value(args[i])
--> 124         self._parent.__channel__.remote_endpoint_operation(self._trigger_id, None, True, 0)
    125         if len(self._outputs) > 0:
    126             return self._outputs[0].get_value()

~\Anaconda3\lib\site-packages\fibre\protocol.py in remote_endpoint_operation(self, endpoint_id, input, expect_ack, output_length)
    294                     self._my_lock.acquire()
    295                     try:
--> 296                         self._output.process_packet(packet)
    297                     except ChannelDamagedException:
    298                         attempt += 1

~\Anaconda3\lib\site-packages\fibre\usbbulk_transport.py in process_packet(self, usbBuffer)
    104         raise fibre.protocol.ChannelBrokenException()
    105       elif ex.errno is None or ex.errno == 60 or ex.errno == 110: # timeout
--> 106         raise TimeoutError()
    107       else:
    108         self._logger.debug("error in usbbulk_transport.py, process_packet")


HI all as for the post above, there has been a PART solution.

I have 2 ODrive cards, I have been troubled with one and have worked many hours/days, with no solution to the problem facing me.

So I decided to swap to the other card (which is the newer card and virtually unused) and using the DfuSe app from ST was able to update the firmware, with NO fuss.

Now I have 1 card working and up to date.

SO boys and girls what does this tell you about the problem with card 1??

Still need some help

Regards Jerry. :tired_face:

Oh, that’s a pretty old firmware and I know some of them had DFU issues. Not sure when that was fixed, but imo your best bet is to use an STLink to flash the board with 0.4.6 and then go from there.

Thanks Wetmelon, for the reply; as always I appreciate any response from you bright young people. :hugs:

And last evening I spent a few more hours on card 1, using the the STLink (as before) Last try and (as before) the system says it updates however; there is NO change (4.1 resides).

So the only thing I haven’t tried is set the card back to factory default, but I’m not sure that is possible??

What do you think?

Jerry :thinking:

Hi Wetmelon, just to let you know I was able to update to the latest firmware.

However NOT with the STLink; for some reason beyond the capability of my brain, the STlink only gives me a headache.

I always get similar to Neurotronic67

But I’m glad to say, at least both Odrives are up to date “Oh happy day” :joy:

Thanks for your support.


1 Like