diff --git a/src/calng/AgipdCorrection.py b/src/calng/AgipdCorrection.py
index 6ad07eea6df8bd700150019c02bd4a864bbf5475..4d56de0c8f79cd894e5d567367bf2efb58c68423 100644
--- a/src/calng/AgipdCorrection.py
+++ b/src/calng/AgipdCorrection.py
@@ -383,6 +383,7 @@ class AgipdCalcatFriend(calcat_utils.BaseCalcatFriend):
             .assignmentOptional()
             .defaultValue("ADAPTIVE_GAIN")
             .options(",".join(gain_mode.name for gain_mode in AgipdGainMode))
+            .reconfigurable()
             .commit(),
 
             DOUBLE_ELEMENT(schema)
@@ -395,6 +396,7 @@ class AgipdCalcatFriend(calcat_utils.BaseCalcatFriend):
         managed_keys.add(f"{param_prefix}.acquisitionRate")
         managed_keys.add(f"{param_prefix}.gainSetting")
         managed_keys.add(f"{param_prefix}.photonEnergy")
+        managed_keys.add(f"{param_prefix}.gainMode")
         managed_keys.add(f"{param_prefix}.integrationTime")
 
         calcat_utils.add_status_schema_from_enum(schema, status_prefix, AgipdConstants)
@@ -414,7 +416,7 @@ class AgipdCalcatFriend(calcat_utils.BaseCalcatFriend):
 
         gain_mode = AgipdGainMode[self._get_param("gainMode")]
         if gain_mode is not AgipdGainMode.ADAPTIVE_GAIN:
-            res["Gain Mode"] = gain_mode.value
+            res["Gain Mode"] = 1
 
         # TODO: make configurable whether or not to include gain setting?
         res["Gain Setting"] = self._get_param("gainSetting")
@@ -773,6 +775,10 @@ class AgipdCorrection(BaseCorrection):
 
         update = self._prereconfigure_update_hash
 
+        if update.has("constantParameters.gainMode"):
+            self.gain_mode = AgipdGainMode[update["constantParameters.gainMode"]]
+            self._update_buffers()
+
         if update.has("corrections.gainXray.gGainValue"):
             self.kernel_runner.set_g_gain_value(
                 self.get("corrections.gainXray.gGainValue")