diff --git a/src/libcamera/camera_manager.cpp b/src/libcamera/camera_manager.cpp
index 4d23d601e1fc8a28..796b84b5bb00bed4 100644
--- a/src/libcamera/camera_manager.cpp
+++ b/src/libcamera/camera_manager.cpp
@@ -346,6 +346,12 @@ std::shared_ptr<Camera> CameraManager::get(const std::string &name)
 {
 	MutexLocker locker(p_->mutex_);
 
+	/* Search camera IDs first. */
+	for (std::shared_ptr<Camera> camera : p_->cameras_) {
+		if (camera->id() == name)
+			return camera;
+	}
+
 	for (std::shared_ptr<Camera> camera : p_->cameras_) {
 		if (camera->name() == name)
 			return camera;
