Firmware update failed. Odrive no longer visible on usb

I tried to update my firmware using ‘odrivetool dfu’ and got the following error:

File “/odrive/dfuse/DfuDevice.py”, line 201, in write_sector
raise RuntimeError(“An error occured. Device Status: {!r}”.format(status))
RuntimeError: An error occured. Device Status: (0, 2, 0, 0)

(See full trace below)

Now dfu cannot see my device on usb to attempt a reflash and odrivetool does not find the device.

(venv) Sani:~/dev/fence/bs_fence_server: odrivetool dfu
ODrive control utility v0.5.1.post0
Waiting for ODrive…
Downloading json data from ODrive… (this might take a while)
Found ODrive 206C3595524B (v3.6-56V) with firmware v0.4.11-dev
Checking online for newest firmware… found v0.5.1
Downloading firmware v0.5.1…
Saving configuration to /var/folders/x2/t9qktr6n2wbfqm9kvl3pwdcw0000gr/T/odrive-config-206C3595524B.json…
Configuration saved.
Putting device 206C3595524B into DFU mode…
Erasing… done
Flashing… (sector 0/6)
Traceback (most recent call last):
File “/Users/sani/dev/fence/bs_fence_server/venv/bin/odrivetool”, line 143, in
odrive.dfu.launch_dfu(args, logger, app_shutdown_token)
File “/Users/sani/dev/fence/bs_fence_server/venv/lib/python3.8/site-packages/odrive/dfu.py”, line 465, in launch_dfu
update_device(device, firmware, logger, cancellation_token)
File “/Users/sani/dev/fence/bs_fence_server/venv/lib/python3.8/site-packages/odrive/dfu.py”, line 393, in update_device
dfudev.write_sector(sector, data)
File “/Users/sani/dev/fence/bs_fence_server/venv/lib/python3.8/site-packages/odrive/dfuse/DfuDevice.py”, line 201, in write_sector
raise RuntimeError(“An error occured. Device Status: {!r}”.format(status))
RuntimeError: An error occured. Device Status: (0, 2, 0, 0)
(venv) Sani:~/dev/fence/bs_fence_server: odrivetool dfu
ODrive control utility v0.5.1.post0
Waiting for ODrive…
Traceback (most recent call last):
File “/Users/sani/dev/fence/bs_fence_server/venv/bin/odrivetool”, line 143, in
odrive.dfu.launch_dfu(args, logger, app_shutdown_token)
File “/Users/sani/dev/fence/bs_fence_server/venv/lib/python3.8/site-packages/odrive/dfu.py”, line 465, in launch_dfu
update_device(device, firmware, logger, cancellation_token)
File “/Users/sani/dev/fence/bs_fence_server/venv/lib/python3.8/site-packages/odrive/dfu.py”, line 268, in update_device
serial_number = device.serial_number
File “/Users/sani/dev/fence/bs_fence_server/venv/lib/python3.8/site-packages/usb/core.py”, line 852, in serial_number
self._serial_number = util.get_string(self, self.iSerialNumber)
File “/Users/sani/dev/fence/bs_fence_server/venv/lib/python3.8/site-packages/usb/util.py”, line 313, in get_string
raise ValueError(“The device has no langid”
ValueError: The device has no langid (permission issue, no string descriptors supported or device error)
(venv) Sani:~/dev/fence/bs_fence_server: odrivetool dfu
ODrive control utility v0.5.1.post0
Waiting for ODrive…
^CTraceback (most recent call last):
File “/Users/sani/dev/fence/bs_fence_server/venv/bin/odrivetool”, line 143, in
odrive.dfu.launch_dfu(args, logger, app_shutdown_token)
File “/Users/sani/dev/fence/bs_fence_server/venv/lib/python3.8/site-packages/odrive/dfu.py”, line 458, in launch_dfu
devices[1] = odrive.find_any(“usb”, serial_number,
File “/Users/sani/dev/fence/bs_fence_server/venv/lib/python3.8/site-packages/fibre/discovery.py”, line 172, in find_any
done_signal.wait(timeout=timeout)
File “/Users/sani/dev/fence/bs_fence_server/venv/lib/python3.8/site-packages/fibre/utils.py”, line 90, in wait
if not self._evt.wait(timeout=timeout):
File “/usr/local/Homebrew/Cellar/python@3.8/3.8.5/Frameworks/Python.framework/Versions/3.8/lib/python3.8/threading.py”, line 558, in wait
signaled = self._cond.wait(timeout)
File “/usr/local/Homebrew/Cellar/python@3.8/3.8.5/Frameworks/Python.framework/Versions/3.8/lib/python3.8/threading.py”, line 302, in wait
waiter.acquire()

I had a similar problem recently. I had to flash firmware using an STLink