diff --git a/usb/70-bmc-usb.rules b/usb/70-bmc-usb.rules
new file mode 100644
index 0000000..2c16d9a
--- /dev/null
+++ b/usb/70-bmc-usb.rules
@@ -0,0 +1,2 @@
+SUBSYSTEM=="block", ACTION=="add", KERNEL=="sda1", ENV{SYSTEMD_WANTS}="usb-code-update@sda1", TAG+="systemd"
+SUBSYSTEM=="block", ACTION=="add", KERNEL=="sdb1", ENV{SYSTEMD_WANTS}="usb-code-update@sdb1", TAG+="systemd"
diff --git a/usb/meson.build b/usb/meson.build
index bc4462a..b8a138a 100644
--- a/usb/meson.build
+++ b/usb/meson.build
@@ -39,3 +39,20 @@
     install: true,
     install_dir: get_option('bindir')
 )
+
+systemd_system_unit_dir = dependency('systemd').get_pkgconfig_variable(
+    'systemdsystemunitdir',
+    define_variable: ['prefix', get_option('prefix')])
+udev_dir = dependency('udev').get_pkgconfig_variable(
+    'udev_dir',
+    define_variable: ['prefix', get_option('prefix')])
+
+install_data(
+    'services/usb-code-update@.service',
+    install_dir: systemd_system_unit_dir
+)
+
+install_data(
+    '70-bmc-usb.rules',
+    install_dir: udev_dir / 'rules.d'
+)
diff --git a/usb/services/usb-code-update@.service b/usb/services/usb-code-update@.service
new file mode 100644
index 0000000..e885475
--- /dev/null
+++ b/usb/services/usb-code-update@.service
@@ -0,0 +1,14 @@
+[Unit]
+Description=FW Code Update via USB %I
+BindsTo=dev-%i.device
+After=dev-%i.device
+Wants=xyz.openbmc_project.Software.Version.service
+After=xyz.openbmc_project.Software.Version.service
+Wants=xyz.openbmc_project.Software.BMC.Updater.service
+After=xyz.openbmc_project.Software.BMC.Updater.service
+
+[Service]
+Restart=no
+ExecStart=/usr/bin/phosphor-usb-code-update --device %i
+Type=simple
+RemainAfterExit=yes
diff --git a/usb/usb_manager.cpp b/usb/usb_manager.cpp
index ed831dd..5e225ac 100644
--- a/usb/usb_manager.cpp
+++ b/usb/usb_manager.cpp
@@ -2,6 +2,8 @@
 
 #include "usb_manager.hpp"
 
+#include <sys/mount.h>
+
 namespace phosphor
 {
 namespace usb
@@ -10,8 +12,13 @@
 bool USBManager::run()
 {
     fs::path dir(usbPath);
-    if (!fs::exists(dir))
+    fs::create_directories(dir);
+
+    auto rc = mount(devicePath.c_str(), usbPath.c_str(), "vfat", 0, NULL);
+    if (rc)
     {
+        lg2::error("Error ({ERRNO}) occurred during the mount call", "ERRNO",
+                   errno);
         return false;
     }
 
diff --git a/usb/usb_manager.hpp b/usb/usb_manager.hpp
index e67115c..78e54aa 100644
--- a/usb/usb_manager.hpp
+++ b/usb/usb_manager.hpp
@@ -25,9 +25,10 @@
     USBManager& operator=(USBManager&&) = default;
 
     explicit USBManager(sdbusplus::bus::bus& bus, sdeventplus::Event& event,
-                        const fs::path& path) :
+                        const fs::path& devPath, const fs::path& usbPath) :
         bus(bus),
-        event(event), usbPath(path), isUSBCodeUpdate(false),
+        event(event), devicePath(devPath), usbPath(usbPath),
+        isUSBCodeUpdate(false),
         fwUpdateMatcher(bus,
                         MatchRules::interfacesAdded() +
                             MatchRules::path("/xyz/openbmc_project/software"),
@@ -75,7 +76,10 @@
     /** sd event handler. */
     sdeventplus::Event& event;
 
-    /** The USB path detected. */
+    /** The USB device path. */
+    const fs::path& devicePath;
+
+    /** The USB mount path. */
     const fs::path& usbPath;
 
     /** Indicates whether USB codeupdate is going on. */
diff --git a/usb/usb_manager_main.cpp b/usb/usb_manager_main.cpp
index 1f3ac81..771b4cd 100644
--- a/usb/usb_manager_main.cpp
+++ b/usb/usb_manager_main.cpp
@@ -13,22 +13,23 @@
     // Get a default event loop
     auto event = sdeventplus::Event::get_default();
 
-    std::string fileName{};
+    std::string deviceName{};
 
     CLI::App app{"Update the firmware of OpenBMC via USB app"};
-    app.add_option("-f,--fileName", fileName,
-                   "Get the name of the USB mount folder, eg: sda1, sdb1");
+    app.add_option("-d,--device", deviceName,
+                   "Get the name of the USB device name, eg: sda1, sdb1");
 
     CLI11_PARSE(app, argc, argv);
 
-    if (fileName.empty())
+    if (deviceName.empty())
     {
         lg2::error("The file name passed in is empty.");
         return -1;
     }
 
-    fs::path usbPath = fs::path{"/run/media/usb"} / fileName;
-    phosphor::usb::USBManager manager(bus, event, usbPath);
+    fs::path devicePath = fs::path{"/dev"} / deviceName;
+    fs::path usbPath = fs::path{"/run/media/usb"} / deviceName;
+    phosphor::usb::USBManager manager(bus, event, devicePath, usbPath);
 
     // Attach the bus to sd_event to service user requests
     bus.attach_event(event.get(), SD_EVENT_PRIORITY_NORMAL);
