diff --git a/tools/ipmi_handler.cpp b/tools/ipmi_handler.cpp
index a0c1198..e1e0529 100644
--- a/tools/ipmi_handler.cpp
+++ b/tools/ipmi_handler.cpp
@@ -16,9 +16,40 @@
 
 #include "ipmi_handler.hpp"
 
+#include <fcntl.h>
+
+#include <sstream>
+#include <string>
+#include <vector>
+
 namespace host_tool
 {
 
+bool IpmiHandler::open()
+{
+    const int device = 0;
+    const std::vector<std::string> formats = {"/dev/ipmi", "/dev/ipmi/",
+                                              "/dev/ipmidev/"};
+
+    for (const auto& format : formats)
+    {
+        std::ostringstream path;
+        path << format << device;
+
+        fd = sys->open(path.str().c_str(), O_RDWR);
+        if (fd < 0)
+        {
+            continue;
+        }
+        break;
+    }
+
+    /* Should we throw an exception here, since we exhausted these options?
+     * Maybe. :D
+     */
+    return !(fd < 0);
+}
+
 std::vector<std::uint8_t>
     IpmiHandler::sendPacket(const std::vector<std::uint8_t>& data)
 {
diff --git a/tools/ipmi_handler.hpp b/tools/ipmi_handler.hpp
index eec0c87..48e6def 100644
--- a/tools/ipmi_handler.hpp
+++ b/tools/ipmi_handler.hpp
@@ -12,11 +12,28 @@
     explicit IpmiHandler(const internal::Sys* sys = &internal::sys_impl) :
         sys(sys){};
 
+    ~IpmiHandler() = default;
+    IpmiHandler(const IpmiHandler&) = delete;
+    IpmiHandler& operator=(const IpmiHandler&) = delete;
+    IpmiHandler(IpmiHandler&&) = default;
+    IpmiHandler& operator=(IpmiHandler&&) = default;
+
+    /**
+     * Attempt to open the device node.
+     *
+     * @return true on success, failure otherwise.
+     */
+    bool open();
+
     std::vector<std::uint8_t>
         sendPacket(const std::vector<std::uint8_t>& data) override;
 
   private:
     const internal::Sys* sys;
+    /** TODO: Use a smart file descriptor when it's ready.  Until then only
+     * allow moving this object.
+     */
+    int fd = -1;
 };
 
 } // namespace host_tool
