diff --git a/src/ipa/raspberrypi/controller/rpi/awb.cpp b/src/ipa/raspberrypi/controller/rpi/awb.cpp
index 5cfd33a3..d4c93447 100644
--- a/src/ipa/raspberrypi/controller/rpi/awb.cpp
+++ b/src/ipa/raspberrypi/controller/rpi/awb.cpp
@@ -172,6 +172,26 @@ void Awb::Initialise()
 	async_results_ = sync_results_;
 }
 
+bool Awb::IsPaused() const
+{
+	return false;
+}
+
+void Awb::Pause()
+{
+	// "Pause" by fixing everything to the most recent values.
+	manual_r_ = sync_results_.gain_r = prev_sync_results_.gain_r;
+	manual_b_ = sync_results_.gain_b = prev_sync_results_.gain_b;
+	sync_results_.gain_g = prev_sync_results_.gain_g;
+	sync_results_.temperature_K = prev_sync_results_.temperature_K;
+}
+
+void Awb::Resume()
+{
+	manual_r_ = 0.0;
+	manual_b_ = 0.0;
+}
+
 unsigned int Awb::GetConvergenceFrames() const
 {
 	// If not in auto mode, there is no convergence
diff --git a/src/ipa/raspberrypi/controller/rpi/awb.hpp b/src/ipa/raspberrypi/controller/rpi/awb.hpp
index 8af1f27c..ac3dca6f 100644
--- a/src/ipa/raspberrypi/controller/rpi/awb.hpp
+++ b/src/ipa/raspberrypi/controller/rpi/awb.hpp
@@ -83,6 +83,10 @@ public:
 	char const *Name() const override;
 	void Initialise() override;
 	void Read(boost::property_tree::ptree const &params) override;
+	// AWB handles "pausing" for itself.
+	bool IsPaused() const override;
+	void Pause() override;
+	void Resume() override;
 	unsigned int GetConvergenceFrames() const override;
 	void SetMode(std::string const &name) override;
 	void SetManualGains(double manual_r, double manual_b) override;
