Oh I was pumped to read this!!
However, my board reboots everytime it says “entering DFU mode”…it never erases or flashes. 
(base) C:\Users\ajlapp>odrivetool dfu
ODrive control utility v0.4.1
Waiting for ODrive...
Found ODrive 206137883548 (v3.5-24V) with firmware v0.4.2-dev
Checking online for newest firmware... found v0.4.4
Downloading firmware v0.4.4...
Putting device 206137883548 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)
388
~\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)
534
~\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)
432
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)
143
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
449
--> 450 update_device(device, firmware, logger, cancellation_token)
451
452
~\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")
TimeoutError: