diff --git a/src/libcamera/pipeline/uvcvideo.cpp b/src/libcamera/pipeline/uvcvideo.cpp
index 320da2685795c041..14f7ddb18a765834 100644
--- a/src/libcamera/pipeline/uvcvideo.cpp
+++ b/src/libcamera/pipeline/uvcvideo.cpp
@@ -154,7 +154,14 @@ CameraConfiguration *PipelineHandlerUVC::generateConfiguration(Camera *camera,
 		return config;
 
 	ImageFormats v4l2formats = data->video_->formats();
-	StreamFormats formats(v4l2formats.data());
+	std::map<PixelFormat, std::vector<SizeRange>> deviceformats;
+	for (const auto &it : v4l2formats.data()) {
+		PixelFormat pixelformat = V4L2VideoDevice::toPixelFormat(it.first);
+		const std::vector<SizeRange> &ranges = it.second;
+		deviceformats[pixelformat] = ranges;
+	}
+
+	StreamFormats formats(deviceformats);
 	StreamConfiguration cfg(formats);
 
 	cfg.pixelFormat = formats.pixelformats().front();
