I’m trying to flash my odrive s1 with the latest firmware, using odrivetool dfu, the DFU switch is in the correct position. However I keep getting a NoBackEnd error. Any help would be greatly appreciated, Thanks!
ODrive control utility v0.6.7
Waiting for ODrive...
---------------------------------------------------------------------------
NoBackendError Traceback (most recent call last)
File ~\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.11_qbz5n2kfra8p0\LocalCache\local-packages\Python311\Scripts\odrivetool:172
169 elif sum([bool(args.file), bool(args.channel), bool(args.version)]) == 0:
170 args.channel = 'master'
--> 172 asyncio.run(odrive.dfu.launch_dfu(
173 serial_number=args.serial_number,
174 path=args.file,
175 channel=args.channel,
176 version=args.version,
177 erase_all=not args.no_erase_all,
178 logger=logger))
179 except odrive.dfu.DfuError as ex:
180 logger.error(str(ex))
File C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.11_3.11.1264.0_x64__qbz5n2kfra8p0\Lib\asyncio\runners.py:190, in run(main, debug)
186 raise RuntimeError(
187 "asyncio.run() cannot be called from a running event loop")
189 with Runner(debug=debug) as runner:
--> 190 return runner.run(main)
File C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.11_3.11.1264.0_x64__qbz5n2kfra8p0\Lib\asyncio\runners.py:118, in Runner.run(self, coro, context)
116 self._interrupt_count = 0
117 try:
--> 118 return self._loop.run_until_complete(task)
119 except exceptions.CancelledError:
120 if self._interrupt_count > 0:
File C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.11_3.11.1264.0_x64__qbz5n2kfra8p0\Lib\asyncio\base_events.py:653, in BaseEventLoop.run_until_complete(self, future)
650 if not future.done():
651 raise RuntimeError('Event loop stopped before Future completed.')
--> 653 return future.result()
File ~\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.11_qbz5n2kfra8p0\LocalCache\local-packages\Python311\site-packages\odrive\dfu.py:305, in launch_dfu(serial_number, path, channel, version, erase_all, logger, force)
303 except asyncio.CancelledError:
304 pass
--> 305 device = (await asyncio.gather(*done))[0]
307 found_in_dfu = isinstance(device, ODriveInDfuMode)
309 if not found_in_dfu:
File ~\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.11_qbz5n2kfra8p0\LocalCache\local-packages\Python311\site-packages\odrive\dfu.py:118, in DfuDeviceDiscovery.discover(self, serial_number)
116 async def discover(self, serial_number: str):
117 while True:
--> 118 devices = await asyncio.get_running_loop().run_in_executor(self._executor, self._get_devices)
120 if serial_number is None and len(devices) > 0:
121 return next(iter(devices.values()))
File C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.11_3.11.1264.0_x64__qbz5n2kfra8p0\Lib\concurrent\futures\thread.py:58, in _WorkItem.run(self)
55 return
57 try:
---> 58 result = self.fn(*self.args, **self.kwargs)
59 except BaseException as exc:
60 self.future.set_exception(exc)
File ~\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.11_qbz5n2kfra8p0\LocalCache\local-packages\Python311\site-packages\odrive\dfu.py:100, in DfuDeviceDiscovery._get_devices(self)
98 with self._usb_lock:
99 all_devices = {}
--> 100 for dev in usb.core.find(idVendor=0x0483, idProduct=0xdf11, find_all=True):
101 try:
102 serial_number = dev.serial_number
File ~\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.11_qbz5n2kfra8p0\LocalCache\local-packages\Python311\site-packages\usb\core.py:1309, in find(find_all, backend, custom_match, **args)
1307 break
1308 else:
-> 1309 raise NoBackendError('No backend available')
1311 if find_all:
1312 return device_iter(**args)
NoBackendError: No backend available