diff --git a/src/AutoPilotPlugins/APM/APMSafetyComponentRover.qml b/src/AutoPilotPlugins/APM/APMSafetyComponentRover.qml
index c89bd61..8356ca3 100644
--- a/src/AutoPilotPlugins/APM/APMSafetyComponentRover.qml
+++ b/src/AutoPilotPlugins/APM/APMSafetyComponentRover.qml
@@ -8,13 +8,175 @@
  ****************************************************************************/
 
 
-import QtQuick 2.3
+import QtQuick              2.3
+import QtQuick.Controls     1.2
+import QtGraphicalEffects   1.0
 
-import QGroundControl.Controls 1.0
+import QGroundControl.FactSystem    1.0
+import QGroundControl.FactControls  1.0
+import QGroundControl.Palette       1.0
+import QGroundControl.Controls      1.0
+import QGroundControl.ScreenTools   1.0
 
-QGCLabel {
-    anchors.fill:           parent
-    text:                   qsTr("Not supported")
-    horizontalAlignment:    Text.AlignHCenter
-    verticalAlignment:      Text.AlignVCenter
-}
+SetupPage {
+    id:             safetyPage
+    pageComponent:  safetyPageComponent
+
+    Component {
+        id: safetyPageComponent
+
+        Flow {
+            id:         flowLayout
+            width:      availableWidth
+            spacing:    _margins
+
+            FactPanelController { id: controller; factPanel: safetyPage.viewPanel }
+
+            QGCPalette { id: ggcPal; colorGroupEnabled: true }
+
+            property Fact _failsafeGCSEnable:   controller.getParameterFact(-1, "FS_GCS_ENABLE")
+            property Fact _failsafeThrEnable:   controller.getParameterFact(-1, "FS_THR_ENABLE")
+            property Fact _failsafeThrValue:    controller.getParameterFact(-1, "FS_THR_VALUE")
+            property Fact _failsafeAction:      controller.getParameterFact(-1, "FS_ACTION")
+            property Fact _failsafeCrashCheck:  controller.getParameterFact(-1, "FS_CRASH_CHECK")
+
+            property Fact _armingCheck: controller.getParameterFact(-1, "ARMING_CHECK")
+
+            property real _margins:     ScreenTools.defaultFontPixelHeight
+            property bool _showIcon:    !ScreenTools.isTinyScreen
+
+            Column {
+                spacing: _margins / 2
+
+                QGCLabel {
+                    id:         failsafeLabel
+                    text:       qsTr("Failsafe Triggers")
+                    font.family: ScreenTools.demiboldFontFamily
+                }
+
+                Rectangle {
+                    id:     failsafeSettings
+                    width:  throttleEnableCombo.x + throttleEnableCombo.width + _margins
+                    height: crashCheckCombo.y + crashCheckCombo.height + _margins
+                    color:  ggcPal.windowShade
+
+                    QGCLabel {
+                        id:                 gcsEnableLabel
+                        anchors.margins:    _margins
+                        anchors.left:       parent.left
+                        anchors.baseline:   gcsEnableCombo.baseline
+                        text:               qsTr("Ground Station failsafe:")
+                    }
+
+                    FactComboBox {
+                        id:                 gcsEnableCombo
+                        anchors.topMargin:  _margins
+                        anchors.leftMargin: _margins
+                        anchors.left:       gcsEnableLabel.right
+                        anchors.top:        parent.top
+                        width:              throttlePWMField.width
+                        fact:               _failsafeGCSEnable
+                        indexModel:         false
+                    }
+
+                    QGCLabel {
+                        id:                 throttleEnableLabel
+                        anchors.margins:    _margins
+                        anchors.left:       parent.left
+                        anchors.baseline:   throttleEnableCombo.baseline
+                        text:               qsTr("Throttle failsafe:")
+                    }
+
+                    FactComboBox {
+                        id:                 throttleEnableCombo
+                        anchors.topMargin:  _margins
+                        anchors.left:       gcsEnableCombo.left
+                        anchors.top:        gcsEnableCombo.bottom
+                        width:              throttlePWMField.width
+                        fact:               _failsafeThrEnable
+                        indexModel:         false
+                    }
+
+                    QGCLabel {
+                        id:                 throttlePWMLabel
+                        anchors.margins:    _margins
+                        anchors.left:       parent.left
+                        anchors.baseline:   throttlePWMField.baseline
+                        text:               qsTr("PWM threshold:")
+                    }
+
+                    FactTextField {
+                        id:                 throttlePWMField
+                        anchors.topMargin:  _margins / 2
+                        anchors.left:       gcsEnableCombo.left
+                        anchors.top:        throttleEnableCombo.bottom
+                        fact:               _failsafeThrValue
+                        showUnits:          true
+                    }
+
+                    QGCLabel {
+                        id:                 crashCheckLabel
+                        anchors.margins:    _margins
+                        anchors.left:       parent.left
+                        anchors.baseline:   crashCheckCombo.baseline
+                        text:               qsTr("Failsafe Crash Check:")
+                    }
+
+                    QGCComboBox {
+                        id:                 crashCheckCombo
+                        anchors.topMargin:  _margins
+                        anchors.left:       gcsEnableCombo.left
+                        anchors.top:        throttlePWMField.bottom
+                        width:              throttlePWMField.width
+                        model:              [qsTr("Disabled"), qsTr("Hold"), qsTr("Hold and Disarm")]
+                        currentIndex:       _failsafeCrashCheck.value
+
+                        onActivated: _failsafeCrashCheck.value = index
+                    }
+                 } // Rectangle - Failsafe Settings
+            } // Column - Failsafe Settings
+
+            Column {
+                spacing: _margins / 2
+
+                QGCLabel {
+                    text:           qsTr("Arming Checks")
+                    font.family:    ScreenTools.demiboldFontFamily
+                }
+
+                Rectangle {
+                    width:  flowLayout.width
+                    height: armingCheckInnerColumn.height + (_margins * 2)
+                    color:  ggcPal.windowShade
+
+                    Column {
+                        id:                 armingCheckInnerColumn
+                        anchors.margins:    _margins
+                        anchors.top:        parent.top
+                        anchors.left:       parent.left
+                        anchors.right:      parent.right
+                        spacing: _margins
+
+                        FactBitmask {
+                            id:                 armingCheckBitmask
+                            anchors.left:       parent.left
+                            anchors.right:      parent.right
+                            firstEntryIsAll:    true
+                            fact:               _armingCheck
+                        }
+
+                        QGCLabel {
+                            id:             armingCheckWarning
+                            anchors.left:   parent.left
+                            anchors.right:  parent.right
+                            wrapMode:       Text.WordWrap
+                            color:          qgcPal.warningText
+                            text:            qsTr("Warning: Turning off arming checks can lead to loss of Vehicle control.")
+                            visible:        _armingCheck.value != 1
+                        }
+                    }
+                } // Rectangle - Arming checks
+            } // Column - Arming Checks
+        } // Flow
+    } // Component - safetyPageComponent
+} // SetupView
diff --git a/src/AutoPilotPlugins/APM/APMSafetyComponentSummaryRover.qml b/src/AutoPilotPlugins/APM/APMSafetyComponentSummaryRover.qml
index c89bd61..a71f5f9 100644
--- a/src/AutoPilotPlugins/APM/APMSafetyComponentSummaryRover.qml
+++ b/src/AutoPilotPlugins/APM/APMSafetyComponentSummaryRover.qml
@@ -7,14 +7,103 @@
  *
  ****************************************************************************/
 
-
 import QtQuick 2.3
+import QtQuick.Controls 1.2
 
+import QGroundControl.FactSystem 1.0
+import QGroundControl.FactControls 1.0
 import QGroundControl.Controls 1.0
+import QGroundControl.Palette 1.0
+
+FactPanel {
+    id:             panel
+    anchors.fill:   parent
+    color:          qgcPal.windowShadeDark
+
+    QGCPalette { id: qgcPal; colorGroupEnabled: enabled }
+    FactPanelController { id: controller; factPanel: panel }
+
+    property Fact _failsafeThrEnable:   controller.getParameterFact(-1, "FS_THR_ENABLE")
+    property Fact _failsafeThrValue:    controller.getParameterFact(-1, "FS_THR_VALUE")
+    property Fact _failsafeAction:      controller.getParameterFact(-1, "FS_ACTION")
+    property Fact _failsafeCrashCheck:  controller.getParameterFact(-1, "FS_CRASH_CHECK")
+
+    property Fact _armingCheck:         controller.getParameterFact(-1, "ARMING_CHECK")
+
+    property string _failsafeActionText
+    property string _failsafeCrashCheckText
+
+    Component.onCompleted: {
+        setFailsafeActionText()
+        setFailsafeCrashCheckText()
+    }
+
+    Connections {
+        target: _failsafeAction
+
+        onValueChanged: setFailsafeActionText()
+    }
+
+    Connections {
+        target: _failsafeCrashCheck
+
+        onValueChanged: setFailsafeCrashCheckText()
+    }
+
+    function setFailsafeActionText() {
+        switch (_failsafeAction.value) {
+        case 0:
+            _failsafeActionText = qsTr("Disabled")
+            break
+        case 1:
+            _failsafeActionText = qsTr("Always RTL")
+            break
+        case 2:
+            _failsafeActionText = qsTr("Always Hold")
+            break
+        default:
+            _failsafeActionText = qsTr("Unknown")
+        }
+    }
+
+    function setFailsafeCrashCheckText() {
+        switch (_failsafeCrashCheck.value) {
+        case 0:
+            _failsafeCrashCheckText = qsTr("Disabled")
+            break
+        case 1:
+            _failsafeCrashCheckText = qsTr("Hold")
+            break
+        case 2:
+            _failsafeCrashCheckText = qsTr("Hold and Disarm")
+            break
+        default:
+            _failsafeCrashCheckText = qsTr("Unknown")
+        }
+    }
+
+    Column {
+        anchors.fill:       parent
+
+        VehicleSummaryRow {
+            labelText: qsTr("Arming Checks:")
+            valueText:  _armingCheck.value & 1 ? qsTr("Enabled") : qsTr("Some disabled")
+        }
+
+        VehicleSummaryRow {
+            labelText: qsTr("Throttle failsafe:")
+            valueText:  _failsafeThrEnable.value != 0 ? _failsafeThrValue.valueString : qsTr("Disabled")
+        }
+
+        VehicleSummaryRow {
+            labelText: qsTr("Failsafe Action:")
+            valueText: _failsafeActionText
+        }
+
+        VehicleSummaryRow {
+            labelText: qsTr("Failsafe Crash Check:")
+            valueText: _failsafeCrashCheckText
+        }
 
-QGCLabel {
-    anchors.fill:           parent
-    text:                   qsTr("Not supported")
-    horizontalAlignment:    Text.AlignHCenter
-    verticalAlignment:      Text.AlignVCenter
+    }
 }