Setting axis.controller.input_pos to any value (tested 5.0, 999.0, 3.0) has no lasting effect — reading it back milliseconds later always shows a value nearly identical to axis.encoder.pos_estimate, not the value I set.
Confirmed:
current_state = 8(genuine closed-loop, confirmed via CAN heartbeat byte too)axis.motor.current_control.Iq_measuredshows real, non-zero current (~1A) — motor is actively holding, not idleaxis.controller.config.control_mode = 3(position control)axis.controller.config.input_mode = 1(passthrough)circular_setpoints = False- No errors (
dump_errorsclean) - Reproduced from a completely fresh Python script (not just odrivetool session)
- Reproduced after a full hardware power cycle (not just USB reconnect)
- Reproduced identically on both axis0 and axis1
- Confirmed via
candumpthat no external CAN device is sendingSet_Input_Pos— ruling out bus interference
axis.controller.pos_setpoint shows the same behavior — tracks pos_estimate, not my commanded input_pos.
What could cause input_pos to be silently overridden/ignored despite the axis being armed and drawing real current?