diff --git a/libweave/include/weave/config_store.h b/libweave/include/weave/config_store.h
index f13ec8f..e2bb710 100644
--- a/libweave/include/weave/config_store.h
+++ b/libweave/include/weave/config_store.h
@@ -27,6 +27,7 @@
   std::string local_anonymous_access_role;
   bool local_discovery_enabled{true};
   bool local_pairing_enabled{true};
+  std::string firmware_version;
   std::string oem_name;
   std::string model_name;
   std::string model_id;
diff --git a/libweave/include/weave/device.h b/libweave/include/weave/device.h
index 25f18c0..47e854c 100644
--- a/libweave/include/weave/device.h
+++ b/libweave/include/weave/device.h
@@ -27,9 +27,6 @@
 class Device {
  public:
   struct Options {
-    std::string firmware_version;  // TODO: Move into weave::Settings
-    base::FilePath config_path;
-    base::FilePath state_path;
     base::FilePath definitions_path;
     base::FilePath test_definitions_path;
     bool xmpp_enabled = true;
diff --git a/libweave/src/base_api_handler.cc b/libweave/src/base_api_handler.cc
index 655983b..3e641d7 100644
--- a/libweave/src/base_api_handler.cc
+++ b/libweave/src/base_api_handler.cc
@@ -20,16 +20,16 @@
 
 BaseApiHandler::BaseApiHandler(
     DeviceRegistrationInfo* device_info,
-    const std::string& firmware_version,
     const std::shared_ptr<StateManager>& state_manager,
     const std::shared_ptr<CommandManager>& command_manager)
     : device_info_{device_info}, state_manager_{state_manager} {
   device_info_->AddOnConfigChangedCallback(base::Bind(
       &BaseApiHandler::OnConfigChanged, weak_ptr_factory_.GetWeakPtr()));
 
+  const Config& config{device_info_->GetConfig()};
   base::DictionaryValue state;
   state.SetStringWithoutPathExpansion(kBaseStateFirmwareVersion,
-                                      firmware_version);
+                                      config.firmware_version());
   CHECK(state_manager_->SetProperties(state, nullptr));
 
   command_manager->AddOnCommandAddedCallback(base::Bind(
diff --git a/libweave/src/base_api_handler.h b/libweave/src/base_api_handler.h
index abb60b1..c1a5f2e 100644
--- a/libweave/src/base_api_handler.h
+++ b/libweave/src/base_api_handler.h
@@ -27,7 +27,6 @@
 class BaseApiHandler final {
  public:
   BaseApiHandler(DeviceRegistrationInfo* device_info,
-                 const std::string& firmware_version,
                  const std::shared_ptr<StateManager>& state_manager,
                  const std::shared_ptr<CommandManager>& command_manager);
 
diff --git a/libweave/src/base_api_handler_unittest.cc b/libweave/src/base_api_handler_unittest.cc
index 9b22ef8..7ffc3d9 100644
--- a/libweave/src/base_api_handler_unittest.cc
+++ b/libweave/src/base_api_handler_unittest.cc
@@ -18,14 +18,21 @@
 #include "libweave/src/states/state_manager.h"
 
 using testing::_;
-using testing::StrictMock;
+using testing::Invoke;
 using testing::Return;
+using testing::StrictMock;
 
 namespace weave {
 
 class BaseApiHandlerTest : public ::testing::Test {
  protected:
   void SetUp() override {
+    EXPECT_CALL(config_store_, LoadDefaults(_))
+        .WillOnce(Invoke([](Settings* settings) {
+          settings->firmware_version = "123123";
+          return true;
+        }));
+
     EXPECT_CALL(mock_state_change_queue_, NotifyPropertiesUpdated(_, _))
         .WillRepeatedly(Return(true));
 
@@ -55,12 +62,13 @@
     ASSERT_TRUE(state_manager_->LoadStateDefinition(*state_definition, "base",
                                                     nullptr));
     ASSERT_TRUE(state_manager_->LoadStateDefaults(*state_defaults, nullptr));
-    dev_reg_.reset(new DeviceRegistrationInfo(
-        command_manager_, state_manager_,
-        std::unique_ptr<Config>{new Config{&config_store_}}, nullptr,
-        &http_client_, true, nullptr));
-    handler_.reset(new BaseApiHandler{dev_reg_.get(), "123123", state_manager_,
-                                      command_manager_});
+    std::unique_ptr<Config> config{new Config{&config_store_}};
+    config->Load();
+    dev_reg_.reset(new DeviceRegistrationInfo(command_manager_, state_manager_,
+                                              std::move(config), nullptr,
+                                              &http_client_, true, nullptr));
+    handler_.reset(
+        new BaseApiHandler{dev_reg_.get(), state_manager_, command_manager_});
   }
 
   void LoadCommands(const std::string& command_definitions) {
diff --git a/libweave/src/config.h b/libweave/src/config.h
index 55d7d09..a54e018 100644
--- a/libweave/src/config.h
+++ b/libweave/src/config.h
@@ -97,6 +97,9 @@
   const std::string& oem_name() const { return settings_.oem_name; }
   const std::string& model_name() const { return settings_.model_name; }
   const std::string& model_id() const { return settings_.model_id; }
+  const std::string& firmware_version() const {
+    return settings_.firmware_version;
+  }
   base::TimeDelta polling_period() const { return settings_.polling_period; }
   base::TimeDelta backup_polling_period() const {
     return settings_.backup_polling_period;
diff --git a/libweave/src/config_unittest.cc b/libweave/src/config_unittest.cc
index be24e00..794f5cb 100644
--- a/libweave/src/config_unittest.cc
+++ b/libweave/src/config_unittest.cc
@@ -51,6 +51,7 @@
   EXPECT_EQ("Chromium", config_->oem_name());
   EXPECT_EQ("Brillo", config_->model_name());
   EXPECT_EQ("AAAAA", config_->model_id());
+  EXPECT_EQ("", config_->firmware_version());
   EXPECT_EQ(base::TimeDelta::FromSeconds(7), config_->polling_period());
   EXPECT_EQ(base::TimeDelta::FromMinutes(30), config_->backup_polling_period());
   EXPECT_TRUE(config_->wifi_auto_setup_enabled());
diff --git a/libweave/src/device_manager.cc b/libweave/src/device_manager.cc
index 846298a..e5710d4 100644
--- a/libweave/src/device_manager.cc
+++ b/libweave/src/device_manager.cc
@@ -49,9 +49,8 @@
   device_info_.reset(new DeviceRegistrationInfo(
       command_manager_, state_manager_, std::move(config), task_runner,
       http_client, options.xmpp_enabled, network));
-  base_api_handler_.reset(new BaseApiHandler{device_info_.get(),
-                                             options.firmware_version,
-                                             state_manager_, command_manager_});
+  base_api_handler_.reset(
+      new BaseApiHandler{device_info_.get(), state_manager_, command_manager_});
 
   device_info_->Start();
 
