diff --git a/src/libcamera/device_enumerator_sysfs.cpp b/src/libcamera/device_enumerator_sysfs.cpp
index ad26affb38a3..bde736226f95 100644
--- a/src/libcamera/device_enumerator_sysfs.cpp
+++ b/src/libcamera/device_enumerator_sysfs.cpp
@@ -33,7 +33,6 @@ int DeviceEnumeratorSysfs::enumerate()
 {
 	struct dirent *ent;
 	DIR *dir;
-	int ret = 0;
 
 	static const char * const sysfs_dirs[] = {
 		"/sys/subsystem/media/devices",
@@ -74,14 +73,14 @@ int DeviceEnumeratorSysfs::enumerate()
 		}
 
 		std::shared_ptr<MediaDevice> media = createDevice(devnode);
-		if (!media) {
-			ret = -ENODEV;
-			break;
-		}
+		if (!media)
+			continue;
 
 		if (populateMediaDevice(media) < 0) {
-			ret = -ENODEV;
-			break;
+			LOG(DeviceEnumerator, Warning)
+				<< "Failed to populate media device /dev/media"
+				<< idx << ", skipping";
+			continue;
 		}
 
 		addDevice(media);
@@ -89,7 +88,7 @@ int DeviceEnumeratorSysfs::enumerate()
 
 	closedir(dir);
 
-	return ret;
+	return 0;
 }
 
 int DeviceEnumeratorSysfs::populateMediaDevice(const std::shared_ptr<MediaDevice> &media)
diff --git a/src/libcamera/device_enumerator_udev.cpp b/src/libcamera/device_enumerator_udev.cpp
index b2c5fd221dcd..3837aaf97e6a 100644
--- a/src/libcamera/device_enumerator_udev.cpp
+++ b/src/libcamera/device_enumerator_udev.cpp
@@ -145,10 +145,12 @@ int DeviceEnumeratorUdev::enumerate()
 			goto done;
 		}
 
-		ret = addUdevDevice(dev);
+		if (addUdevDevice(dev) < 0)
+			LOG(DeviceEnumerator, Warning)
+				<< "Failed to add device for '"
+				<< syspath << "', skipping";
+
 		udev_device_unref(dev);
-		if (ret < 0)
-			break;
 	}
 
 done:
