diff --git a/core/api/src/main/java/org/onosproject/net/group/GroupProvider.java b/core/api/src/main/java/org/onosproject/net/group/GroupProvider.java
index 4ad0769..3c5d1a3 100644
--- a/core/api/src/main/java/org/onosproject/net/group/GroupProvider.java
+++ b/core/api/src/main/java/org/onosproject/net/group/GroupProvider.java
@@ -22,6 +22,14 @@
  * Abstraction of group provider.
  */
 public interface GroupProvider extends Provider {
+    /**
+     * Group capable property name.
+     * A driver is assumed to be group capable if this property is undefined. If
+     * the driver is group capable, then it supports group descriptions and
+     * optionally group statistics. If the driver is not group capable, then it
+     * supports neither group descriptions nor group statistics.
+     */
+    String GROUP_CAPABLE = "groupCapable";
 
     /**
      * Performs a batch of group operation in the specified device with the
diff --git a/drivers/optical/src/main/resources/optical-drivers.xml b/drivers/optical/src/main/resources/optical-drivers.xml
index 55b4d17..ea670fc 100644
--- a/drivers/optical/src/main/resources/optical-drivers.xml
+++ b/drivers/optical/src/main/resources/optical-drivers.xml
@@ -105,6 +105,7 @@
                    impl="org.onosproject.driver.optical.query.OpenFlowLambdaQuery"/>
         <property name="meterCapable">false</property>
         <property name="uiType">policon</property>
+        <property name="groupCapable">false</property>
     </driver>
 
     <driver name="optical-config" manufacturer="config" hwVersion="config" swVersion="config">
diff --git a/providers/openflow/group/src/main/java/org/onosproject/provider/of/group/impl/OpenFlowGroupProvider.java b/providers/openflow/group/src/main/java/org/onosproject/provider/of/group/impl/OpenFlowGroupProvider.java
index df1bb6a..c60a58c 100644
--- a/providers/openflow/group/src/main/java/org/onosproject/provider/of/group/impl/OpenFlowGroupProvider.java
+++ b/providers/openflow/group/src/main/java/org/onosproject/provider/of/group/impl/OpenFlowGroupProvider.java
@@ -41,6 +41,7 @@
 import org.onosproject.net.DeviceId;
 import org.onosproject.net.PortNumber;
 import org.onosproject.net.device.DeviceService;
+import org.onosproject.net.driver.Driver;
 import org.onosproject.net.driver.DriverService;
 import org.onosproject.net.group.DefaultGroup;
 import org.onosproject.net.group.Group;
@@ -366,13 +367,29 @@
     private boolean isGroupSupported(OpenFlowSwitch sw) {
         if (sw.factory().getVersion() == OFVersion.OF_10 ||
                 sw.factory().getVersion() == OFVersion.OF_11 ||
-                sw.factory().getVersion() == OFVersion.OF_12) {
+                sw.factory().getVersion() == OFVersion.OF_12 ||
+                !isGroupCapable(sw)) {
             return false;
         }
 
         return true;
     }
 
+    /**
+     * Determine whether the given switch is group-capable.
+     *
+     * @param sw switch
+     * @return the boolean value of groupCapable property, or true if it is not configured.
+     */
+    private boolean isGroupCapable(OpenFlowSwitch sw) {
+        Driver driver = driverService.getDriver(DeviceId.deviceId(Dpid.uri(sw.getDpid())));
+        if (driver == null) {
+            return true;
+        }
+        String isGroupCapable = driver.getProperty(GROUP_CAPABLE);
+        return isGroupCapable == null || Boolean.parseBoolean(isGroupCapable);
+    }
+
     private class InternalGroupProvider
             implements OpenFlowSwitchListener, OpenFlowEventListener {
 
diff --git a/providers/openflow/group/src/test/java/org/onosproject/provider/of/group/impl/OpenFlowGroupProviderTest.java b/providers/openflow/group/src/test/java/org/onosproject/provider/of/group/impl/OpenFlowGroupProviderTest.java
index 0b95f1d..9b87b22 100644
--- a/providers/openflow/group/src/test/java/org/onosproject/provider/of/group/impl/OpenFlowGroupProviderTest.java
+++ b/providers/openflow/group/src/test/java/org/onosproject/provider/of/group/impl/OpenFlowGroupProviderTest.java
@@ -24,6 +24,7 @@
 import org.onosproject.net.Device;
 import org.onosproject.net.DeviceId;
 import org.onosproject.net.PortNumber;
+import org.onosproject.net.driver.DriverServiceAdapter;
 import org.onosproject.net.flow.DefaultTrafficTreatment;
 import org.onosproject.net.flow.TrafficTreatment;
 import org.onosproject.net.group.DefaultGroupBucket;
@@ -82,6 +83,7 @@
         provider.controller = controller;
         provider.providerRegistry = providerRegistry;
         provider.cfgService = new ComponentConfigAdapter();
+        provider.driverService = new DriverServiceAdapter();
         provider.activate(null);
     }
 
@@ -435,4 +437,4 @@
             return null;
         }
     }
-}
\ No newline at end of file
+}
