diff --git a/include/oemcommands.hpp b/include/oemcommands.hpp
index 4f8166f..49b66cd 100644
--- a/include/oemcommands.hpp
+++ b/include/oemcommands.hpp
@@ -29,6 +29,7 @@
 
 namespace general
 {
+static constexpr Cmd cmdGetBmcVersionString = 0x01;
 static constexpr Cmd cmdRestoreConfiguration = 0x02;
 static constexpr Cmd cmdGetSmSignal = 0x14;
 static constexpr Cmd cmdSetSmSignal = 0x15;
diff --git a/ipmi-allowlist.conf b/ipmi-allowlist.conf
index 792e38f..af82e2f 100644
--- a/ipmi-allowlist.conf
+++ b/ipmi-allowlist.conf
@@ -182,6 +182,7 @@
 0x2e:0xF0:0x7f7f   //<Intel OEM>:<Set HW Protection Coefficient>
 0x2e:0xF1:0xff7f   //<Intel OEM>:<Get HW Protection Coefficient>
 0x2e:0xF2:0xff7f   //<Intel OEM>:<Get Limiting Policy ID>
+0x30:0x01:0x7f7f   //<Intel General Application>:<Get FW Version String>
 0x30:0x02:0x7f7f   //<Intel General Application>:<Restore Configuration>
 0x30:0x03:0x7f7f   //<Intel General Application>:<Restore SDR>
 0x30:0x04:0xff7f   //<Intel General Application>:<Get NW Switch MIB>
diff --git a/src/oemcommands.cpp b/src/oemcommands.cpp
index 390e112..4e3b7a5 100644
--- a/src/oemcommands.cpp
+++ b/src/oemcommands.cpp
@@ -274,6 +274,43 @@
 
 } // namespace mailbox
 
+ipmi::RspType<std::string> ipmiOEMGetBmcVersionString()
+{
+    static std::string version{};
+    if (version.empty())
+    {
+        std::regex expr{"^VERSION_ID=(.*)$"};
+        static constexpr auto osReleasePath{"/etc/os-release"};
+        std::ifstream ifs(osReleasePath);
+        if (!ifs.is_open())
+        {
+            version = "os-release not present";
+        }
+        std::string line{};
+        while (std::getline(ifs, line))
+        {
+            std::smatch sm;
+            if (regex_match(line, sm, expr))
+            {
+                if (sm.size() == 2)
+                {
+                    std::string v = sm[1].str();
+                    // remove the quotes
+                    v.erase(std::remove(v.begin(), v.end(), '\"'), v.end());
+                    version = v;
+                    break;
+                }
+            }
+        }
+        ifs.close();
+        if (version.empty())
+        {
+            version = "VERSION_ID not present";
+        }
+    }
+    return ipmi::responseSuccess(version);
+}
+
 // Returns the Chassis Identifier (serial #)
 ipmi_ret_t ipmiOEMGetChassisIdentifier(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
                                        ipmi_request_t request,
@@ -3963,6 +4000,10 @@
 {
     phosphor::logging::log<phosphor::logging::level::INFO>(
         "Registering OEM commands");
+    registerHandler(prioOemBase, intel::netFnGeneral,
+                    intel::general::cmdGetBmcVersionString, Privilege::User,
+                    ipmiOEMGetBmcVersionString);
+
     ipmiPrintAndRegister(intel::netFnGeneral,
                          intel::general::cmdGetChassisIdentifier, NULL,
                          ipmiOEMGetChassisIdentifier,
