Ok, added that extra line to my odrive.rules.
I had run those 3 commands to setup udev rules before, and I actually still have to run “sudo udevadm trigger” each time I connect to the udrive, even after rebooting my machine.
I’ve never had to sudo explore_odrive.py. The only issue with it is that if I exit, I have to power cycle the board before I can connect again or I get this error. Is there a proper way to exit explore_odrive so I can reattach without power cycling the board?
bill@bill-VirtualBox:~/ODrive/tools$ python3 explore_odrive.py
Waiting for device…
Traceback (most recent call last):
File “/home/bill/ODrive/tools/odrive/usbbulk_transport.py”, line 96, in get_packet
ret = self.epr.read(bufferLen, timeout)
File “/usr/lib/python3/dist-packages/usb/core.py”, line 364, in read
return self.device.read(self, size_or_buffer, timeout)
File “/usr/lib/python3/dist-packages/usb/core.py”, line 918, in read
self.__get_timeout(timeout))
File “/usr/lib/python3/dist-packages/usb/backend/libusb1.py”, line 769, in bulk_read
timeout)
File “/usr/lib/python3/dist-packages/usb/backend/libusb1.py”, line 872, in __read
_check(retval)
File “/usr/lib/python3/dist-packages/usb/backend/libusb1.py”, line 552, in _check
raise USBError(_strerror(ret), ret, _libusb_errno[ret])
usb.core.USBError: [Errno 110] Operation timed out
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File “explore_odrive.py”, line 96, in
my_odrive = odrive.core.find_any(consider_usb, consider_serial, printer=printer)
File “/home/bill/ODrive/tools/odrive/core.py”, line 317, in find_any
dev = next(find_all(consider_usb, consider_serial, printer=printer, **kwargs), None)
File “/home/bill/ODrive/tools/odrive/core.py”, line 300, in find_all
yield object_from_channel(channel, printer)
File “/home/bill/ODrive/tools/odrive/core.py”, line 224, in object_from_channel
json_bytes = channel.remote_endpoint_read_buffer(0)
File “/home/bill/ODrive/tools/odrive/protocol.py”, line 280, in remote_endpoint_read_buffer
chunk = self.remote_endpoint_operation(endpoint_id, struct.pack("<I", len(buffer)), True, chunk_length)
File “/home/bill/ODrive/tools/odrive/protocol.py”, line 254, in remote_endpoint_operation
response = self._input.get_packet(deadline)
File “/home/bill/ODrive/tools/odrive/usbbulk_transport.py”, line 104, in get_packet
ret = self.epr.read(bufferLen, timeout)
File “/usr/lib/python3/dist-packages/usb/core.py”, line 364, in read
return self.device.read(self, size_or_buffer, timeout)
File “/usr/lib/python3/dist-packages/usb/core.py”, line 918, in read
self.__get_timeout(timeout))
File “/usr/lib/python3/dist-packages/usb/backend/libusb1.py”, line 769, in bulk_read
timeout)
File “/usr/lib/python3/dist-packages/usb/backend/libusb1.py”, line 872, in __read
_check(retval)
File “/usr/lib/python3/dist-packages/usb/backend/libusb1.py”, line 552, in _check
raise USBError(_strerror(ret), ret, _libusb_errno[ret])
usb.core.USBError: [Errno 110] Operation timed out