Hello ODrive Support Team,
I’m encountering a persistent “Illegal Hall State” error on axis M0 during the full calibration sequence, and I would greatly appreciate your guidance.
System Overview
ODrive Firmware: v0.5.3 (built from source)
Hardware:ODrive v3.6 running at 48 V bus voltage, 12 V logic supply
Axis M0: Custom BLDC motor with three Hall sensors
Axis M1: No motor connected
*Control Interface: Python scripts leveraging the odrive
library v0.5.3
Symptoms
-
Full Calibration Sequence on M0 fails immediately with:
Error: ILLEGAL_HALL_STATE (hall_state = 4)
-
Motor Calibration and Encoder Calibration both complete successfully with no errors.
-
Observing the Hall inputs with an oscilloscope confirms three clean, 0 V–5 V square-wave signals—no noise or undefined states.
-
A simple Python loop reading
axis.motor.hall_state
during manual shaft rotation always returns valid states (0–7), never “illegal.” -
I have replaced the Hall sensors and wiring with new, identical components; the issue persists.
Troubleshooting Steps Taken
- Verified Hall voltages on all three channels with a scope (clean square waves).
- Monitored
hall_state
in real time via Python (always 0–7). - Tested operation in encoder-only mode (works reliably).
- Performed Hall polarity and phase calibration manually.
- Tried different Hall sensor modules and cables—no change.
Questions
- Why does the full calibration sequence detect an illegal Hall state when individual calibrations and live readings are all valid?
- Are there any hidden parameters or timing requirements in the Hall-based calibration routine that I might be missing?
Any insight or suggestions would be extremely helpful. Thank you very much for your time and assistance.
Best regards,
Diego Zumaquero