diff --git a/include/libcamera/internal/media_device.h b/include/libcamera/internal/media_device.h
index d0459cdefd3ece2a..1d23bdd2e9ba5270 100644
--- a/include/libcamera/internal/media_device.h
+++ b/include/libcamera/internal/media_device.h
@@ -40,6 +40,7 @@ public:
 	const std::string driver() const { return driver_; }
 	const std::string deviceNode() const { return deviceNode_; }
 	const std::string model() const { return model_; }
+	const std::string serial() const { return serial_; }
 	unsigned int version() const { return version_; }
 
 	const std::vector<MediaEntity *> &entities() const { return entities_; }
@@ -78,6 +79,7 @@ private:
 	std::string driver_;
 	std::string deviceNode_;
 	std::string model_;
+	std::string serial_;
 	unsigned int version_;
 
 	int fd_;
diff --git a/src/libcamera/media_device.cpp b/src/libcamera/media_device.cpp
index de18d572f4799931..f22a937d14cd8554 100644
--- a/src/libcamera/media_device.cpp
+++ b/src/libcamera/media_device.cpp
@@ -230,6 +230,7 @@ int MediaDevice::populate()
 
 	driver_ = info.driver;
 	model_ = info.model;
+	serial_ = info.serial;
 	version_ = info.media_version;
 
 	/*
@@ -314,6 +315,12 @@ done:
  * \return The MediaDevice model name
  */
 
+/**
+ * \fn MediaDevice::serial()
+ * \brief Retrieve the media device serial number
+ * \return The MediaDevice serial number
+ */
+
 /**
  * \fn MediaDevice::version()
  * \brief Retrieve the media device API version
