diff --git a/lpcsnoop.service.in b/lpcsnoop.service.in
index da7493d..6ace17e 100644
--- a/lpcsnoop.service.in
+++ b/lpcsnoop.service.in
@@ -4,7 +4,7 @@
 
 [Service]
 Restart=always
-ExecStart=@bindir@/snoopd -d "/dev/@SNOOP_DEVICE@" -b "@POST_CODE_BYTES@"
+ExecStart=@bindir@/snoopd @SNOOPD_ARGS@
 
 [Install]
 WantedBy=@SYSTEMD_TARGET@
diff --git a/main.cpp b/main.cpp
index 1094e43..db0532d 100644
--- a/main.cpp
+++ b/main.cpp
@@ -32,7 +32,6 @@
 #include <sdeventplus/source/io.hpp>
 #include <thread>
 
-static const char* snoopFilename = "/dev/aspeed-lpc-snoop0";
 static size_t codeSize = 1; /* Size of each POST code in bytes */
 
 static void usage(const char* name)
@@ -41,9 +40,9 @@
             "Usage: %s [-d <DEVICE>]\n"
             "  -b, --bytes <SIZE>     set POST code length to <SIZE> bytes. "
             "Default is %zu\n"
-            "  -d, --device <DEVICE>  use <DEVICE> file. Default is '%s'\n"
+            "  -d, --device <DEVICE>  use <DEVICE> file.\n"
             "  -v, --verbose  Prints verbose information while running\n\n",
-            name, codeSize, snoopFilename);
+            name, codeSize);
 }
 
 /*
@@ -119,7 +118,7 @@
     // clang-format off
     static const struct option long_options[] = {
         {"bytes",  required_argument, NULL, 'b'},
-        {"device", required_argument, NULL, 'd'},
+        {"device", optional_argument, NULL, 'd'},
         {"verbose", no_argument, NULL, 'v'},
         {0, 0, 0, 0}
     };
@@ -144,7 +143,13 @@
                 }
                 break;
             case 'd':
-                snoopFilename = optarg;
+                postFd = open(optarg, O_NONBLOCK);
+                if (postFd < 0)
+                {
+                    fprintf(stderr, "Unable to open: %s\n", optarg);
+                    return -1;
+                }
+
                 break;
             case 'v':
                 verbose = true;
@@ -155,13 +160,6 @@
         }
     }
 
-    postFd = open(snoopFilename, O_NONBLOCK);
-    if (postFd < 0)
-    {
-        fprintf(stderr, "Unable to open: %s\n", snoopFilename);
-        return -1;
-    }
-
     auto bus = sdbusplus::bus::new_default();
 
     // Add systemd object manager.
@@ -175,11 +173,15 @@
     try
     {
         sdeventplus::Event event = sdeventplus::Event::get_default();
-        sdeventplus::source::IO reporterSource(
-            event, postFd, EPOLLIN | EPOLLET,
-            std::bind(PostCodeEventHandler, std::placeholders::_1,
-                      std::placeholders::_2, std::placeholders::_3, &reporter,
-                      verbose));
+        if (postFd > 0)
+        {
+
+            sdeventplus::source::IO reporterSource(
+                event, postFd, EPOLLIN | EPOLLET,
+                std::bind(PostCodeEventHandler, std::placeholders::_1,
+                          std::placeholders::_2, std::placeholders::_3,
+                          &reporter, verbose));
+        }
         // Enable bus to handle incoming IO and bus events
         bus.attach_event(event.get(), SD_EVENT_PRIORITY_NORMAL);
         rc = event.loop();
diff --git a/meson.build b/meson.build
index 8bda862..8e659ed 100644
--- a/meson.build
+++ b/meson.build
@@ -21,10 +21,14 @@
 
 conf_data = configuration_data()
 conf_data.set('bindir', get_option('prefix') / get_option('bindir'))
-conf_data.set('SNOOP_DEVICE', get_option('snoop-device'))
-conf_data.set('POST_CODE_BYTES', get_option('post-code-bytes'))
 conf_data.set('SYSTEMD_TARGET', get_option('systemd-target'))
 
+snoopd_args = '-b ' + get_option('post-code-bytes').to_string()
+if get_option('snoop-device') != ''
+  snoopd_args += ' -d /dev/' + get_option('snoop-device')
+endif
+conf_data.set('SNOOPD_ARGS', snoopd_args)
+
 configure_file(
   input: 'lpcsnoop.service.in',
   output: 'lpcsnoop.service',
