diff --git a/argument.cpp b/argument.cpp
index 4cab8a8..170bb8f 100644
--- a/argument.cpp
+++ b/argument.cpp
@@ -62,17 +62,19 @@
     std::cerr << "Options:\n";
     std::cerr << "    --help               print this menu\n";
     std::cerr << "    --path=<path>        sysfs location to monitor\n";
+    std::cerr << "    --of-name=<path>     open firmware device name to monitor\n";
     std::cerr << std::flush;
 }
 
 const option ArgumentParser::options[] =
 {
     { "path",   required_argument,  NULL,   'p' },
+    { "of-name", required_argument,  NULL,   'o' },
     { "help",   no_argument,        NULL,   'h' },
     { 0, 0, 0, 0},
 };
 
-const char* ArgumentParser::optionstr = "p:?h";
+const char* ArgumentParser::optionstr = "o:p:?h";
 
 const std::string ArgumentParser::true_string = "true";
 const std::string ArgumentParser::empty_string = "";
diff --git a/readd.cpp b/readd.cpp
index 1cc2894..8253d92 100644
--- a/readd.cpp
+++ b/readd.cpp
@@ -18,6 +18,7 @@
 #include "argument.hpp"
 #include "mainloop.hpp"
 #include "config.h"
+#include "sysfs.hpp"
 
 static void exit_with_error(const char* err, char** argv)
 {
@@ -33,10 +34,20 @@
     auto options = std::make_unique<ArgumentParser>(argc, argv);
 
     // Parse out path argument.
-    auto path = (*options)["path"];
+    auto path = (*options)["of-name"];
+    if (path != ArgumentParser::empty_string)
+    {
+        path = findHwmon(path);
+    }
+
     if (path == ArgumentParser::empty_string)
     {
-        exit_with_error("Path not specified.", argv);
+        path = (*options)["path"];
+    }
+
+    if (path == ArgumentParser::empty_string)
+    {
+        exit_with_error("Path not specified or invalid.", argv);
     }
 
     // Finished getting options out, so cleanup the parser.
