Files
ODrive/docs/troubleshooting.md
T
2018-07-24 16:25:03 -07:00

2.7 KiB

Troubleshooting

Error codes

If your ODrive is not working as expected, run odrivetool and type hex(<axis>.error) Enter where <axis> is the axis that isn't working. This will display a hexadecimal representation of the error code. Each bit represents one error flag.

Example
Say you got this error output: ```python In [1]: hex(odrv0.axis0.error) Out[1]: '0x6' ```

Written in binary, the number 0x6 corresponds to 110, that means bits 1 and 2 are set (counting starts at 0). Looking at the reference below, this means that both ERROR_DC_BUS_UNDER_VOLTAGE and ERROR_DC_BUS_OVER_VOLTAGE occurred.

The axis error may say that some other component has failed. Say it reports ERROR_ENCODER_FAILED, then you need to go check the encoder error: hex(<axis>.encoder.error).

  • Axis error flags defined here.
  • Motor error flags defined here.
  • Encoder error flags defined here.
  • Sensorless estimator error flags defined here.

DRV fault

The ODrive v3.4 is known to have a hardware issue whereby the motors would stop operating when applying high currents to M0. The reported error of both motors in this case is ERROR_DRV_FAULT.

The conjecture is that the high switching current creates large ripples in the power supply of the DRV8301 gate driver chips, thus tripping its undervoltage fault detection.

  • Limit the M0 current to 40A. The lowest current at which the DRV fault was observed is 45A on one test motor and 50A on another test motor.
  • Refer to this post for instructions for a hardware fix

USB Connectivity Issues

  • Try turning it off and on again (the ODrive, the script, the PC)
  • Make sure you're using the latest firmware and python tools release
  • Linux: Type lsusb to list all USB devices. Verify that your ODrive is listed.
  • Linux: Make sure you set up your udev rules correctly.
  • Windows: Right-click on the start menu and open "Device Manager". Verify that your ODrive is listed.
  • Windows: Use the Zadig utility to verify the driver is set to libusb-win32.
  • Ensure that no other ODrive program is running
  • Run odrivetools with the --verbose option.
  • Run PYUSB_DEBUG=debug odrivetools to get even more log output.
  • If you're a developer you can use Wireshark to capture USB traffic.