diff --git a/debugd/BUILD.gn b/debugd/BUILD.gn
index f94d49f..96d19f5 100644
--- a/debugd/BUILD.gn
+++ b/debugd/BUILD.gn
@@ -84,6 +84,7 @@
     "src/debugd_dbus_adaptor.cc",
     "src/dev_features_tool.cc",
     "src/dev_mode_no_owner_restriction.cc",
+    "src/dmesg_tool.cc",
     "src/ec_typec_tool.cc",
     "src/ectool_util.cc",
     "src/example_tool.cc",
diff --git a/debugd/dbus_bindings/org.chromium.debugd.xml b/debugd/dbus_bindings/org.chromium.debugd.xml
index 34799e5..ed4f034 100644
--- a/debugd/dbus_bindings/org.chromium.debugd.xml
+++ b/debugd/dbus_bindings/org.chromium.debugd.xml
@@ -1205,5 +1205,31 @@
       </arg>
       <annotation name="org.chromium.DBus.Method.Kind" value="simple"/>
     </method>
+    <method name="CallDmesg">
+      <tp:docstring>
+        Runs the command 'dmesg' with the given inputs.
+      </tp:docstring>
+      <arg name="options" type="a{sv}" direction="in">
+        <tp:docstring>
+          Options to pass to the dmesg command:
+          show-delta (bool): Display the timestamp and the time delta
+            spent between messages.
+          human (bool): Enable human-readable output.
+          kernel (bool): Print kernel messages.
+          force-prefix (bool): Add facility, level or timestamp
+            information to each line of a multi-line message.
+          raw (bool): Print the raw message buffer.
+          ctime (bool): Print human-readable timestamps.
+          notime (bool): Do not print kernel's timestamps.
+          userspace (bool): Print userspace messages.
+          decode (bool): Decode facility and level (priority) numbers
+            to human-readable prefixes.
+        </tp:docstring>
+      </arg>
+      <arg name="output" type="s" direction="out">
+        Returns the output of the 'dmesg' command.
+      </arg>
+      <annotation name="org.chromium.DBus.Method.Kind" value="normal"/>
+    </method>
   </interface>
 </node>
diff --git a/debugd/src/debugd_dbus_adaptor.cc b/debugd/src/debugd_dbus_adaptor.cc
index 5ef4558..c80986a 100644
--- a/debugd/src/debugd_dbus_adaptor.cc
+++ b/debugd/src/debugd_dbus_adaptor.cc
@@ -46,6 +46,7 @@
   debug_mode_tool_ = std::make_unique<DebugModeTool>(bus);
   dev_features_tool_wrapper_ =
       std::make_unique<RestrictedToolWrapper<DevFeaturesTool>>(bus);
+  dmesg_tool_ = std::make_unique<DmesgTool>();
   ec_typec_tool_ = std::make_unique<EcTypeCTool>();
   example_tool_ = std::make_unique<ExampleTool>();
   icmp_tool_ = std::make_unique<ICMPTool>();
@@ -610,4 +611,10 @@
   return ec_typec_tool_->GetInventory();
 }
 
+bool DebugdDBusAdaptor::CallDmesg(brillo::ErrorPtr* error,
+                                  const brillo::VariantDictionary& options,
+                                  std::string* output) {
+  return dmesg_tool_->CallDmesg(options, error, output);
+}
+
 }  // namespace debugd
diff --git a/debugd/src/debugd_dbus_adaptor.h b/debugd/src/debugd_dbus_adaptor.h
index 93a9f29..2456da0 100644
--- a/debugd/src/debugd_dbus_adaptor.h
+++ b/debugd/src/debugd_dbus_adaptor.h
@@ -29,6 +29,7 @@
 #include "debugd/src/debug_logs_tool.h"
 #include "debugd/src/debug_mode_tool.h"
 #include "debugd/src/dev_features_tool.h"
+#include "debugd/src/dmesg_tool.h"
 #include "debugd/src/ec_typec_tool.h"
 #include "debugd/src/example_tool.h"
 #include "debugd/src/icmp_tool.h"
@@ -217,6 +218,9 @@
                                  const std::string& metric_name,
                                  std::string* output) override;
   std::string EcGetInventory() override;
+  bool CallDmesg(brillo::ErrorPtr* error,
+                 const brillo::VariantDictionary& options,
+                 std::string* output) override;
 
  private:
   brillo::dbus_utils::DBusObject dbus_object_;
@@ -230,6 +234,7 @@
   std::unique_ptr<CupsTool> cups_tool_;
   std::unique_ptr<DebugLogsTool> debug_logs_tool_;
   std::unique_ptr<DebugModeTool> debug_mode_tool_;
+  std::unique_ptr<DmesgTool> dmesg_tool_;
   std::unique_ptr<RestrictedToolWrapper<DevFeaturesTool>>
       dev_features_tool_wrapper_;
   std::unique_ptr<EcTypeCTool> ec_typec_tool_;
diff --git a/debugd/src/dmesg_tool.cc b/debugd/src/dmesg_tool.cc
new file mode 100644
index 0000000..aa70520
--- /dev/null
+++ b/debugd/src/dmesg_tool.cc
@@ -0,0 +1,57 @@
+// Copyright 2020 The Chromium OS Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+//
+// This tool is used for getting dmesg information through debugd.
+
+#include "debugd/src/dmesg_tool.h"
+
+#include "debugd/src/error_utils.h"
+#include "debugd/src/process_with_output.h"
+#include "debugd/src/variant_utils.h"
+#include "linux/capability.h"
+
+namespace {
+
+constexpr char kDmesgPath[] = "/bin/dmesg";
+
+}  // namespace
+
+namespace debugd {
+
+bool DmesgTool::CallDmesg(const brillo::VariantDictionary& options,
+                          brillo::ErrorPtr* error,
+                          std::string* output) {
+  ProcessWithOutput process;
+
+  process.SetCapabilities(CAP_TO_MASK(CAP_SYSLOG));
+  if (!process.Init()) {
+    *output = "<process init failed>";
+    return false;
+  }
+
+  process.AddArg(kDmesgPath);
+
+  if (!AddIntOption(&process, options, "show-delta", "-d", error) ||
+      !AddIntOption(&process, options, "human", "-H", error) ||
+      !AddIntOption(&process, options, "kernel", "-k", error) ||
+      !AddIntOption(&process, options, "force-prefix", "-p", error) ||
+      !AddIntOption(&process, options, "raw", "-r", error) ||
+      !AddIntOption(&process, options, "ctime", "-T", error) ||
+      !AddIntOption(&process, options, "notime", "-t", error) ||
+      !AddIntOption(&process, options, "userspace", "-u", error) ||
+      !AddIntOption(&process, options, "decode", "-x", error)) {
+    *output = "<invalid option>";
+    return false;
+  }
+
+  if (process.Run() != 0) {
+    *output = "<process exited with nonzero status>";
+    return false;
+  }
+
+  process.GetOutput(output);
+  return true;
+}
+
+}  // namespace debugd
diff --git a/debugd/src/dmesg_tool.h b/debugd/src/dmesg_tool.h
new file mode 100644
index 0000000..5d9e042
--- /dev/null
+++ b/debugd/src/dmesg_tool.h
@@ -0,0 +1,32 @@
+// Copyright 2020 The Chromium OS Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+//
+// This tool is used for getting dmesg information through debugd.
+
+#ifndef DEBUGD_SRC_DMESG_TOOL_H_
+#define DEBUGD_SRC_DMESG_TOOL_H_
+
+#include <string>
+
+#include <brillo/errors/error.h>
+#include <brillo/variant_dictionary.h>
+
+namespace debugd {
+
+class DmesgTool {
+ public:
+  DmesgTool() = default;
+  DmesgTool(const DmesgTool&) = delete;
+  DmesgTool& operator=(const DmesgTool&) = delete;
+
+  ~DmesgTool() = default;
+
+  bool CallDmesg(const brillo::VariantDictionary& options,
+                 brillo::ErrorPtr* error,
+                 std::string* output);
+};
+
+}  // namespace debugd
+
+#endif  // DEBUGD_SRC_DMESG_TOOL_H_
diff --git a/debugd/src/variant_utils.cc b/debugd/src/variant_utils.cc
index c245a71..269eebb 100644
--- a/debugd/src/variant_utils.cc
+++ b/debugd/src/variant_utils.cc
@@ -6,7 +6,7 @@
 
 namespace debugd {
 
-bool AddIntOption(ProcessWithId* process,
+bool AddIntOption(SandboxedProcess* process,
                   const brillo::VariantDictionary& options,
                   const std::string& key,
                   const std::string& flag_name,
diff --git a/debugd/src/variant_utils.h b/debugd/src/variant_utils.h
index b52fc76..fbe7e15 100644
--- a/debugd/src/variant_utils.h
+++ b/debugd/src/variant_utils.h
@@ -58,7 +58,7 @@
 // isn't an integer, returns false. Otherwise, returns true, and if it
 // exists in the dictionary adds it to the command line for |process|
 // as the value for key |flag_name|.
-bool AddIntOption(ProcessWithId* process,
+bool AddIntOption(SandboxedProcess* process,
                   const brillo::VariantDictionary& options,
                   const std::string& key,
                   const std::string& flag_name,
