I had that now multiple times.
I set the pre_calibrated=True, save_config(), reboot but this setting is false then. (Yes, the motor was calibrated before setting that).
I set the startup_closed_loop_control=True because startup_encoder_offset_calibration is already true and works, save_config() but after re-connecting the board to power it is not in closed loop mode.
I set the odrv0.axis0.controller.config.control_mode = CTRL_MODE_VELOCITY_CONTROL, all works, save_config(), next time I send a speed command after reboot, it does not work any longer and I have to set it again.
I cannot see a pattern for that. I started to validate that setting the variables did work by reading them immediately after - so it is not that. And I don’t think these are side effects from other things, e.g. neither motor, encoder or anything shows an error, hence should work.
Did you experience similar things?