diff --git a/firmware_handler.cpp b/firmware_handler.cpp
index b828002..41bf853 100644
--- a/firmware_handler.cpp
+++ b/firmware_handler.cpp
@@ -16,7 +16,7 @@
 
 std::unique_ptr<GenericBlobInterface>
     FirmwareBlobHandler::CreateFirmwareBlobHandler(
-        const std::vector<std::string>& firmwares, std::uint32_t transports)
+        const std::vector<std::string>& firmwares, std::uint16_t transports)
 {
     /* There must be at least one. */
     if (!firmwares.size())
@@ -73,6 +73,27 @@
      * of the data cached, and any additional pertinent information.  The
      * blob_state on the active files will return the state of the update.
      */
+
+    /* We know we support this path because canHandle is called ahead */
+    if (path == FirmwareBlobHandler::activeImageBlobID)
+    {
+        /* We need to return information for the image that's staged. */
+    }
+    else if (path == FirmwareBlobHandler::activeHashBlobID)
+    {
+        /* We need to return information for the hash that's staged. */
+    }
+    else
+    {
+        /* They are requesting information about the generic blob_id. */
+        meta->blobState = transports;
+        meta->size = 0;
+
+        /* The generic blob_ids state is only the bits related to the transport
+         * mechanisms. */
+        return true;
+    }
+
     return false;
 }
 
@@ -154,8 +175,7 @@
 bool FirmwareBlobHandler::stat(uint16_t session, struct BlobMeta* meta)
 {
     /*
-     * Return the supported mechanisms if it's the handler blob_id, versus
-     * the active one.
+     * Return session specific information.
      */
     return false;
 }
diff --git a/firmware_handler.hpp b/firmware_handler.hpp
index 916a5ce..9d57b63 100644
--- a/firmware_handler.hpp
+++ b/firmware_handler.hpp
@@ -30,7 +30,7 @@
      */
     static std::unique_ptr<GenericBlobInterface>
         CreateFirmwareBlobHandler(const std::vector<std::string>& firmwares,
-                                  std::uint32_t transports);
+                                  std::uint16_t transports);
 
     /**
      * Create a FirmwareBlobHandler.
@@ -39,7 +39,7 @@
      * @param[in] transports - bitmask of transports to support.
      */
     FirmwareBlobHandler(const std::vector<std::string>& blobs,
-                        std::uint32_t transports) :
+                        std::uint16_t transports) :
         blobIDs(blobs),
         transports(transports)
     {
@@ -73,7 +73,7 @@
 
   private:
     std::vector<std::string> blobIDs;
-    std::uint32_t transports;
+    std::uint16_t transports;
 };
 
 } // namespace blobs
diff --git a/main.cpp b/main.cpp
index ec0f53b..f6d63da 100644
--- a/main.cpp
+++ b/main.cpp
@@ -17,18 +17,18 @@
 #endif
 };
 
-std::uint32_t supportedTransports =
-    static_cast<std::uint32_t>(FirmwareUpdateFlags::bt);
+std::uint16_t supportedTransports =
+    static_cast<std::uint16_t>(FirmwareUpdateFlags::bt);
 
 void setupFirmwareHandler() __attribute__((constructor));
 
 void setupFirmwareHandler()
 {
 #ifdef ENABLE_PCI_BRIDGE
-    supportedTransports |= static_cast<std::uint32_t>(FirmwareUpdateFlags::p2a);
+    supportedTransports |= static_cast<std::uint16_t>(FirmwareUpdateFlags::p2a);
 #endif
 #ifdef ENABLE_LPC_BRIDGE
-    supportedTransports |= static_cast<std::uint32_t>(FirmwareUpdateFlags::lpc);
+    supportedTransports |= static_cast<std::uint16_t>(FirmwareUpdateFlags::lpc);
 #endif
 
     auto handler = FirmwareBlobHandler::CreateFirmwareBlobHandler(
diff --git a/test/Makefile.am b/test/Makefile.am
index d3a971d..9afb25a 100644
--- a/test/Makefile.am
+++ b/test/Makefile.am
@@ -10,10 +10,14 @@
 
 # Run all 'check' test programs
 check_PROGRAMS = \
-	firmware_handler
+	firmware_handler \
+	firmware_stat
 
 TESTS = $(check_PROGRAMS)
 
 firmware_handler_SOURCES = firmware_handler_unittest.cpp
 firmware_handler_LDADD = $(top_builddir)/firmware_handler.o
 
+firmware_stat_SOURCES = firmware_stat_unittest.cpp
+firmware_stat_LDADD = $(top_builddir)/firmware_handler.o
+
diff --git a/test/firmware_stat_unittest.cpp b/test/firmware_stat_unittest.cpp
new file mode 100644
index 0000000..b872b16
--- /dev/null
+++ b/test/firmware_stat_unittest.cpp
@@ -0,0 +1,25 @@
+#include "firmware_handler.hpp"
+
+#include <memory>
+
+#include <gtest/gtest.h>
+
+namespace blobs
+{
+TEST(FirmwareHandlerStatTest, StatOnInactiveBlobIDReturnsTransport)
+{
+    /* Test that the metadata information returned matches expectations for this
+     * case.
+     *
+     * canHandle has already been called at this point, so we don't need to test
+     * the input for this function.
+     */
+
+    auto handler = FirmwareBlobHandler::CreateFirmwareBlobHandler(
+        {"asdf"}, static_cast<uint16_t>(FirmwareUpdateFlags::bt));
+    struct BlobMeta meta;
+    EXPECT_TRUE(handler->stat("asdf", &meta));
+    EXPECT_EQ(static_cast<uint16_t>(FirmwareUpdateFlags::bt), meta.blobState);
+}
+
+} // namespace blobs
