diff --git a/include/oemcommands.hpp b/include/oemcommands.hpp
index 137251a..b90b388 100644
--- a/include/oemcommands.hpp
+++ b/include/oemcommands.hpp
@@ -27,6 +27,7 @@
     cmdSetPowerRestoreDelay = 0x54,
     cmdGetPowerRestoreDelay = 0x55,
     cmdSetOEMUser2Activation = 0x5A,
+    cmdSetSpecialUserPassword = 0x5F,
     cmdSetShutdownPolicy = 0x60,
     cmdGetShutdownPolicy = 0x62,
     cmdSetFanConfig = 0x89,
diff --git a/src/oemcommands.cpp b/src/oemcommands.cpp
index 7896786..80e7ad8 100644
--- a/src/oemcommands.cpp
+++ b/src/oemcommands.cpp
@@ -789,6 +789,53 @@
     return ipmi::response(ipmi::ccCommandNotAvailable);
 }
 
+/** @brief implementes setting password for special user
+ *  @param[in] specialUserIndex
+ *  @param[in] userPassword - new password in 20 bytes
+ *  @returns ipmi completion code.
+ */
+ipmi::RspType<> ipmiOEMSetSpecialUserPassword(ipmi::Context::ptr ctx,
+                                              uint8_t specialUserIndex,
+                                              std::vector<uint8_t> userPassword)
+{
+    ChannelInfo chInfo;
+    try
+    {
+        getChannelInfo(ctx->channel, chInfo);
+    }
+    catch (sdbusplus::exception_t& e)
+    {
+        phosphor::logging::log<phosphor::logging::level::ERR>(
+            "ipmiOEMSetSpecialUserPassword: Failed to get Channel Info",
+            phosphor::logging::entry("MSG: %s", e.description()));
+        return ipmi::responseUnspecifiedError();
+    }
+    if (chInfo.mediumType !=
+        static_cast<uint8_t>(EChannelMediumType::systemInterface))
+    {
+        phosphor::logging::log<phosphor::logging::level::ERR>(
+            "ipmiOEMSetSpecialUserPassword: Error - supported only in KCS "
+            "interface");
+        return ipmi::responseCommandNotAvailable();
+    }
+    if (specialUserIndex != 0)
+    {
+        phosphor::logging::log<phosphor::logging::level::ERR>(
+            "ipmiOEMSetSpecialUserPassword: Invalid user account");
+        return ipmi::responseParmOutOfRange();
+    }
+    constexpr uint8_t minPasswordSizeRequired = 6;
+    if (userPassword.size() < minPasswordSizeRequired ||
+        userPassword.size() > ipmi::maxIpmi20PasswordSize)
+    {
+        return ipmi::responseReqDataLenInvalid();
+    }
+    std::string passwd;
+    passwd.assign(reinterpret_cast<const char*>(userPassword.data()),
+                  userPassword.size());
+    return ipmi::response(ipmiSetSpecialUserPassword("root", passwd));
+}
+
 namespace ledAction
 {
 using namespace sdbusplus::xyz::openbmc_project::Led::server;
@@ -1603,6 +1650,12 @@
             IPMINetfnIntelOEMGeneralCmd::cmdSetOEMUser2Activation),
         ipmi::Privilege::Callback, ipmiOEMSetUser2Activation);
 
+    ipmi::registerHandler(
+        ipmi::prioOpenBmcBase, ipmi::netFnOemOne,
+        static_cast<ipmi::Cmd>(
+            IPMINetfnIntelOEMGeneralCmd::cmdSetSpecialUserPassword),
+        ipmi::Privilege::Callback, ipmiOEMSetSpecialUserPassword);
+
     ipmiPrintAndRegister(
         netfnIntcOEMGeneral,
         static_cast<ipmi_cmd_t>(
