diff --git a/include/libcamera/ipa/raspberrypi.h b/include/libcamera/ipa/raspberrypi.h
index 2b55dbfc..86c97ffa 100644
--- a/include/libcamera/ipa/raspberrypi.h
+++ b/include/libcamera/ipa/raspberrypi.h
@@ -21,6 +21,7 @@ enum ConfigParameters {
 	IPA_CONFIG_STAGGERED_WRITE = (1 << 1),
 	IPA_CONFIG_SENSOR = (1 << 2),
 	IPA_CONFIG_DROP_FRAMES = (1 << 3),
+	IPA_CONFIG_FAILED = (1 << 4),
 };
 
 enum Operations {
diff --git a/src/ipa/raspberrypi/raspberrypi.cpp b/src/ipa/raspberrypi/raspberrypi.cpp
index 9853a343..57dd9c61 100644
--- a/src/ipa/raspberrypi/raspberrypi.cpp
+++ b/src/ipa/raspberrypi/raspberrypi.cpp
@@ -197,8 +197,11 @@ void IPARPi::configure(const CameraSensorInfo &sensorInfo,
 		       const IPAOperationData &ipaConfig,
 		       IPAOperationData *result)
 {
-	if (entityControls.empty())
+	if (entityControls.size() != 2) {
+		LOG(IPARPI, Error) << "No ISP or sensor controls found.";
+		result->operation = RPi::IPA_CONFIG_FAILED;
 		return;
+	}
 
 	result->operation = 0;
 
@@ -217,6 +220,13 @@ void IPARPi::configure(const CameraSensorInfo &sensorInfo,
 	if (!helper_) {
 		helper_ = std::unique_ptr<RPiController::CamHelper>(RPiController::CamHelper::Create(cameraName));
 
+		if (!helper_) {
+			LOG(IPARPI, Error) << "Could not create camera helper for "
+					   << cameraName;
+			result->operation = RPi::IPA_CONFIG_FAILED;
+			return;
+		}
+
 		/*
 		 * Pass out the sensor config to the pipeline handler in order
 		 * to setup the staggered writer class.
diff --git a/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp b/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp
index 6fcdf557..76252806 100644
--- a/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp
+++ b/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp
@@ -1194,6 +1194,11 @@ int RPiCameraData::configureIPA(const CameraConfiguration *config)
 	ipa_->configure(sensorInfo_, streamConfig, entityControls, ipaConfig,
 			&result);
 
+	if (result.operation & RPi::IPA_CONFIG_FAILED) {
+		LOG(RPI, Error) << "IPA configuration failed!";
+		return -EPIPE;
+	}
+
 	unsigned int resultIdx = 0;
 	if (result.operation & RPi::IPA_CONFIG_STAGGERED_WRITE) {
 		/*
