diff --git a/src/libcamera/pipeline/ipu3/ipu3.cpp b/src/libcamera/pipeline/ipu3/ipu3.cpp
index 355cb0cb..d0d55651 100644
--- a/src/libcamera/pipeline/ipu3/ipu3.cpp
+++ b/src/libcamera/pipeline/ipu3/ipu3.cpp
@@ -722,10 +722,14 @@ int PipelineHandlerIPU3::start(Camera *camera, [[maybe_unused]] const ControlLis
 	int ret;
 
 	/* Disable test pattern mode on the sensor, if any. */
-	ret = cio2->sensor()->setTestPatternMode(
-		controls::draft::TestPatternModeEnum::TestPatternModeOff);
-	if (ret)
-		return ret;
+	const ControlInfoMap &sensorControls = cio2->sensor()->controls();
+
+	if (sensorControls.find(&controls::draft::TestPatternMode) != sensorControls.end()) {
+		ret = cio2->sensor()->setTestPatternMode(
+			controls::draft::TestPatternModeEnum::TestPatternModeOff);
+		if (ret)
+			return ret;
+	}
 
 	/* Allocate buffers for internal pipeline usage. */
 	ret = allocateBuffers(camera);
