Firmware update issue


#1

I recently tried to update my board (v3.5 24v) to the new firmware (v4.7 from 4.6). I tried to use the dfu tool and got an error. After this the board would not show up in the Zadig utility in run mode. I power cycled and switched to DFU mode on the board. It then showed up in zadig as STM32 BOOTLOADER. I then went into the anaconda prompt and this is what went down…

(base) C:\Users\Ian>odrivetool dfu
ODrive control utility v0.4.6
Waiting for ODrive…
Found ODrive 385B37813437 (v3.5-24V) with firmware [unknown version] in DFU mode
Checking online for newest firmware… found v0.4.7
Downloading firmware v0.4.7…
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)
C:\ProgramData\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’:_

C:\ProgramData\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_

C:\ProgramData\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:_

C:\ProgramData\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)

(base) C:\Users\Ian>

I then ran it again and got ValueError: The device has no langid

at this point I am very lost…


#2

I got very same error when trying to update to “input-filter” fork of latest firmware. I’m running OSX.

Launchpad@MacBook-Pro-2:~ λ odrivetool dfu /Users/Launchpad/Downloads/odrive_filter_branch/ODriveFirmware.hex
ODrive control utility v0.4.2
Waiting for ODrive…
Found ODrive 205330804648 (v3.5-48V) with firmware v0.4.2-dev

Warning: you are about to flash firmware [unknown version] which is older than the firmware on the device (v0.4.2-dev).
Do you want to flash this firmware anyway? [y/N] y
Saving configuration to /var/folders/z9/y477y8hd1gn8ss5__l_x70t00000gn/T/odrive-config-205330804648.json…
Configuration saved.
Putting device 205330804648 into DFU mode…
Erasing… done
Flashing… (sector 0/6)
Traceback (most recent call last):
File “/Users/Launchpad/anaconda3/bin/odrivetool”, line 142, in
odrive.dfu.launch_dfu(args, logger, app_shutdown_token)
File “/Users/Launchpad/anaconda3/lib/python3.6/site-packages/odrive/dfu.py”, line 450, in launch_dfu
update_device(device, firmware, logger, cancellation_token)
File “/Users/Launchpad/anaconda3/lib/python3.6/site-packages/odrive/dfu.py”, line 381, in update_device
dfudev.write_sector(sector, data)
File “/Users/Launchpad/anaconda3/lib/python3.6/site-packages/odrive/dfuse/DfuDevice.py”, line 187, in write_sector
raise RuntimeError(“An error occured. Device Status: {!r}”.format(status))
RuntimeError: An error occured. Device Status: (0, 2, 0, 0)

I’m quite lost too…


#3

Unfortunately this is a known issue that we haven’t fixed yet. In the mean-time please try using DfUse or dfu-util as described here.