diff --git a/control/example/fans.yaml b/control/example/fans.yaml
index 629c502..2583256 100644
--- a/control/example/fans.yaml
+++ b/control/example/fans.yaml
@@ -9,12 +9,15 @@
 #   cooling_zone: [The cooling zone number for the fan]
 #   cooling_profile: [The cooling profile for the fan]
 #   sensors: [The list of sensors for this fan]
+#   target_interface: [The interface implemented by the fan target.
+#                      Default is xyz.openbmc_project.Control.FanSpeed]
 
 #The cooling zone, a number, and the cooling profile, a string,
 #have to match the corresponding values in the fan zone yaml
 #so the fans can be merged into the zone definition.
 
-#Example entries for 2 fan system:
+#Example entries for 2 fan system where fan0 uses default FanSpeed and
+#fan1 uses FanPwm:
 #fans:
 #  - inventory: /system/chassis/motherboard/fan0
 #    cooling_zone: 0
@@ -26,3 +29,4 @@
 #    cooling_profile: air
 #    sensors:
 #     - fan1
+#    target_interface: xyz.openbmc_project.Control.FanPwm
diff --git a/control/fan.cpp b/control/fan.cpp
index f11bf6f..b0881da 100644
--- a/control/fan.cpp
+++ b/control/fan.cpp
@@ -36,13 +36,13 @@
 
 constexpr auto PROPERTY_INTERFACE = "org.freedesktop.DBus.Properties";
 constexpr auto FAN_SENSOR_PATH = "/xyz/openbmc_project/sensors/fan_tach/";
-constexpr auto FAN_SENSOR_CONTROL_INTF = "xyz.openbmc_project.Control.FanSpeed";
 constexpr auto FAN_TARGET_PROPERTY = "Target";
 
 
 Fan::Fan(sdbusplus::bus::bus& bus, const FanDefinition& def):
     _bus(bus),
-    _name(std::get<fanNamePos>(def))
+    _name(std::get<fanNamePos>(def)),
+    _interface(std::get<targetInterfacePos>(def))
 {
     std::string path;
     auto sensors = std::get<sensorListPos>(def);
@@ -58,7 +58,7 @@
         _targetSpeed = util::SDBusPlus::getProperty<uint64_t>(
                 bus,
                 path,
-                FAN_SENSOR_CONTROL_INTF,
+                _interface,
                 FAN_TARGET_PROPERTY);
     }
 }
@@ -69,7 +69,7 @@
 std::string Fan::getService(const std::string& sensor)
 {
     return phosphor::fan::util::getService(sensor,
-                                           FAN_SENSOR_CONTROL_INTF,
+                                           _interface,
                                            _bus);
 }
 
@@ -87,7 +87,7 @@
                                            sensor.c_str(),
                                            PROPERTY_INTERFACE,
                                            "Set");
-        method.append(FAN_SENSOR_CONTROL_INTF, property, value);
+        method.append(_interface, property, value);
 
         auto response = _bus.call(method);
         if (response.is_method_error())
diff --git a/control/fan.hpp b/control/fan.hpp
index 6975248..e7f3067 100644
--- a/control/fan.hpp
+++ b/control/fan.hpp
@@ -83,6 +83,11 @@
         std::vector<std::string> _sensors;
 
         /**
+         * The interface of the fan target
+         */
+        const std::string _interface;
+
+        /**
          * Target speed for this fan
          */
         uint64_t _targetSpeed;
diff --git a/control/gen-fan-zone-defs.py b/control/gen-fan-zone-defs.py
index 1568137..3ccab36 100755
--- a/control/gen-fan-zone-defs.py
+++ b/control/gen-fan-zone-defs.py
@@ -140,7 +140,8 @@
                         %for sensor in fan['sensors']:
                             "${sensor}",
                         %endfor
-                        }
+                        },
+                        "${fan['target_interface']}"
                     },
                 %endfor
                 },
@@ -665,6 +666,9 @@
         fan = {}
         fan['name'] = f['inventory']
         fan['sensors'] = f['sensors']
+        fan['target_interface'] = f.get(
+            'target_interface',
+            'xyz.openbmc_project.Control.FanSpeed')
         fans.append(fan)
 
     return fans
diff --git a/control/types.hpp b/control/types.hpp
index f7b75aa..bb9367b 100644
--- a/control/types.hpp
+++ b/control/types.hpp
@@ -36,7 +36,10 @@
 
 constexpr auto fanNamePos = 0;
 constexpr auto sensorListPos = 1;
-using FanDefinition = std::tuple<std::string, std::vector<std::string>>;
+constexpr auto targetInterfacePos = 2;
+using FanDefinition = std::tuple<std::string,
+                                 std::vector<std::string>,
+                                 std::string>;
 
 constexpr auto intfPos = 0;
 constexpr auto propPos = 1;
