meta-facebook: yosemite4: Set the fan LED to amber or blue

Set the fan led to amber when the fan tach triggers critical threshold.

Test Plan:
Modify the threshold and check if the led is correct.

Change-Id: I1ad360c15b2e4ff9c47d6e0bbc81e3a30ab1cd23
Signed-off-by: Delphine CC Chiu <Delphine_CC_Chiu@wiwynn.com>
diff --git a/meta-facebook/meta-yosemite4/recipes-phosphor/dbus/fan-fault-led.bb b/meta-facebook/meta-yosemite4/recipes-phosphor/dbus/fan-fault-led.bb
new file mode 100644
index 0000000..0758813
--- /dev/null
+++ b/meta-facebook/meta-yosemite4/recipes-phosphor/dbus/fan-fault-led.bb
@@ -0,0 +1,55 @@
+SUMMARY = "Fan fault led configurations for meta-yosemite4 machines"
+PR = "r1"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10"
+
+inherit allarch
+inherit phosphor-dbus-monitor
+
+FILESEXTRAPATHS:prepend := "${THISDIR}/${BPN}:"
+
+SRC_URI:append = " \
+    file://board-0-fan-0.yaml \
+    file://board-0-fan-1.yaml \
+    file://board-0-fan-4.yaml \
+    file://board-0-fan-5.yaml \
+    file://board-0-fan-8.yaml \
+    file://board-0-fan-9.yaml \
+    file://board-1-fan-10.yaml \
+    file://board-1-fan-11.yaml \
+    file://board-1-fan-2.yaml \
+    file://board-1-fan-3.yaml \
+    file://board-1-fan-6.yaml \
+    file://board-1-fan-7.yaml \
+"
+
+do_install() {
+    install -D ${WORKDIR}/board-0-fan-0.yaml ${D}${config_dir}/board-0-fan-0.yaml
+    install -D ${WORKDIR}/board-0-fan-1.yaml ${D}${config_dir}/board-0-fan-1.yaml
+    install -D ${WORKDIR}/board-0-fan-4.yaml ${D}${config_dir}/board-0-fan-4.yaml
+    install -D ${WORKDIR}/board-0-fan-5.yaml ${D}${config_dir}/board-0-fan-5.yaml
+    install -D ${WORKDIR}/board-0-fan-8.yaml ${D}${config_dir}/board-0-fan-8.yaml
+    install -D ${WORKDIR}/board-0-fan-9.yaml ${D}${config_dir}/board-0-fan-9.yaml
+    install -D ${WORKDIR}/board-1-fan-10.yaml ${D}${config_dir}/board-1-fan-10.yaml
+    install -D ${WORKDIR}/board-1-fan-11.yaml ${D}${config_dir}/board-1-fan-11.yaml
+    install -D ${WORKDIR}/board-1-fan-2.yaml ${D}${config_dir}/board-1-fan-2.yaml
+    install -D ${WORKDIR}/board-1-fan-3.yaml ${D}${config_dir}/board-1-fan-3.yaml
+    install -D ${WORKDIR}/board-1-fan-6.yaml ${D}${config_dir}/board-1-fan-6.yaml
+    install -D ${WORKDIR}/board-1-fan-7.yaml ${D}${config_dir}/board-1-fan-7.yaml
+}
+
+FILES:${PN}:append = " \
+    ${config_dir}/board-0-fan-0.yaml \
+    ${config_dir}/board-0-fan-1.yaml \
+    ${config_dir}/board-0-fan-4.yaml \
+    ${config_dir}/board-0-fan-5.yaml \
+    ${config_dir}/board-0-fan-8.yaml \
+    ${config_dir}/board-0-fan-9.yaml \
+    ${config_dir}/board-1-fan-10.yaml \
+    ${config_dir}/board-1-fan-11.yaml \
+    ${config_dir}/board-1-fan-2.yaml \
+    ${config_dir}/board-1-fan-3.yaml \
+    ${config_dir}/board-1-fan-6.yaml \
+    ${config_dir}/board-1-fan-7.yaml \
+"
+
diff --git a/meta-facebook/meta-yosemite4/recipes-phosphor/dbus/fan-fault-led/board-0-fan-0.yaml b/meta-facebook/meta-yosemite4/recipes-phosphor/dbus/fan-fault-led/board-0-fan-0.yaml
new file mode 100644
index 0000000..f961fbe
--- /dev/null
+++ b/meta-facebook/meta-yosemite4/recipes-phosphor/dbus/fan-fault-led/board-0-fan-0.yaml
@@ -0,0 +1,122 @@
+- name: board 0 fan 0 current critical alarm path group
+  class: group
+  group: path
+  members:
+      - meta: PATH
+        path: /xyz/openbmc_project/sensors/fan_tach/FANBOARD0_FAN0_TACH_IL
+      - meta: PATH
+        path: /xyz/openbmc_project/sensors/fan_tach/FANBOARD0_FAN0_TACH_OL
+
+- name: current fan critical alarm property
+  class: group
+  group: property
+  type: boolean
+  members:
+      - interface: xyz.openbmc_project.Sensor.Threshold.Critical
+        meta: PROPERTY
+        property: CriticalAlarmHigh
+      - interface: xyz.openbmc_project.Sensor.Threshold.Critical
+        meta: PROPERTY
+        property: CriticalAlarmLow
+
+- name: board 0 fan 0 critical alarm assert
+  class: watch
+  watch: property
+  paths: board 0 fan 0 current critical alarm path group
+  properties: current fan critical alarm property
+  callback: check if fan critical threshold assert
+
+- name: board 0 fan 0 critical alarm deassert
+  class: watch
+  watch: property
+  paths: board 0 fan 0 current critical alarm path group
+  properties: current fan critical alarm property
+  callback: check if fan critical threshold deassert
+
+- name: check if fan critical threshold assert
+  class: condition
+  condition: count
+  paths: board 0 fan 0 current critical alarm path group
+  properties: current fan critical alarm property
+  callback: set fan fail
+  countop: ">="
+  countbound: 1
+  op: "=="
+  bound: true
+
+- name: check if fan critical threshold deassert
+  class: condition
+  condition: count
+  paths: board 0 fan 0 current critical alarm path group
+  properties: current fan critical alarm property
+  callback: set fan ok
+  countop: "<"
+  countbound: 1
+  op: "=="
+  bound: true
+
+- name: set fan ok group assert
+  class: callback
+  callback: method
+  service: org.freedesktop.systemd1
+  path: /org/freedesktop/systemd1
+  interface: org.freedesktop.systemd1.Manager
+  method: StartUnit
+  args:
+      - value: obmc-led-group-start@fan0_ok.service
+        type: string
+      - value: replace
+        type: string
+
+- name: set fan ok group deassert
+  class: callback
+  callback: method
+  service: org.freedesktop.systemd1
+  path: /org/freedesktop/systemd1
+  interface: org.freedesktop.systemd1.Manager
+  method: StartUnit
+  args:
+      - value: obmc-led-group-stop@fan0_ok.service
+        type: string
+      - value: replace
+        type: string
+
+- name: set fan fail group assert
+  class: callback
+  callback: method
+  service: org.freedesktop.systemd1
+  path: /org/freedesktop/systemd1
+  interface: org.freedesktop.systemd1.Manager
+  method: StartUnit
+  args:
+      - value: obmc-led-group-start@fan0_fail.service
+        type: string
+      - value: replace
+        type: string
+
+- name: set fan fail group deassert
+  class: callback
+  callback: method
+  service: org.freedesktop.systemd1
+  path: /org/freedesktop/systemd1
+  interface: org.freedesktop.systemd1.Manager
+  method: StartUnit
+  args:
+      - value: obmc-led-group-stop@fan0_fail.service
+        type: string
+      - value: replace
+        type: string
+
+- name: set fan ok
+  class: callback
+  callback: group
+  members:
+      - set fan ok group assert
+      - set fan fail group deassert
+
+- name: set fan fail
+  class: callback
+  callback: group
+  members:
+      - set fan fail group assert
+      - set fan ok group deassert
diff --git a/meta-facebook/meta-yosemite4/recipes-phosphor/dbus/fan-fault-led/board-0-fan-1.yaml b/meta-facebook/meta-yosemite4/recipes-phosphor/dbus/fan-fault-led/board-0-fan-1.yaml
new file mode 100644
index 0000000..7e2fbf6
--- /dev/null
+++ b/meta-facebook/meta-yosemite4/recipes-phosphor/dbus/fan-fault-led/board-0-fan-1.yaml
@@ -0,0 +1,122 @@
+- name: board 0 fan 1 current critical alarm path group
+  class: group
+  group: path
+  members:
+      - meta: PATH
+        path: /xyz/openbmc_project/sensors/fan_tach/FANBOARD0_FAN1_TACH_IL
+      - meta: PATH
+        path: /xyz/openbmc_project/sensors/fan_tach/FANBOARD0_FAN1_TACH_OL
+
+- name: current fan critical alarm property
+  class: group
+  group: property
+  type: boolean
+  members:
+      - interface: xyz.openbmc_project.Sensor.Threshold.Critical
+        meta: PROPERTY
+        property: CriticalAlarmHigh
+      - interface: xyz.openbmc_project.Sensor.Threshold.Critical
+        meta: PROPERTY
+        property: CriticalAlarmLow
+
+- name: board 0 fan 1 critical alarm assert
+  class: watch
+  watch: property
+  paths: board 0 fan 1 current critical alarm path group
+  properties: current fan critical alarm property
+  callback: check if fan critical threshold assert
+
+- name: board 0 fan 1 critical alarm deassert
+  class: watch
+  watch: property
+  paths: board 0 fan 1 current critical alarm path group
+  properties: current fan critical alarm property
+  callback: check if fan critical threshold deassert
+
+- name: check if fan critical threshold assert
+  class: condition
+  condition: count
+  paths: board 0 fan 1 current critical alarm path group
+  properties: current fan critical alarm property
+  callback: set fan fail
+  countop: ">="
+  countbound: 1
+  op: "=="
+  bound: true
+
+- name: check if fan critical threshold deassert
+  class: condition
+  condition: count
+  paths: board 0 fan 1 current critical alarm path group
+  properties: current fan critical alarm property
+  callback: set fan ok
+  countop: "<"
+  countbound: 1
+  op: "=="
+  bound: true
+
+- name: set fan ok group assert
+  class: callback
+  callback: method
+  service: org.freedesktop.systemd1
+  path: /org/freedesktop/systemd1
+  interface: org.freedesktop.systemd1.Manager
+  method: StartUnit
+  args:
+      - value: obmc-led-group-start@fan1_ok.service
+        type: string
+      - value: replace
+        type: string
+
+- name: set fan ok group deassert
+  class: callback
+  callback: method
+  service: org.freedesktop.systemd1
+  path: /org/freedesktop/systemd1
+  interface: org.freedesktop.systemd1.Manager
+  method: StartUnit
+  args:
+      - value: obmc-led-group-stop@fan1_ok.service
+        type: string
+      - value: replace
+        type: string
+
+- name: set fan fail group assert
+  class: callback
+  callback: method
+  service: org.freedesktop.systemd1
+  path: /org/freedesktop/systemd1
+  interface: org.freedesktop.systemd1.Manager
+  method: StartUnit
+  args:
+      - value: obmc-led-group-start@fan1_fail.service
+        type: string
+      - value: replace
+        type: string
+
+- name: set fan fail group deassert
+  class: callback
+  callback: method
+  service: org.freedesktop.systemd1
+  path: /org/freedesktop/systemd1
+  interface: org.freedesktop.systemd1.Manager
+  method: StartUnit
+  args:
+      - value: obmc-led-group-stop@fan1_fail.service
+        type: string
+      - value: replace
+        type: string
+
+- name: set fan ok
+  class: callback
+  callback: group
+  members:
+      - set fan ok group assert
+      - set fan fail group deassert
+
+- name: set fan fail
+  class: callback
+  callback: group
+  members:
+      - set fan fail group assert
+      - set fan ok group deassert
diff --git a/meta-facebook/meta-yosemite4/recipes-phosphor/dbus/fan-fault-led/board-0-fan-4.yaml b/meta-facebook/meta-yosemite4/recipes-phosphor/dbus/fan-fault-led/board-0-fan-4.yaml
new file mode 100644
index 0000000..f6f2264
--- /dev/null
+++ b/meta-facebook/meta-yosemite4/recipes-phosphor/dbus/fan-fault-led/board-0-fan-4.yaml
@@ -0,0 +1,122 @@
+- name: board 0 fan 4 current critical alarm path group
+  class: group
+  group: path
+  members:
+      - meta: PATH
+        path: /xyz/openbmc_project/sensors/fan_tach/FANBOARD0_FAN4_TACH_IL
+      - meta: PATH
+        path: /xyz/openbmc_project/sensors/fan_tach/FANBOARD0_FAN4_TACH_OL
+
+- name: current fan critical alarm property
+  class: group
+  group: property
+  type: boolean
+  members:
+      - interface: xyz.openbmc_project.Sensor.Threshold.Critical
+        meta: PROPERTY
+        property: CriticalAlarmHigh
+      - interface: xyz.openbmc_project.Sensor.Threshold.Critical
+        meta: PROPERTY
+        property: CriticalAlarmLow
+
+- name: board 0 fan 4 critical alarm assert
+  class: watch
+  watch: property
+  paths: board 0 fan 4 current critical alarm path group
+  properties: current fan critical alarm property
+  callback: check if fan critical threshold assert
+
+- name: board 0 fan 4 critical alarm deassert
+  class: watch
+  watch: property
+  paths: board 0 fan 4 current critical alarm path group
+  properties: current fan critical alarm property
+  callback: check if fan critical threshold deassert
+
+- name: check if fan critical threshold assert
+  class: condition
+  condition: count
+  paths: board 0 fan 4 current critical alarm path group
+  properties: current fan critical alarm property
+  callback: set fan fail
+  countop: ">="
+  countbound: 1
+  op: "=="
+  bound: true
+
+- name: check if fan critical threshold deassert
+  class: condition
+  condition: count
+  paths: board 0 fan 4 current critical alarm path group
+  properties: current fan critical alarm property
+  callback: set fan ok
+  countop: "<"
+  countbound: 1
+  op: "=="
+  bound: true
+
+- name: set fan ok group assert
+  class: callback
+  callback: method
+  service: org.freedesktop.systemd1
+  path: /org/freedesktop/systemd1
+  interface: org.freedesktop.systemd1.Manager
+  method: StartUnit
+  args:
+      - value: obmc-led-group-start@fan4_ok.service
+        type: string
+      - value: replace
+        type: string
+
+- name: set fan ok group deassert
+  class: callback
+  callback: method
+  service: org.freedesktop.systemd1
+  path: /org/freedesktop/systemd1
+  interface: org.freedesktop.systemd1.Manager
+  method: StartUnit
+  args:
+      - value: obmc-led-group-stop@fan4_ok.service
+        type: string
+      - value: replace
+        type: string
+
+- name: set fan fail group assert
+  class: callback
+  callback: method
+  service: org.freedesktop.systemd1
+  path: /org/freedesktop/systemd1
+  interface: org.freedesktop.systemd1.Manager
+  method: StartUnit
+  args:
+      - value: obmc-led-group-start@fan4_fail.service
+        type: string
+      - value: replace
+        type: string
+
+- name: set fan fail group deassert
+  class: callback
+  callback: method
+  service: org.freedesktop.systemd1
+  path: /org/freedesktop/systemd1
+  interface: org.freedesktop.systemd1.Manager
+  method: StartUnit
+  args:
+      - value: obmc-led-group-stop@fan4_fail.service
+        type: string
+      - value: replace
+        type: string
+
+- name: set fan ok
+  class: callback
+  callback: group
+  members:
+      - set fan ok group assert
+      - set fan fail group deassert
+
+- name: set fan fail
+  class: callback
+  callback: group
+  members:
+      - set fan fail group assert
+      - set fan ok group deassert
diff --git a/meta-facebook/meta-yosemite4/recipes-phosphor/dbus/fan-fault-led/board-0-fan-5.yaml b/meta-facebook/meta-yosemite4/recipes-phosphor/dbus/fan-fault-led/board-0-fan-5.yaml
new file mode 100644
index 0000000..db21ec8
--- /dev/null
+++ b/meta-facebook/meta-yosemite4/recipes-phosphor/dbus/fan-fault-led/board-0-fan-5.yaml
@@ -0,0 +1,122 @@
+- name: board 0 fan 5 current critical alarm path group
+  class: group
+  group: path
+  members:
+      - meta: PATH
+        path: /xyz/openbmc_project/sensors/fan_tach/FANBOARD0_FAN5_TACH_IL
+      - meta: PATH
+        path: /xyz/openbmc_project/sensors/fan_tach/FANBOARD0_FAN5_TACH_OL
+
+- name: current fan critical alarm property
+  class: group
+  group: property
+  type: boolean
+  members:
+      - interface: xyz.openbmc_project.Sensor.Threshold.Critical
+        meta: PROPERTY
+        property: CriticalAlarmHigh
+      - interface: xyz.openbmc_project.Sensor.Threshold.Critical
+        meta: PROPERTY
+        property: CriticalAlarmLow
+
+- name: board 0 fan 5 critical alarm assert
+  class: watch
+  watch: property
+  paths: board 0 fan 5 current critical alarm path group
+  properties: current fan critical alarm property
+  callback: check if fan critical threshold assert
+
+- name: board 0 fan 5 critical alarm deassert
+  class: watch
+  watch: property
+  paths: board 0 fan 5 current critical alarm path group
+  properties: current fan critical alarm property
+  callback: check if fan critical threshold deassert
+
+- name: check if fan critical threshold assert
+  class: condition
+  condition: count
+  paths: board 0 fan 5 current critical alarm path group
+  properties: current fan critical alarm property
+  callback: set fan fail
+  countop: ">="
+  countbound: 1
+  op: "=="
+  bound: true
+
+- name: check if fan critical threshold deassert
+  class: condition
+  condition: count
+  paths: board 0 fan 5 current critical alarm path group
+  properties: current fan critical alarm property
+  callback: set fan ok
+  countop: "<"
+  countbound: 1
+  op: "=="
+  bound: true
+
+- name: set fan ok group assert
+  class: callback
+  callback: method
+  service: org.freedesktop.systemd1
+  path: /org/freedesktop/systemd1
+  interface: org.freedesktop.systemd1.Manager
+  method: StartUnit
+  args:
+      - value: obmc-led-group-start@fan5_ok.service
+        type: string
+      - value: replace
+        type: string
+
+- name: set fan ok group deassert
+  class: callback
+  callback: method
+  service: org.freedesktop.systemd1
+  path: /org/freedesktop/systemd1
+  interface: org.freedesktop.systemd1.Manager
+  method: StartUnit
+  args:
+      - value: obmc-led-group-stop@fan5_ok.service
+        type: string
+      - value: replace
+        type: string
+
+- name: set fan fail group assert
+  class: callback
+  callback: method
+  service: org.freedesktop.systemd1
+  path: /org/freedesktop/systemd1
+  interface: org.freedesktop.systemd1.Manager
+  method: StartUnit
+  args:
+      - value: obmc-led-group-start@fan5_fail.service
+        type: string
+      - value: replace
+        type: string
+
+- name: set fan fail group deassert
+  class: callback
+  callback: method
+  service: org.freedesktop.systemd1
+  path: /org/freedesktop/systemd1
+  interface: org.freedesktop.systemd1.Manager
+  method: StartUnit
+  args:
+      - value: obmc-led-group-stop@fan5_fail.service
+        type: string
+      - value: replace
+        type: string
+
+- name: set fan ok
+  class: callback
+  callback: group
+  members:
+      - set fan ok group assert
+      - set fan fail group deassert
+
+- name: set fan fail
+  class: callback
+  callback: group
+  members:
+      - set fan fail group assert
+      - set fan ok group deassert
diff --git a/meta-facebook/meta-yosemite4/recipes-phosphor/dbus/fan-fault-led/board-0-fan-8.yaml b/meta-facebook/meta-yosemite4/recipes-phosphor/dbus/fan-fault-led/board-0-fan-8.yaml
new file mode 100644
index 0000000..92df2de
--- /dev/null
+++ b/meta-facebook/meta-yosemite4/recipes-phosphor/dbus/fan-fault-led/board-0-fan-8.yaml
@@ -0,0 +1,122 @@
+- name: board 0 fan 8 current critical alarm path group
+  class: group
+  group: path
+  members:
+      - meta: PATH
+        path: /xyz/openbmc_project/sensors/fan_tach/FANBOARD0_FAN8_TACH_IL
+      - meta: PATH
+        path: /xyz/openbmc_project/sensors/fan_tach/FANBOARD0_FAN8_TACH_OL
+
+- name: current fan critical alarm property
+  class: group
+  group: property
+  type: boolean
+  members:
+      - interface: xyz.openbmc_project.Sensor.Threshold.Critical
+        meta: PROPERTY
+        property: CriticalAlarmHigh
+      - interface: xyz.openbmc_project.Sensor.Threshold.Critical
+        meta: PROPERTY
+        property: CriticalAlarmLow
+
+- name: board 0 fan 8 critical alarm assert
+  class: watch
+  watch: property
+  paths: board 0 fan 8 current critical alarm path group
+  properties: current fan critical alarm property
+  callback: check if fan critical threshold assert
+
+- name: board 0 fan 8 critical alarm deassert
+  class: watch
+  watch: property
+  paths: board 0 fan 8 current critical alarm path group
+  properties: current fan critical alarm property
+  callback: check if fan critical threshold deassert
+
+- name: check if fan critical threshold assert
+  class: condition
+  condition: count
+  paths: board 0 fan 8 current critical alarm path group
+  properties: current fan critical alarm property
+  callback: set fan fail
+  countop: ">="
+  countbound: 1
+  op: "=="
+  bound: true
+
+- name: check if fan critical threshold deassert
+  class: condition
+  condition: count
+  paths: board 0 fan 8 current critical alarm path group
+  properties: current fan critical alarm property
+  callback: set fan ok
+  countop: "<"
+  countbound: 1
+  op: "=="
+  bound: true
+
+- name: set fan ok group assert
+  class: callback
+  callback: method
+  service: org.freedesktop.systemd1
+  path: /org/freedesktop/systemd1
+  interface: org.freedesktop.systemd1.Manager
+  method: StartUnit
+  args:
+      - value: obmc-led-group-start@fan8_ok.service
+        type: string
+      - value: replace
+        type: string
+
+- name: set fan ok group deassert
+  class: callback
+  callback: method
+  service: org.freedesktop.systemd1
+  path: /org/freedesktop/systemd1
+  interface: org.freedesktop.systemd1.Manager
+  method: StartUnit
+  args:
+      - value: obmc-led-group-stop@fan8_ok.service
+        type: string
+      - value: replace
+        type: string
+
+- name: set fan fail group assert
+  class: callback
+  callback: method
+  service: org.freedesktop.systemd1
+  path: /org/freedesktop/systemd1
+  interface: org.freedesktop.systemd1.Manager
+  method: StartUnit
+  args:
+      - value: obmc-led-group-start@fan8_fail.service
+        type: string
+      - value: replace
+        type: string
+
+- name: set fan fail group deassert
+  class: callback
+  callback: method
+  service: org.freedesktop.systemd1
+  path: /org/freedesktop/systemd1
+  interface: org.freedesktop.systemd1.Manager
+  method: StartUnit
+  args:
+      - value: obmc-led-group-stop@fan8_fail.service
+        type: string
+      - value: replace
+        type: string
+
+- name: set fan ok
+  class: callback
+  callback: group
+  members:
+      - set fan ok group assert
+      - set fan fail group deassert
+
+- name: set fan fail
+  class: callback
+  callback: group
+  members:
+      - set fan fail group assert
+      - set fan ok group deassert
diff --git a/meta-facebook/meta-yosemite4/recipes-phosphor/dbus/fan-fault-led/board-0-fan-9.yaml b/meta-facebook/meta-yosemite4/recipes-phosphor/dbus/fan-fault-led/board-0-fan-9.yaml
new file mode 100644
index 0000000..cdf6e69
--- /dev/null
+++ b/meta-facebook/meta-yosemite4/recipes-phosphor/dbus/fan-fault-led/board-0-fan-9.yaml
@@ -0,0 +1,122 @@
+- name: board 0 fan 9 current critical alarm path group
+  class: group
+  group: path
+  members:
+      - meta: PATH
+        path: /xyz/openbmc_project/sensors/fan_tach/FANBOARD0_FAN9_TACH_IL
+      - meta: PATH
+        path: /xyz/openbmc_project/sensors/fan_tach/FANBOARD0_FAN9_TACH_OL
+
+- name: current fan critical alarm property
+  class: group
+  group: property
+  type: boolean
+  members:
+      - interface: xyz.openbmc_project.Sensor.Threshold.Critical
+        meta: PROPERTY
+        property: CriticalAlarmHigh
+      - interface: xyz.openbmc_project.Sensor.Threshold.Critical
+        meta: PROPERTY
+        property: CriticalAlarmLow
+
+- name: board 0 fan 9 critical alarm assert
+  class: watch
+  watch: property
+  paths: board 0 fan 9 current critical alarm path group
+  properties: current fan critical alarm property
+  callback: check if fan critical threshold assert
+
+- name: board 0 fan 9 critical alarm deassert
+  class: watch
+  watch: property
+  paths: board 0 fan 9 current critical alarm path group
+  properties: current fan critical alarm property
+  callback: check if fan critical threshold deassert
+
+- name: check if fan critical threshold assert
+  class: condition
+  condition: count
+  paths: board 0 fan 9 current critical alarm path group
+  properties: current fan critical alarm property
+  callback: set fan fail
+  countop: ">="
+  countbound: 1
+  op: "=="
+  bound: true
+
+- name: check if fan critical threshold deassert
+  class: condition
+  condition: count
+  paths: board 0 fan 9 current critical alarm path group
+  properties: current fan critical alarm property
+  callback: set fan ok
+  countop: "<"
+  countbound: 1
+  op: "=="
+  bound: true
+
+- name: set fan ok group assert
+  class: callback
+  callback: method
+  service: org.freedesktop.systemd1
+  path: /org/freedesktop/systemd1
+  interface: org.freedesktop.systemd1.Manager
+  method: StartUnit
+  args:
+      - value: obmc-led-group-start@fan9_ok.service
+        type: string
+      - value: replace
+        type: string
+
+- name: set fan ok group deassert
+  class: callback
+  callback: method
+  service: org.freedesktop.systemd1
+  path: /org/freedesktop/systemd1
+  interface: org.freedesktop.systemd1.Manager
+  method: StartUnit
+  args:
+      - value: obmc-led-group-stop@fan9_ok.service
+        type: string
+      - value: replace
+        type: string
+
+- name: set fan fail group assert
+  class: callback
+  callback: method
+  service: org.freedesktop.systemd1
+  path: /org/freedesktop/systemd1
+  interface: org.freedesktop.systemd1.Manager
+  method: StartUnit
+  args:
+      - value: obmc-led-group-start@fan9_fail.service
+        type: string
+      - value: replace
+        type: string
+
+- name: set fan fail group deassert
+  class: callback
+  callback: method
+  service: org.freedesktop.systemd1
+  path: /org/freedesktop/systemd1
+  interface: org.freedesktop.systemd1.Manager
+  method: StartUnit
+  args:
+      - value: obmc-led-group-stop@fan9_fail.service
+        type: string
+      - value: replace
+        type: string
+
+- name: set fan ok
+  class: callback
+  callback: group
+  members:
+      - set fan ok group assert
+      - set fan fail group deassert
+
+- name: set fan fail
+  class: callback
+  callback: group
+  members:
+      - set fan fail group assert
+      - set fan ok group deassert
diff --git a/meta-facebook/meta-yosemite4/recipes-phosphor/dbus/fan-fault-led/board-1-fan-10.yaml b/meta-facebook/meta-yosemite4/recipes-phosphor/dbus/fan-fault-led/board-1-fan-10.yaml
new file mode 100644
index 0000000..4658559
--- /dev/null
+++ b/meta-facebook/meta-yosemite4/recipes-phosphor/dbus/fan-fault-led/board-1-fan-10.yaml
@@ -0,0 +1,122 @@
+- name: board 1 fan 10 current critical alarm path group
+  class: group
+  group: path
+  members:
+      - meta: PATH
+        path: /xyz/openbmc_project/sensors/fan_tach/FANBOARD1_FAN10_TACH_IL
+      - meta: PATH
+        path: /xyz/openbmc_project/sensors/fan_tach/FANBOARD1_FAN10_TACH_OL
+
+- name: current fan critical alarm property
+  class: group
+  group: property
+  type: boolean
+  members:
+      - interface: xyz.openbmc_project.Sensor.Threshold.Critical
+        meta: PROPERTY
+        property: CriticalAlarmHigh
+      - interface: xyz.openbmc_project.Sensor.Threshold.Critical
+        meta: PROPERTY
+        property: CriticalAlarmLow
+
+- name: board 1 fan 10 critical alarm assert
+  class: watch
+  watch: property
+  paths: board 1 fan 10 current critical alarm path group
+  properties: current fan critical alarm property
+  callback: check if fan critical threshold assert
+
+- name: board 1 fan 10 critical alarm deassert
+  class: watch
+  watch: property
+  paths: board 1 fan 10 current critical alarm path group
+  properties: current fan critical alarm property
+  callback: check if fan critical threshold deassert
+
+- name: check if fan critical threshold assert
+  class: condition
+  condition: count
+  paths: board 1 fan 10 current critical alarm path group
+  properties: current fan critical alarm property
+  callback: set fan fail
+  countop: ">="
+  countbound: 1
+  op: "=="
+  bound: true
+
+- name: check if fan critical threshold deassert
+  class: condition
+  condition: count
+  paths: board 1 fan 10 current critical alarm path group
+  properties: current fan critical alarm property
+  callback: set fan ok
+  countop: "<"
+  countbound: 1
+  op: "=="
+  bound: true
+
+- name: set fan ok group assert
+  class: callback
+  callback: method
+  service: org.freedesktop.systemd1
+  path: /org/freedesktop/systemd1
+  interface: org.freedesktop.systemd1.Manager
+  method: StartUnit
+  args:
+      - value: obmc-led-group-start@fan10_ok.service
+        type: string
+      - value: replace
+        type: string
+
+- name: set fan ok group deassert
+  class: callback
+  callback: method
+  service: org.freedesktop.systemd1
+  path: /org/freedesktop/systemd1
+  interface: org.freedesktop.systemd1.Manager
+  method: StartUnit
+  args:
+      - value: obmc-led-group-stop@fan10_ok.service
+        type: string
+      - value: replace
+        type: string
+
+- name: set fan fail group assert
+  class: callback
+  callback: method
+  service: org.freedesktop.systemd1
+  path: /org/freedesktop/systemd1
+  interface: org.freedesktop.systemd1.Manager
+  method: StartUnit
+  args:
+      - value: obmc-led-group-start@fan10_fail.service
+        type: string
+      - value: replace
+        type: string
+
+- name: set fan fail group deassert
+  class: callback
+  callback: method
+  service: org.freedesktop.systemd1
+  path: /org/freedesktop/systemd1
+  interface: org.freedesktop.systemd1.Manager
+  method: StartUnit
+  args:
+      - value: obmc-led-group-stop@fan10_fail.service
+        type: string
+      - value: replace
+        type: string
+
+- name: set fan ok
+  class: callback
+  callback: group
+  members:
+      - set fan ok group assert
+      - set fan fail group deassert
+
+- name: set fan fail
+  class: callback
+  callback: group
+  members:
+      - set fan fail group assert
+      - set fan ok group deassert
diff --git a/meta-facebook/meta-yosemite4/recipes-phosphor/dbus/fan-fault-led/board-1-fan-11.yaml b/meta-facebook/meta-yosemite4/recipes-phosphor/dbus/fan-fault-led/board-1-fan-11.yaml
new file mode 100644
index 0000000..1503292
--- /dev/null
+++ b/meta-facebook/meta-yosemite4/recipes-phosphor/dbus/fan-fault-led/board-1-fan-11.yaml
@@ -0,0 +1,122 @@
+- name: board 1 fan 11 current critical alarm path group
+  class: group
+  group: path
+  members:
+      - meta: PATH
+        path: /xyz/openbmc_project/sensors/fan_tach/FANBOARD1_FAN11_TACH_IL
+      - meta: PATH
+        path: /xyz/openbmc_project/sensors/fan_tach/FANBOARD1_FAN11_TACH_OL
+
+- name: current fan critical alarm property
+  class: group
+  group: property
+  type: boolean
+  members:
+      - interface: xyz.openbmc_project.Sensor.Threshold.Critical
+        meta: PROPERTY
+        property: CriticalAlarmHigh
+      - interface: xyz.openbmc_project.Sensor.Threshold.Critical
+        meta: PROPERTY
+        property: CriticalAlarmLow
+
+- name: board 1 fan 11 critical alarm assert
+  class: watch
+  watch: property
+  paths: board 1 fan 11 current critical alarm path group
+  properties: current fan critical alarm property
+  callback: check if fan critical threshold assert
+
+- name: board 1 fan 11 critical alarm deassert
+  class: watch
+  watch: property
+  paths: board 1 fan 11 current critical alarm path group
+  properties: current fan critical alarm property
+  callback: check if fan critical threshold deassert
+
+- name: check if fan critical threshold assert
+  class: condition
+  condition: count
+  paths: board 1 fan 11 current critical alarm path group
+  properties: current fan critical alarm property
+  callback: set fan fail
+  countop: ">="
+  countbound: 1
+  op: "=="
+  bound: true
+
+- name: check if fan critical threshold deassert
+  class: condition
+  condition: count
+  paths: board 1 fan 11 current critical alarm path group
+  properties: current fan critical alarm property
+  callback: set fan ok
+  countop: "<"
+  countbound: 1
+  op: "=="
+  bound: true
+
+- name: set fan ok group assert
+  class: callback
+  callback: method
+  service: org.freedesktop.systemd1
+  path: /org/freedesktop/systemd1
+  interface: org.freedesktop.systemd1.Manager
+  method: StartUnit
+  args:
+      - value: obmc-led-group-start@fan11_ok.service
+        type: string
+      - value: replace
+        type: string
+
+- name: set fan ok group deassert
+  class: callback
+  callback: method
+  service: org.freedesktop.systemd1
+  path: /org/freedesktop/systemd1
+  interface: org.freedesktop.systemd1.Manager
+  method: StartUnit
+  args:
+      - value: obmc-led-group-stop@fan11_ok.service
+        type: string
+      - value: replace
+        type: string
+
+- name: set fan fail group assert
+  class: callback
+  callback: method
+  service: org.freedesktop.systemd1
+  path: /org/freedesktop/systemd1
+  interface: org.freedesktop.systemd1.Manager
+  method: StartUnit
+  args:
+      - value: obmc-led-group-start@fan11_fail.service
+        type: string
+      - value: replace
+        type: string
+
+- name: set fan fail group deassert
+  class: callback
+  callback: method
+  service: org.freedesktop.systemd1
+  path: /org/freedesktop/systemd1
+  interface: org.freedesktop.systemd1.Manager
+  method: StartUnit
+  args:
+      - value: obmc-led-group-stop@fan11_fail.service
+        type: string
+      - value: replace
+        type: string
+
+- name: set fan ok
+  class: callback
+  callback: group
+  members:
+      - set fan ok group assert
+      - set fan fail group deassert
+
+- name: set fan fail
+  class: callback
+  callback: group
+  members:
+      - set fan fail group assert
+      - set fan ok group deassert
diff --git a/meta-facebook/meta-yosemite4/recipes-phosphor/dbus/fan-fault-led/board-1-fan-2.yaml b/meta-facebook/meta-yosemite4/recipes-phosphor/dbus/fan-fault-led/board-1-fan-2.yaml
new file mode 100644
index 0000000..639583c
--- /dev/null
+++ b/meta-facebook/meta-yosemite4/recipes-phosphor/dbus/fan-fault-led/board-1-fan-2.yaml
@@ -0,0 +1,122 @@
+- name: board 1 fan 2 current critical alarm path group
+  class: group
+  group: path
+  members:
+      - meta: PATH
+        path: /xyz/openbmc_project/sensors/fan_tach/FANBOARD1_FAN2_TACH_IL
+      - meta: PATH
+        path: /xyz/openbmc_project/sensors/fan_tach/FANBOARD1_FAN2_TACH_OL
+
+- name: current fan critical alarm property
+  class: group
+  group: property
+  type: boolean
+  members:
+      - interface: xyz.openbmc_project.Sensor.Threshold.Critical
+        meta: PROPERTY
+        property: CriticalAlarmHigh
+      - interface: xyz.openbmc_project.Sensor.Threshold.Critical
+        meta: PROPERTY
+        property: CriticalAlarmLow
+
+- name: board 1 fan 2 critical alarm assert
+  class: watch
+  watch: property
+  paths: board 1 fan 2 current critical alarm path group
+  properties: current fan critical alarm property
+  callback: check if fan critical threshold assert
+
+- name: board 1 fan 2 critical alarm deassert
+  class: watch
+  watch: property
+  paths: board 1 fan 2 current critical alarm path group
+  properties: current fan critical alarm property
+  callback: check if fan critical threshold deassert
+
+- name: check if fan critical threshold assert
+  class: condition
+  condition: count
+  paths: board 1 fan 2 current critical alarm path group
+  properties: current fan critical alarm property
+  callback: set fan fail
+  countop: ">="
+  countbound: 1
+  op: "=="
+  bound: true
+
+- name: check if fan critical threshold deassert
+  class: condition
+  condition: count
+  paths: board 1 fan 2 current critical alarm path group
+  properties: current fan critical alarm property
+  callback: set fan ok
+  countop: "<"
+  countbound: 1
+  op: "=="
+  bound: true
+
+- name: set fan ok group assert
+  class: callback
+  callback: method
+  service: org.freedesktop.systemd1
+  path: /org/freedesktop/systemd1
+  interface: org.freedesktop.systemd1.Manager
+  method: StartUnit
+  args:
+      - value: obmc-led-group-start@fan2_ok.service
+        type: string
+      - value: replace
+        type: string
+
+- name: set fan ok group deassert
+  class: callback
+  callback: method
+  service: org.freedesktop.systemd1
+  path: /org/freedesktop/systemd1
+  interface: org.freedesktop.systemd1.Manager
+  method: StartUnit
+  args:
+      - value: obmc-led-group-stop@fan2_ok.service
+        type: string
+      - value: replace
+        type: string
+
+- name: set fan fail group assert
+  class: callback
+  callback: method
+  service: org.freedesktop.systemd1
+  path: /org/freedesktop/systemd1
+  interface: org.freedesktop.systemd1.Manager
+  method: StartUnit
+  args:
+      - value: obmc-led-group-start@fan2_fail.service
+        type: string
+      - value: replace
+        type: string
+
+- name: set fan fail group deassert
+  class: callback
+  callback: method
+  service: org.freedesktop.systemd1
+  path: /org/freedesktop/systemd1
+  interface: org.freedesktop.systemd1.Manager
+  method: StartUnit
+  args:
+      - value: obmc-led-group-stop@fan2_fail.service
+        type: string
+      - value: replace
+        type: string
+
+- name: set fan ok
+  class: callback
+  callback: group
+  members:
+      - set fan ok group assert
+      - set fan fail group deassert
+
+- name: set fan fail
+  class: callback
+  callback: group
+  members:
+      - set fan fail group assert
+      - set fan ok group deassert
diff --git a/meta-facebook/meta-yosemite4/recipes-phosphor/dbus/fan-fault-led/board-1-fan-3.yaml b/meta-facebook/meta-yosemite4/recipes-phosphor/dbus/fan-fault-led/board-1-fan-3.yaml
new file mode 100644
index 0000000..15263b8
--- /dev/null
+++ b/meta-facebook/meta-yosemite4/recipes-phosphor/dbus/fan-fault-led/board-1-fan-3.yaml
@@ -0,0 +1,122 @@
+- name: board 1 fan 3 current critical alarm path group
+  class: group
+  group: path
+  members:
+      - meta: PATH
+        path: /xyz/openbmc_project/sensors/fan_tach/FANBOARD1_FAN3_TACH_IL
+      - meta: PATH
+        path: /xyz/openbmc_project/sensors/fan_tach/FANBOARD1_FAN3_TACH_OL
+
+- name: current fan critical alarm property
+  class: group
+  group: property
+  type: boolean
+  members:
+      - interface: xyz.openbmc_project.Sensor.Threshold.Critical
+        meta: PROPERTY
+        property: CriticalAlarmHigh
+      - interface: xyz.openbmc_project.Sensor.Threshold.Critical
+        meta: PROPERTY
+        property: CriticalAlarmLow
+
+- name: board 1 fan 3 critical alarm assert
+  class: watch
+  watch: property
+  paths: board 1 fan 3 current critical alarm path group
+  properties: current fan critical alarm property
+  callback: check if fan critical threshold assert
+
+- name: board 1 fan 3 critical alarm deassert
+  class: watch
+  watch: property
+  paths: board 1 fan 3 current critical alarm path group
+  properties: current fan critical alarm property
+  callback: check if fan critical threshold deassert
+
+- name: check if fan critical threshold assert
+  class: condition
+  condition: count
+  paths: board 1 fan 3 current critical alarm path group
+  properties: current fan critical alarm property
+  callback: set fan fail
+  countop: ">="
+  countbound: 1
+  op: "=="
+  bound: true
+
+- name: check if fan critical threshold deassert
+  class: condition
+  condition: count
+  paths: board 1 fan 3 current critical alarm path group
+  properties: current fan critical alarm property
+  callback: set fan ok
+  countop: "<"
+  countbound: 1
+  op: "=="
+  bound: true
+
+- name: set fan ok group assert
+  class: callback
+  callback: method
+  service: org.freedesktop.systemd1
+  path: /org/freedesktop/systemd1
+  interface: org.freedesktop.systemd1.Manager
+  method: StartUnit
+  args:
+      - value: obmc-led-group-start@fan3_ok.service
+        type: string
+      - value: replace
+        type: string
+
+- name: set fan ok group deassert
+  class: callback
+  callback: method
+  service: org.freedesktop.systemd1
+  path: /org/freedesktop/systemd1
+  interface: org.freedesktop.systemd1.Manager
+  method: StartUnit
+  args:
+      - value: obmc-led-group-stop@fan3_ok.service
+        type: string
+      - value: replace
+        type: string
+
+- name: set fan fail group assert
+  class: callback
+  callback: method
+  service: org.freedesktop.systemd1
+  path: /org/freedesktop/systemd1
+  interface: org.freedesktop.systemd1.Manager
+  method: StartUnit
+  args:
+      - value: obmc-led-group-start@fan3_fail.service
+        type: string
+      - value: replace
+        type: string
+
+- name: set fan fail group deassert
+  class: callback
+  callback: method
+  service: org.freedesktop.systemd1
+  path: /org/freedesktop/systemd1
+  interface: org.freedesktop.systemd1.Manager
+  method: StartUnit
+  args:
+      - value: obmc-led-group-stop@fan3_fail.service
+        type: string
+      - value: replace
+        type: string
+
+- name: set fan ok
+  class: callback
+  callback: group
+  members:
+      - set fan ok group assert
+      - set fan fail group deassert
+
+- name: set fan fail
+  class: callback
+  callback: group
+  members:
+      - set fan fail group assert
+      - set fan ok group deassert
diff --git a/meta-facebook/meta-yosemite4/recipes-phosphor/dbus/fan-fault-led/board-1-fan-6.yaml b/meta-facebook/meta-yosemite4/recipes-phosphor/dbus/fan-fault-led/board-1-fan-6.yaml
new file mode 100644
index 0000000..7e849a8
--- /dev/null
+++ b/meta-facebook/meta-yosemite4/recipes-phosphor/dbus/fan-fault-led/board-1-fan-6.yaml
@@ -0,0 +1,122 @@
+- name: board 1 fan 6 current critical alarm path group
+  class: group
+  group: path
+  members:
+      - meta: PATH
+        path: /xyz/openbmc_project/sensors/fan_tach/FANBOARD1_FAN6_TACH_IL
+      - meta: PATH
+        path: /xyz/openbmc_project/sensors/fan_tach/FANBOARD1_FAN6_TACH_OL
+
+- name: current fan critical alarm property
+  class: group
+  group: property
+  type: boolean
+  members:
+      - interface: xyz.openbmc_project.Sensor.Threshold.Critical
+        meta: PROPERTY
+        property: CriticalAlarmHigh
+      - interface: xyz.openbmc_project.Sensor.Threshold.Critical
+        meta: PROPERTY
+        property: CriticalAlarmLow
+
+- name: board 1 fan 6 critical alarm assert
+  class: watch
+  watch: property
+  paths: board 1 fan 6 current critical alarm path group
+  properties: current fan critical alarm property
+  callback: check if fan critical threshold assert
+
+- name: board 1 fan 6 critical alarm deassert
+  class: watch
+  watch: property
+  paths: board 1 fan 6 current critical alarm path group
+  properties: current fan critical alarm property
+  callback: check if fan critical threshold deassert
+
+- name: check if fan critical threshold assert
+  class: condition
+  condition: count
+  paths: board 1 fan 6 current critical alarm path group
+  properties: current fan critical alarm property
+  callback: set fan fail
+  countop: ">="
+  countbound: 1
+  op: "=="
+  bound: true
+
+- name: check if fan critical threshold deassert
+  class: condition
+  condition: count
+  paths: board 1 fan 6 current critical alarm path group
+  properties: current fan critical alarm property
+  callback: set fan ok
+  countop: "<"
+  countbound: 1
+  op: "=="
+  bound: true
+
+- name: set fan ok group assert
+  class: callback
+  callback: method
+  service: org.freedesktop.systemd1
+  path: /org/freedesktop/systemd1
+  interface: org.freedesktop.systemd1.Manager
+  method: StartUnit
+  args:
+      - value: obmc-led-group-start@fan6_ok.service
+        type: string
+      - value: replace
+        type: string
+
+- name: set fan ok group deassert
+  class: callback
+  callback: method
+  service: org.freedesktop.systemd1
+  path: /org/freedesktop/systemd1
+  interface: org.freedesktop.systemd1.Manager
+  method: StartUnit
+  args:
+      - value: obmc-led-group-stop@fan6_ok.service
+        type: string
+      - value: replace
+        type: string
+
+- name: set fan fail group assert
+  class: callback
+  callback: method
+  service: org.freedesktop.systemd1
+  path: /org/freedesktop/systemd1
+  interface: org.freedesktop.systemd1.Manager
+  method: StartUnit
+  args:
+      - value: obmc-led-group-start@fan6_fail.service
+        type: string
+      - value: replace
+        type: string
+
+- name: set fan fail group deassert
+  class: callback
+  callback: method
+  service: org.freedesktop.systemd1
+  path: /org/freedesktop/systemd1
+  interface: org.freedesktop.systemd1.Manager
+  method: StartUnit
+  args:
+      - value: obmc-led-group-stop@fan6_fail.service
+        type: string
+      - value: replace
+        type: string
+
+- name: set fan ok
+  class: callback
+  callback: group
+  members:
+      - set fan ok group assert
+      - set fan fail group deassert
+
+- name: set fan fail
+  class: callback
+  callback: group
+  members:
+      - set fan fail group assert
+      - set fan ok group deassert
diff --git a/meta-facebook/meta-yosemite4/recipes-phosphor/dbus/fan-fault-led/board-1-fan-7.yaml b/meta-facebook/meta-yosemite4/recipes-phosphor/dbus/fan-fault-led/board-1-fan-7.yaml
new file mode 100644
index 0000000..01ea532
--- /dev/null
+++ b/meta-facebook/meta-yosemite4/recipes-phosphor/dbus/fan-fault-led/board-1-fan-7.yaml
@@ -0,0 +1,122 @@
+- name: board 1 fan 7 current critical alarm path group
+  class: group
+  group: path
+  members:
+      - meta: PATH
+        path: /xyz/openbmc_project/sensors/fan_tach/FANBOARD1_FAN7_TACH_IL
+      - meta: PATH
+        path: /xyz/openbmc_project/sensors/fan_tach/FANBOARD1_FAN7_TACH_OL
+
+- name: current fan critical alarm property
+  class: group
+  group: property
+  type: boolean
+  members:
+      - interface: xyz.openbmc_project.Sensor.Threshold.Critical
+        meta: PROPERTY
+        property: CriticalAlarmHigh
+      - interface: xyz.openbmc_project.Sensor.Threshold.Critical
+        meta: PROPERTY
+        property: CriticalAlarmLow
+
+- name: board 1 fan 7 critical alarm assert
+  class: watch
+  watch: property
+  paths: board 1 fan 7 current critical alarm path group
+  properties: current fan critical alarm property
+  callback: check if fan critical threshold assert
+
+- name: board 1 fan 7 critical alarm deassert
+  class: watch
+  watch: property
+  paths: board 1 fan 7 current critical alarm path group
+  properties: current fan critical alarm property
+  callback: check if fan critical threshold deassert
+
+- name: check if fan critical threshold assert
+  class: condition
+  condition: count
+  paths: board 1 fan 7 current critical alarm path group
+  properties: current fan critical alarm property
+  callback: set fan fail
+  countop: ">="
+  countbound: 1
+  op: "=="
+  bound: true
+
+- name: check if fan critical threshold deassert
+  class: condition
+  condition: count
+  paths: board 1 fan 7 current critical alarm path group
+  properties: current fan critical alarm property
+  callback: set fan ok
+  countop: "<"
+  countbound: 1
+  op: "=="
+  bound: true
+
+- name: set fan ok group assert
+  class: callback
+  callback: method
+  service: org.freedesktop.systemd1
+  path: /org/freedesktop/systemd1
+  interface: org.freedesktop.systemd1.Manager
+  method: StartUnit
+  args:
+      - value: obmc-led-group-start@fan7_ok.service
+        type: string
+      - value: replace
+        type: string
+
+- name: set fan ok group deassert
+  class: callback
+  callback: method
+  service: org.freedesktop.systemd1
+  path: /org/freedesktop/systemd1
+  interface: org.freedesktop.systemd1.Manager
+  method: StartUnit
+  args:
+      - value: obmc-led-group-stop@fan7_ok.service
+        type: string
+      - value: replace
+        type: string
+
+- name: set fan fail group assert
+  class: callback
+  callback: method
+  service: org.freedesktop.systemd1
+  path: /org/freedesktop/systemd1
+  interface: org.freedesktop.systemd1.Manager
+  method: StartUnit
+  args:
+      - value: obmc-led-group-start@fan7_fail.service
+        type: string
+      - value: replace
+        type: string
+
+- name: set fan fail group deassert
+  class: callback
+  callback: method
+  service: org.freedesktop.systemd1
+  path: /org/freedesktop/systemd1
+  interface: org.freedesktop.systemd1.Manager
+  method: StartUnit
+  args:
+      - value: obmc-led-group-stop@fan7_fail.service
+        type: string
+      - value: replace
+        type: string
+
+- name: set fan ok
+  class: callback
+  callback: group
+  members:
+      - set fan ok group assert
+      - set fan fail group deassert
+
+- name: set fan fail
+  class: callback
+  callback: group
+  members:
+      - set fan fail group assert
+      - set fan ok group deassert
diff --git a/meta-facebook/meta-yosemite4/recipes-phosphor/dbus/phosphor-dbus-monitor-config.bbappend b/meta-facebook/meta-yosemite4/recipes-phosphor/dbus/phosphor-dbus-monitor-config.bbappend
index 34c8160..4b93a9f 100644
--- a/meta-facebook/meta-yosemite4/recipes-phosphor/dbus/phosphor-dbus-monitor-config.bbappend
+++ b/meta-facebook/meta-yosemite4/recipes-phosphor/dbus/phosphor-dbus-monitor-config.bbappend
@@ -1 +1,2 @@
-PHOSPHOR_DBUS_MONITOR_CONFIGS:append = " "
+PHOSPHOR_DBUS_MONITOR_CONFIGS:append = " power-saving-policy"
+PHOSPHOR_DBUS_MONITOR_CONFIGS:append = " fan-fault-led"