diff --git a/api/src/opentrons/hardware_control/ot3api.py b/api/src/opentrons/hardware_control/ot3api.py index 4a586a43c4e..36509e7fb8d 100644 --- a/api/src/opentrons/hardware_control/ot3api.py +++ b/api/src/opentrons/hardware_control/ot3api.py @@ -244,6 +244,7 @@ def estop_cb(event: HardwareEvent) -> None: self._pipette_handler = OT3PipetteHandler({m: None for m in OT3Mount}) self._gripper_handler = GripperHandler(gripper=None) self._gantry_load = GantryLoad.LOW_THROUGHPUT + self._configured_since_update = True OT3RobotCalibrationProvider.__init__(self, self._config) ExecutionManagerProvider.__init__(self, isinstance(backend, OT3Simulator)) @@ -523,6 +524,8 @@ async def update_firmware( message="Update failed because of uncaught error", wrapping=[PythonException(e)], ) from e + finally: + self._configured_since_update = False # Incidentals (i.e. not motion) API @@ -651,8 +654,8 @@ async def cache_instruments( and set up hardware controller internal state if necessary. """ skip_configure = await self._cache_instruments(require) - if not skip_configure: - self._log.info("Instrument model cache updated, reconfiguring") + if not skip_configure or not self._configured_since_update: + self._log.info("Reconfiguring instrument cache") await self._configure_instruments() async def _cache_instruments( # noqa: C901 @@ -725,6 +728,7 @@ async def _configure_instruments(self) -> None: await self.set_gantry_load(self._gantry_load_from_instruments()) await self.refresh_positions() await self.reset_tip_detectors(False) + self._configured_since_update = True async def reset_tip_detectors( self,