diff --git a/src/oemcommands.cpp b/src/oemcommands.cpp
index 02c2883..072a6c5 100644
--- a/src/oemcommands.cpp
+++ b/src/oemcommands.cpp
@@ -158,17 +158,6 @@
     return -1;
 }
 
-ipmi_ret_t ipmiOEMWildcard(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
-                           ipmi_request_t request, ipmi_response_t response,
-                           ipmi_data_len_t dataLen, ipmi_context_t context)
-{
-    printCommand(+netfn, +cmd);
-    // Status code.
-    ipmi_ret_t rc = IPMI_CC_INVALID;
-    *dataLen = 0;
-    return rc;
-}
-
 // Returns the Chassis Identifier (serial #)
 ipmi_ret_t ipmiOEMGetChassisIdentifier(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
                                        ipmi_request_t request,
@@ -3562,14 +3551,6 @@
 {
     phosphor::logging::log<phosphor::logging::level::INFO>(
         "Registering OEM commands");
-    ipmiPrintAndRegister(intel::netFnGeneral, IPMI_CMD_WILDCARD, NULL,
-                         ipmiOEMWildcard,
-                         PRIVILEGE_USER); // wildcard default handler
-
-    ipmiPrintAndRegister(intel::netFnApp, IPMI_CMD_WILDCARD, NULL,
-                         ipmiOEMWildcard,
-                         PRIVILEGE_USER); // wildcard default handler
-
     ipmiPrintAndRegister(intel::netFnGeneral,
                          intel::general::cmdGetChassisIdentifier, NULL,
                          ipmiOEMGetChassisIdentifier,
diff --git a/src/sensorcommands.cpp b/src/sensorcommands.cpp
index 69bdf45..0c1840c 100644
--- a/src/sensorcommands.cpp
+++ b/src/sensorcommands.cpp
@@ -263,17 +263,6 @@
 }
 
 /* sensor commands */
-ipmi_ret_t ipmiSensorWildcardHandler(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
-                                     ipmi_request_t request,
-                                     ipmi_response_t response,
-                                     ipmi_data_len_t dataLen,
-                                     ipmi_context_t context)
-{
-    *dataLen = 0;
-    printCommand(+netfn, +cmd);
-    return IPMI_CC_INVALID;
-}
-
 namespace meHealth
 {
 constexpr const char *busname = "xyz.openbmc_project.NodeManagerProxy";
@@ -1501,19 +1490,6 @@
 
 void registerSensorFunctions()
 {
-    // get firmware version information
-    ipmiPrintAndRegister(NETFUN_SENSOR, IPMI_CMD_WILDCARD, nullptr,
-                         ipmiSensorWildcardHandler, PRIVILEGE_USER);
-
-    // <Get Sensor Type>
-    ipmiPrintAndRegister(NETFUN_SENSOR, ipmi::sensor_event::cmdGetSensorType,
-                         nullptr, ipmiSensorWildcardHandler, PRIVILEGE_USER);
-
-    // <Set Sensor Reading and Event Status>
-    ipmiPrintAndRegister(
-        NETFUN_SENSOR, ipmi::sensor_event::cmdSetSensorReadingAndEvtSts,
-        nullptr, ipmiSensorWildcardHandler, PRIVILEGE_OPERATOR);
-
     // <Platform Event>
     ipmi::registerHandler(ipmi::prioOemBase, ipmi::netFnSensor,
                           ipmi::sensor_event::cmdPlatformEvent,
