I can’t get the ODrive working anymore with USB. I’ve already switched it on and off, I tried it on several computers, but no success. When I plug in the USB cable, I get a warning ‘Unkown USB Device (Device Descriptor Request Failed)’. In Linux the ODrive is not listed under the USB devices.
I ran out of ideas how I could regain the USB connection. Has anyone an idea?
Same problem here. Board appears to work correctly and will still run motor calibration at startup, but won’t show up at all over USB. I’ve tried many different cables on both windows and linux. I get the exact same message as you when plugging into windows. I tried to put the board into DFU using the switch but I couldn’t flash it. Hopefully someone can help.
I tried reflashing with an STLink by following the tutorial but it didn’t fix the issue.
First I flashed 0.5.2 and then I flashed 0.5.1 but neither worked.
Any other ideas?
If neither 0.5.2 nor 0.5.1 work, you have a different problem. I assume you’re powering the board with > 8V via the Batt terminals, and it’s not in DFU mode?
Hello, you can connect the computer with 0.5.1 USB.
But the 0.5.2 version of USB can not connect to the computer.
I use STLINK to erase the old firmware before refreshing it
Yes, with ST-Link I’m able to flash the firmware.
I checked the voltage between the 3.3V Pin and Ground, I’ve got 3.3V. I’ve already tried multiple USB cables. How can I check if the USB socket is the problem? Or could there be another cause for the problem?
In Linux, what do you see when you run sudo dmesg -w and plug in the ODrive?
Also, what power supply are you using? Is it referenced to mains earth or are you using a battery?
The ODrive doesn’t show up at all. I’ve got a second one with a working usb connection. If I plug in the working ODrive, it shows up under sudo dmesg -w.
The power supply is referenced to mains earth. I’ve also tried another power supply.
Do you have 3.3V and 5V at the appropriate locations? Is the green light turning on? What temperature is the STM chip on the board, if you touch it with your finger?
It is possible that there was a ground loop surge e.g. positive power supply connected before negative side, so the negative current path became the USB cable via mains earth.
It’s possible that such an event could have damaged the USB pins on the microcontroller without destroying the rest of the chip?
Actually, I always connect the ODrive to the power supply before turning it on. But in case I really made a ground loop accidently, how can I verify it? I already checked with a multimeter that the lines from USB to the chip work.
Can you verify that the ODrive itself is actually running, i.e. nothing stupid is going on like your programmer is holding it in RESET?
If you have a scope, check that you have activity on the SPI pins on power-up (it will try to initialise the DRV8301 gate drivers)
If you have a debugger, can you halt the chip and see which line of code it is on? If it’s in something like hardfault_handler then the code has crashed and you could give us a backtrace.
Maybe set a breakpoint in one of the main threads and see if it gets there.
e.g. in usb_server_thread() in Firmware/communication/interface_usb.cpp, or Axis::run_state_machine_loop() in Firmware/MotorControl/Axis.cpp