From b3e7b48a6730fbf9ec190313276272c42263dfb6 Mon Sep 17 00:00:00 2001
From: Michael Oborne <mich146@hotmail.com>
Date: Fri, 6 Apr 2012 16:27:26 +0800
Subject: [PATCH] APM Planner - WIP - no exe 3DR R setup layout - thanks
 andrew.

---
 .../Antenna/Tracker.Designer.cs               |    5 +-
 Tools/ArdupilotMegaPlanner/Antenna/Tracker.cs |    3 +-
 .../ArdupilotMegaPlanner/Antenna/Tracker.resx |   77 -
 .../ArdupilotMegaPlanner/ArdupilotMega.csproj |  143 +-
 .../BackStageViewContentPanel.cs              |   23 +
 .../BackstageView/BackStageViewMenuPanel.cs   |   13 +-
 .../Controls/BackstageView/BackstageView.cs   |   29 +-
 .../BackstageView/BackstageViewButton.cs      |   27 +-
 Tools/ArdupilotMegaPlanner/CurrentState.cs    |   19 +
 .../GCSViews/Configuration.cs                 |    4 +-
 ...ConfigAccelerometerCalibration.Designer.cs |   46 +-
 .../ConfigAccelerometerCalibration.cs         |   50 +-
 .../ConfigAccelerometerCalibration.es-ES.resx |  315 ++++
 .../ConfigAccelerometerCalibration.fr.resx    |  312 ++++
 .../ConfigAccelerometerCalibration.it-IT.resx |  318 ++++
 .../ConfigAccelerometerCalibration.pl.resx    |  318 ++++
 .../ConfigAccelerometerCalibration.resx       |  190 +++
 ...onfigAccelerometerCalibration.zh-Hans.resx |  496 ++++++
 .../ConfigAccelerometerCalibration.zh-TW.resx |  460 ++++++
 .../ConfigurationView/ConfigArducopter.cs     |    3 +-
 .../ConfigurationView/ConfigArduplane.cs      |    3 +-
 .../ConfigBatteryMonitoring.Designer.cs       |  140 +-
 .../ConfigBatteryMonitoring.cs                |  345 +++-
 .../ConfigBatteryMonitoring.es-ES.resx        |  315 ++++
 .../ConfigBatteryMonitoring.fr.resx           |  312 ++++
 .../ConfigBatteryMonitoring.it-IT.resx        |  318 ++++
 .../ConfigBatteryMonitoring.pl.resx           |  318 ++++
 .../ConfigBatteryMonitoring.resx              |  552 +++++++
 .../ConfigBatteryMonitoring.zh-Hans.resx      |  496 ++++++
 .../ConfigBatteryMonitoring.zh-TW.resx        |  460 ++++++
 .../ConfigFlightModes.Designer.cs             |  196 +--
 .../ConfigurationView/ConfigFlightModes.cs    |   13 +-
 .../ConfigFlightModes.es-ES.resx              |  315 ++++
 .../ConfigFlightModes.fr.resx                 |  312 ++++
 .../ConfigFlightModes.it-IT.resx              |  318 ++++
 .../ConfigFlightModes.pl.resx                 |  318 ++++
 .../ConfigurationView/ConfigFlightModes.resx  |  856 +++++++++-
 .../ConfigFlightModes.zh-Hans.resx            |  496 ++++++
 .../ConfigFlightModes.zh-TW.resx              |  460 ++++++
 .../ConfigHardwareOptions.Designer.cs         |  102 +-
 .../ConfigHardwareOptions.cs                  |  232 ++-
 .../ConfigHardwareOptions.es-ES.resx          |  315 ++++
 .../ConfigHardwareOptions.fr.resx             |  312 ++++
 .../ConfigHardwareOptions.it-IT.resx          |  318 ++++
 .../ConfigHardwareOptions.pl.resx             |  318 ++++
 .../ConfigHardwareOptions.resx                |  402 +++++
 .../ConfigHardwareOptions.zh-Hans.resx        |  496 ++++++
 .../ConfigHardwareOptions.zh-TW.resx          |  460 ++++++
 .../ConfigurationView/ConfigPlanner.cs        |    3 +-
 .../ConfigRadioInput.Designer.cs              |  113 +-
 .../ConfigurationView/ConfigRadioInput.cs     |   13 +-
 .../ConfigRadioInput.es-ES.resx               |  315 ++++
 .../ConfigRadioInput.fr.resx                  |  312 ++++
 .../ConfigRadioInput.it-IT.resx               |  318 ++++
 .../ConfigRadioInput.pl.resx                  |  318 ++++
 .../ConfigurationView/ConfigRadioInput.resx   |  483 ++++++
 .../ConfigRadioInput.zh-Hans.resx             |  496 ++++++
 .../ConfigRadioInput.zh-TW.resx               |  460 ++++++
 .../ConfigurationView/ConfigRawParams.cs      |    3 +-
 .../ConfigTradHeli.Designer.cs                |  390 ++---
 .../ConfigurationView/ConfigTradHeli.cs       |  470 +++++-
 .../ConfigTradHeli.es-ES.resx                 |  315 ++++
 .../ConfigurationView/ConfigTradHeli.fr.resx  |  312 ++++
 .../ConfigTradHeli.it-IT.resx                 |  318 ++++
 .../ConfigurationView/ConfigTradHeli.pl.resx  |  318 ++++
 .../ConfigurationView/ConfigTradHeli.resx     | 1461 +++++++++++++++++
 .../ConfigTradHeli.zh-Hans.resx               |  496 ++++++
 .../ConfigTradHeli.zh-TW.resx                 |  460 ++++++
 .../ConfigurationView/Setup.Designer.cs       |   21 +-
 .../GCSViews/ConfigurationView/Setup.cs       |   18 +-
 .../ArdupilotMegaPlanner/GCSViews/Firmware.cs |    2 +-
 Tools/ArdupilotMegaPlanner/HUD.cs             |    1 -
 Tools/ArdupilotMegaPlanner/MAVLink.cs         |   33 +-
 Tools/ArdupilotMegaPlanner/MainV2.cs          |   41 +-
 Tools/ArdupilotMegaPlanner/Msi/wix.pdb        |  Bin 19968 -> 19968 bytes
 .../Radio/3DRradio.Designer.cs                |   12 +-
 Tools/ArdupilotMegaPlanner/Radio/3DRradio.cs  |    3 +-
 .../ArdupilotMegaPlanner/Radio/3DRradio.resx  |   80 +-
 78 files changed, 18950 insertions(+), 984 deletions(-)
 create mode 100644 Tools/ArdupilotMegaPlanner/Controls/BackstageView/BackStageViewContentPanel.cs
 create mode 100644 Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigAccelerometerCalibration.es-ES.resx
 create mode 100644 Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigAccelerometerCalibration.fr.resx
 create mode 100644 Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigAccelerometerCalibration.it-IT.resx
 create mode 100644 Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigAccelerometerCalibration.pl.resx
 create mode 100644 Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigAccelerometerCalibration.zh-Hans.resx
 create mode 100644 Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigAccelerometerCalibration.zh-TW.resx
 create mode 100644 Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigBatteryMonitoring.es-ES.resx
 create mode 100644 Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigBatteryMonitoring.fr.resx
 create mode 100644 Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigBatteryMonitoring.it-IT.resx
 create mode 100644 Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigBatteryMonitoring.pl.resx
 create mode 100644 Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigBatteryMonitoring.zh-Hans.resx
 create mode 100644 Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigBatteryMonitoring.zh-TW.resx
 create mode 100644 Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigFlightModes.es-ES.resx
 create mode 100644 Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigFlightModes.fr.resx
 create mode 100644 Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigFlightModes.it-IT.resx
 create mode 100644 Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigFlightModes.pl.resx
 create mode 100644 Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigFlightModes.zh-Hans.resx
 create mode 100644 Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigFlightModes.zh-TW.resx
 create mode 100644 Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigHardwareOptions.es-ES.resx
 create mode 100644 Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigHardwareOptions.fr.resx
 create mode 100644 Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigHardwareOptions.it-IT.resx
 create mode 100644 Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigHardwareOptions.pl.resx
 create mode 100644 Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigHardwareOptions.zh-Hans.resx
 create mode 100644 Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigHardwareOptions.zh-TW.resx
 create mode 100644 Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigRadioInput.es-ES.resx
 create mode 100644 Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigRadioInput.fr.resx
 create mode 100644 Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigRadioInput.it-IT.resx
 create mode 100644 Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigRadioInput.pl.resx
 create mode 100644 Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigRadioInput.zh-Hans.resx
 create mode 100644 Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigRadioInput.zh-TW.resx
 create mode 100644 Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigTradHeli.es-ES.resx
 create mode 100644 Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigTradHeli.fr.resx
 create mode 100644 Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigTradHeli.it-IT.resx
 create mode 100644 Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigTradHeli.pl.resx
 create mode 100644 Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigTradHeli.zh-Hans.resx
 create mode 100644 Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigTradHeli.zh-TW.resx

diff --git a/Tools/ArdupilotMegaPlanner/Antenna/Tracker.Designer.cs b/Tools/ArdupilotMegaPlanner/Antenna/Tracker.Designer.cs
index f748e4446..448ceb7e1 100644
--- a/Tools/ArdupilotMegaPlanner/Antenna/Tracker.Designer.cs
+++ b/Tools/ArdupilotMegaPlanner/Antenna/Tracker.Designer.cs
@@ -28,7 +28,6 @@
         /// </summary>
         private void InitializeComponent()
         {
-            System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Tracker));
             this.CMB_interface = new System.Windows.Forms.ComboBox();
             this.label1 = new System.Windows.Forms.Label();
             this.CMB_baudrate = new System.Windows.Forms.ComboBox();
@@ -317,7 +316,6 @@
             // 
             this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
             this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
-            this.ClientSize = new System.Drawing.Size(587, 212);
             this.Controls.Add(this.LBL_tilttrim);
             this.Controls.Add(this.LBL_pantrim);
             this.Controls.Add(this.label12);
@@ -344,9 +342,8 @@
             this.Controls.Add(this.CMB_serialport);
             this.Controls.Add(this.label1);
             this.Controls.Add(this.CMB_interface);
-            this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
             this.Name = "Tracker";
-            this.Text = "Tracker";
+            this.Size = new System.Drawing.Size(587, 212);
             this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.Tracker_FormClosing);
             ((System.ComponentModel.ISupportInitialize)(this.TRK_pantrim)).EndInit();
             ((System.ComponentModel.ISupportInitialize)(this.TRK_tilttrim)).EndInit();
diff --git a/Tools/ArdupilotMegaPlanner/Antenna/Tracker.cs b/Tools/ArdupilotMegaPlanner/Antenna/Tracker.cs
index 53bad8d3b..589f67111 100644
--- a/Tools/ArdupilotMegaPlanner/Antenna/Tracker.cs
+++ b/Tools/ArdupilotMegaPlanner/Antenna/Tracker.cs
@@ -6,10 +6,11 @@ using System.Drawing;
 using System.Linq;
 using System.Text;
 using System.Windows.Forms;
+using ArdupilotMega.Controls.BackstageView;
 
 namespace ArdupilotMega.Antenna
 {
-    public partial class Tracker : Form
+    public partial class Tracker : BackStageViewContentPanel
     {
         System.Threading.Thread t12;
         static bool threadrun = false;
diff --git a/Tools/ArdupilotMegaPlanner/Antenna/Tracker.resx b/Tools/ArdupilotMegaPlanner/Antenna/Tracker.resx
index 222a74add..7080a7d11 100644
--- a/Tools/ArdupilotMegaPlanner/Antenna/Tracker.resx
+++ b/Tools/ArdupilotMegaPlanner/Antenna/Tracker.resx
@@ -117,81 +117,4 @@
   <resheader name="writer">
     <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
   </resheader>
-  <assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
-  <data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
-    <value>
-        AAABAAEAICAAAAEAIACoEAAAFgAAACgAAAAgAAAAQAAAAAEAIAAAAAAAABAAABILAAASCwAAAAAAAAAA
-        AAD///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADOxkjAtnoOAKpJ4vyiK
-        c+8nh3D/J4Zv/yeHcP8oi3PvKpJ4vy6fg4AzsZIwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADjGo2AyspPfLZ+D/yiQ
-        d/8hlXj/G6F9/xeqg/8XqYL/GKqD/xuhfv8ilnn/KZB3/y2fhP8yspPfN8ajYAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADvRrDA1vpzfL6uN/yel
-        hP8XvJD/DMyY/wfQl/8FzJP/A8qS/wPJkf8EypL/BsyU/wnRmP8PzZn/Gb2R/yemhP8tqoz/Mb2a3zbQ
-        qkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8AAAAAAAAAAAAAAAAAAAAAAAAAAAA4y6ZgMbWV/yin
-        iP8WwZP/Btqf/wDPlf8AyI7/A8aP/yfNnv9T2LP/UNax/03XsP8506b/G8ya/wHKkf8F0Zf/CNuf/xLB
-        kv8fpYT/J7KQ/y7IomAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wAAAAAAAAAAAAAAAAAAAAAANcajny+w
-        kf8hqoj/CNSd/wDRlf8Axor/Hcyd/3Lhwf+p7Nj/o+vV/57m0/+X5dD/k+TN/4/jzf+K5Mz/fuHH/0PW
-        rf8HzJT/ANCT/wDRlv8OpX//HayI/yrFn58AAAAAAAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAAADDC
-        nmAtro7/H62J/wPWmv8Ay47/AMaO/3XhxP+e6tT/mObP/5Pjy/+Q4sr/jODJ/4ffx/+C3MT/f9vC/3nb
-        wf9y2r7/adq7/2DauP8ZzZv/Fdae/8T/9/9WxKj/HKuI/y7IomAAAAAAAAAAAAAAAAD///8AAAAAAAAA
-        AAAiuZMwKKyM/x6ohf8C1Zr/AMmL/wHGjv+49OL///////////9+3ML/f9zD/4Dcwv9+28L/e9rA/3bZ
-        vv9w1rr/Z9S4/17Rs/9Qz63/Qcyn/3LewP////////////n///8MpH7/JbKP/zXQqUAAAAAAAAAAAP//
-        /wAAAAAAAAAAABymhN8dnn//BNGa/wDKjP8AxY3/sfHf/////////////////2nXt/9w1rv/c9e8/3TX
-        vP9x17z/a9W5/2TTtf9Y0K//SMyp/zXFoP9i07X/////////////////f/LR/wDQlf8epYT/Mb2a3wAA
-        AAAAAAAA////AAAAAAADlnJgFZR1/wq4iv8AzpH/AMCD/4rmzf//////////////////////WdGv/2PU
-        tf9p1rf/atS4/2nUtv9i0rT/Vc+u/0fKpv8zxZz/Ws+w//////////////////////8GyJL/ANCS/xLB
-        kv8tq4z/OMajYAAAAAD///8AAAAAAACHZt8NkW//ANKV/wDChP9i27r//////////////////////9Dx
-        6P9MzKn/Vc+v/17Rsv9g0rP/XNCx/1XNrv9Fyaf/McSd/1fPr///////////////////////QM2m/ynK
-        oP8JzJX/C9yh/ymmhf80spPfAAAAAP///wAAcUwwAHtc/wCrfP8AyIv/AMKK////////////////////
-        /////////////5Dgyv9Gyqb/TMyq/07Nq/9MzKn/Qcmj/y/Fnf9Wzq3//////////////////////57k
-        0v8av5T/Lceg/yzOo/8M05v/Hr6T/zCghf80spIw////AABoRYAAclT/AL2H/wDBhf9R1rL/////////
-        ////////4vfw//////////////////H8+P9KzKn/Ocah/zTFnv8qwpj/Us2t////////////////////
-        ////////DLqM/yDBlv8wxp//OM6m/xPPm/8Xz53/LZF5/y+fg4////8AAGNAvwB7Wf8Aw4j/ALyC/4bj
-        yP+g5tL/g93E/2HSsv9Pzqz/Us6s//////////////////////9Yzq//Gr2S/0jLp///////////////
-        /////////////yrDm/8SvI//JMGY/zDHn/81zKT/Is2e/xTUnf8nl3v/LJJ5v////wAAXz3vAIlg/wDA
-        hf8AuoD/quzZ/5Hjyv9628D/ada2/1jRsP9Jy6f/a9a4//////////////////////+Y4s7/////////
-        //////////////////+c4tD/AbaH/xW8kf8jwZj/LcWd/y/Jn/8kzJ3/E9Ca/yGjgf8ri3Tv////AABd
-        PP8Ak2b/AL6D/w/Ekv+m6tf/j+HJ/3vawP9p1rf/W9Gx/0rNqf85yJ//Nsaf////////////////////
-        /////////////////////////////wCwe/8AtoT/ELqP/xu+k/8jwZj/KMeb/yHKm/8QzZf/HqyG/ymI
-        cf////8AAF07/wCSZP8AvYL/GMWU/6Dn1P+K38f/ddi+/27Wuf+E3MX/leHN/6fm1f+l5tX/neLQ////
-        ////////////////////////////////////////j9/J/27Vuv9Tzq7/JsKY/xa/kv8aw5T/FcaW/wvL
-        lf8aqoT/J4dw/////wAAXTv/AJFk/wC9gP8GwY3/mObQ/5rkz/+26dv/y/Hl/8Dt3/+06tz/pebV/5bg
-        zP+g5NL//////////////v///f7+//7+/v//////7fn2////////////tOnb/6Ll0v+v6Nj/jeDI/zXK
-        o/8IxJD/BMqS/xaqgv8lh2//////AABeO+8AgVf/AL1//wDBif/R9uv/1PPq/8Tv5P+36t3/rujY/6Lk
-        0v+U4cv/jt7J//j8+///////+/38//f8+//2+/r/+Pz7//3+/v/m9/P/9Pv6//D6+P9/28L/jd7J/5jj
-        z/+h5dL/qOvX/4Hmyf8f1J//E596/yOJcO////8AAGA8vwB3U/8p06P/hufM/8Ty5f/D7+T/s+vb/6bm
-        1P+c4c//j9/K/4vcyP/t+fb///7///j8/P/0+/r/8vr5//P7+f/1+/r/+/39///////i9fL/ZNO1/3HW
-        vP992sH/htzG/4vhyv+S5dD/mO7W/6X74v80noT/Io90v////wAAZkCAAHla/33ny/945cb/nunV/7Xr
-        3v+l5tT/luDN/4ndxv992cL/1vLq//v9/P/1+/n/8vv4//L69//z+/j/9Pv5/7Xo2//x+vn/////////
-        //+y59n/aNS3/3LWvP932r//fNzD/4Ljyf+J7ND/l/bd/yORdf8knH6A////AABuRzAAdlT/Xc6x/23o
-        xv9s4MH/qurZ/5jiz/+I3cb/edjA/8ju5f/3/Pv/8vv4//H6+P/y+/j/6/f0/7np3v/7/fz//v7+/6fk
-        1f+56tz///////////9h0bT/aNW4/23Wu/9v3L//dOLG/37w0f9m1rn/Hpt8/ymujTD///8AAAAAAACD
-        X98po4X/Z+7K/1vgvP+A4sf/jOHK/3rZwv+r59f/9Pv6/+/69//v+vf/8vr4/9fy6/9n0rf/VM6t/6Di
-        0v/N7+f/adO4/1PMrf9t1Lr/i9zI/1/Rs/9h0rX/ZNe4/2bbvf9s5sb/ePfV/z2ylf8lrozfAAAAAP//
-        /wAAAAAAAJNsYAWQbf9U1rP/Vee//0rYsf993sb/pebV//P7+v/s+Pb/6/f1/+749v+s5tj/Vc2u/1jP
-        r/9ZzrD/btW5/1bOr/9Wza//Vs6v/1fOr/9Z0LD/WdCy/1vTtP9d1rX/Xt+8/2btyP9k4L//IaaF/y7D
-        nmAAAAAA////AAAAAAAAAAAAD6J9zyCjgv9S68L/P9+0/2Pevv/5////7/v6/+v59//j9/L/gtvF/1PN
-        r/9Wz7D/Wc+x/1nQsf9Zz7H/WM6w/1fPsP9UzrD/VM+w/1TPrv9U0a//U9Oy/1Tatv9Z5sD/Y/LL/zSx
-        lP8qupbPAAAAAAAAAAD///8AAAAAAAAAAAAYto4wGaeE/y23lP8+5rn/6/////j////w//3/ve/i/2bV
-        uP9Tzq7/Vc+v/1jPsP9Z0LL/WM+w/1fOsf9Wz7D/Us2w/1HOrf9Qzq3/T9Cu/0zSr/9M2LP/TeC5/1bt
-        xP9HxaX/KLKQ/zTPqDAAAAAAAAAAAP///wAAAAAAAAAAAAAAAAAkvpdgG6iF/y++m//e/////P///3rl
-        yf9G0K3/VdKy/1bPsf9Wz7H/Vs6w/1bPsP9Sza//Ucyu/0/Nrf9NzKz/S82s/0fOrP9G0a7/QdWv/0Le
-        tP9I6L7/Q8Ok/yitjP8yyKJgAAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAAAAAAAAAmwJlgG6iF/yK3
-        kP8k3q7/H9el/x7Pn/8tzKT/Q9Cs/1HQsP9Q0K7/TM6u/0nMrf9Hzaz/RMyp/0LNqf8+zqn/ONGo/zTV
-        qf833rD/O+S4/zvCof8orIv/MMSfYAAAAAAAAAAAAAAAAAAAAAD///8AAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAkvpdgG6iE/xukgv8gy53/HNql/xzRn/8czJz/HcmZ/yXJnP8qyp7/Lcqg/yzLn/8nypz/JMqc/yTO
-        n/8l1KT/KN2r/y3Tpv8nq4n/JaqJ/yzAm2AAAAAAAAAAAAAAAAAAAAAAAAAAAP///wAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAato8wFKN/zxCScv8RnHn/DbqM/wjIlP8GyZT/BsaS/wbFkf8GxZH/B8WR/wfH
-        k/8IypX/DMmV/xG3jP8WoX3/Fph2/xqkgs8ft5EwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////AAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJVvYACGZM8Aelr/AHlZ/wCFX/8AiWL/AJlr/wCb
-        bP8AlGf/AI5k/wB/W/8AeFj/AHtb/wCHZd8ClXBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAD///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwSzAAaESAAGI/vwBf
-        Pd8AXTz/AF08/wBdPP8AXz3fAGJAvwBoRIAAcUswAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
-        /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
-        /wD///8A////AP///wD///8A/+AD//+AAP/+AAA//AAAH/gAAA/wAAAH4AAAA+AAAAPAAAABwAAAAYAA
-        AACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAwAAAAcAAAAHgAAAD4AAAA/AA
-        AAf4AAAP/AAAH/4AAD//gAD//+AD//////8=
-</value>
-  </data>
 </root>
\ No newline at end of file
diff --git a/Tools/ArdupilotMegaPlanner/ArdupilotMega.csproj b/Tools/ArdupilotMegaPlanner/ArdupilotMega.csproj
index f8c6bbcc0..92d2d6b7b 100644
--- a/Tools/ArdupilotMegaPlanner/ArdupilotMega.csproj
+++ b/Tools/ArdupilotMegaPlanner/ArdupilotMega.csproj
@@ -217,7 +217,7 @@
     <Compile Include="Antenna\ITrackerOutput.cs" />
     <Compile Include="Antenna\Maestro.cs" />
     <Compile Include="Antenna\Tracker.cs">
-      <SubType>Form</SubType>
+      <SubType>UserControl</SubType>
     </Compile>
     <Compile Include="Antenna\Tracker.Designer.cs">
       <DependentUpon>Tracker.cs</DependentUpon>
@@ -232,6 +232,9 @@
     <Compile Include="Controls\BackstageView\BackstageViewButton.cs">
       <SubType>Component</SubType>
     </Compile>
+    <Compile Include="Controls\BackstageView\BackStageViewContentPanel.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
     <Compile Include="Controls\BackstageView\BackStageViewMenuPanel.cs">
       <SubType>Component</SubType>
     </Compile>
@@ -317,7 +320,7 @@
     <Compile Include="MagCalib.cs" />
     <Compile Include="PIDTunning.cs" />
     <Compile Include="Radio\3DRradio.cs">
-      <SubType>Form</SubType>
+      <SubType>UserControl</SubType>
     </Compile>
     <Compile Include="Radio\3DRradio.Designer.cs">
       <DependentUpon>3DRradio.cs</DependentUpon>
@@ -509,12 +512,6 @@
     <Compile Include="SerialOutput.Designer.cs">
       <DependentUpon>SerialOutput.cs</DependentUpon>
     </Compile>
-    <Compile Include="Setup\Setup.cs">
-      <SubType>Form</SubType>
-    </Compile>
-    <Compile Include="Setup\Setup.Designer.cs">
-      <DependentUpon>Setup.cs</DependentUpon>
-    </Compile>
     <Compile Include="Speech.cs" />
     <Compile Include="Splash.cs">
       <SubType>Form</SubType>
@@ -542,36 +539,144 @@
     <EmbeddedResource Include="Controls\ProgressReporterDialogue.resx">
       <DependentUpon>ProgressReporterDialogue.cs</DependentUpon>
     </EmbeddedResource>
+    <EmbeddedResource Include="GCSViews\ConfigurationView\ConfigAccelerometerCalibration.es-ES.resx">
+      <DependentUpon>ConfigAccelerometerCalibration.cs</DependentUpon>
+    </EmbeddedResource>
+    <EmbeddedResource Include="GCSViews\ConfigurationView\ConfigAccelerometerCalibration.fr.resx">
+      <DependentUpon>ConfigAccelerometerCalibration.cs</DependentUpon>
+    </EmbeddedResource>
+    <EmbeddedResource Include="GCSViews\ConfigurationView\ConfigAccelerometerCalibration.it-IT.resx">
+      <DependentUpon>ConfigAccelerometerCalibration.cs</DependentUpon>
+    </EmbeddedResource>
+    <EmbeddedResource Include="GCSViews\ConfigurationView\ConfigAccelerometerCalibration.pl.resx">
+      <DependentUpon>ConfigAccelerometerCalibration.cs</DependentUpon>
+    </EmbeddedResource>
     <EmbeddedResource Include="GCSViews\ConfigurationView\ConfigAccelerometerCalibration.resx">
       <DependentUpon>ConfigAccelerometerCalibration.cs</DependentUpon>
     </EmbeddedResource>
+    <EmbeddedResource Include="GCSViews\ConfigurationView\ConfigAccelerometerCalibration.zh-Hans.resx">
+      <DependentUpon>ConfigAccelerometerCalibration.cs</DependentUpon>
+    </EmbeddedResource>
+    <EmbeddedResource Include="GCSViews\ConfigurationView\ConfigAccelerometerCalibration.zh-TW.resx">
+      <DependentUpon>ConfigAccelerometerCalibration.cs</DependentUpon>
+    </EmbeddedResource>
     <EmbeddedResource Include="GCSViews\ConfigurationView\ConfigArducopter.resx">
       <DependentUpon>ConfigArducopter.cs</DependentUpon>
     </EmbeddedResource>
     <EmbeddedResource Include="GCSViews\ConfigurationView\ConfigArduplane.resx">
       <DependentUpon>ConfigArduplane.cs</DependentUpon>
     </EmbeddedResource>
+    <EmbeddedResource Include="GCSViews\ConfigurationView\ConfigBatteryMonitoring.es-ES.resx">
+      <DependentUpon>ConfigBatteryMonitoring.cs</DependentUpon>
+    </EmbeddedResource>
+    <EmbeddedResource Include="GCSViews\ConfigurationView\ConfigBatteryMonitoring.fr.resx">
+      <DependentUpon>ConfigBatteryMonitoring.cs</DependentUpon>
+    </EmbeddedResource>
+    <EmbeddedResource Include="GCSViews\ConfigurationView\ConfigBatteryMonitoring.it-IT.resx">
+      <DependentUpon>ConfigBatteryMonitoring.cs</DependentUpon>
+    </EmbeddedResource>
+    <EmbeddedResource Include="GCSViews\ConfigurationView\ConfigBatteryMonitoring.pl.resx">
+      <DependentUpon>ConfigBatteryMonitoring.cs</DependentUpon>
+    </EmbeddedResource>
     <EmbeddedResource Include="GCSViews\ConfigurationView\ConfigBatteryMonitoring.resx">
       <DependentUpon>ConfigBatteryMonitoring.cs</DependentUpon>
     </EmbeddedResource>
+    <EmbeddedResource Include="GCSViews\ConfigurationView\ConfigBatteryMonitoring.zh-Hans.resx">
+      <DependentUpon>ConfigBatteryMonitoring.cs</DependentUpon>
+    </EmbeddedResource>
+    <EmbeddedResource Include="GCSViews\ConfigurationView\ConfigBatteryMonitoring.zh-TW.resx">
+      <DependentUpon>ConfigBatteryMonitoring.cs</DependentUpon>
+    </EmbeddedResource>
+    <EmbeddedResource Include="GCSViews\ConfigurationView\ConfigFlightModes.es-ES.resx">
+      <DependentUpon>ConfigFlightModes.cs</DependentUpon>
+    </EmbeddedResource>
+    <EmbeddedResource Include="GCSViews\ConfigurationView\ConfigFlightModes.fr.resx">
+      <DependentUpon>ConfigFlightModes.cs</DependentUpon>
+    </EmbeddedResource>
+    <EmbeddedResource Include="GCSViews\ConfigurationView\ConfigFlightModes.it-IT.resx">
+      <DependentUpon>ConfigFlightModes.cs</DependentUpon>
+    </EmbeddedResource>
+    <EmbeddedResource Include="GCSViews\ConfigurationView\ConfigFlightModes.pl.resx">
+      <DependentUpon>ConfigFlightModes.cs</DependentUpon>
+    </EmbeddedResource>
     <EmbeddedResource Include="GCSViews\ConfigurationView\ConfigFlightModes.resx">
       <DependentUpon>ConfigFlightModes.cs</DependentUpon>
     </EmbeddedResource>
+    <EmbeddedResource Include="GCSViews\ConfigurationView\ConfigFlightModes.zh-Hans.resx">
+      <DependentUpon>ConfigFlightModes.cs</DependentUpon>
+    </EmbeddedResource>
+    <EmbeddedResource Include="GCSViews\ConfigurationView\ConfigFlightModes.zh-TW.resx">
+      <DependentUpon>ConfigFlightModes.cs</DependentUpon>
+    </EmbeddedResource>
+    <EmbeddedResource Include="GCSViews\ConfigurationView\ConfigHardwareOptions.es-ES.resx">
+      <DependentUpon>ConfigHardwareOptions.cs</DependentUpon>
+    </EmbeddedResource>
+    <EmbeddedResource Include="GCSViews\ConfigurationView\ConfigHardwareOptions.fr.resx">
+      <DependentUpon>ConfigHardwareOptions.cs</DependentUpon>
+    </EmbeddedResource>
+    <EmbeddedResource Include="GCSViews\ConfigurationView\ConfigHardwareOptions.it-IT.resx">
+      <DependentUpon>ConfigHardwareOptions.cs</DependentUpon>
+    </EmbeddedResource>
+    <EmbeddedResource Include="GCSViews\ConfigurationView\ConfigHardwareOptions.pl.resx">
+      <DependentUpon>ConfigHardwareOptions.cs</DependentUpon>
+    </EmbeddedResource>
     <EmbeddedResource Include="GCSViews\ConfigurationView\ConfigHardwareOptions.resx">
       <DependentUpon>ConfigHardwareOptions.cs</DependentUpon>
     </EmbeddedResource>
+    <EmbeddedResource Include="GCSViews\ConfigurationView\ConfigHardwareOptions.zh-Hans.resx">
+      <DependentUpon>ConfigHardwareOptions.cs</DependentUpon>
+    </EmbeddedResource>
+    <EmbeddedResource Include="GCSViews\ConfigurationView\ConfigHardwareOptions.zh-TW.resx">
+      <DependentUpon>ConfigHardwareOptions.cs</DependentUpon>
+    </EmbeddedResource>
     <EmbeddedResource Include="GCSViews\ConfigurationView\ConfigPlanner.resx">
       <DependentUpon>ConfigPlanner.cs</DependentUpon>
     </EmbeddedResource>
+    <EmbeddedResource Include="GCSViews\ConfigurationView\ConfigRadioInput.es-ES.resx">
+      <DependentUpon>ConfigRadioInput.cs</DependentUpon>
+    </EmbeddedResource>
+    <EmbeddedResource Include="GCSViews\ConfigurationView\ConfigRadioInput.fr.resx">
+      <DependentUpon>ConfigRadioInput.cs</DependentUpon>
+    </EmbeddedResource>
+    <EmbeddedResource Include="GCSViews\ConfigurationView\ConfigRadioInput.it-IT.resx">
+      <DependentUpon>ConfigRadioInput.cs</DependentUpon>
+    </EmbeddedResource>
+    <EmbeddedResource Include="GCSViews\ConfigurationView\ConfigRadioInput.pl.resx">
+      <DependentUpon>ConfigRadioInput.cs</DependentUpon>
+    </EmbeddedResource>
     <EmbeddedResource Include="GCSViews\ConfigurationView\ConfigRadioInput.resx">
       <DependentUpon>ConfigRadioInput.cs</DependentUpon>
     </EmbeddedResource>
+    <EmbeddedResource Include="GCSViews\ConfigurationView\ConfigRadioInput.zh-Hans.resx">
+      <DependentUpon>ConfigRadioInput.cs</DependentUpon>
+    </EmbeddedResource>
+    <EmbeddedResource Include="GCSViews\ConfigurationView\ConfigRadioInput.zh-TW.resx">
+      <DependentUpon>ConfigRadioInput.cs</DependentUpon>
+    </EmbeddedResource>
     <EmbeddedResource Include="GCSViews\ConfigurationView\ConfigRawParams.resx">
       <DependentUpon>ConfigRawParams.cs</DependentUpon>
     </EmbeddedResource>
+    <EmbeddedResource Include="GCSViews\ConfigurationView\ConfigTradHeli.es-ES.resx">
+      <DependentUpon>ConfigTradHeli.cs</DependentUpon>
+    </EmbeddedResource>
+    <EmbeddedResource Include="GCSViews\ConfigurationView\ConfigTradHeli.fr.resx">
+      <DependentUpon>ConfigTradHeli.cs</DependentUpon>
+    </EmbeddedResource>
+    <EmbeddedResource Include="GCSViews\ConfigurationView\ConfigTradHeli.it-IT.resx">
+      <DependentUpon>ConfigTradHeli.cs</DependentUpon>
+    </EmbeddedResource>
+    <EmbeddedResource Include="GCSViews\ConfigurationView\ConfigTradHeli.pl.resx">
+      <DependentUpon>ConfigTradHeli.cs</DependentUpon>
+    </EmbeddedResource>
     <EmbeddedResource Include="GCSViews\ConfigurationView\ConfigTradHeli.resx">
       <DependentUpon>ConfigTradHeli.cs</DependentUpon>
     </EmbeddedResource>
+    <EmbeddedResource Include="GCSViews\ConfigurationView\ConfigTradHeli.zh-Hans.resx">
+      <DependentUpon>ConfigTradHeli.cs</DependentUpon>
+    </EmbeddedResource>
+    <EmbeddedResource Include="GCSViews\ConfigurationView\ConfigTradHeli.zh-TW.resx">
+      <DependentUpon>ConfigTradHeli.cs</DependentUpon>
+    </EmbeddedResource>
     <EmbeddedResource Include="GCSViews\ConfigurationView\Configuration.resx">
       <DependentUpon>Configuration.cs</DependentUpon>
     </EmbeddedResource>
@@ -908,28 +1013,6 @@
     <EmbeddedResource Include="SerialOutput.resx">
       <DependentUpon>SerialOutput.cs</DependentUpon>
     </EmbeddedResource>
-    <EmbeddedResource Include="Setup\Setup.es-ES.resx">
-      <DependentUpon>Setup.cs</DependentUpon>
-    </EmbeddedResource>
-    <EmbeddedResource Include="Setup\Setup.fr.resx">
-      <DependentUpon>Setup.cs</DependentUpon>
-    </EmbeddedResource>
-    <EmbeddedResource Include="Setup\Setup.it-IT.resx">
-      <DependentUpon>Setup.cs</DependentUpon>
-    </EmbeddedResource>
-    <EmbeddedResource Include="Setup\Setup.pl.resx">
-      <DependentUpon>Setup.cs</DependentUpon>
-    </EmbeddedResource>
-    <EmbeddedResource Include="Setup\Setup.resx">
-      <DependentUpon>Setup.cs</DependentUpon>
-      <SubType>Designer</SubType>
-    </EmbeddedResource>
-    <EmbeddedResource Include="Setup\Setup.zh-Hans.resx">
-      <DependentUpon>Setup.cs</DependentUpon>
-    </EmbeddedResource>
-    <EmbeddedResource Include="Setup\Setup.zh-TW.resx">
-      <DependentUpon>Setup.cs</DependentUpon>
-    </EmbeddedResource>
     <EmbeddedResource Include="Splash.resx">
       <DependentUpon>Splash.cs</DependentUpon>
     </EmbeddedResource>
diff --git a/Tools/ArdupilotMegaPlanner/Controls/BackstageView/BackStageViewContentPanel.cs b/Tools/ArdupilotMegaPlanner/Controls/BackstageView/BackStageViewContentPanel.cs
new file mode 100644
index 000000000..d936dcec1
--- /dev/null
+++ b/Tools/ArdupilotMegaPlanner/Controls/BackstageView/BackStageViewContentPanel.cs
@@ -0,0 +1,23 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Windows.Forms;
+
+namespace ArdupilotMega.Controls.BackstageView
+{
+    public class BackStageViewContentPanel : UserControl
+    {
+        public event FormClosingEventHandler FormClosing;
+
+        public void Close()
+        {
+            if (FormClosing != null)
+                FormClosing(this, new FormClosingEventArgs(CloseReason.UserClosing, false));
+        }
+
+        public new void OnLoad(EventArgs e)
+        {
+            base.OnLoad(e);
+        }
+    }
+}
diff --git a/Tools/ArdupilotMegaPlanner/Controls/BackstageView/BackStageViewMenuPanel.cs b/Tools/ArdupilotMegaPlanner/Controls/BackstageView/BackStageViewMenuPanel.cs
index 1a9ba5837..a7387c37d 100644
--- a/Tools/ArdupilotMegaPlanner/Controls/BackstageView/BackStageViewMenuPanel.cs
+++ b/Tools/ArdupilotMegaPlanner/Controls/BackstageView/BackStageViewMenuPanel.cs
@@ -9,7 +9,7 @@ namespace ArdupilotMega.Controls.BackstageView
         internal Color GradColor = Color.White;
         internal Color PencilBorderColor = Color.White;
 
-        private const int GradientWidth = 6;
+        private const int GradientWidth = 20;
 
         public BackStageViewMenuPanel()
         {
@@ -29,5 +29,16 @@ namespace ArdupilotMega.Controls.BackstageView
 
             pevent.Graphics.DrawLine(new Pen(PencilBorderColor), Width-1,0,Width-1,Height);
         }
+
+        protected override void OnResize(System.EventArgs eventargs)
+        {
+            base.OnResize(eventargs);
+            this.Invalidate();
+        }
+
+        public void PaintBackground(PaintEventArgs pevent)
+        {
+            OnPaintBackground(pevent);
+        }
     }
 }
\ No newline at end of file
diff --git a/Tools/ArdupilotMegaPlanner/Controls/BackstageView/BackstageView.cs b/Tools/ArdupilotMegaPlanner/Controls/BackstageView/BackstageView.cs
index edde25fc4..e84bb86cc 100644
--- a/Tools/ArdupilotMegaPlanner/Controls/BackstageView/BackstageView.cs
+++ b/Tools/ArdupilotMegaPlanner/Controls/BackstageView/BackstageView.cs
@@ -21,17 +21,9 @@ namespace ArdupilotMega.Controls.BackstageView
         private BackstageViewPage _activePage;
         private const int ButtonSpacing = 30;
         private const int ButtonHeight = 30;
-        public BackstageViewPage SelectedPage { get { return _activePage; } }
 
-        ~BackstageView()
-        {
-            foreach (BackstageViewPage ctl in _pages)
-            {
-                if (ctl.Page != null)
-                    ctl.Page.Dispose();
-            }
-            this.Dispose();
-        }
+        public BackstageViewPage SelectedPage { get { return _activePage; } }
+        public List<BackstageViewPage> Pages { get { return _pages; } }
 
         public BackstageView()
         {
@@ -202,7 +194,7 @@ namespace ArdupilotMega.Controls.BackstageView
             this.ActivatePage(associatedPage);
         }
 
-        private void ActivatePage(BackstageViewPage associatedPage)
+        public void ActivatePage(BackstageViewPage associatedPage)
         {
             // deactivate the old page
             _activePage.Page.Visible = false;
@@ -214,18 +206,27 @@ namespace ArdupilotMega.Controls.BackstageView
             newButton.IsSelected = true;
 
             _activePage = associatedPage;
+
+            _activePage.Page.OnLoad(new EventArgs());
         }
 
+        public void Close()
+        {
+            foreach (BackstageViewPage page in _pages)
+            {
+                page.Page.Close();
+            }
+        }
 
         public class BackstageViewPage
-        {
-            public BackstageViewPage(Control page, string linkText)
+        {            
+            public BackstageViewPage(BackStageViewContentPanel page, string linkText)
             {
                 Page = page;
                 LinkText = linkText;
             }
 
-            public Control Page { get; private set; }
+            public BackStageViewContentPanel Page { get; private set; }
             public string LinkText { get; set; }
         }
     }
diff --git a/Tools/ArdupilotMegaPlanner/Controls/BackstageView/BackstageViewButton.cs b/Tools/ArdupilotMegaPlanner/Controls/BackstageView/BackstageViewButton.cs
index a68c3c94e..ab6544584 100644
--- a/Tools/ArdupilotMegaPlanner/Controls/BackstageView/BackstageViewButton.cs
+++ b/Tools/ArdupilotMegaPlanner/Controls/BackstageView/BackstageViewButton.cs
@@ -24,12 +24,9 @@ namespace ArdupilotMega.Controls.BackstageView
         {
             this.SuspendLayout();
 
-            SetStyle(ControlStyles.SupportsTransparentBackColor, true);
-            SetStyle(ControlStyles.Opaque, true);
             SetStyle(ControlStyles.ResizeRedraw, true);
-            this.BackColor = Color.Transparent;
 
-            this.Width = 100;
+            this.Width = 150;
             this.Height = 30;
 
             
@@ -47,25 +44,12 @@ namespace ArdupilotMega.Controls.BackstageView
                 if (_isSelected != value)
                 {
                     _isSelected = value;
-                    //this.Parent.Refresh(); // <-- brutal, but works
-
-                   
-                    InvalidateParentForBackground();
 
                     this.Invalidate();
                 }
             }
         }
 
-        // Must be a better way to redraw parent control in the area of
-        // the button 
-        private void InvalidateParentForBackground()
-        {
-            var screenrect = this.RectangleToScreen(this.ClientRectangle);
-            var rectangleToClient = this.Parent.RectangleToClient(screenrect);
-            this.Parent.Invalidate(rectangleToClient);
-        }
-
         protected override void OnPaintBackground(PaintEventArgs pevent)
         {
             base.OnPaintBackground(pevent);
@@ -78,6 +62,8 @@ namespace ArdupilotMega.Controls.BackstageView
 
         protected override void OnPaint(PaintEventArgs pevent)
         {
+           ((BackStageViewMenuPanel)this.Parent).PaintBackground(pevent);
+
            Graphics g = pevent.Graphics;
          
 
@@ -139,7 +125,6 @@ namespace ArdupilotMega.Controls.BackstageView
         {
             _isMouseOver = true;
             base.OnMouseEnter(e);
-            InvalidateParentForBackground();
             this.Invalidate();
         }
 
@@ -147,12 +132,11 @@ namespace ArdupilotMega.Controls.BackstageView
         {
             _isMouseOver = false;
             base.OnMouseLeave(e);
-            InvalidateParentForBackground();
             this.Invalidate();
 
         }
-
-        // This IS necessary for transparency 
+        /*
+        // This IS necessary for transparency - windows only..... remove it
         protected override CreateParams CreateParams
         {
             get
@@ -163,5 +147,6 @@ namespace ArdupilotMega.Controls.BackstageView
                 return cp;
             }
         }
+         */
     }
 }
\ No newline at end of file
diff --git a/Tools/ArdupilotMegaPlanner/CurrentState.cs b/Tools/ArdupilotMegaPlanner/CurrentState.cs
index e3e24d9bf..719305e12 100644
--- a/Tools/ArdupilotMegaPlanner/CurrentState.cs
+++ b/Tools/ArdupilotMegaPlanner/CurrentState.cs
@@ -252,6 +252,14 @@ namespace ArdupilotMega
         public float brklevel { get; set; }
         public int armed { get; set; }
 
+        // 3dr radio
+        public float rssi { get; set; }
+        public float remrssi { get; set; }
+        public byte txbuffer { get; set; }
+        public ushort rxerrors { get; set; }
+        public ushort serrors { get; set; }
+        public ushort fixedp { get; set; }
+
         // stats
         public ushort packetdropremote { get; set; }
         public ushort linkqualitygcs { get; set; }
@@ -687,6 +695,17 @@ namespace ArdupilotMega
                     satcount = gps.satellites_visible;
                 }
 
+                bytearray = mavinterface.packets[MAVLink.MAVLINK_MSG_ID_RADIO];
+                if (bytearray != null)
+                {
+                    var radio = bytearray.ByteArrayToStructure<MAVLink.mavlink_radio_t>(6);
+                    rssi = radio.rssi;
+                    remrssi = radio.remrssi;
+                    txbuffer = radio.txbuf;
+                    rxerrors = radio.rxerrors;
+                    serrors = radio.serrors;
+                    fixedp = radio.fixedp;
+                }
 
                 bytearray = mavinterface.packets[MAVLink.MAVLINK_MSG_ID_GLOBAL_POSITION_INT];
                 if (bytearray != null)
diff --git a/Tools/ArdupilotMegaPlanner/GCSViews/Configuration.cs b/Tools/ArdupilotMegaPlanner/GCSViews/Configuration.cs
index a05f045ad..512dad748 100644
--- a/Tools/ArdupilotMegaPlanner/GCSViews/Configuration.cs
+++ b/Tools/ArdupilotMegaPlanner/GCSViews/Configuration.cs
@@ -720,9 +720,7 @@ namespace ArdupilotMega.GCSViews
                 else
                 {
 
-                    Setup.Setup temp = new Setup.Setup();
-
-                    temp.Configuration = this;
+                    GCSViews.ConfigurationView.Setup temp = new GCSViews.ConfigurationView.Setup();
 
                     ThemeManager.ApplyThemeTo(temp);
 
diff --git a/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigAccelerometerCalibration.Designer.cs b/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigAccelerometerCalibration.Designer.cs
index 24df58eb8..130469472 100644
--- a/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigAccelerometerCalibration.Designer.cs
+++ b/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigAccelerometerCalibration.Designer.cs
@@ -28,6 +28,7 @@
         /// </summary>
         private void InitializeComponent()
         {
+            System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ConfigAccelerometerCalibration));
             this.label28 = new System.Windows.Forms.Label();
             this.label16 = new System.Windows.Forms.Label();
             this.label15 = new System.Windows.Forms.Label();
@@ -40,44 +41,25 @@
             // 
             // label28
             // 
-            this.label28.AutoSize = true;
-            this.label28.ImeMode = System.Windows.Forms.ImeMode.NoControl;
-            this.label28.Location = new System.Drawing.Point(124, 13);
+            resources.ApplyResources(this.label28, "label28");
             this.label28.Name = "label28";
-            this.label28.Size = new System.Drawing.Size(210, 13);
-            this.label28.TabIndex = 15;
-            this.label28.Text = "Level your quad to set default accel offsets";
             // 
             // label16
             // 
-            this.label16.AutoSize = true;
-            this.label16.ImeMode = System.Windows.Forms.ImeMode.NoControl;
-            this.label16.Location = new System.Drawing.Point(124, 308);
+            resources.ApplyResources(this.label16, "label16");
             this.label16.Name = "label16";
-            this.label16.Size = new System.Drawing.Size(192, 26);
-            this.label16.TabIndex = 13;
-            this.label16.Text = "NOTE: images are for presentation only\r\nwill work with hexa\'s etc";
             // 
             // label15
             // 
-            this.label15.AutoSize = true;
-            this.label15.ImeMode = System.Windows.Forms.ImeMode.NoControl;
-            this.label15.Location = new System.Drawing.Point(167, 99);
+            resources.ApplyResources(this.label15, "label15");
             this.label15.Name = "label15";
-            this.label15.Size = new System.Drawing.Size(102, 13);
-            this.label15.TabIndex = 12;
-            this.label15.Text = "Frame Setup (+ or x)";
             // 
             // pictureBoxQuadX
             // 
             this.pictureBoxQuadX.Cursor = System.Windows.Forms.Cursors.Hand;
             this.pictureBoxQuadX.Image = global::ArdupilotMega.Properties.Resources.quadx;
-            this.pictureBoxQuadX.ImeMode = System.Windows.Forms.ImeMode.NoControl;
-            this.pictureBoxQuadX.Location = new System.Drawing.Point(226, 115);
+            resources.ApplyResources(this.pictureBoxQuadX, "pictureBoxQuadX");
             this.pictureBoxQuadX.Name = "pictureBoxQuadX";
-            this.pictureBoxQuadX.Size = new System.Drawing.Size(190, 190);
-            this.pictureBoxQuadX.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;
-            this.pictureBoxQuadX.TabIndex = 11;
             this.pictureBoxQuadX.TabStop = false;
             this.pictureBoxQuadX.Click += new System.EventHandler(this.pictureBoxQuadX_Click);
             // 
@@ -85,27 +67,21 @@
             // 
             this.pictureBoxQuad.Cursor = System.Windows.Forms.Cursors.Hand;
             this.pictureBoxQuad.Image = global::ArdupilotMega.Properties.Resources.quad;
-            this.pictureBoxQuad.ImeMode = System.Windows.Forms.ImeMode.NoControl;
-            this.pictureBoxQuad.Location = new System.Drawing.Point(19, 115);
+            resources.ApplyResources(this.pictureBoxQuad, "pictureBoxQuad");
             this.pictureBoxQuad.Name = "pictureBoxQuad";
-            this.pictureBoxQuad.Size = new System.Drawing.Size(190, 190);
-            this.pictureBoxQuad.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;
-            this.pictureBoxQuad.TabIndex = 10;
             this.pictureBoxQuad.TabStop = false;
+            this.pictureBoxQuad.Click += new System.EventHandler(this.pictureBoxQuad_Click);
             // 
             // BUT_levelac2
             // 
-            this.BUT_levelac2.ImeMode = System.Windows.Forms.ImeMode.NoControl;
-            this.BUT_levelac2.Location = new System.Drawing.Point(181, 42);
+            resources.ApplyResources(this.BUT_levelac2, "BUT_levelac2");
             this.BUT_levelac2.Name = "BUT_levelac2";
-            this.BUT_levelac2.Size = new System.Drawing.Size(75, 23);
-            this.BUT_levelac2.TabIndex = 14;
-            this.BUT_levelac2.Text = "Level";
             this.BUT_levelac2.UseVisualStyleBackColor = true;
+            this.BUT_levelac2.Click += new System.EventHandler(this.BUT_levelac2_Click);
             // 
             // ConfigAccelerometerCalibration
             // 
-            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+            resources.ApplyResources(this, "$this");
             this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
             this.Controls.Add(this.label28);
             this.Controls.Add(this.label16);
@@ -114,7 +90,7 @@
             this.Controls.Add(this.pictureBoxQuad);
             this.Controls.Add(this.BUT_levelac2);
             this.Name = "ConfigAccelerometerCalibration";
-            this.Size = new System.Drawing.Size(439, 356);
+            this.Load += new System.EventHandler(this.ConfigAccelerometerCalibration_Load);
             ((System.ComponentModel.ISupportInitialize)(this.pictureBoxQuadX)).EndInit();
             ((System.ComponentModel.ISupportInitialize)(this.pictureBoxQuad)).EndInit();
             this.ResumeLayout(false);
diff --git a/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigAccelerometerCalibration.cs b/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigAccelerometerCalibration.cs
index fe4fe96bd..c4023e5b5 100644
--- a/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigAccelerometerCalibration.cs
+++ b/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigAccelerometerCalibration.cs
@@ -6,10 +6,11 @@ using System.Data;
 using System.Linq;
 using System.Text;
 using System.Windows.Forms;
+using ArdupilotMega.Controls.BackstageView;
 
 namespace ArdupilotMega.GCSViews.ConfigurationView
 {
-    public partial class ConfigAccelerometerCalibration : UserControl
+    public partial class ConfigAccelerometerCalibration : BackStageViewContentPanel
     {
         public ConfigAccelerometerCalibration()
         {
@@ -18,7 +19,54 @@ namespace ArdupilotMega.GCSViews.ConfigurationView
 
         private void pictureBoxQuadX_Click(object sender, EventArgs e)
         {
+            try
+            {
+                MainV2.comPort.setParam("FRAME", 1f);
+                CustomMessageBox.Show("Set to x");
+            }
+            catch { CustomMessageBox.Show("Set frame failed"); }
+        }
+
+        private void BUT_levelac2_Click(object sender, EventArgs e)
+        {
+            try
+            {
+#if MAVLINK10
+                int fixme; // needs to be accel only
+                MainV2.comPort.doCommand(MAVLink.MAV_CMD.PREFLIGHT_CALIBRATION,1,1,1,1,1,1,1);
+#else
+                MainV2.comPort.doAction(MAVLink.MAV_ACTION.MAV_ACTION_CALIBRATE_ACC);
+#endif
+
+                BUT_levelac2.Text = "Complete";
+            }
+            catch
+            {
+                CustomMessageBox.Show("Failed to level : ac2 2.0.37+ is required");
+            }
+        }
 
+        private void pictureBoxQuad_Click(object sender, EventArgs e)
+        {
+            try
+            {
+                MainV2.comPort.setParam("FRAME", 0f);
+                CustomMessageBox.Show("Set to +");
+            }
+            catch { CustomMessageBox.Show("Set frame failed"); }
+        }
+
+        private void ConfigAccelerometerCalibration_Load(object sender, EventArgs e)
+        {
+            if (!MainV2.comPort.BaseStream.IsOpen)
+            {
+                this.Enabled = false;
+                return;
+            }
+            else
+            {
+                this.Enabled = true;
+            }
         }
     }
 }
diff --git a/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigAccelerometerCalibration.es-ES.resx b/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigAccelerometerCalibration.es-ES.resx
new file mode 100644
index 000000000..70ad73f1a
--- /dev/null
+++ b/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigAccelerometerCalibration.es-ES.resx
@@ -0,0 +1,315 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <data name="SV3_POS_.Text" xml:space="preserve">
+    <value>180</value>
+  </data>
+  <data name="BUT_HS4save.Text" xml:space="preserve">
+    <value>Manual</value>
+  </data>
+  <data name="label12.Text" xml:space="preserve">
+    <value>PWM 0 - 1230</value>
+  </data>
+  <data name="label10.Text" xml:space="preserve">
+    <value>PWM 1621 - 1749</value>
+  </data>
+  <data name="label13.Text" xml:space="preserve">
+    <value>Modo actual:</value>
+  </data>
+  <data name="CHK_enableoptflow.Text" xml:space="preserve">
+    <value>Habilitar el flujo óptico</value>
+  </data>
+  <data name="label16.Text" xml:space="preserve">
+    <value>NOTA: Las imágenes son sólo para su presentación</value>
+  </data>
+  <data name="CB_simple5.Text" xml:space="preserve">
+    <value>Modo Simple</value>
+  </data>
+  <data name="label11.Text" xml:space="preserve">
+    <value>PWM 1750 +</value>
+  </data>
+  <data name="CHK_elevonch1rev.Text" xml:space="preserve">
+    <value>Elevons CH1 Rev</value>
+  </data>
+  <data name="label14.Text" xml:space="preserve">
+    <value>PWM Actual:</value>
+  </data>
+  <data name="$this.Text" xml:space="preserve">
+    <value>APMSetup</value>
+  </data>
+  <data name="label17.Text" xml:space="preserve">
+    <value>Swash-Servo posición</value>
+  </data>
+  <data name="CHK_enablecompass.Text" xml:space="preserve">
+    <value>Activar Compas</value>
+  </data>
+  <data name="CB_simple4.Text" xml:space="preserve">
+    <value>Modo Simple</value>
+  </data>
+  <data name="tabArducopter.Text" xml:space="preserve">
+    <value>ArduCopter2</value>
+  </data>
+  <data name="CB_simple1.Text" xml:space="preserve">
+    <value>Modo Simple</value>
+  </data>
+  <data name="label15.Text" xml:space="preserve">
+    <value>Ajuste Chásis (+ or x)</value>
+  </data>
+  <data name="SV2_POS_.Text" xml:space="preserve">
+    <value>60</value>
+  </data>
+  <data name="label18.Text" xml:space="preserve">
+    <value>1</value>
+  </data>
+  <data name="CB_simple6.Text" xml:space="preserve">
+    <value>Modo Simple</value>
+  </data>
+  <data name="CB_simple3.Text" xml:space="preserve">
+    <value>Modo Simple</value>
+  </data>
+  <data name="label19.Text" xml:space="preserve">
+    <value>2</value>
+  </data>
+  <data name="tabModes.Text" xml:space="preserve">
+    <value>Modos</value>
+  </data>
+  <data name="CB_simple2.Text" xml:space="preserve">
+    <value>Modo Simple</value>
+  </data>
+  <data name="label20.Text" xml:space="preserve">
+    <value>3</value>
+  </data>
+  <data name="tabReset.Text" xml:space="preserve">
+    <value>Reset</value>
+  </data>
+  <data name="SV1_POS_.Text" xml:space="preserve">
+    <value>-60</value>
+  </data>
+  <data name="label21.Text" xml:space="preserve">
+    <value>Superior</value>
+  </data>
+  <data name="label22.Text" xml:space="preserve">
+    <value>Swash de Viaje</value>
+  </data>
+  <data name="lbl_currentmode.Text" xml:space="preserve">
+    <value>Manual</value>
+  </data>
+  <data name="label23.Text" xml:space="preserve">
+    <value>Timón de Viaje</value>
+  </data>
+  <data name="textBox3.Text" xml:space="preserve">
+    <value>Calibración del sensor de voltaje:Para calibrar el sensor, use un multímetro para medir la tensión que sale de la CES de la batería-la eliminación del circuito (se trata de cables negro y rojo en el cable de tres hilos que suministra energía a la placa APM).Luego reste 0,3 V de ese valor y entrar en él en el campo # 1 a la izquierda.</value>
+  </data>
+  <data name="BUT_Calibrateradio.Text" xml:space="preserve">
+    <value>Calibrar Radio</value>
+  </data>
+  <data name="label24.Text" xml:space="preserve">
+    <value>Max</value>
+  </data>
+  <data name="label2.Text" xml:space="preserve">
+    <value>Modo de Vuelo 2</value>
+  </data>
+  <data name="label25.Text" xml:space="preserve">
+    <value>Alabeo Max</value>
+  </data>
+  <data name="label3.Text" xml:space="preserve">
+    <value>Modo de Vuelo 3</value>
+  </data>
+  <data name="label26.Text" xml:space="preserve">
+    <value>Cabeceo Max</value>
+  </data>
+  <data name="label27.Text" xml:space="preserve">
+    <value>por ejemplo, en grados 2 ° 3 'W es -2,3</value>
+  </data>
+  <data name="label1.Text" xml:space="preserve">
+    <value>Modo de Vuelo 1</value>
+  </data>
+  <data name="label28.Text" xml:space="preserve">
+    <value>Nivel tu quad para establecer las compensaciones por defecto acel</value>
+  </data>
+  <data name="label6.Text" xml:space="preserve">
+    <value>Modo de Vuelo 6</value>
+  </data>
+  <data name="label29.Text" xml:space="preserve">
+    <value>Capacidad</value>
+  </data>
+  <data name="label100.Text" xml:space="preserve">
+    <value>Declinación</value>
+  </data>
+  <data name="CHK_enablesonar.Text" xml:space="preserve">
+    <value>Activar Sonar</value>
+  </data>
+  <data name="label7.Text" xml:space="preserve">
+    <value>PWM 1231 - 1360</value>
+  </data>
+  <data name="tabRadioIn.Text" xml:space="preserve">
+    <value>Entrada Radio</value>
+  </data>
+  <data name="groupBox4.Text" xml:space="preserve">
+    <value>Calibración</value>
+  </data>
+  <data name="HS4_MIN.Text" xml:space="preserve">
+    <value>1500</value>
+  </data>
+  <data name="label4.Text" xml:space="preserve">
+    <value>Modo de Vuelo 4</value>
+  </data>
+  <data name="label5.Text" xml:space="preserve">
+    <value>Modo de Vuelo 5</value>
+  </data>
+  <data name="groupBox3.Text" xml:space="preserve">
+    <value>Gyro</value>
+  </data>
+  <data name="label8.Text" xml:space="preserve">
+    <value>PWM 1361 - 1490</value>
+  </data>
+  <data name="tabHardware.Text" xml:space="preserve">
+    <value>Hardware</value>
+  </data>
+  <data name="label9.Text" xml:space="preserve">
+    <value>PWM 1491 - 1620</value>
+  </data>
+  <data name="linkLabelmagdec.Text" xml:space="preserve">
+    <value>Sitio Web Declinación</value>
+  </data>
+  <data name="HS4_MAX.Text" xml:space="preserve">
+    <value>1500</value>
+  </data>
+  <data name="tabBattery.Text" xml:space="preserve">
+    <value>Batería</value>
+  </data>
+  <data name="BUT_0collective.Text" xml:space="preserve">
+    <value>Cero</value>
+  </data>
+  <data name="CHK_enableairspeed.Text" xml:space="preserve">
+    <value>Activar Airspeed</value>
+  </data>
+  <data name="PIT_MAX_.Text" xml:space="preserve">
+    <value>4500</value>
+  </data>
+  <data name="BUT_reset.Text" xml:space="preserve">
+    <value>Restablecer los Ajustes de hardware APM</value>
+  </data>
+  <data name="GYR_GAIN_.Text" xml:space="preserve">
+    <value>1000</value>
+  </data>
+  <data name="label30.Text" xml:space="preserve">
+    <value>Monitor</value>
+  </data>
+</root>
\ No newline at end of file
diff --git a/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigAccelerometerCalibration.fr.resx b/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigAccelerometerCalibration.fr.resx
new file mode 100644
index 000000000..1bd274bee
--- /dev/null
+++ b/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigAccelerometerCalibration.fr.resx
@@ -0,0 +1,312 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <data name="SV3_POS_.Text" xml:space="preserve">
+    <value>180</value>
+  </data>
+  <data name="BUT_HS4save.Text" xml:space="preserve">
+    <value>Manuel</value>
+  </data>
+  <data name="label12.Text" xml:space="preserve">
+    <value>PWM 0 - 1230</value>
+  </data>
+  <data name="label10.Text" xml:space="preserve">
+    <value>PWM 1621 - 1749</value>
+  </data>
+  <data name="label13.Text" xml:space="preserve">
+    <value>Mode Courant:</value>
+  </data>
+  <data name="CHK_enableoptflow.Text" xml:space="preserve">
+    <value>Activ. capteur optique</value>
+  </data>
+  <data name="label16.Text" xml:space="preserve">
+    <value>NOTE: images pou presentation uniquement. Fonctionnel pour Hex, Octo etc...</value>
+  </data>
+  <data name="CB_simple5.Text" xml:space="preserve">
+    <value>Mode Simple</value>
+  </data>
+  <data name="label11.Text" xml:space="preserve">
+    <value>PWM 1750 +</value>
+  </data>
+  <data name="CHK_elevonch1rev.Text" xml:space="preserve">
+    <value>Elevons CH1 Rev</value>
+  </data>
+  <data name="label14.Text" xml:space="preserve">
+    <value>PWM Actuel:</value>
+  </data>
+  <data name="$this.Text" xml:space="preserve">
+    <value>APMSetup</value>
+  </data>
+  <data name="label17.Text" xml:space="preserve">
+    <value>Swash-Servo position</value>
+  </data>
+  <data name="CHK_enablecompass.Text" xml:space="preserve">
+    <value>Activ. Boussole</value>
+  </data>
+  <data name="CB_simple4.Text" xml:space="preserve">
+    <value>Mode Simple</value>
+  </data>
+  <data name="tabArducopter.Text" xml:space="preserve">
+    <value>ArduCopter2</value>
+  </data>
+  <data name="CB_simple1.Text" xml:space="preserve">
+    <value>Mode Simple</value>
+  </data>
+  <data name="label15.Text" xml:space="preserve">
+    <value>type de châssis (+ ou x)</value>
+  </data>
+  <data name="SV2_POS_.Text" xml:space="preserve">
+    <value>60</value>
+  </data>
+  <data name="label18.Text" xml:space="preserve">
+    <value>1</value>
+  </data>
+  <data name="CB_simple6.Text" xml:space="preserve">
+    <value>Mode Simple</value>
+  </data>
+  <data name="CB_simple3.Text" xml:space="preserve">
+    <value>Mode Simple</value>
+  </data>
+  <data name="label19.Text" xml:space="preserve">
+    <value>2</value>
+  </data>
+  <data name="tabModes.Text" xml:space="preserve">
+    <value>Modes</value>
+  </data>
+  <data name="CB_simple2.Text" xml:space="preserve">
+    <value>Mode Simple</value>
+  </data>
+  <data name="label20.Text" xml:space="preserve">
+    <value>3</value>
+  </data>
+  <data name="tabReset.Text" xml:space="preserve">
+    <value>Réinit.</value>
+  </data>
+  <data name="SV1_POS_.Text" xml:space="preserve">
+    <value>-60</value>
+  </data>
+  <data name="label21.Text" xml:space="preserve">
+    <value>Haut</value>
+  </data>
+  <data name="label22.Text" xml:space="preserve">
+    <value>Mouvement Swash</value>
+  </data>
+  <data name="lbl_currentmode.Text" xml:space="preserve">
+    <value>Manuel</value>
+  </data>
+  <data name="label23.Text" xml:space="preserve">
+    <value>Deplac. du Gouvernail</value>
+  </data>
+  <data name="textBox3.Text" xml:space="preserve">
+    <value>Calibration du capteur de Voltage.1. Mesurer le voltage sur APM et inscrivez-le dans la boite ci-bas.2. Mesurer le voltage de la batterie et inscrivez-le dans la boite ci-bas.3. Inscrire les ampères par volt de la documentation du capteur de courant ci-bas</value>
+  </data>
+  <data name="BUT_Calibrateradio.Text" xml:space="preserve">
+    <value>Calibrer Radio</value>
+  </data>
+  <data name="label24.Text" xml:space="preserve">
+    <value>Max</value>
+  </data>
+  <data name="label2.Text" xml:space="preserve">
+    <value>Mode de vol 2</value>
+  </data>
+  <data name="label25.Text" xml:space="preserve">
+    <value>Roulis Max</value>
+  </data>
+  <data name="label3.Text" xml:space="preserve">
+    <value>Mode de vol 2</value>
+  </data>
+  <data name="label26.Text" xml:space="preserve">
+    <value>Tangage Max</value>
+  </data>
+  <data name="label27.Text" xml:space="preserve">
+    <value>en degrés eg 2° 3' W est -2.3</value>
+  </data>
+  <data name="label1.Text" xml:space="preserve">
+    <value>Mode de vol 1</value>
+  </data>
+  <data name="label28.Text" xml:space="preserve">
+    <value>Niveler l'apareil pour copensation des accels</value>
+  </data>
+  <data name="label6.Text" xml:space="preserve">
+    <value>Mode de vol 6</value>
+  </data>
+  <data name="label29.Text" xml:space="preserve">
+    <value>Capacité</value>
+  </data>
+  <data name="label100.Text" xml:space="preserve">
+    <value>Déclination</value>
+  </data>
+  <data name="CHK_enablesonar.Text" xml:space="preserve">
+    <value>Activer Sonar</value>
+  </data>
+  <data name="label7.Text" xml:space="preserve">
+    <value>PWM 1231 - 1360</value>
+  </data>
+  <data name="tabRadioIn.Text" xml:space="preserve">
+    <value>Entrée Radio</value>
+  </data>
+  <data name="HS4_MIN.Text" xml:space="preserve">
+    <value>1500</value>
+  </data>
+  <data name="label4.Text" xml:space="preserve">
+    <value>Mode de vol 4</value>
+  </data>
+  <data name="label5.Text" xml:space="preserve">
+    <value>Mode de vol 5</value>
+  </data>
+  <data name="groupBox3.Text" xml:space="preserve">
+    <value>Gyro</value>
+  </data>
+  <data name="label8.Text" xml:space="preserve">
+    <value>PWM 1361 - 1490</value>
+  </data>
+  <data name="tabHardware.Text" xml:space="preserve">
+    <value>Matériel</value>
+  </data>
+  <data name="label9.Text" xml:space="preserve">
+    <value>PWM 1491 - 1620</value>
+  </data>
+  <data name="linkLabelmagdec.Text" xml:space="preserve">
+    <value>Site Web Déclination</value>
+  </data>
+  <data name="HS4_MAX.Text" xml:space="preserve">
+    <value>1500</value>
+  </data>
+  <data name="tabBattery.Text" xml:space="preserve">
+    <value>Batterie</value>
+  </data>
+  <data name="BUT_0collective.Text" xml:space="preserve">
+    <value>Zéro</value>
+  </data>
+  <data name="CHK_enableairspeed.Text" xml:space="preserve">
+    <value>Activ. Airspeed</value>
+  </data>
+  <data name="PIT_MAX_.Text" xml:space="preserve">
+    <value>4500</value>
+  </data>
+  <data name="BUT_reset.Text" xml:space="preserve">
+    <value>RàZ tout parametres du APM</value>
+  </data>
+  <data name="GYR_GAIN_.Text" xml:space="preserve">
+    <value>1000</value>
+  </data>
+  <data name="label30.Text" xml:space="preserve">
+    <value>Moniteur</value>
+  </data>
+</root>
\ No newline at end of file
diff --git a/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigAccelerometerCalibration.it-IT.resx b/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigAccelerometerCalibration.it-IT.resx
new file mode 100644
index 000000000..2b2636c81
--- /dev/null
+++ b/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigAccelerometerCalibration.it-IT.resx
@@ -0,0 +1,318 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <data name="SV3_POS_.Text" xml:space="preserve">
+    <value>180</value>
+  </data>
+  <data name="BUT_HS4save.Text" xml:space="preserve">
+    <value>Manuale</value>
+  </data>
+  <data name="label12.Text" xml:space="preserve">
+    <value>PWM 0 - 1230</value>
+  </data>
+  <data name="label10.Text" xml:space="preserve">
+    <value>PWM 1621 - 1749</value>
+  </data>
+  <data name="label13.Text" xml:space="preserve">
+    <value>Modo Corrente:</value>
+  </data>
+  <data name="CHK_enableoptflow.Text" xml:space="preserve">
+    <value>Abilita Flusso ottico</value>
+  </data>
+  <data name="label16.Text" xml:space="preserve">
+    <value>Nota: le immagini sono sono per presentazione, funzionerà con Hexa, etc.</value>
+  </data>
+  <data name="CB_simple5.Text" xml:space="preserve">
+    <value>Modo Semplice</value>
+  </data>
+  <data name="label11.Text" xml:space="preserve">
+    <value>PWM 1750 +</value>
+  </data>
+  <data name="CHK_elevonch1rev.Text" xml:space="preserve">
+    <value>Elevatore CH1 Rev</value>
+  </data>
+  <data name="label14.Text" xml:space="preserve">
+    <value>PWM Corrente:</value>
+  </data>
+  <data name="$this.Text" xml:space="preserve">
+    <value>Imposta APM</value>
+  </data>
+  <data name="label17.Text" xml:space="preserve">
+    <value>Posizione del servo del piatto</value>
+  </data>
+  <data name="CHK_enablecompass.Text" xml:space="preserve">
+    <value>Abilita Magnetometro</value>
+  </data>
+  <data name="CB_simple4.Text" xml:space="preserve">
+    <value>Modo Semplice</value>
+  </data>
+  <data name="tabArducopter.Text" xml:space="preserve">
+    <value>ArduCopter2</value>
+  </data>
+  <data name="CB_simple1.Text" xml:space="preserve">
+    <value>Modo Semplice</value>
+  </data>
+  <data name="label15.Text" xml:space="preserve">
+    <value>Imposta Frame (+ or x)</value>
+  </data>
+  <data name="SV2_POS_.Text" xml:space="preserve">
+    <value>60</value>
+  </data>
+  <data name="label18.Text" xml:space="preserve">
+    <value>1</value>
+  </data>
+  <data name="CB_simple6.Text" xml:space="preserve">
+    <value>Modo Semplice</value>
+  </data>
+  <data name="CB_simple3.Text" xml:space="preserve">
+    <value>Modo Semplice</value>
+  </data>
+  <data name="label19.Text" xml:space="preserve">
+    <value>2</value>
+  </data>
+  <data name="tabModes.Text" xml:space="preserve">
+    <value>Modi</value>
+  </data>
+  <data name="CB_simple2.Text" xml:space="preserve">
+    <value>Modo Semplice</value>
+  </data>
+  <data name="label20.Text" xml:space="preserve">
+    <value>3</value>
+  </data>
+  <data name="tabReset.Text" xml:space="preserve">
+    <value>Riavvia</value>
+  </data>
+  <data name="SV1_POS_.Text" xml:space="preserve">
+    <value>-60</value>
+  </data>
+  <data name="label21.Text" xml:space="preserve">
+    <value>Alto</value>
+  </data>
+  <data name="label22.Text" xml:space="preserve">
+    <value>Escursione del piatto</value>
+  </data>
+  <data name="lbl_currentmode.Text" xml:space="preserve">
+    <value>Manuale</value>
+  </data>
+  <data name="label23.Text" xml:space="preserve">
+    <value>Escursione Timone</value>
+  </data>
+  <data name="textBox3.Text" xml:space="preserve">
+    <value>Calibarzione del sensore di voltaggio:
+1. Misura il valtaggio di ingresso di APM e inseriscilo nel box sotto 
+2. Misura il voltaggio della batteria e inseriscilo nel box sotto 
+3. Dalle caratteristiche del sensore di corrente, inserisci il valore degli ampere per volt nel box qui sotto</value>
+  </data>
+  <data name="BUT_Calibrateradio.Text" xml:space="preserve">
+    <value>Calibrazione Radio</value>
+  </data>
+  <data name="label24.Text" xml:space="preserve">
+    <value>Massimo</value>
+  </data>
+  <data name="label2.Text" xml:space="preserve">
+    <value>Modo di volo 2</value>
+  </data>
+  <data name="label25.Text" xml:space="preserve">
+    <value>Rollio massimo</value>
+  </data>
+  <data name="label3.Text" xml:space="preserve">
+    <value>Modo di volo 3</value>
+  </data>
+  <data name="label26.Text" xml:space="preserve">
+    <value>Passo massimo</value>
+  </data>
+  <data name="label27.Text" xml:space="preserve">
+    <value>in gradi es 2° 3' W is -2.3</value>
+  </data>
+  <data name="label1.Text" xml:space="preserve">
+    <value>Modo di volo 1</value>
+  </data>
+  <data name="label28.Text" xml:space="preserve">
+    <value>Livella il quad per impostare gli accelerometri</value>
+  </data>
+  <data name="label6.Text" xml:space="preserve">
+    <value>Modo di volo 6</value>
+  </data>
+  <data name="label29.Text" xml:space="preserve">
+    <value>Capacità</value>
+  </data>
+  <data name="label100.Text" xml:space="preserve">
+    <value>Declinazione</value>
+  </data>
+  <data name="CHK_enablesonar.Text" xml:space="preserve">
+    <value>Attiva Sonar</value>
+  </data>
+  <data name="label7.Text" xml:space="preserve">
+    <value>PWM 1231 - 1360</value>
+  </data>
+  <data name="tabRadioIn.Text" xml:space="preserve">
+    <value>Ingresso Radio</value>
+  </data>
+  <data name="groupBox4.Text" xml:space="preserve">
+    <value>Calibration</value>
+  </data>
+  <data name="HS4_MIN.Text" xml:space="preserve">
+    <value>1500</value>
+  </data>
+  <data name="label4.Text" xml:space="preserve">
+    <value>Modo di volo 4</value>
+  </data>
+  <data name="label5.Text" xml:space="preserve">
+    <value>Modo di volo 5</value>
+  </data>
+  <data name="groupBox3.Text" xml:space="preserve">
+    <value>Giroscopio</value>
+  </data>
+  <data name="label8.Text" xml:space="preserve">
+    <value>PWM 1361 - 1490</value>
+  </data>
+  <data name="tabHardware.Text" xml:space="preserve">
+    <value>Hardware</value>
+  </data>
+  <data name="label9.Text" xml:space="preserve">
+    <value>PWM 1491 - 1620</value>
+  </data>
+  <data name="linkLabelmagdec.Text" xml:space="preserve">
+    <value>Sito Web per la Declinazione</value>
+  </data>
+  <data name="HS4_MAX.Text" xml:space="preserve">
+    <value>1500</value>
+  </data>
+  <data name="tabBattery.Text" xml:space="preserve">
+    <value>Batteria</value>
+  </data>
+  <data name="BUT_0collective.Text" xml:space="preserve">
+    <value>Zero</value>
+  </data>
+  <data name="CHK_enableairspeed.Text" xml:space="preserve">
+    <value>Attiva Sensore Velocità</value>
+  </data>
+  <data name="PIT_MAX_.Text" xml:space="preserve">
+    <value>4500</value>
+  </data>
+  <data name="BUT_reset.Text" xml:space="preserve">
+    <value>Resetta APM ai valori di Default</value>
+  </data>
+  <data name="GYR_GAIN_.Text" xml:space="preserve">
+    <value>1000</value>
+  </data>
+  <data name="label30.Text" xml:space="preserve">
+    <value>Monitor</value>
+  </data>
+</root>
\ No newline at end of file
diff --git a/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigAccelerometerCalibration.pl.resx b/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigAccelerometerCalibration.pl.resx
new file mode 100644
index 000000000..057b93271
--- /dev/null
+++ b/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigAccelerometerCalibration.pl.resx
@@ -0,0 +1,318 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <data name="SV3_POS_.Text" xml:space="preserve">
+    <value>180</value>
+  </data>
+  <data name="BUT_HS4save.Text" xml:space="preserve">
+    <value>Ręczne</value>
+  </data>
+  <data name="label12.Text" xml:space="preserve">
+    <value>PWM 0 - 1230</value>
+  </data>
+  <data name="label10.Text" xml:space="preserve">
+    <value>PWM 1621 - 1749</value>
+  </data>
+  <data name="label13.Text" xml:space="preserve">
+    <value>Aktualny tryb:</value>
+  </data>
+  <data name="CHK_enableoptflow.Text" xml:space="preserve">
+    <value>Włącz Optical Flow</value>
+  </data>
+  <data name="label16.Text" xml:space="preserve">
+    <value>UWAGA: Obrazy są wyłącznie do prezentacji, działają jedynie z hexa, itp.</value>
+  </data>
+  <data name="CB_simple5.Text" xml:space="preserve">
+    <value>Tryb prosty</value>
+  </data>
+  <data name="label11.Text" xml:space="preserve">
+    <value>PWM 1750 +</value>
+  </data>
+  <data name="CHK_elevonch1rev.Text" xml:space="preserve">
+    <value>Odwr. Elevon CH1</value>
+  </data>
+  <data name="label14.Text" xml:space="preserve">
+    <value>Aktualny PWM:</value>
+  </data>
+  <data name="$this.Text" xml:space="preserve">
+    <value>Ustawienia APM</value>
+  </data>
+  <data name="label17.Text" xml:space="preserve">
+    <value>Pozycja serwa płyty ster.</value>
+  </data>
+  <data name="CHK_enablecompass.Text" xml:space="preserve">
+    <value>Włącz kompas</value>
+  </data>
+  <data name="CB_simple4.Text" xml:space="preserve">
+    <value>Tryb prosty</value>
+  </data>
+  <data name="tabArducopter.Text" xml:space="preserve">
+    <value>ArduCopter2</value>
+  </data>
+  <data name="CB_simple1.Text" xml:space="preserve">
+    <value>Tryb prosty</value>
+  </data>
+  <data name="label15.Text" xml:space="preserve">
+    <value>Ustawienie ramy (+ lub x)</value>
+  </data>
+  <data name="SV2_POS_.Text" xml:space="preserve">
+    <value>60</value>
+  </data>
+  <data name="label18.Text" xml:space="preserve">
+    <value>1</value>
+  </data>
+  <data name="CB_simple6.Text" xml:space="preserve">
+    <value>Tryb prosty</value>
+  </data>
+  <data name="CB_simple3.Text" xml:space="preserve">
+    <value>Tryb prosty</value>
+  </data>
+  <data name="label19.Text" xml:space="preserve">
+    <value>2</value>
+  </data>
+  <data name="tabModes.Text" xml:space="preserve">
+    <value>Tryby</value>
+  </data>
+  <data name="CB_simple2.Text" xml:space="preserve">
+    <value>Tryb prosty</value>
+  </data>
+  <data name="label20.Text" xml:space="preserve">
+    <value>3</value>
+  </data>
+  <data name="tabReset.Text" xml:space="preserve">
+    <value>Reset</value>
+  </data>
+  <data name="SV1_POS_.Text" xml:space="preserve">
+    <value>-60</value>
+  </data>
+  <data name="label21.Text" xml:space="preserve">
+    <value>Góra</value>
+  </data>
+  <data name="label22.Text" xml:space="preserve">
+    <value>Zakres ruchu płyty sterującej</value>
+  </data>
+  <data name="lbl_currentmode.Text" xml:space="preserve">
+    <value>Ręczne</value>
+  </data>
+  <data name="label23.Text" xml:space="preserve">
+    <value>Zakres steru kierunku</value>
+  </data>
+  <data name="textBox3.Text" xml:space="preserve">
+    <value>Kalibracja czujnika napięcia:
+1. Zmierz napięcie wejściowe APM i wpisz poniżej
+2. Zmierz napięcie baterii i wpisz poniżej
+3. Wpisz poniżej ilość amperów/wolt [A/V] z dokumentacji czujnika prądu</value>
+  </data>
+  <data name="BUT_Calibrateradio.Text" xml:space="preserve">
+    <value>Kalibracja radia</value>
+  </data>
+  <data name="label24.Text" xml:space="preserve">
+    <value>Max</value>
+  </data>
+  <data name="label2.Text" xml:space="preserve">
+    <value>Tryb lotu 2</value>
+  </data>
+  <data name="label25.Text" xml:space="preserve">
+    <value>Max przechylenie</value>
+  </data>
+  <data name="label3.Text" xml:space="preserve">
+    <value>Tryb lotu 3</value>
+  </data>
+  <data name="label26.Text" xml:space="preserve">
+    <value>Max pochylenie</value>
+  </data>
+  <data name="label27.Text" xml:space="preserve">
+    <value>w stopniech np. 2° 3' W to -2.3</value>
+  </data>
+  <data name="label1.Text" xml:space="preserve">
+    <value>Tryb lotu 1</value>
+  </data>
+  <data name="label28.Text" xml:space="preserve">
+    <value>Wypoziomuj quada żeby stawić domyśle offsety przysp.</value>
+  </data>
+  <data name="label6.Text" xml:space="preserve">
+    <value>Tryb lotu 6</value>
+  </data>
+  <data name="label29.Text" xml:space="preserve">
+    <value>Pojemność</value>
+  </data>
+  <data name="label100.Text" xml:space="preserve">
+    <value>Deklinacja</value>
+  </data>
+  <data name="CHK_enablesonar.Text" xml:space="preserve">
+    <value>Włącz sonar</value>
+  </data>
+  <data name="label7.Text" xml:space="preserve">
+    <value>PWM 1231 - 1360</value>
+  </data>
+  <data name="tabRadioIn.Text" xml:space="preserve">
+    <value>Wejścia radia</value>
+  </data>
+  <data name="groupBox4.Text" xml:space="preserve">
+    <value>Calibration</value>
+  </data>
+  <data name="HS4_MIN.Text" xml:space="preserve">
+    <value>1500</value>
+  </data>
+  <data name="label4.Text" xml:space="preserve">
+    <value>Tryb lotu 4</value>
+  </data>
+  <data name="label5.Text" xml:space="preserve">
+    <value>Tryb lotu 5</value>
+  </data>
+  <data name="groupBox3.Text" xml:space="preserve">
+    <value>Żyro</value>
+  </data>
+  <data name="label8.Text" xml:space="preserve">
+    <value>PWM 1361 - 1490</value>
+  </data>
+  <data name="tabHardware.Text" xml:space="preserve">
+    <value>Hardware</value>
+  </data>
+  <data name="label9.Text" xml:space="preserve">
+    <value>PWM 1491 - 1620</value>
+  </data>
+  <data name="linkLabelmagdec.Text" xml:space="preserve">
+    <value>Strona www deklinacji</value>
+  </data>
+  <data name="HS4_MAX.Text" xml:space="preserve">
+    <value>1500</value>
+  </data>
+  <data name="tabBattery.Text" xml:space="preserve">
+    <value>Bateria</value>
+  </data>
+  <data name="BUT_0collective.Text" xml:space="preserve">
+    <value>Zero</value>
+  </data>
+  <data name="CHK_enableairspeed.Text" xml:space="preserve">
+    <value>Włącz prędkość powietrza</value>
+  </data>
+  <data name="PIT_MAX_.Text" xml:space="preserve">
+    <value>4500</value>
+  </data>
+  <data name="BUT_reset.Text" xml:space="preserve">
+    <value>Reset APM do stawień domyślnych</value>
+  </data>
+  <data name="GYR_GAIN_.Text" xml:space="preserve">
+    <value>1000</value>
+  </data>
+  <data name="label30.Text" xml:space="preserve">
+    <value>Monitor</value>
+  </data>
+</root>
\ No newline at end of file
diff --git a/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigAccelerometerCalibration.resx b/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigAccelerometerCalibration.resx
index 7080a7d11..d866d08ac 100644
--- a/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigAccelerometerCalibration.resx
+++ b/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigAccelerometerCalibration.resx
@@ -117,4 +117,194 @@
   <resheader name="writer">
     <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
   </resheader>
+  <assembly alias="mscorlib" name="mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
+  <data name="label28.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
+  <data name="label28.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
+    <value>NoControl</value>
+  </data>
+  <assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
+  <data name="label28.Location" type="System.Drawing.Point, System.Drawing">
+    <value>124, 13</value>
+  </data>
+  <data name="label28.Size" type="System.Drawing.Size, System.Drawing">
+    <value>210, 13</value>
+  </data>
+  <data name="label28.TabIndex" type="System.Int32, mscorlib">
+    <value>15</value>
+  </data>
+  <data name="label28.Text" xml:space="preserve">
+    <value>Level your quad to set default accel offsets</value>
+  </data>
+  <data name="&gt;&gt;label28.Name" xml:space="preserve">
+    <value>label28</value>
+  </data>
+  <data name="&gt;&gt;label28.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;label28.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name="&gt;&gt;label28.ZOrder" xml:space="preserve">
+    <value>0</value>
+  </data>
+  <data name="label16.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <data name="label16.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
+    <value>NoControl</value>
+  </data>
+  <data name="label16.Location" type="System.Drawing.Point, System.Drawing">
+    <value>124, 308</value>
+  </data>
+  <data name="label16.Size" type="System.Drawing.Size, System.Drawing">
+    <value>192, 26</value>
+  </data>
+  <data name="label16.TabIndex" type="System.Int32, mscorlib">
+    <value>13</value>
+  </data>
+  <data name="label16.Text" xml:space="preserve">
+    <value>NOTE: images are for presentation only
+will work with hexa's etc</value>
+  </data>
+  <data name="&gt;&gt;label16.Name" xml:space="preserve">
+    <value>label16</value>
+  </data>
+  <data name="&gt;&gt;label16.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;label16.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name="&gt;&gt;label16.ZOrder" xml:space="preserve">
+    <value>1</value>
+  </data>
+  <data name="label15.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <data name="label15.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
+    <value>NoControl</value>
+  </data>
+  <data name="label15.Location" type="System.Drawing.Point, System.Drawing">
+    <value>167, 99</value>
+  </data>
+  <data name="label15.Size" type="System.Drawing.Size, System.Drawing">
+    <value>102, 13</value>
+  </data>
+  <data name="label15.TabIndex" type="System.Int32, mscorlib">
+    <value>12</value>
+  </data>
+  <data name="label15.Text" xml:space="preserve">
+    <value>Frame Setup (+ or x)</value>
+  </data>
+  <data name="&gt;&gt;label15.Name" xml:space="preserve">
+    <value>label15</value>
+  </data>
+  <data name="&gt;&gt;label15.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;label15.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name="&gt;&gt;label15.ZOrder" xml:space="preserve">
+    <value>2</value>
+  </data>
+  <data name="pictureBoxQuadX.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
+    <value>NoControl</value>
+  </data>
+  <data name="pictureBoxQuadX.Location" type="System.Drawing.Point, System.Drawing">
+    <value>226, 115</value>
+  </data>
+  <data name="pictureBoxQuadX.Size" type="System.Drawing.Size, System.Drawing">
+    <value>190, 190</value>
+  </data>
+  <data name="pictureBoxQuadX.SizeMode" type="System.Windows.Forms.PictureBoxSizeMode, System.Windows.Forms">
+    <value>Zoom</value>
+  </data>
+  <data name="pictureBoxQuadX.TabIndex" type="System.Int32, mscorlib">
+    <value>11</value>
+  </data>
+  <data name="&gt;&gt;pictureBoxQuadX.Name" xml:space="preserve">
+    <value>pictureBoxQuadX</value>
+  </data>
+  <data name="&gt;&gt;pictureBoxQuadX.Type" xml:space="preserve">
+    <value>System.Windows.Forms.PictureBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;pictureBoxQuadX.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name="&gt;&gt;pictureBoxQuadX.ZOrder" xml:space="preserve">
+    <value>3</value>
+  </data>
+  <data name="pictureBoxQuad.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
+    <value>NoControl</value>
+  </data>
+  <data name="pictureBoxQuad.Location" type="System.Drawing.Point, System.Drawing">
+    <value>19, 115</value>
+  </data>
+  <data name="pictureBoxQuad.Size" type="System.Drawing.Size, System.Drawing">
+    <value>190, 190</value>
+  </data>
+  <data name="pictureBoxQuad.SizeMode" type="System.Windows.Forms.PictureBoxSizeMode, System.Windows.Forms">
+    <value>Zoom</value>
+  </data>
+  <data name="pictureBoxQuad.TabIndex" type="System.Int32, mscorlib">
+    <value>10</value>
+  </data>
+  <data name="&gt;&gt;pictureBoxQuad.Name" xml:space="preserve">
+    <value>pictureBoxQuad</value>
+  </data>
+  <data name="&gt;&gt;pictureBoxQuad.Type" xml:space="preserve">
+    <value>System.Windows.Forms.PictureBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;pictureBoxQuad.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name="&gt;&gt;pictureBoxQuad.ZOrder" xml:space="preserve">
+    <value>4</value>
+  </data>
+  <data name="BUT_levelac2.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
+    <value>NoControl</value>
+  </data>
+  <data name="BUT_levelac2.Location" type="System.Drawing.Point, System.Drawing">
+    <value>181, 42</value>
+  </data>
+  <data name="BUT_levelac2.Size" type="System.Drawing.Size, System.Drawing">
+    <value>75, 23</value>
+  </data>
+  <data name="BUT_levelac2.TabIndex" type="System.Int32, mscorlib">
+    <value>14</value>
+  </data>
+  <data name="BUT_levelac2.Text" xml:space="preserve">
+    <value>Level</value>
+  </data>
+  <data name="&gt;&gt;BUT_levelac2.Name" xml:space="preserve">
+    <value>BUT_levelac2</value>
+  </data>
+  <data name="&gt;&gt;BUT_levelac2.Type" xml:space="preserve">
+    <value>ArdupilotMega.MyButton, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null</value>
+  </data>
+  <data name="&gt;&gt;BUT_levelac2.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name="&gt;&gt;BUT_levelac2.ZOrder" xml:space="preserve">
+    <value>5</value>
+  </data>
+  <metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+    <value>True</value>
+  </metadata>
+  <data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
+    <value>6, 13</value>
+  </data>
+  <data name="$this.Size" type="System.Drawing.Size, System.Drawing">
+    <value>439, 356</value>
+  </data>
+  <data name="&gt;&gt;$this.Name" xml:space="preserve">
+    <value>ConfigAccelerometerCalibration</value>
+  </data>
+  <data name="&gt;&gt;$this.Type" xml:space="preserve">
+    <value>ArdupilotMega.Controls.BackstageView.BackStageViewContentPanel, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null</value>
+  </data>
 </root>
\ No newline at end of file
diff --git a/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigAccelerometerCalibration.zh-Hans.resx b/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigAccelerometerCalibration.zh-Hans.resx
new file mode 100644
index 000000000..f96892c42
--- /dev/null
+++ b/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigAccelerometerCalibration.zh-Hans.resx
@@ -0,0 +1,496 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <data name="tabRadioIn.Text" xml:space="preserve">
+    <value>遥控输入</value>
+  </data>
+  <data name="tabModes.Text" xml:space="preserve">
+    <value>模式</value>
+  </data>
+  <data name="tabHardware.Text" xml:space="preserve">
+    <value>硬件</value>
+  </data>
+  <data name="tabBattery.Text" xml:space="preserve">
+    <value>电池</value>
+  </data>
+  <data name="tabHeli.Text" xml:space="preserve">
+    <value>AC2 直升机</value>
+  </data>
+  <data name="groupBoxElevons.Text" xml:space="preserve">
+    <value>上降副翼 (Elevon) 配置</value>
+  </data>
+  <assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
+  <data name="CHK_elevonch2rev.Size" type="System.Drawing.Size, System.Drawing">
+    <value>115, 17</value>
+  </data>
+  <data name="CHK_elevonch2rev.Text" xml:space="preserve">
+    <value>Elevons CH2 逆转</value>
+  </data>
+  <data name="CHK_elevonrev.Size" type="System.Drawing.Size, System.Drawing">
+    <value>91, 17</value>
+  </data>
+  <data name="CHK_elevonrev.Text" xml:space="preserve">
+    <value>Elevons 逆转</value>
+  </data>
+  <data name="CHK_elevonch1rev.Size" type="System.Drawing.Size, System.Drawing">
+    <value>115, 17</value>
+  </data>
+  <data name="CHK_elevonch1rev.Text" xml:space="preserve">
+    <value>Elevons CH1 逆转</value>
+  </data>
+  <data name="CHK_revch3.Size" type="System.Drawing.Size, System.Drawing">
+    <value>50, 17</value>
+  </data>
+  <data name="CHK_revch3.Text" xml:space="preserve">
+    <value>逆转</value>
+  </data>
+  <data name="CHK_revch4.Size" type="System.Drawing.Size, System.Drawing">
+    <value>50, 17</value>
+  </data>
+  <data name="CHK_revch4.Text" xml:space="preserve">
+    <value>逆转</value>
+  </data>
+  <data name="CHK_revch2.Size" type="System.Drawing.Size, System.Drawing">
+    <value>50, 17</value>
+  </data>
+  <data name="CHK_revch2.Text" xml:space="preserve">
+    <value>逆转</value>
+  </data>
+  <data name="CHK_revch1.Size" type="System.Drawing.Size, System.Drawing">
+    <value>50, 17</value>
+  </data>
+  <data name="CHK_revch1.Text" xml:space="preserve">
+    <value>逆转</value>
+  </data>
+  <data name="BUT_Calibrateradio.Text" xml:space="preserve">
+    <value>校准遥控</value>
+  </data>
+  <data name="CB_simple6.Size" type="System.Drawing.Size, System.Drawing">
+    <value>74, 17</value>
+  </data>
+  <data name="CB_simple6.Text" xml:space="preserve">
+    <value>简单模式</value>
+  </data>
+  <data name="CB_simple5.Size" type="System.Drawing.Size, System.Drawing">
+    <value>74, 17</value>
+  </data>
+  <data name="CB_simple5.Text" xml:space="preserve">
+    <value>简单模式</value>
+  </data>
+  <data name="CB_simple4.Size" type="System.Drawing.Size, System.Drawing">
+    <value>74, 17</value>
+  </data>
+  <data name="CB_simple4.Text" xml:space="preserve">
+    <value>简单模式</value>
+  </data>
+  <data name="CB_simple3.Size" type="System.Drawing.Size, System.Drawing">
+    <value>74, 17</value>
+  </data>
+  <data name="CB_simple3.Text" xml:space="preserve">
+    <value>简单模式</value>
+  </data>
+  <data name="CB_simple2.Size" type="System.Drawing.Size, System.Drawing">
+    <value>74, 17</value>
+  </data>
+  <data name="CB_simple2.Text" xml:space="preserve">
+    <value>简单模式</value>
+  </data>
+  <data name="CB_simple1.Size" type="System.Drawing.Size, System.Drawing">
+    <value>74, 17</value>
+  </data>
+  <data name="CB_simple1.Text" xml:space="preserve">
+    <value>简单模式</value>
+  </data>
+  <data name="label14.Size" type="System.Drawing.Size, System.Drawing">
+    <value>64, 13</value>
+  </data>
+  <data name="label14.Text" xml:space="preserve">
+    <value>当前 PWM:</value>
+  </data>
+  <data name="label13.Size" type="System.Drawing.Size, System.Drawing">
+    <value>58, 13</value>
+  </data>
+  <data name="label13.Text" xml:space="preserve">
+    <value>当前模式:</value>
+  </data>
+  <data name="label6.Size" type="System.Drawing.Size, System.Drawing">
+    <value>64, 13</value>
+  </data>
+  <data name="label6.Text" xml:space="preserve">
+    <value>飞行模式 6</value>
+  </data>
+  <data name="label5.Size" type="System.Drawing.Size, System.Drawing">
+    <value>64, 13</value>
+  </data>
+  <data name="label5.Text" xml:space="preserve">
+    <value>飞行模式 5</value>
+  </data>
+  <data name="label4.Size" type="System.Drawing.Size, System.Drawing">
+    <value>64, 13</value>
+  </data>
+  <data name="label4.Text" xml:space="preserve">
+    <value>飞行模式 4</value>
+  </data>
+  <data name="label3.Size" type="System.Drawing.Size, System.Drawing">
+    <value>64, 13</value>
+  </data>
+  <data name="label3.Text" xml:space="preserve">
+    <value>飞行模式 3</value>
+  </data>
+  <data name="label2.Size" type="System.Drawing.Size, System.Drawing">
+    <value>64, 13</value>
+  </data>
+  <data name="label2.Text" xml:space="preserve">
+    <value>飞行模式 2</value>
+  </data>
+  <data name="label1.Size" type="System.Drawing.Size, System.Drawing">
+    <value>64, 13</value>
+  </data>
+  <data name="label1.Text" xml:space="preserve">
+    <value>飞行模式 1</value>
+  </data>
+  <data name="BUT_SaveModes.Text" xml:space="preserve">
+    <value>保存模式</value>
+  </data>
+  <data name="label27.Text" xml:space="preserve">
+    <value>十进制, 2° 3' W 就是 -2.3</value>
+  </data>
+  <data name="CHK_enableoptflow.Text" xml:space="preserve">
+    <value>启用光流</value>
+  </data>
+  <data name="linkLabelmagdec.Size" type="System.Drawing.Size, System.Drawing">
+    <value>67, 13</value>
+  </data>
+  <data name="linkLabelmagdec.Text" xml:space="preserve">
+    <value>磁偏角网站</value>
+  </data>
+  <data name="label100.Text" xml:space="preserve">
+    <value>磁偏角</value>
+  </data>
+  <data name="CHK_enableairspeed.Text" xml:space="preserve">
+    <value>启用空速计</value>
+  </data>
+  <data name="CHK_enablesonar.Text" xml:space="preserve">
+    <value>启用声纳</value>
+  </data>
+  <data name="CHK_enablecompass.Text" xml:space="preserve">
+    <value>启用罗盘</value>
+  </data>
+  <data name="label31.Size" type="System.Drawing.Size, System.Drawing">
+    <value>58, 13</value>
+  </data>
+  <data name="label31.Text" xml:space="preserve">
+    <value>输入电压:</value>
+  </data>
+  <data name="label32.Size" type="System.Drawing.Size, System.Drawing">
+    <value>94, 13</value>
+  </data>
+  <data name="label32.Text" xml:space="preserve">
+    <value>测量的电池电压:</value>
+  </data>
+  <data name="label33.Size" type="System.Drawing.Size, System.Drawing">
+    <value>58, 13</value>
+  </data>
+  <data name="label33.Text" xml:space="preserve">
+    <value>电池电压:</value>
+  </data>
+  <data name="label34.Size" type="System.Drawing.Size, System.Drawing">
+    <value>52, 13</value>
+  </data>
+  <data name="label34.Text" xml:space="preserve">
+    <value>分 压 比:</value>
+  </data>
+  <data name="label35.Size" type="System.Drawing.Size, System.Drawing">
+    <value>63, 13</value>
+  </data>
+  <data name="label35.Text" xml:space="preserve">
+    <value>安培/伏特:</value>
+  </data>
+  <data name="label47.Size" type="System.Drawing.Size, System.Drawing">
+    <value>48, 18</value>
+  </data>
+  <data name="label47.Text" xml:space="preserve">
+    <value>传感器</value>
+  </data>
+  <data name="textBox3.Text" xml:space="preserve">
+    <value>电压传感器校准:
+1. 测量APM输入电压,输入到下方的文本框中
+2. 测量电池电压,输入到下方的文本框中
+3. 从当前的传感器的数据表中找到安培/伏特,输入到下方的文本框中</value>
+  </data>
+  <data name="label29.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label29.Text" xml:space="preserve">
+    <value>容量</value>
+  </data>
+  <data name="label30.Size" type="System.Drawing.Size, System.Drawing">
+    <value>48, 13</value>
+  </data>
+  <data name="label30.Text" xml:space="preserve">
+    <value>监控器</value>
+  </data>
+  <data name="label28.Size" type="System.Drawing.Size, System.Drawing">
+    <value>175, 13</value>
+  </data>
+  <data name="label28.Text" xml:space="preserve">
+    <value>设置水平面的默认加速度计偏移</value>
+  </data>
+  <data name="label16.Size" type="System.Drawing.Size, System.Drawing">
+    <value>261, 13</value>
+  </data>
+  <data name="label16.Text" xml:space="preserve">
+    <value>注: 图片只是用于展示,设置可以用于六轴等机架</value>
+  </data>
+  <data name="label15.Size" type="System.Drawing.Size, System.Drawing">
+    <value>93, 13</value>
+  </data>
+  <data name="label15.Text" xml:space="preserve">
+    <value>机架设置 (+ 或 x)</value>
+  </data>
+  <data name="BUT_levelac2.Text" xml:space="preserve">
+    <value>找平</value>
+  </data>
+  <data name="BUT_HS4save.Text" xml:space="preserve">
+    <value>手动</value>
+  </data>
+  <data name="BUT_swash_manual.Text" xml:space="preserve">
+    <value>手动</value>
+  </data>
+  <data name="label46.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label46.Text" xml:space="preserve">
+    <value>感度</value>
+  </data>
+  <data name="label45.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label45.Text" xml:space="preserve">
+    <value>启用</value>
+  </data>
+  <data name="label44.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label44.Text" xml:space="preserve">
+    <value>微调</value>
+  </data>
+  <data name="label43.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label43.Text" xml:space="preserve">
+    <value>逆转</value>
+  </data>
+  <data name="label42.Size" type="System.Drawing.Size, System.Drawing">
+    <value>43, 13</value>
+  </data>
+  <data name="label42.Text" xml:space="preserve">
+    <value>方向舵</value>
+  </data>
+  <data name="label24.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label24.Text" xml:space="preserve">
+    <value>最大</value>
+  </data>
+  <data name="label40.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label40.Text" xml:space="preserve">
+    <value>最小</value>
+  </data>
+  <data name="label41.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label41.Text" xml:space="preserve">
+    <value>最低</value>
+  </data>
+  <data name="label21.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label21.Text" xml:space="preserve">
+    <value>最高</value>
+  </data>
+  <data name="BUT_0collective.Text" xml:space="preserve">
+    <value>0度</value>
+  </data>
+  <data name="label39.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label39.Text" xml:space="preserve">
+    <value>微调</value>
+  </data>
+  <data name="label38.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label38.Text" xml:space="preserve">
+    <value>逆转</value>
+  </data>
+  <data name="label37.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label37.Text" xml:space="preserve">
+    <value>位置</value>
+  </data>
+  <data name="label36.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label36.Text" xml:space="preserve">
+    <value>舵机</value>
+  </data>
+  <data name="label26.Size" type="System.Drawing.Size, System.Drawing">
+    <value>55, 13</value>
+  </data>
+  <data name="label26.Text" xml:space="preserve">
+    <value>最大俯仰</value>
+  </data>
+  <data name="label25.Size" type="System.Drawing.Size, System.Drawing">
+    <value>55, 13</value>
+  </data>
+  <data name="label25.Text" xml:space="preserve">
+    <value>最大侧倾</value>
+  </data>
+  <data name="label23.Size" type="System.Drawing.Size, System.Drawing">
+    <value>55, 13</value>
+  </data>
+  <data name="label23.Text" xml:space="preserve">
+    <value>舵机行程</value>
+  </data>
+  <data name="label22.Size" type="System.Drawing.Size, System.Drawing">
+    <value>79, 13</value>
+  </data>
+  <data name="label22.Text" xml:space="preserve">
+    <value>斜盘水平微调</value>
+  </data>
+  <data name="label17.Size" type="System.Drawing.Size, System.Drawing">
+    <value>79, 13</value>
+  </data>
+  <data name="label17.Text" xml:space="preserve">
+    <value>斜盘舵机位置</value>
+  </data>
+  <data name="tabReset.Text" xml:space="preserve">
+    <value>重置</value>
+  </data>
+  <data name="BUT_reset.Text" xml:space="preserve">
+    <value>重置 APM 为默认设置</value>
+  </data>
+  <data name="$this.Text" xml:space="preserve">
+    <value>APM设置</value>
+  </data>
+</root>
\ No newline at end of file
diff --git a/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigAccelerometerCalibration.zh-TW.resx b/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigAccelerometerCalibration.zh-TW.resx
new file mode 100644
index 000000000..0c03fbf8e
--- /dev/null
+++ b/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigAccelerometerCalibration.zh-TW.resx
@@ -0,0 +1,460 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <data name="tabReset.Text" xml:space="preserve">
+    <value>重置</value>
+  </data>
+  <data name="tabRadioIn.Text" xml:space="preserve">
+    <value>遙控輸入</value>
+  </data>
+  <data name="tabModes.Text" xml:space="preserve">
+    <value>模式</value>
+  </data>
+  <data name="tabHardware.Text" xml:space="preserve">
+    <value>硬件</value>
+  </data>
+  <data name="tabBattery.Text" xml:space="preserve">
+    <value>電池</value>
+  </data>
+  <data name="BUT_reset.Text" xml:space="preserve">
+    <value>重置 APM 為默認設置</value>
+  </data>
+  <assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
+  <data name="CHK_revch3.Size" type="System.Drawing.Size, System.Drawing">
+    <value>50, 17</value>
+  </data>
+  <data name="CHK_revch3.Text" xml:space="preserve">
+    <value>逆轉</value>
+  </data>
+  <data name="CHK_revch4.Size" type="System.Drawing.Size, System.Drawing">
+    <value>50, 17</value>
+  </data>
+  <data name="CHK_revch4.Text" xml:space="preserve">
+    <value>逆轉</value>
+  </data>
+  <data name="CHK_revch2.Size" type="System.Drawing.Size, System.Drawing">
+    <value>50, 17</value>
+  </data>
+  <data name="CHK_revch2.Text" xml:space="preserve">
+    <value>逆轉</value>
+  </data>
+  <data name="CHK_revch1.Size" type="System.Drawing.Size, System.Drawing">
+    <value>50, 17</value>
+  </data>
+  <data name="CHK_revch1.Text" xml:space="preserve">
+    <value>逆轉</value>
+  </data>
+  <data name="BUT_Calibrateradio.Text" xml:space="preserve">
+    <value>校準遙控</value>
+  </data>
+  <data name="CB_simple6.Size" type="System.Drawing.Size, System.Drawing">
+    <value>74, 17</value>
+  </data>
+  <data name="CB_simple6.Text" xml:space="preserve">
+    <value>簡單模式</value>
+  </data>
+  <data name="CB_simple5.Size" type="System.Drawing.Size, System.Drawing">
+    <value>74, 17</value>
+  </data>
+  <data name="CB_simple5.Text" xml:space="preserve">
+    <value>簡單模式</value>
+  </data>
+  <data name="CB_simple4.Size" type="System.Drawing.Size, System.Drawing">
+    <value>74, 17</value>
+  </data>
+  <data name="CB_simple4.Text" xml:space="preserve">
+    <value>簡單模式</value>
+  </data>
+  <data name="CB_simple3.Size" type="System.Drawing.Size, System.Drawing">
+    <value>74, 17</value>
+  </data>
+  <data name="CB_simple3.Text" xml:space="preserve">
+    <value>簡單模式</value>
+  </data>
+  <data name="CB_simple2.Size" type="System.Drawing.Size, System.Drawing">
+    <value>74, 17</value>
+  </data>
+  <data name="CB_simple2.Text" xml:space="preserve">
+    <value>簡單模式</value>
+  </data>
+  <data name="CB_simple1.Size" type="System.Drawing.Size, System.Drawing">
+    <value>74, 17</value>
+  </data>
+  <data name="CB_simple1.Text" xml:space="preserve">
+    <value>簡單模式</value>
+  </data>
+  <data name="label14.Size" type="System.Drawing.Size, System.Drawing">
+    <value>64, 13</value>
+  </data>
+  <data name="label14.Text" xml:space="preserve">
+    <value>當前 PWM:</value>
+  </data>
+  <data name="label13.Size" type="System.Drawing.Size, System.Drawing">
+    <value>58, 13</value>
+  </data>
+  <data name="label13.Text" xml:space="preserve">
+    <value>當前模式:</value>
+  </data>
+  <data name="label6.Size" type="System.Drawing.Size, System.Drawing">
+    <value>64, 13</value>
+  </data>
+  <data name="label6.Text" xml:space="preserve">
+    <value>飛行模式 6</value>
+  </data>
+  <data name="label5.Size" type="System.Drawing.Size, System.Drawing">
+    <value>64, 13</value>
+  </data>
+  <data name="label5.Text" xml:space="preserve">
+    <value>飛行模式 5</value>
+  </data>
+  <data name="label4.Size" type="System.Drawing.Size, System.Drawing">
+    <value>64, 13</value>
+  </data>
+  <data name="label4.Text" xml:space="preserve">
+    <value>飛行模式 4</value>
+  </data>
+  <data name="label3.Size" type="System.Drawing.Size, System.Drawing">
+    <value>64, 13</value>
+  </data>
+  <data name="label3.Text" xml:space="preserve">
+    <value>飛行模式 3</value>
+  </data>
+  <data name="label2.Size" type="System.Drawing.Size, System.Drawing">
+    <value>64, 13</value>
+  </data>
+  <data name="label2.Text" xml:space="preserve">
+    <value>飛行模式 2</value>
+  </data>
+  <data name="label1.Size" type="System.Drawing.Size, System.Drawing">
+    <value>64, 13</value>
+  </data>
+  <data name="label1.Text" xml:space="preserve">
+    <value>飛行模式 1</value>
+  </data>
+  <data name="BUT_SaveModes.Text" xml:space="preserve">
+    <value>保存模式</value>
+  </data>
+  <data name="linkLabelmagdec.Size" type="System.Drawing.Size, System.Drawing">
+    <value>67, 13</value>
+  </data>
+  <data name="linkLabelmagdec.Text" xml:space="preserve">
+    <value>磁偏角網站</value>
+  </data>
+  <data name="label100.Text" xml:space="preserve">
+    <value>磁偏角</value>
+  </data>
+  <data name="CHK_enableairspeed.Text" xml:space="preserve">
+    <value>啟用空速計</value>
+  </data>
+  <data name="CHK_enablesonar.Text" xml:space="preserve">
+    <value>啟用聲納</value>
+  </data>
+  <data name="CHK_enablecompass.Text" xml:space="preserve">
+    <value>啟用羅盤</value>
+  </data>
+  <data name="label35.Size" type="System.Drawing.Size, System.Drawing">
+    <value>63, 13</value>
+  </data>
+  <data name="label35.Text" xml:space="preserve">
+    <value>安培/伏特:</value>
+  </data>
+  <data name="label34.Size" type="System.Drawing.Size, System.Drawing">
+    <value>52, 13</value>
+  </data>
+  <data name="label34.Text" xml:space="preserve">
+    <value>分 壓 比:</value>
+  </data>
+  <data name="label33.Size" type="System.Drawing.Size, System.Drawing">
+    <value>58, 13</value>
+  </data>
+  <data name="label33.Text" xml:space="preserve">
+    <value>電池電壓:</value>
+  </data>
+  <data name="label32.Size" type="System.Drawing.Size, System.Drawing">
+    <value>94, 13</value>
+  </data>
+  <data name="label32.Text" xml:space="preserve">
+    <value>測量的電池電壓:</value>
+  </data>
+  <data name="label31.Size" type="System.Drawing.Size, System.Drawing">
+    <value>58, 13</value>
+  </data>
+  <data name="label31.Text" xml:space="preserve">
+    <value>輸入電壓:</value>
+  </data>
+  <data name="textBox3.Text" xml:space="preserve">
+    <value>電壓傳感器校準:
+1. 測量APM輸入電壓,輸入到下方的文本框中
+2. 測量電池電壓,輸入到下方的文本框中
+3. 從當前的傳感器的數據表中找到安培/伏特,輸入到下方的文本框中</value>
+  </data>
+  <data name="label29.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label29.Text" xml:space="preserve">
+    <value>容量</value>
+  </data>
+  <data name="label30.Size" type="System.Drawing.Size, System.Drawing">
+    <value>48, 13</value>
+  </data>
+  <data name="label30.Text" xml:space="preserve">
+    <value>監控器</value>
+  </data>
+  <data name="label28.Size" type="System.Drawing.Size, System.Drawing">
+    <value>175, 13</value>
+  </data>
+  <data name="label28.Text" xml:space="preserve">
+    <value>設置水平面的默認加速度計偏移</value>
+  </data>
+  <data name="label16.Size" type="System.Drawing.Size, System.Drawing">
+    <value>261, 13</value>
+  </data>
+  <data name="label16.Text" xml:space="preserve">
+    <value>注: 圖片只是用於展示,設置可以用於六軸等機架</value>
+  </data>
+  <data name="label15.Size" type="System.Drawing.Size, System.Drawing">
+    <value>93, 13</value>
+  </data>
+  <data name="label15.Text" xml:space="preserve">
+    <value>機架設置 (+ 或 x)</value>
+  </data>
+  <data name="BUT_levelac2.Text" xml:space="preserve">
+    <value>找平</value>
+  </data>
+  <data name="label46.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label46.Text" xml:space="preserve">
+    <value>感度</value>
+  </data>
+  <data name="label45.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label45.Text" xml:space="preserve">
+    <value>啟用</value>
+  </data>
+  <data name="label44.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label44.Text" xml:space="preserve">
+    <value>微調</value>
+  </data>
+  <data name="label43.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label43.Text" xml:space="preserve">
+    <value>逆轉</value>
+  </data>
+  <data name="label42.Size" type="System.Drawing.Size, System.Drawing">
+    <value>43, 13</value>
+  </data>
+  <data name="label42.Text" xml:space="preserve">
+    <value>方向舵</value>
+  </data>
+  <data name="BUT_HS4save.Text" xml:space="preserve">
+    <value>手動</value>
+  </data>
+  <data name="label24.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label24.Text" xml:space="preserve">
+    <value>最大</value>
+  </data>
+  <data name="label40.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label40.Text" xml:space="preserve">
+    <value>最小</value>
+  </data>
+  <data name="BUT_swash_manual.Text" xml:space="preserve">
+    <value>手動</value>
+  </data>
+  <data name="label41.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label41.Text" xml:space="preserve">
+    <value>最低</value>
+  </data>
+  <data name="label21.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label21.Text" xml:space="preserve">
+    <value>最高</value>
+  </data>
+  <data name="BUT_0collective.Text" xml:space="preserve">
+    <value>0度</value>
+  </data>
+  <data name="label39.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label39.Text" xml:space="preserve">
+    <value>微調</value>
+  </data>
+  <data name="label38.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label38.Text" xml:space="preserve">
+    <value>逆轉</value>
+  </data>
+  <data name="label37.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label37.Text" xml:space="preserve">
+    <value>位置</value>
+  </data>
+  <data name="label36.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label36.Text" xml:space="preserve">
+    <value>舵機</value>
+  </data>
+  <data name="label26.Size" type="System.Drawing.Size, System.Drawing">
+    <value>55, 13</value>
+  </data>
+  <data name="label26.Text" xml:space="preserve">
+    <value>最大俯仰</value>
+  </data>
+  <data name="label25.Size" type="System.Drawing.Size, System.Drawing">
+    <value>55, 13</value>
+  </data>
+  <data name="label25.Text" xml:space="preserve">
+    <value>最大側傾</value>
+  </data>
+  <data name="label23.Size" type="System.Drawing.Size, System.Drawing">
+    <value>55, 13</value>
+  </data>
+  <data name="label23.Text" xml:space="preserve">
+    <value>舵機行程</value>
+  </data>
+  <data name="label22.Size" type="System.Drawing.Size, System.Drawing">
+    <value>79, 13</value>
+  </data>
+  <data name="label22.Text" xml:space="preserve">
+    <value>斜盤水平微調</value>
+  </data>
+  <data name="label17.Size" type="System.Drawing.Size, System.Drawing">
+    <value>79, 13</value>
+  </data>
+  <data name="label17.Text" xml:space="preserve">
+    <value>斜盤舵機位置</value>
+  </data>
+  <data name="$this.Text" xml:space="preserve">
+    <value>APM設置</value>
+  </data>
+</root>
\ No newline at end of file
diff --git a/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigArducopter.cs b/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigArducopter.cs
index 772230d33..0d90aedb4 100644
--- a/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigArducopter.cs
+++ b/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigArducopter.cs
@@ -6,10 +6,11 @@ using System.Data;
 using System.Linq;
 using System.Text;
 using System.Windows.Forms;
+using ArdupilotMega.Controls.BackstageView;
 
 namespace ArdupilotMega.GCSViews.ConfigurationView
 {
-    public partial class ConfigArducopter : UserControl
+    public partial class ConfigArducopter : BackStageViewContentPanel
     {
         public ConfigArducopter()
         {
diff --git a/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigArduplane.cs b/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigArduplane.cs
index 8a4ac7a73..96ae024bc 100644
--- a/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigArduplane.cs
+++ b/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigArduplane.cs
@@ -6,10 +6,11 @@ using System.Data;
 using System.Linq;
 using System.Text;
 using System.Windows.Forms;
+using ArdupilotMega.Controls.BackstageView;
 
 namespace ArdupilotMega.GCSViews.ConfigurationView
 {
-    public partial class ConfigArduplane : UserControl
+    public partial class ConfigArduplane : BackStageViewContentPanel
     {
         public ConfigArduplane()
         {
diff --git a/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigBatteryMonitoring.Designer.cs b/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigBatteryMonitoring.Designer.cs
index 268186208..0c3c2c5a7 100644
--- a/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigBatteryMonitoring.Designer.cs
+++ b/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigBatteryMonitoring.Designer.cs
@@ -64,197 +64,127 @@
             this.groupBox4.Controls.Add(this.TXT_voltage);
             this.groupBox4.Controls.Add(this.TXT_inputvoltage);
             this.groupBox4.Controls.Add(this.TXT_measuredvoltage);
-            this.groupBox4.Location = new System.Drawing.Point(14, 172);
+            resources.ApplyResources(this.groupBox4, "groupBox4");
             this.groupBox4.Name = "groupBox4";
-            this.groupBox4.Size = new System.Drawing.Size(238, 131);
-            this.groupBox4.TabIndex = 50;
             this.groupBox4.TabStop = false;
-            this.groupBox4.Text = "Calibration";
             // 
             // label31
             // 
-            this.label31.AutoSize = true;
-            this.label31.ImeMode = System.Windows.Forms.ImeMode.NoControl;
-            this.label31.Location = new System.Drawing.Point(5, 16);
-            this.label31.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
+            resources.ApplyResources(this.label31, "label31");
             this.label31.Name = "label31";
-            this.label31.Size = new System.Drawing.Size(110, 13);
-            this.label31.TabIndex = 29;
-            this.label31.Text = "1. APM Input voltage:";
             // 
             // label32
             // 
-            this.label32.AutoSize = true;
-            this.label32.ImeMode = System.Windows.Forms.ImeMode.NoControl;
-            this.label32.Location = new System.Drawing.Point(5, 38);
-            this.label32.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
+            resources.ApplyResources(this.label32, "label32");
             this.label32.Name = "label32";
-            this.label32.Size = new System.Drawing.Size(142, 13);
-            this.label32.TabIndex = 30;
-            this.label32.Text = "2. Measured battery voltage:";
             // 
             // label33
             // 
-            this.label33.AutoSize = true;
-            this.label33.ImeMode = System.Windows.Forms.ImeMode.NoControl;
-            this.label33.Location = new System.Drawing.Point(5, 60);
-            this.label33.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
+            resources.ApplyResources(this.label33, "label33");
             this.label33.Name = "label33";
-            this.label33.Size = new System.Drawing.Size(135, 13);
-            this.label33.TabIndex = 31;
-            this.label33.Text = "3. Battery voltage (Calced):";
             // 
             // TXT_ampspervolt
             // 
-            this.TXT_ampspervolt.Location = new System.Drawing.Point(149, 100);
-            this.TXT_ampspervolt.Margin = new System.Windows.Forms.Padding(2);
+            resources.ApplyResources(this.TXT_ampspervolt, "TXT_ampspervolt");
             this.TXT_ampspervolt.Name = "TXT_ampspervolt";
-            this.TXT_ampspervolt.Size = new System.Drawing.Size(76, 20);
-            this.TXT_ampspervolt.TabIndex = 38;
+            this.TXT_ampspervolt.Validated += new System.EventHandler(this.TXT_ampspervolt_Validated);
             // 
             // label34
             // 
-            this.label34.AutoSize = true;
-            this.label34.ImeMode = System.Windows.Forms.ImeMode.NoControl;
-            this.label34.Location = new System.Drawing.Point(5, 81);
-            this.label34.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
+            resources.ApplyResources(this.label34, "label34");
             this.label34.Name = "label34";
-            this.label34.Size = new System.Drawing.Size(134, 13);
-            this.label34.TabIndex = 32;
-            this.label34.Text = "4. Voltage divider (Calced):";
             // 
             // TXT_divider
             // 
-            this.TXT_divider.Location = new System.Drawing.Point(149, 78);
-            this.TXT_divider.Margin = new System.Windows.Forms.Padding(2);
+            resources.ApplyResources(this.TXT_divider, "TXT_divider");
             this.TXT_divider.Name = "TXT_divider";
-            this.TXT_divider.Size = new System.Drawing.Size(76, 20);
-            this.TXT_divider.TabIndex = 37;
+            this.TXT_divider.Validated += new System.EventHandler(this.TXT_divider_Validated);
             // 
             // label35
             // 
-            this.label35.AutoSize = true;
-            this.label35.ImeMode = System.Windows.Forms.ImeMode.NoControl;
-            this.label35.Location = new System.Drawing.Point(6, 103);
-            this.label35.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
+            resources.ApplyResources(this.label35, "label35");
             this.label35.Name = "label35";
-            this.label35.Size = new System.Drawing.Size(101, 13);
-            this.label35.TabIndex = 33;
-            this.label35.Text = "5. Amperes per volt:";
             // 
             // TXT_voltage
             // 
-            this.TXT_voltage.Location = new System.Drawing.Point(149, 57);
-            this.TXT_voltage.Margin = new System.Windows.Forms.Padding(2);
+            resources.ApplyResources(this.TXT_voltage, "TXT_voltage");
             this.TXT_voltage.Name = "TXT_voltage";
             this.TXT_voltage.ReadOnly = true;
-            this.TXT_voltage.Size = new System.Drawing.Size(76, 20);
-            this.TXT_voltage.TabIndex = 36;
             // 
             // TXT_inputvoltage
             // 
-            this.TXT_inputvoltage.Location = new System.Drawing.Point(149, 13);
-            this.TXT_inputvoltage.Margin = new System.Windows.Forms.Padding(2);
+            resources.ApplyResources(this.TXT_inputvoltage, "TXT_inputvoltage");
             this.TXT_inputvoltage.Name = "TXT_inputvoltage";
-            this.TXT_inputvoltage.Size = new System.Drawing.Size(76, 20);
-            this.TXT_inputvoltage.TabIndex = 34;
+            this.TXT_inputvoltage.Validated += new System.EventHandler(this.TXT_inputvoltage_Validated);
             // 
             // TXT_measuredvoltage
             // 
-            this.TXT_measuredvoltage.Location = new System.Drawing.Point(149, 35);
-            this.TXT_measuredvoltage.Margin = new System.Windows.Forms.Padding(2);
+            resources.ApplyResources(this.TXT_measuredvoltage, "TXT_measuredvoltage");
             this.TXT_measuredvoltage.Name = "TXT_measuredvoltage";
-            this.TXT_measuredvoltage.Size = new System.Drawing.Size(76, 20);
-            this.TXT_measuredvoltage.TabIndex = 35;
+            this.TXT_measuredvoltage.Validated += new System.EventHandler(this.TXT_measuredvoltage_Validated);
             // 
             // label47
             // 
-            this.label47.ImeMode = System.Windows.Forms.ImeMode.NoControl;
-            this.label47.Location = new System.Drawing.Point(106, 71);
+            resources.ApplyResources(this.label47, "label47");
             this.label47.Name = "label47";
-            this.label47.Size = new System.Drawing.Size(42, 13);
-            this.label47.TabIndex = 49;
-            this.label47.Text = "Sensor";
             // 
             // CMB_batmonsensortype
             // 
             this.CMB_batmonsensortype.FormattingEnabled = true;
             this.CMB_batmonsensortype.Items.AddRange(new object[] {
-            "0: Other",
-            "1: AttoPilot 45A",
-            "2: AttoPilot 90A",
-            "3: AttoPilot 180A"});
-            this.CMB_batmonsensortype.Location = new System.Drawing.Point(160, 68);
+            resources.GetString("CMB_batmonsensortype.Items"),
+            resources.GetString("CMB_batmonsensortype.Items1"),
+            resources.GetString("CMB_batmonsensortype.Items2"),
+            resources.GetString("CMB_batmonsensortype.Items3")});
+            resources.ApplyResources(this.CMB_batmonsensortype, "CMB_batmonsensortype");
             this.CMB_batmonsensortype.Name = "CMB_batmonsensortype";
-            this.CMB_batmonsensortype.Size = new System.Drawing.Size(121, 21);
-            this.CMB_batmonsensortype.TabIndex = 48;
+            this.CMB_batmonsensortype.SelectedIndexChanged += new System.EventHandler(this.CMB_batmonsensortype_SelectedIndexChanged);
             // 
             // textBox3
             // 
-            this.textBox3.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F);
-            this.textBox3.Location = new System.Drawing.Point(282, 172);
-            this.textBox3.Margin = new System.Windows.Forms.Padding(2);
-            this.textBox3.Multiline = true;
+            resources.ApplyResources(this.textBox3, "textBox3");
             this.textBox3.Name = "textBox3";
             this.textBox3.ReadOnly = true;
-            this.textBox3.Size = new System.Drawing.Size(219, 131);
-            this.textBox3.TabIndex = 47;
-            this.textBox3.Text = resources.GetString("textBox3.Text");
             // 
             // label29
             // 
-            this.label29.AutoSize = true;
-            this.label29.ImeMode = System.Windows.Forms.ImeMode.NoControl;
-            this.label29.Location = new System.Drawing.Point(288, 45);
+            resources.ApplyResources(this.label29, "label29");
             this.label29.Name = "label29";
-            this.label29.Size = new System.Drawing.Size(48, 13);
-            this.label29.TabIndex = 43;
-            this.label29.Text = "Capacity";
             // 
             // label30
             // 
-            this.label30.ImeMode = System.Windows.Forms.ImeMode.NoControl;
-            this.label30.Location = new System.Drawing.Point(106, 45);
+            resources.ApplyResources(this.label30, "label30");
             this.label30.Name = "label30";
-            this.label30.Size = new System.Drawing.Size(42, 13);
-            this.label30.TabIndex = 44;
-            this.label30.Text = "Monitor";
             // 
             // TXT_battcapacity
             // 
-            this.TXT_battcapacity.Location = new System.Drawing.Point(349, 42);
+            resources.ApplyResources(this.TXT_battcapacity, "TXT_battcapacity");
             this.TXT_battcapacity.Name = "TXT_battcapacity";
-            this.TXT_battcapacity.Size = new System.Drawing.Size(83, 20);
-            this.TXT_battcapacity.TabIndex = 45;
+            this.TXT_battcapacity.Validated += new System.EventHandler(this.TXT_battcapacity_Validated);
             // 
             // CMB_batmontype
             // 
             this.CMB_batmontype.FormattingEnabled = true;
             this.CMB_batmontype.Items.AddRange(new object[] {
-            "0: Disabled",
-            "3: Battery Volts",
-            "4: Volts & Current"});
-            this.CMB_batmontype.Location = new System.Drawing.Point(160, 41);
+            resources.GetString("CMB_batmontype.Items"),
+            resources.GetString("CMB_batmontype.Items1"),
+            resources.GetString("CMB_batmontype.Items2")});
+            resources.ApplyResources(this.CMB_batmontype, "CMB_batmontype");
             this.CMB_batmontype.Name = "CMB_batmontype";
-            this.CMB_batmontype.Size = new System.Drawing.Size(121, 21);
-            this.CMB_batmontype.TabIndex = 46;
+            this.CMB_batmontype.SelectedIndexChanged += new System.EventHandler(this.CMB_batmontype_SelectedIndexChanged);
             // 
             // pictureBox5
             // 
             this.pictureBox5.BackColor = System.Drawing.Color.White;
             this.pictureBox5.BackgroundImage = global::ArdupilotMega.Properties.Resources.attocurrent;
-            this.pictureBox5.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom;
+            resources.ApplyResources(this.pictureBox5, "pictureBox5");
             this.pictureBox5.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
-            this.pictureBox5.ImeMode = System.Windows.Forms.ImeMode.NoControl;
-            this.pictureBox5.Location = new System.Drawing.Point(14, 16);
             this.pictureBox5.Name = "pictureBox5";
-            this.pictureBox5.Size = new System.Drawing.Size(75, 75);
-            this.pictureBox5.TabIndex = 42;
             this.pictureBox5.TabStop = false;
             // 
             // ConfigBatteryMonitoring
             // 
-            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+            resources.ApplyResources(this, "$this");
             this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
             this.Controls.Add(this.groupBox4);
             this.Controls.Add(this.label47);
@@ -266,7 +196,7 @@
             this.Controls.Add(this.CMB_batmontype);
             this.Controls.Add(this.pictureBox5);
             this.Name = "ConfigBatteryMonitoring";
-            this.Size = new System.Drawing.Size(518, 322);
+            this.Load += new System.EventHandler(this.ConfigBatteryMonitoring_Load);
             this.groupBox4.ResumeLayout(false);
             this.groupBox4.PerformLayout();
             ((System.ComponentModel.ISupportInitialize)(this.pictureBox5)).EndInit();
diff --git a/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigBatteryMonitoring.cs b/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigBatteryMonitoring.cs
index 9ad384538..d84fe9af3 100644
--- a/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigBatteryMonitoring.cs
+++ b/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigBatteryMonitoring.cs
@@ -6,14 +6,357 @@ using System.Data;
 using System.Linq;
 using System.Text;
 using System.Windows.Forms;
+using ArdupilotMega.Controls.BackstageView;
 
 namespace ArdupilotMega.GCSViews.ConfigurationView
 {
-    public partial class ConfigBatteryMonitoring : UserControl
+    public partial class ConfigBatteryMonitoring : BackStageViewContentPanel
     {
+        bool startup = false;
+
         public ConfigBatteryMonitoring()
         {
             InitializeComponent();
         }
+
+        private void CHK_enablebattmon_CheckedChanged(object sender, EventArgs e)
+        {
+            if (startup)
+                return;
+            try
+            {
+                if (((CheckBox)sender).Checked == false)
+                {
+                    CMB_batmontype.SelectedIndex = 0;
+                }
+                else
+                {
+                    if (CMB_batmontype.SelectedIndex <= 0)
+                        CMB_batmontype.SelectedIndex = 1;
+                }
+            }
+            catch { CustomMessageBox.Show("Set BATT_MONITOR Failed"); }
+        }
+        private void TXT_battcapacity_Validating(object sender, CancelEventArgs e)
+        {
+            float ans = 0;
+            e.Cancel = !float.TryParse(TXT_battcapacity.Text, out ans);
+        }
+        private void TXT_battcapacity_Validated(object sender, EventArgs e)
+        {
+            if (startup || ((TextBox)sender).Enabled == false)
+                return;
+            try
+            {
+                if (MainV2.comPort.param["BATT_CAPACITY"] == null)
+                {
+                    CustomMessageBox.Show("Not Available");
+                }
+                else
+                {
+                    MainV2.comPort.setParam("BATT_CAPACITY", float.Parse(TXT_battcapacity.Text));
+                }
+            }
+            catch { CustomMessageBox.Show("Set BATT_CAPACITY Failed"); }
+        }
+        private void CMB_batmontype_SelectedIndexChanged(object sender, EventArgs e)
+        {
+            if (startup)
+                return;
+            try
+            {
+                if (MainV2.comPort.param["BATT_MONITOR"] == null)
+                {
+                    CustomMessageBox.Show("Not Available");
+                }
+                else
+                {
+                    int selection = int.Parse(CMB_batmontype.Text.Substring(0, 1));
+
+                    CMB_batmonsensortype.Enabled = true;
+
+                    TXT_voltage.Enabled = false;
+
+                    if (selection == 0)
+                    {
+                        CMB_batmonsensortype.Enabled = false;
+                        groupBox4.Enabled = false;
+                    }
+                    else if (selection == 4)
+                    {
+                        CMB_batmonsensortype.Enabled = true;
+                        groupBox4.Enabled = true;
+                        TXT_ampspervolt.Enabled = true;
+                    }
+                    else if (selection == 3)
+                    {
+                        groupBox4.Enabled = true;
+                        CMB_batmonsensortype.Enabled = false;
+                        TXT_ampspervolt.Enabled = false;
+                        TXT_inputvoltage.Enabled = true;
+                        TXT_measuredvoltage.Enabled = true;
+                        TXT_divider.Enabled = true;
+                    }
+
+                    MainV2.comPort.setParam("BATT_MONITOR", selection);
+                }
+            }
+            catch { CustomMessageBox.Show("Set BATT_MONITOR Failed"); }
+        }
+        private void TXT_inputvoltage_Validating(object sender, CancelEventArgs e)
+        {
+            float ans = 0;
+            e.Cancel = !float.TryParse(TXT_inputvoltage.Text, out ans);
+        }
+        private void TXT_inputvoltage_Validated(object sender, EventArgs e)
+        {
+            if (startup || ((TextBox)sender).Enabled == false)
+                return;
+            try
+            {
+                if (MainV2.comPort.param["INPUT_VOLTS"] == null)
+                {
+                    CustomMessageBox.Show("Not Available");
+                }
+                else
+                {
+                    MainV2.comPort.setParam("INPUT_VOLTS", float.Parse(TXT_inputvoltage.Text));
+                }
+            }
+            catch { CustomMessageBox.Show("Set INPUT_VOLTS Failed"); }
+        }
+        private void TXT_measuredvoltage_Validating(object sender, CancelEventArgs e)
+        {
+            float ans = 0;
+            e.Cancel = !float.TryParse(TXT_measuredvoltage.Text, out ans);
+        }
+        private void TXT_measuredvoltage_Validated(object sender, EventArgs e)
+        {
+            if (startup || ((TextBox)sender).Enabled == false)
+                return;
+            try
+            {
+                float measuredvoltage = float.Parse(TXT_measuredvoltage.Text);
+                float voltage = float.Parse(TXT_voltage.Text);
+                float divider = float.Parse(TXT_divider.Text);
+                if (voltage == 0)
+                    return;
+                float new_divider = (measuredvoltage * divider) / voltage;
+                TXT_divider.Text = new_divider.ToString();
+            }
+            catch { CustomMessageBox.Show("Invalid number entered"); return; }
+
+            try
+            {
+                if (MainV2.comPort.param["VOLT_DIVIDER"] == null)
+                {
+                    CustomMessageBox.Show("Not Available");
+                }
+                else
+                {
+                    MainV2.comPort.setParam("VOLT_DIVIDER", float.Parse(TXT_divider.Text));
+                }
+            }
+            catch { CustomMessageBox.Show("Set VOLT_DIVIDER Failed"); }
+        }
+        private void TXT_divider_Validating(object sender, CancelEventArgs e)
+        {
+            float ans = 0;
+            e.Cancel = !float.TryParse(TXT_divider.Text, out ans);
+        }
+        private void TXT_divider_Validated(object sender, EventArgs e)
+        {
+            if (startup || ((TextBox)sender).Enabled == false)
+                return;
+            try
+            {
+                if (MainV2.comPort.param["VOLT_DIVIDER"] == null)
+                {
+                    CustomMessageBox.Show("Not Available");
+                }
+                else
+                {
+                    MainV2.comPort.setParam("VOLT_DIVIDER", float.Parse(TXT_divider.Text));
+                }
+            }
+            catch { CustomMessageBox.Show("Set VOLT_DIVIDER Failed"); }
+        }
+        private void TXT_ampspervolt_Validating(object sender, CancelEventArgs e)
+        {
+            float ans = 0;
+            e.Cancel = !float.TryParse(TXT_ampspervolt.Text, out ans);
+        }
+        private void TXT_ampspervolt_Validated(object sender, EventArgs e)
+        {
+            if (startup || ((TextBox)sender).Enabled == false)
+                return;
+            try
+            {
+                if (MainV2.comPort.param["AMP_PER_VOLT"] == null)
+                {
+                    CustomMessageBox.Show("Not Available");
+                }
+                else
+                {
+                    MainV2.comPort.setParam("AMP_PER_VOLT", float.Parse(TXT_ampspervolt.Text));
+                }
+            }
+            catch { CustomMessageBox.Show("Set AMP_PER_VOLT Failed"); }
+        }
+
+        private void CMB_batmonsensortype_SelectedIndexChanged(object sender, EventArgs e)
+        {
+            int selection = int.Parse(CMB_batmonsensortype.Text.Substring(0, 1));
+
+
+            if (selection == 1) // atto 45
+            {
+                float maxvolt = 13.6f;
+                float maxamps = 44.7f;
+                float mvpervolt = 242.3f;
+                float mvperamp = 73.20f;
+
+                // ~ 3.295v
+                float topvolt = (maxvolt * mvpervolt) / 1000;
+                // ~ 3.294v
+                float topamps = (maxamps * mvperamp) / 1000;
+
+                TXT_divider.Text = (maxvolt / topvolt).ToString();
+                TXT_ampspervolt.Text = (maxamps / topamps).ToString();
+            }
+            else if (selection == 2) // atto 90
+            {
+                float maxvolt = 50f;
+                float maxamps = 89.4f;
+                float mvpervolt = 63.69f;
+                float mvperamp = 36.60f;
+
+                float topvolt = (maxvolt * mvpervolt) / 1000;
+                float topamps = (maxamps * mvperamp) / 1000;
+
+                TXT_divider.Text = (maxvolt / topvolt).ToString();
+                TXT_ampspervolt.Text = (maxamps / topamps).ToString();
+            }
+            else if (selection == 3) // atto 180
+            {
+                float maxvolt = 50f;
+                float maxamps = 178.8f;
+                float mvpervolt = 63.69f;
+                float mvperamp = 18.30f;
+
+                float topvolt = (maxvolt * mvpervolt) / 1000;
+                float topamps = (maxamps * mvperamp) / 1000;
+
+                TXT_divider.Text = (maxvolt / topvolt).ToString();
+                TXT_ampspervolt.Text = (maxamps / topamps).ToString();
+            }
+
+            // enable to update
+            TXT_divider.Enabled = true;
+            TXT_ampspervolt.Enabled = true;
+            TXT_measuredvoltage.Enabled = true;
+            TXT_inputvoltage.Enabled = true;
+
+            // update
+            TXT_ampspervolt_Validated(TXT_ampspervolt, null);
+
+            TXT_divider_Validated(TXT_divider, null);
+
+            // disable
+            TXT_divider.Enabled = false;
+            TXT_ampspervolt.Enabled = false;
+            TXT_measuredvoltage.Enabled = false;
+
+            //reenable if needed
+            if (selection == 0)
+            {
+                TXT_divider.Enabled = true;
+                TXT_ampspervolt.Enabled = true;
+                TXT_measuredvoltage.Enabled = true;
+                TXT_inputvoltage.Enabled = true;
+            }
+        }
+
+        private void ConfigBatteryMonitoring_Load(object sender, EventArgs e)
+        {
+            if (!MainV2.comPort.BaseStream.IsOpen)
+            {
+                this.Enabled = false;
+                return;
+            }
+            else
+            {
+                this.Enabled = true;
+            }
+
+            startup = true;
+            bool not_supported = false;
+            if (MainV2.comPort.param["BATT_MONITOR"] != null)
+            {
+                if (MainV2.comPort.param["BATT_MONITOR"].ToString() != "0.0")
+                {
+                    CMB_batmontype.SelectedIndex = getIndex(CMB_batmontype, (int)float.Parse(MainV2.comPort.param["BATT_MONITOR"].ToString()));
+                }
+
+                // ignore language re . vs ,
+
+                if (TXT_ampspervolt.Text == (13.6612).ToString())
+                {
+                    CMB_batmonsensortype.SelectedIndex = 1;
+                }
+                else if (TXT_ampspervolt.Text == (27.3224).ToString())
+                {
+                    CMB_batmonsensortype.SelectedIndex = 2;
+                }
+                else if (TXT_ampspervolt.Text == (54.64481).ToString())
+                {
+                    CMB_batmonsensortype.SelectedIndex = 3;
+                }
+                else
+                {
+                    CMB_batmonsensortype.SelectedIndex = 0;
+                }
+
+            }
+
+            if (MainV2.comPort.param["BATT_CAPACITY"] != null)
+                TXT_battcapacity.Text = MainV2.comPort.param["BATT_CAPACITY"].ToString();
+            if (MainV2.comPort.param["INPUT_VOLTS"] != null)
+                TXT_inputvoltage.Text = MainV2.comPort.param["INPUT_VOLTS"].ToString();
+            else
+                not_supported = true;
+            TXT_voltage.Text = MainV2.cs.battery_voltage.ToString();
+            TXT_measuredvoltage.Text = TXT_voltage.Text;
+            if (MainV2.comPort.param["VOLT_DIVIDER"] != null)
+                TXT_divider.Text = MainV2.comPort.param["VOLT_DIVIDER"].ToString();
+            else
+                not_supported = true;
+            if (MainV2.comPort.param["AMP_PER_VOLT"] != null)
+                TXT_ampspervolt.Text = MainV2.comPort.param["AMP_PER_VOLT"].ToString();
+            else
+                not_supported = true;
+            if (not_supported)
+            {
+                TXT_inputvoltage.Enabled = false;
+                TXT_measuredvoltage.Enabled = false;
+                TXT_divider.Enabled = false;
+                TXT_ampspervolt.Enabled = false;
+            }
+
+            startup = false;
+        }
+
+        int getIndex(ComboBox ctl, int no)
+        {
+            foreach (var item in ctl.Items)
+            {
+                int ans = int.Parse(item.ToString().Substring(0, 1));
+
+                if (ans == no)
+                    return ctl.Items.IndexOf(item);
+            }
+
+            return -1;
+        }  
     }
 }
diff --git a/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigBatteryMonitoring.es-ES.resx b/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigBatteryMonitoring.es-ES.resx
new file mode 100644
index 000000000..70ad73f1a
--- /dev/null
+++ b/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigBatteryMonitoring.es-ES.resx
@@ -0,0 +1,315 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <data name="SV3_POS_.Text" xml:space="preserve">
+    <value>180</value>
+  </data>
+  <data name="BUT_HS4save.Text" xml:space="preserve">
+    <value>Manual</value>
+  </data>
+  <data name="label12.Text" xml:space="preserve">
+    <value>PWM 0 - 1230</value>
+  </data>
+  <data name="label10.Text" xml:space="preserve">
+    <value>PWM 1621 - 1749</value>
+  </data>
+  <data name="label13.Text" xml:space="preserve">
+    <value>Modo actual:</value>
+  </data>
+  <data name="CHK_enableoptflow.Text" xml:space="preserve">
+    <value>Habilitar el flujo óptico</value>
+  </data>
+  <data name="label16.Text" xml:space="preserve">
+    <value>NOTA: Las imágenes son sólo para su presentación</value>
+  </data>
+  <data name="CB_simple5.Text" xml:space="preserve">
+    <value>Modo Simple</value>
+  </data>
+  <data name="label11.Text" xml:space="preserve">
+    <value>PWM 1750 +</value>
+  </data>
+  <data name="CHK_elevonch1rev.Text" xml:space="preserve">
+    <value>Elevons CH1 Rev</value>
+  </data>
+  <data name="label14.Text" xml:space="preserve">
+    <value>PWM Actual:</value>
+  </data>
+  <data name="$this.Text" xml:space="preserve">
+    <value>APMSetup</value>
+  </data>
+  <data name="label17.Text" xml:space="preserve">
+    <value>Swash-Servo posición</value>
+  </data>
+  <data name="CHK_enablecompass.Text" xml:space="preserve">
+    <value>Activar Compas</value>
+  </data>
+  <data name="CB_simple4.Text" xml:space="preserve">
+    <value>Modo Simple</value>
+  </data>
+  <data name="tabArducopter.Text" xml:space="preserve">
+    <value>ArduCopter2</value>
+  </data>
+  <data name="CB_simple1.Text" xml:space="preserve">
+    <value>Modo Simple</value>
+  </data>
+  <data name="label15.Text" xml:space="preserve">
+    <value>Ajuste Chásis (+ or x)</value>
+  </data>
+  <data name="SV2_POS_.Text" xml:space="preserve">
+    <value>60</value>
+  </data>
+  <data name="label18.Text" xml:space="preserve">
+    <value>1</value>
+  </data>
+  <data name="CB_simple6.Text" xml:space="preserve">
+    <value>Modo Simple</value>
+  </data>
+  <data name="CB_simple3.Text" xml:space="preserve">
+    <value>Modo Simple</value>
+  </data>
+  <data name="label19.Text" xml:space="preserve">
+    <value>2</value>
+  </data>
+  <data name="tabModes.Text" xml:space="preserve">
+    <value>Modos</value>
+  </data>
+  <data name="CB_simple2.Text" xml:space="preserve">
+    <value>Modo Simple</value>
+  </data>
+  <data name="label20.Text" xml:space="preserve">
+    <value>3</value>
+  </data>
+  <data name="tabReset.Text" xml:space="preserve">
+    <value>Reset</value>
+  </data>
+  <data name="SV1_POS_.Text" xml:space="preserve">
+    <value>-60</value>
+  </data>
+  <data name="label21.Text" xml:space="preserve">
+    <value>Superior</value>
+  </data>
+  <data name="label22.Text" xml:space="preserve">
+    <value>Swash de Viaje</value>
+  </data>
+  <data name="lbl_currentmode.Text" xml:space="preserve">
+    <value>Manual</value>
+  </data>
+  <data name="label23.Text" xml:space="preserve">
+    <value>Timón de Viaje</value>
+  </data>
+  <data name="textBox3.Text" xml:space="preserve">
+    <value>Calibración del sensor de voltaje:Para calibrar el sensor, use un multímetro para medir la tensión que sale de la CES de la batería-la eliminación del circuito (se trata de cables negro y rojo en el cable de tres hilos que suministra energía a la placa APM).Luego reste 0,3 V de ese valor y entrar en él en el campo # 1 a la izquierda.</value>
+  </data>
+  <data name="BUT_Calibrateradio.Text" xml:space="preserve">
+    <value>Calibrar Radio</value>
+  </data>
+  <data name="label24.Text" xml:space="preserve">
+    <value>Max</value>
+  </data>
+  <data name="label2.Text" xml:space="preserve">
+    <value>Modo de Vuelo 2</value>
+  </data>
+  <data name="label25.Text" xml:space="preserve">
+    <value>Alabeo Max</value>
+  </data>
+  <data name="label3.Text" xml:space="preserve">
+    <value>Modo de Vuelo 3</value>
+  </data>
+  <data name="label26.Text" xml:space="preserve">
+    <value>Cabeceo Max</value>
+  </data>
+  <data name="label27.Text" xml:space="preserve">
+    <value>por ejemplo, en grados 2 ° 3 'W es -2,3</value>
+  </data>
+  <data name="label1.Text" xml:space="preserve">
+    <value>Modo de Vuelo 1</value>
+  </data>
+  <data name="label28.Text" xml:space="preserve">
+    <value>Nivel tu quad para establecer las compensaciones por defecto acel</value>
+  </data>
+  <data name="label6.Text" xml:space="preserve">
+    <value>Modo de Vuelo 6</value>
+  </data>
+  <data name="label29.Text" xml:space="preserve">
+    <value>Capacidad</value>
+  </data>
+  <data name="label100.Text" xml:space="preserve">
+    <value>Declinación</value>
+  </data>
+  <data name="CHK_enablesonar.Text" xml:space="preserve">
+    <value>Activar Sonar</value>
+  </data>
+  <data name="label7.Text" xml:space="preserve">
+    <value>PWM 1231 - 1360</value>
+  </data>
+  <data name="tabRadioIn.Text" xml:space="preserve">
+    <value>Entrada Radio</value>
+  </data>
+  <data name="groupBox4.Text" xml:space="preserve">
+    <value>Calibración</value>
+  </data>
+  <data name="HS4_MIN.Text" xml:space="preserve">
+    <value>1500</value>
+  </data>
+  <data name="label4.Text" xml:space="preserve">
+    <value>Modo de Vuelo 4</value>
+  </data>
+  <data name="label5.Text" xml:space="preserve">
+    <value>Modo de Vuelo 5</value>
+  </data>
+  <data name="groupBox3.Text" xml:space="preserve">
+    <value>Gyro</value>
+  </data>
+  <data name="label8.Text" xml:space="preserve">
+    <value>PWM 1361 - 1490</value>
+  </data>
+  <data name="tabHardware.Text" xml:space="preserve">
+    <value>Hardware</value>
+  </data>
+  <data name="label9.Text" xml:space="preserve">
+    <value>PWM 1491 - 1620</value>
+  </data>
+  <data name="linkLabelmagdec.Text" xml:space="preserve">
+    <value>Sitio Web Declinación</value>
+  </data>
+  <data name="HS4_MAX.Text" xml:space="preserve">
+    <value>1500</value>
+  </data>
+  <data name="tabBattery.Text" xml:space="preserve">
+    <value>Batería</value>
+  </data>
+  <data name="BUT_0collective.Text" xml:space="preserve">
+    <value>Cero</value>
+  </data>
+  <data name="CHK_enableairspeed.Text" xml:space="preserve">
+    <value>Activar Airspeed</value>
+  </data>
+  <data name="PIT_MAX_.Text" xml:space="preserve">
+    <value>4500</value>
+  </data>
+  <data name="BUT_reset.Text" xml:space="preserve">
+    <value>Restablecer los Ajustes de hardware APM</value>
+  </data>
+  <data name="GYR_GAIN_.Text" xml:space="preserve">
+    <value>1000</value>
+  </data>
+  <data name="label30.Text" xml:space="preserve">
+    <value>Monitor</value>
+  </data>
+</root>
\ No newline at end of file
diff --git a/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigBatteryMonitoring.fr.resx b/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigBatteryMonitoring.fr.resx
new file mode 100644
index 000000000..1bd274bee
--- /dev/null
+++ b/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigBatteryMonitoring.fr.resx
@@ -0,0 +1,312 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <data name="SV3_POS_.Text" xml:space="preserve">
+    <value>180</value>
+  </data>
+  <data name="BUT_HS4save.Text" xml:space="preserve">
+    <value>Manuel</value>
+  </data>
+  <data name="label12.Text" xml:space="preserve">
+    <value>PWM 0 - 1230</value>
+  </data>
+  <data name="label10.Text" xml:space="preserve">
+    <value>PWM 1621 - 1749</value>
+  </data>
+  <data name="label13.Text" xml:space="preserve">
+    <value>Mode Courant:</value>
+  </data>
+  <data name="CHK_enableoptflow.Text" xml:space="preserve">
+    <value>Activ. capteur optique</value>
+  </data>
+  <data name="label16.Text" xml:space="preserve">
+    <value>NOTE: images pou presentation uniquement. Fonctionnel pour Hex, Octo etc...</value>
+  </data>
+  <data name="CB_simple5.Text" xml:space="preserve">
+    <value>Mode Simple</value>
+  </data>
+  <data name="label11.Text" xml:space="preserve">
+    <value>PWM 1750 +</value>
+  </data>
+  <data name="CHK_elevonch1rev.Text" xml:space="preserve">
+    <value>Elevons CH1 Rev</value>
+  </data>
+  <data name="label14.Text" xml:space="preserve">
+    <value>PWM Actuel:</value>
+  </data>
+  <data name="$this.Text" xml:space="preserve">
+    <value>APMSetup</value>
+  </data>
+  <data name="label17.Text" xml:space="preserve">
+    <value>Swash-Servo position</value>
+  </data>
+  <data name="CHK_enablecompass.Text" xml:space="preserve">
+    <value>Activ. Boussole</value>
+  </data>
+  <data name="CB_simple4.Text" xml:space="preserve">
+    <value>Mode Simple</value>
+  </data>
+  <data name="tabArducopter.Text" xml:space="preserve">
+    <value>ArduCopter2</value>
+  </data>
+  <data name="CB_simple1.Text" xml:space="preserve">
+    <value>Mode Simple</value>
+  </data>
+  <data name="label15.Text" xml:space="preserve">
+    <value>type de châssis (+ ou x)</value>
+  </data>
+  <data name="SV2_POS_.Text" xml:space="preserve">
+    <value>60</value>
+  </data>
+  <data name="label18.Text" xml:space="preserve">
+    <value>1</value>
+  </data>
+  <data name="CB_simple6.Text" xml:space="preserve">
+    <value>Mode Simple</value>
+  </data>
+  <data name="CB_simple3.Text" xml:space="preserve">
+    <value>Mode Simple</value>
+  </data>
+  <data name="label19.Text" xml:space="preserve">
+    <value>2</value>
+  </data>
+  <data name="tabModes.Text" xml:space="preserve">
+    <value>Modes</value>
+  </data>
+  <data name="CB_simple2.Text" xml:space="preserve">
+    <value>Mode Simple</value>
+  </data>
+  <data name="label20.Text" xml:space="preserve">
+    <value>3</value>
+  </data>
+  <data name="tabReset.Text" xml:space="preserve">
+    <value>Réinit.</value>
+  </data>
+  <data name="SV1_POS_.Text" xml:space="preserve">
+    <value>-60</value>
+  </data>
+  <data name="label21.Text" xml:space="preserve">
+    <value>Haut</value>
+  </data>
+  <data name="label22.Text" xml:space="preserve">
+    <value>Mouvement Swash</value>
+  </data>
+  <data name="lbl_currentmode.Text" xml:space="preserve">
+    <value>Manuel</value>
+  </data>
+  <data name="label23.Text" xml:space="preserve">
+    <value>Deplac. du Gouvernail</value>
+  </data>
+  <data name="textBox3.Text" xml:space="preserve">
+    <value>Calibration du capteur de Voltage.1. Mesurer le voltage sur APM et inscrivez-le dans la boite ci-bas.2. Mesurer le voltage de la batterie et inscrivez-le dans la boite ci-bas.3. Inscrire les ampères par volt de la documentation du capteur de courant ci-bas</value>
+  </data>
+  <data name="BUT_Calibrateradio.Text" xml:space="preserve">
+    <value>Calibrer Radio</value>
+  </data>
+  <data name="label24.Text" xml:space="preserve">
+    <value>Max</value>
+  </data>
+  <data name="label2.Text" xml:space="preserve">
+    <value>Mode de vol 2</value>
+  </data>
+  <data name="label25.Text" xml:space="preserve">
+    <value>Roulis Max</value>
+  </data>
+  <data name="label3.Text" xml:space="preserve">
+    <value>Mode de vol 2</value>
+  </data>
+  <data name="label26.Text" xml:space="preserve">
+    <value>Tangage Max</value>
+  </data>
+  <data name="label27.Text" xml:space="preserve">
+    <value>en degrés eg 2° 3' W est -2.3</value>
+  </data>
+  <data name="label1.Text" xml:space="preserve">
+    <value>Mode de vol 1</value>
+  </data>
+  <data name="label28.Text" xml:space="preserve">
+    <value>Niveler l'apareil pour copensation des accels</value>
+  </data>
+  <data name="label6.Text" xml:space="preserve">
+    <value>Mode de vol 6</value>
+  </data>
+  <data name="label29.Text" xml:space="preserve">
+    <value>Capacité</value>
+  </data>
+  <data name="label100.Text" xml:space="preserve">
+    <value>Déclination</value>
+  </data>
+  <data name="CHK_enablesonar.Text" xml:space="preserve">
+    <value>Activer Sonar</value>
+  </data>
+  <data name="label7.Text" xml:space="preserve">
+    <value>PWM 1231 - 1360</value>
+  </data>
+  <data name="tabRadioIn.Text" xml:space="preserve">
+    <value>Entrée Radio</value>
+  </data>
+  <data name="HS4_MIN.Text" xml:space="preserve">
+    <value>1500</value>
+  </data>
+  <data name="label4.Text" xml:space="preserve">
+    <value>Mode de vol 4</value>
+  </data>
+  <data name="label5.Text" xml:space="preserve">
+    <value>Mode de vol 5</value>
+  </data>
+  <data name="groupBox3.Text" xml:space="preserve">
+    <value>Gyro</value>
+  </data>
+  <data name="label8.Text" xml:space="preserve">
+    <value>PWM 1361 - 1490</value>
+  </data>
+  <data name="tabHardware.Text" xml:space="preserve">
+    <value>Matériel</value>
+  </data>
+  <data name="label9.Text" xml:space="preserve">
+    <value>PWM 1491 - 1620</value>
+  </data>
+  <data name="linkLabelmagdec.Text" xml:space="preserve">
+    <value>Site Web Déclination</value>
+  </data>
+  <data name="HS4_MAX.Text" xml:space="preserve">
+    <value>1500</value>
+  </data>
+  <data name="tabBattery.Text" xml:space="preserve">
+    <value>Batterie</value>
+  </data>
+  <data name="BUT_0collective.Text" xml:space="preserve">
+    <value>Zéro</value>
+  </data>
+  <data name="CHK_enableairspeed.Text" xml:space="preserve">
+    <value>Activ. Airspeed</value>
+  </data>
+  <data name="PIT_MAX_.Text" xml:space="preserve">
+    <value>4500</value>
+  </data>
+  <data name="BUT_reset.Text" xml:space="preserve">
+    <value>RàZ tout parametres du APM</value>
+  </data>
+  <data name="GYR_GAIN_.Text" xml:space="preserve">
+    <value>1000</value>
+  </data>
+  <data name="label30.Text" xml:space="preserve">
+    <value>Moniteur</value>
+  </data>
+</root>
\ No newline at end of file
diff --git a/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigBatteryMonitoring.it-IT.resx b/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigBatteryMonitoring.it-IT.resx
new file mode 100644
index 000000000..2b2636c81
--- /dev/null
+++ b/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigBatteryMonitoring.it-IT.resx
@@ -0,0 +1,318 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <data name="SV3_POS_.Text" xml:space="preserve">
+    <value>180</value>
+  </data>
+  <data name="BUT_HS4save.Text" xml:space="preserve">
+    <value>Manuale</value>
+  </data>
+  <data name="label12.Text" xml:space="preserve">
+    <value>PWM 0 - 1230</value>
+  </data>
+  <data name="label10.Text" xml:space="preserve">
+    <value>PWM 1621 - 1749</value>
+  </data>
+  <data name="label13.Text" xml:space="preserve">
+    <value>Modo Corrente:</value>
+  </data>
+  <data name="CHK_enableoptflow.Text" xml:space="preserve">
+    <value>Abilita Flusso ottico</value>
+  </data>
+  <data name="label16.Text" xml:space="preserve">
+    <value>Nota: le immagini sono sono per presentazione, funzionerà con Hexa, etc.</value>
+  </data>
+  <data name="CB_simple5.Text" xml:space="preserve">
+    <value>Modo Semplice</value>
+  </data>
+  <data name="label11.Text" xml:space="preserve">
+    <value>PWM 1750 +</value>
+  </data>
+  <data name="CHK_elevonch1rev.Text" xml:space="preserve">
+    <value>Elevatore CH1 Rev</value>
+  </data>
+  <data name="label14.Text" xml:space="preserve">
+    <value>PWM Corrente:</value>
+  </data>
+  <data name="$this.Text" xml:space="preserve">
+    <value>Imposta APM</value>
+  </data>
+  <data name="label17.Text" xml:space="preserve">
+    <value>Posizione del servo del piatto</value>
+  </data>
+  <data name="CHK_enablecompass.Text" xml:space="preserve">
+    <value>Abilita Magnetometro</value>
+  </data>
+  <data name="CB_simple4.Text" xml:space="preserve">
+    <value>Modo Semplice</value>
+  </data>
+  <data name="tabArducopter.Text" xml:space="preserve">
+    <value>ArduCopter2</value>
+  </data>
+  <data name="CB_simple1.Text" xml:space="preserve">
+    <value>Modo Semplice</value>
+  </data>
+  <data name="label15.Text" xml:space="preserve">
+    <value>Imposta Frame (+ or x)</value>
+  </data>
+  <data name="SV2_POS_.Text" xml:space="preserve">
+    <value>60</value>
+  </data>
+  <data name="label18.Text" xml:space="preserve">
+    <value>1</value>
+  </data>
+  <data name="CB_simple6.Text" xml:space="preserve">
+    <value>Modo Semplice</value>
+  </data>
+  <data name="CB_simple3.Text" xml:space="preserve">
+    <value>Modo Semplice</value>
+  </data>
+  <data name="label19.Text" xml:space="preserve">
+    <value>2</value>
+  </data>
+  <data name="tabModes.Text" xml:space="preserve">
+    <value>Modi</value>
+  </data>
+  <data name="CB_simple2.Text" xml:space="preserve">
+    <value>Modo Semplice</value>
+  </data>
+  <data name="label20.Text" xml:space="preserve">
+    <value>3</value>
+  </data>
+  <data name="tabReset.Text" xml:space="preserve">
+    <value>Riavvia</value>
+  </data>
+  <data name="SV1_POS_.Text" xml:space="preserve">
+    <value>-60</value>
+  </data>
+  <data name="label21.Text" xml:space="preserve">
+    <value>Alto</value>
+  </data>
+  <data name="label22.Text" xml:space="preserve">
+    <value>Escursione del piatto</value>
+  </data>
+  <data name="lbl_currentmode.Text" xml:space="preserve">
+    <value>Manuale</value>
+  </data>
+  <data name="label23.Text" xml:space="preserve">
+    <value>Escursione Timone</value>
+  </data>
+  <data name="textBox3.Text" xml:space="preserve">
+    <value>Calibarzione del sensore di voltaggio:
+1. Misura il valtaggio di ingresso di APM e inseriscilo nel box sotto 
+2. Misura il voltaggio della batteria e inseriscilo nel box sotto 
+3. Dalle caratteristiche del sensore di corrente, inserisci il valore degli ampere per volt nel box qui sotto</value>
+  </data>
+  <data name="BUT_Calibrateradio.Text" xml:space="preserve">
+    <value>Calibrazione Radio</value>
+  </data>
+  <data name="label24.Text" xml:space="preserve">
+    <value>Massimo</value>
+  </data>
+  <data name="label2.Text" xml:space="preserve">
+    <value>Modo di volo 2</value>
+  </data>
+  <data name="label25.Text" xml:space="preserve">
+    <value>Rollio massimo</value>
+  </data>
+  <data name="label3.Text" xml:space="preserve">
+    <value>Modo di volo 3</value>
+  </data>
+  <data name="label26.Text" xml:space="preserve">
+    <value>Passo massimo</value>
+  </data>
+  <data name="label27.Text" xml:space="preserve">
+    <value>in gradi es 2° 3' W is -2.3</value>
+  </data>
+  <data name="label1.Text" xml:space="preserve">
+    <value>Modo di volo 1</value>
+  </data>
+  <data name="label28.Text" xml:space="preserve">
+    <value>Livella il quad per impostare gli accelerometri</value>
+  </data>
+  <data name="label6.Text" xml:space="preserve">
+    <value>Modo di volo 6</value>
+  </data>
+  <data name="label29.Text" xml:space="preserve">
+    <value>Capacità</value>
+  </data>
+  <data name="label100.Text" xml:space="preserve">
+    <value>Declinazione</value>
+  </data>
+  <data name="CHK_enablesonar.Text" xml:space="preserve">
+    <value>Attiva Sonar</value>
+  </data>
+  <data name="label7.Text" xml:space="preserve">
+    <value>PWM 1231 - 1360</value>
+  </data>
+  <data name="tabRadioIn.Text" xml:space="preserve">
+    <value>Ingresso Radio</value>
+  </data>
+  <data name="groupBox4.Text" xml:space="preserve">
+    <value>Calibration</value>
+  </data>
+  <data name="HS4_MIN.Text" xml:space="preserve">
+    <value>1500</value>
+  </data>
+  <data name="label4.Text" xml:space="preserve">
+    <value>Modo di volo 4</value>
+  </data>
+  <data name="label5.Text" xml:space="preserve">
+    <value>Modo di volo 5</value>
+  </data>
+  <data name="groupBox3.Text" xml:space="preserve">
+    <value>Giroscopio</value>
+  </data>
+  <data name="label8.Text" xml:space="preserve">
+    <value>PWM 1361 - 1490</value>
+  </data>
+  <data name="tabHardware.Text" xml:space="preserve">
+    <value>Hardware</value>
+  </data>
+  <data name="label9.Text" xml:space="preserve">
+    <value>PWM 1491 - 1620</value>
+  </data>
+  <data name="linkLabelmagdec.Text" xml:space="preserve">
+    <value>Sito Web per la Declinazione</value>
+  </data>
+  <data name="HS4_MAX.Text" xml:space="preserve">
+    <value>1500</value>
+  </data>
+  <data name="tabBattery.Text" xml:space="preserve">
+    <value>Batteria</value>
+  </data>
+  <data name="BUT_0collective.Text" xml:space="preserve">
+    <value>Zero</value>
+  </data>
+  <data name="CHK_enableairspeed.Text" xml:space="preserve">
+    <value>Attiva Sensore Velocità</value>
+  </data>
+  <data name="PIT_MAX_.Text" xml:space="preserve">
+    <value>4500</value>
+  </data>
+  <data name="BUT_reset.Text" xml:space="preserve">
+    <value>Resetta APM ai valori di Default</value>
+  </data>
+  <data name="GYR_GAIN_.Text" xml:space="preserve">
+    <value>1000</value>
+  </data>
+  <data name="label30.Text" xml:space="preserve">
+    <value>Monitor</value>
+  </data>
+</root>
\ No newline at end of file
diff --git a/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigBatteryMonitoring.pl.resx b/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigBatteryMonitoring.pl.resx
new file mode 100644
index 000000000..057b93271
--- /dev/null
+++ b/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigBatteryMonitoring.pl.resx
@@ -0,0 +1,318 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <data name="SV3_POS_.Text" xml:space="preserve">
+    <value>180</value>
+  </data>
+  <data name="BUT_HS4save.Text" xml:space="preserve">
+    <value>Ręczne</value>
+  </data>
+  <data name="label12.Text" xml:space="preserve">
+    <value>PWM 0 - 1230</value>
+  </data>
+  <data name="label10.Text" xml:space="preserve">
+    <value>PWM 1621 - 1749</value>
+  </data>
+  <data name="label13.Text" xml:space="preserve">
+    <value>Aktualny tryb:</value>
+  </data>
+  <data name="CHK_enableoptflow.Text" xml:space="preserve">
+    <value>Włącz Optical Flow</value>
+  </data>
+  <data name="label16.Text" xml:space="preserve">
+    <value>UWAGA: Obrazy są wyłącznie do prezentacji, działają jedynie z hexa, itp.</value>
+  </data>
+  <data name="CB_simple5.Text" xml:space="preserve">
+    <value>Tryb prosty</value>
+  </data>
+  <data name="label11.Text" xml:space="preserve">
+    <value>PWM 1750 +</value>
+  </data>
+  <data name="CHK_elevonch1rev.Text" xml:space="preserve">
+    <value>Odwr. Elevon CH1</value>
+  </data>
+  <data name="label14.Text" xml:space="preserve">
+    <value>Aktualny PWM:</value>
+  </data>
+  <data name="$this.Text" xml:space="preserve">
+    <value>Ustawienia APM</value>
+  </data>
+  <data name="label17.Text" xml:space="preserve">
+    <value>Pozycja serwa płyty ster.</value>
+  </data>
+  <data name="CHK_enablecompass.Text" xml:space="preserve">
+    <value>Włącz kompas</value>
+  </data>
+  <data name="CB_simple4.Text" xml:space="preserve">
+    <value>Tryb prosty</value>
+  </data>
+  <data name="tabArducopter.Text" xml:space="preserve">
+    <value>ArduCopter2</value>
+  </data>
+  <data name="CB_simple1.Text" xml:space="preserve">
+    <value>Tryb prosty</value>
+  </data>
+  <data name="label15.Text" xml:space="preserve">
+    <value>Ustawienie ramy (+ lub x)</value>
+  </data>
+  <data name="SV2_POS_.Text" xml:space="preserve">
+    <value>60</value>
+  </data>
+  <data name="label18.Text" xml:space="preserve">
+    <value>1</value>
+  </data>
+  <data name="CB_simple6.Text" xml:space="preserve">
+    <value>Tryb prosty</value>
+  </data>
+  <data name="CB_simple3.Text" xml:space="preserve">
+    <value>Tryb prosty</value>
+  </data>
+  <data name="label19.Text" xml:space="preserve">
+    <value>2</value>
+  </data>
+  <data name="tabModes.Text" xml:space="preserve">
+    <value>Tryby</value>
+  </data>
+  <data name="CB_simple2.Text" xml:space="preserve">
+    <value>Tryb prosty</value>
+  </data>
+  <data name="label20.Text" xml:space="preserve">
+    <value>3</value>
+  </data>
+  <data name="tabReset.Text" xml:space="preserve">
+    <value>Reset</value>
+  </data>
+  <data name="SV1_POS_.Text" xml:space="preserve">
+    <value>-60</value>
+  </data>
+  <data name="label21.Text" xml:space="preserve">
+    <value>Góra</value>
+  </data>
+  <data name="label22.Text" xml:space="preserve">
+    <value>Zakres ruchu płyty sterującej</value>
+  </data>
+  <data name="lbl_currentmode.Text" xml:space="preserve">
+    <value>Ręczne</value>
+  </data>
+  <data name="label23.Text" xml:space="preserve">
+    <value>Zakres steru kierunku</value>
+  </data>
+  <data name="textBox3.Text" xml:space="preserve">
+    <value>Kalibracja czujnika napięcia:
+1. Zmierz napięcie wejściowe APM i wpisz poniżej
+2. Zmierz napięcie baterii i wpisz poniżej
+3. Wpisz poniżej ilość amperów/wolt [A/V] z dokumentacji czujnika prądu</value>
+  </data>
+  <data name="BUT_Calibrateradio.Text" xml:space="preserve">
+    <value>Kalibracja radia</value>
+  </data>
+  <data name="label24.Text" xml:space="preserve">
+    <value>Max</value>
+  </data>
+  <data name="label2.Text" xml:space="preserve">
+    <value>Tryb lotu 2</value>
+  </data>
+  <data name="label25.Text" xml:space="preserve">
+    <value>Max przechylenie</value>
+  </data>
+  <data name="label3.Text" xml:space="preserve">
+    <value>Tryb lotu 3</value>
+  </data>
+  <data name="label26.Text" xml:space="preserve">
+    <value>Max pochylenie</value>
+  </data>
+  <data name="label27.Text" xml:space="preserve">
+    <value>w stopniech np. 2° 3' W to -2.3</value>
+  </data>
+  <data name="label1.Text" xml:space="preserve">
+    <value>Tryb lotu 1</value>
+  </data>
+  <data name="label28.Text" xml:space="preserve">
+    <value>Wypoziomuj quada żeby stawić domyśle offsety przysp.</value>
+  </data>
+  <data name="label6.Text" xml:space="preserve">
+    <value>Tryb lotu 6</value>
+  </data>
+  <data name="label29.Text" xml:space="preserve">
+    <value>Pojemność</value>
+  </data>
+  <data name="label100.Text" xml:space="preserve">
+    <value>Deklinacja</value>
+  </data>
+  <data name="CHK_enablesonar.Text" xml:space="preserve">
+    <value>Włącz sonar</value>
+  </data>
+  <data name="label7.Text" xml:space="preserve">
+    <value>PWM 1231 - 1360</value>
+  </data>
+  <data name="tabRadioIn.Text" xml:space="preserve">
+    <value>Wejścia radia</value>
+  </data>
+  <data name="groupBox4.Text" xml:space="preserve">
+    <value>Calibration</value>
+  </data>
+  <data name="HS4_MIN.Text" xml:space="preserve">
+    <value>1500</value>
+  </data>
+  <data name="label4.Text" xml:space="preserve">
+    <value>Tryb lotu 4</value>
+  </data>
+  <data name="label5.Text" xml:space="preserve">
+    <value>Tryb lotu 5</value>
+  </data>
+  <data name="groupBox3.Text" xml:space="preserve">
+    <value>Żyro</value>
+  </data>
+  <data name="label8.Text" xml:space="preserve">
+    <value>PWM 1361 - 1490</value>
+  </data>
+  <data name="tabHardware.Text" xml:space="preserve">
+    <value>Hardware</value>
+  </data>
+  <data name="label9.Text" xml:space="preserve">
+    <value>PWM 1491 - 1620</value>
+  </data>
+  <data name="linkLabelmagdec.Text" xml:space="preserve">
+    <value>Strona www deklinacji</value>
+  </data>
+  <data name="HS4_MAX.Text" xml:space="preserve">
+    <value>1500</value>
+  </data>
+  <data name="tabBattery.Text" xml:space="preserve">
+    <value>Bateria</value>
+  </data>
+  <data name="BUT_0collective.Text" xml:space="preserve">
+    <value>Zero</value>
+  </data>
+  <data name="CHK_enableairspeed.Text" xml:space="preserve">
+    <value>Włącz prędkość powietrza</value>
+  </data>
+  <data name="PIT_MAX_.Text" xml:space="preserve">
+    <value>4500</value>
+  </data>
+  <data name="BUT_reset.Text" xml:space="preserve">
+    <value>Reset APM do stawień domyślnych</value>
+  </data>
+  <data name="GYR_GAIN_.Text" xml:space="preserve">
+    <value>1000</value>
+  </data>
+  <data name="label30.Text" xml:space="preserve">
+    <value>Monitor</value>
+  </data>
+</root>
\ No newline at end of file
diff --git a/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigBatteryMonitoring.resx b/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigBatteryMonitoring.resx
index 94b1ff7c8..30ba0ba68 100644
--- a/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigBatteryMonitoring.resx
+++ b/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigBatteryMonitoring.resx
@@ -117,10 +117,562 @@
   <resheader name="writer">
     <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
   </resheader>
+  <assembly alias="mscorlib" name="mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
+  <data name="label31.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
+  <data name="label31.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
+    <value>NoControl</value>
+  </data>
+  <assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
+  <data name="label31.Location" type="System.Drawing.Point, System.Drawing">
+    <value>5, 16</value>
+  </data>
+  <data name="label31.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
+    <value>2, 0, 2, 0</value>
+  </data>
+  <data name="label31.Size" type="System.Drawing.Size, System.Drawing">
+    <value>110, 13</value>
+  </data>
+  <data name="label31.TabIndex" type="System.Int32, mscorlib">
+    <value>29</value>
+  </data>
+  <data name="label31.Text" xml:space="preserve">
+    <value>1. APM Input voltage:</value>
+  </data>
+  <data name="&gt;&gt;label31.Name" xml:space="preserve">
+    <value>label31</value>
+  </data>
+  <data name="&gt;&gt;label31.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;label31.Parent" xml:space="preserve">
+    <value>groupBox4</value>
+  </data>
+  <data name="&gt;&gt;label31.ZOrder" xml:space="preserve">
+    <value>0</value>
+  </data>
+  <data name="label32.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <data name="label32.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
+    <value>NoControl</value>
+  </data>
+  <data name="label32.Location" type="System.Drawing.Point, System.Drawing">
+    <value>5, 38</value>
+  </data>
+  <data name="label32.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
+    <value>2, 0, 2, 0</value>
+  </data>
+  <data name="label32.Size" type="System.Drawing.Size, System.Drawing">
+    <value>142, 13</value>
+  </data>
+  <data name="label32.TabIndex" type="System.Int32, mscorlib">
+    <value>30</value>
+  </data>
+  <data name="label32.Text" xml:space="preserve">
+    <value>2. Measured battery voltage:</value>
+  </data>
+  <data name="&gt;&gt;label32.Name" xml:space="preserve">
+    <value>label32</value>
+  </data>
+  <data name="&gt;&gt;label32.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;label32.Parent" xml:space="preserve">
+    <value>groupBox4</value>
+  </data>
+  <data name="&gt;&gt;label32.ZOrder" xml:space="preserve">
+    <value>1</value>
+  </data>
+  <data name="label33.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <data name="label33.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
+    <value>NoControl</value>
+  </data>
+  <data name="label33.Location" type="System.Drawing.Point, System.Drawing">
+    <value>5, 60</value>
+  </data>
+  <data name="label33.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
+    <value>2, 0, 2, 0</value>
+  </data>
+  <data name="label33.Size" type="System.Drawing.Size, System.Drawing">
+    <value>135, 13</value>
+  </data>
+  <data name="label33.TabIndex" type="System.Int32, mscorlib">
+    <value>31</value>
+  </data>
+  <data name="label33.Text" xml:space="preserve">
+    <value>3. Battery voltage (Calced):</value>
+  </data>
+  <data name="&gt;&gt;label33.Name" xml:space="preserve">
+    <value>label33</value>
+  </data>
+  <data name="&gt;&gt;label33.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;label33.Parent" xml:space="preserve">
+    <value>groupBox4</value>
+  </data>
+  <data name="&gt;&gt;label33.ZOrder" xml:space="preserve">
+    <value>2</value>
+  </data>
+  <data name="TXT_ampspervolt.Location" type="System.Drawing.Point, System.Drawing">
+    <value>149, 100</value>
+  </data>
+  <data name="TXT_ampspervolt.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
+    <value>2, 2, 2, 2</value>
+  </data>
+  <data name="TXT_ampspervolt.Size" type="System.Drawing.Size, System.Drawing">
+    <value>76, 20</value>
+  </data>
+  <data name="TXT_ampspervolt.TabIndex" type="System.Int32, mscorlib">
+    <value>38</value>
+  </data>
+  <data name="&gt;&gt;TXT_ampspervolt.Name" xml:space="preserve">
+    <value>TXT_ampspervolt</value>
+  </data>
+  <data name="&gt;&gt;TXT_ampspervolt.Type" xml:space="preserve">
+    <value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;TXT_ampspervolt.Parent" xml:space="preserve">
+    <value>groupBox4</value>
+  </data>
+  <data name="&gt;&gt;TXT_ampspervolt.ZOrder" xml:space="preserve">
+    <value>3</value>
+  </data>
+  <data name="label34.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <data name="label34.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
+    <value>NoControl</value>
+  </data>
+  <data name="label34.Location" type="System.Drawing.Point, System.Drawing">
+    <value>5, 81</value>
+  </data>
+  <data name="label34.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
+    <value>2, 0, 2, 0</value>
+  </data>
+  <data name="label34.Size" type="System.Drawing.Size, System.Drawing">
+    <value>134, 13</value>
+  </data>
+  <data name="label34.TabIndex" type="System.Int32, mscorlib">
+    <value>32</value>
+  </data>
+  <data name="label34.Text" xml:space="preserve">
+    <value>4. Voltage divider (Calced):</value>
+  </data>
+  <data name="&gt;&gt;label34.Name" xml:space="preserve">
+    <value>label34</value>
+  </data>
+  <data name="&gt;&gt;label34.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;label34.Parent" xml:space="preserve">
+    <value>groupBox4</value>
+  </data>
+  <data name="&gt;&gt;label34.ZOrder" xml:space="preserve">
+    <value>4</value>
+  </data>
+  <data name="TXT_divider.Location" type="System.Drawing.Point, System.Drawing">
+    <value>149, 78</value>
+  </data>
+  <data name="TXT_divider.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
+    <value>2, 2, 2, 2</value>
+  </data>
+  <data name="TXT_divider.Size" type="System.Drawing.Size, System.Drawing">
+    <value>76, 20</value>
+  </data>
+  <data name="TXT_divider.TabIndex" type="System.Int32, mscorlib">
+    <value>37</value>
+  </data>
+  <data name="&gt;&gt;TXT_divider.Name" xml:space="preserve">
+    <value>TXT_divider</value>
+  </data>
+  <data name="&gt;&gt;TXT_divider.Type" xml:space="preserve">
+    <value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;TXT_divider.Parent" xml:space="preserve">
+    <value>groupBox4</value>
+  </data>
+  <data name="&gt;&gt;TXT_divider.ZOrder" xml:space="preserve">
+    <value>5</value>
+  </data>
+  <data name="label35.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <data name="label35.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
+    <value>NoControl</value>
+  </data>
+  <data name="label35.Location" type="System.Drawing.Point, System.Drawing">
+    <value>6, 103</value>
+  </data>
+  <data name="label35.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
+    <value>2, 0, 2, 0</value>
+  </data>
+  <data name="label35.Size" type="System.Drawing.Size, System.Drawing">
+    <value>101, 13</value>
+  </data>
+  <data name="label35.TabIndex" type="System.Int32, mscorlib">
+    <value>33</value>
+  </data>
+  <data name="label35.Text" xml:space="preserve">
+    <value>5. Amperes per volt:</value>
+  </data>
+  <data name="&gt;&gt;label35.Name" xml:space="preserve">
+    <value>label35</value>
+  </data>
+  <data name="&gt;&gt;label35.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;label35.Parent" xml:space="preserve">
+    <value>groupBox4</value>
+  </data>
+  <data name="&gt;&gt;label35.ZOrder" xml:space="preserve">
+    <value>6</value>
+  </data>
+  <data name="TXT_voltage.Location" type="System.Drawing.Point, System.Drawing">
+    <value>149, 57</value>
+  </data>
+  <data name="TXT_voltage.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
+    <value>2, 2, 2, 2</value>
+  </data>
+  <data name="TXT_voltage.Size" type="System.Drawing.Size, System.Drawing">
+    <value>76, 20</value>
+  </data>
+  <data name="TXT_voltage.TabIndex" type="System.Int32, mscorlib">
+    <value>36</value>
+  </data>
+  <data name="&gt;&gt;TXT_voltage.Name" xml:space="preserve">
+    <value>TXT_voltage</value>
+  </data>
+  <data name="&gt;&gt;TXT_voltage.Type" xml:space="preserve">
+    <value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;TXT_voltage.Parent" xml:space="preserve">
+    <value>groupBox4</value>
+  </data>
+  <data name="&gt;&gt;TXT_voltage.ZOrder" xml:space="preserve">
+    <value>7</value>
+  </data>
+  <data name="TXT_inputvoltage.Location" type="System.Drawing.Point, System.Drawing">
+    <value>149, 13</value>
+  </data>
+  <data name="TXT_inputvoltage.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
+    <value>2, 2, 2, 2</value>
+  </data>
+  <data name="TXT_inputvoltage.Size" type="System.Drawing.Size, System.Drawing">
+    <value>76, 20</value>
+  </data>
+  <data name="TXT_inputvoltage.TabIndex" type="System.Int32, mscorlib">
+    <value>34</value>
+  </data>
+  <data name="&gt;&gt;TXT_inputvoltage.Name" xml:space="preserve">
+    <value>TXT_inputvoltage</value>
+  </data>
+  <data name="&gt;&gt;TXT_inputvoltage.Type" xml:space="preserve">
+    <value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;TXT_inputvoltage.Parent" xml:space="preserve">
+    <value>groupBox4</value>
+  </data>
+  <data name="&gt;&gt;TXT_inputvoltage.ZOrder" xml:space="preserve">
+    <value>8</value>
+  </data>
+  <data name="TXT_measuredvoltage.Location" type="System.Drawing.Point, System.Drawing">
+    <value>149, 35</value>
+  </data>
+  <data name="TXT_measuredvoltage.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
+    <value>2, 2, 2, 2</value>
+  </data>
+  <data name="TXT_measuredvoltage.Size" type="System.Drawing.Size, System.Drawing">
+    <value>76, 20</value>
+  </data>
+  <data name="TXT_measuredvoltage.TabIndex" type="System.Int32, mscorlib">
+    <value>35</value>
+  </data>
+  <data name="&gt;&gt;TXT_measuredvoltage.Name" xml:space="preserve">
+    <value>TXT_measuredvoltage</value>
+  </data>
+  <data name="&gt;&gt;TXT_measuredvoltage.Type" xml:space="preserve">
+    <value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;TXT_measuredvoltage.Parent" xml:space="preserve">
+    <value>groupBox4</value>
+  </data>
+  <data name="&gt;&gt;TXT_measuredvoltage.ZOrder" xml:space="preserve">
+    <value>9</value>
+  </data>
+  <data name="groupBox4.Location" type="System.Drawing.Point, System.Drawing">
+    <value>14, 172</value>
+  </data>
+  <data name="groupBox4.Size" type="System.Drawing.Size, System.Drawing">
+    <value>238, 131</value>
+  </data>
+  <data name="groupBox4.TabIndex" type="System.Int32, mscorlib">
+    <value>50</value>
+  </data>
+  <data name="groupBox4.Text" xml:space="preserve">
+    <value>Calibration</value>
+  </data>
+  <data name="&gt;&gt;groupBox4.Name" xml:space="preserve">
+    <value>groupBox4</value>
+  </data>
+  <data name="&gt;&gt;groupBox4.Type" xml:space="preserve">
+    <value>System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;groupBox4.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name="&gt;&gt;groupBox4.ZOrder" xml:space="preserve">
+    <value>0</value>
+  </data>
+  <data name="label47.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
+    <value>NoControl</value>
+  </data>
+  <data name="label47.Location" type="System.Drawing.Point, System.Drawing">
+    <value>106, 71</value>
+  </data>
+  <data name="label47.Size" type="System.Drawing.Size, System.Drawing">
+    <value>42, 13</value>
+  </data>
+  <data name="label47.TabIndex" type="System.Int32, mscorlib">
+    <value>49</value>
+  </data>
+  <data name="label47.Text" xml:space="preserve">
+    <value>Sensor</value>
+  </data>
+  <data name="&gt;&gt;label47.Name" xml:space="preserve">
+    <value>label47</value>
+  </data>
+  <data name="&gt;&gt;label47.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;label47.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name="&gt;&gt;label47.ZOrder" xml:space="preserve">
+    <value>1</value>
+  </data>
+  <data name="CMB_batmonsensortype.Items" xml:space="preserve">
+    <value>0: Other</value>
+  </data>
+  <data name="CMB_batmonsensortype.Items1" xml:space="preserve">
+    <value>1: AttoPilot 45A</value>
+  </data>
+  <data name="CMB_batmonsensortype.Items2" xml:space="preserve">
+    <value>2: AttoPilot 90A</value>
+  </data>
+  <data name="CMB_batmonsensortype.Items3" xml:space="preserve">
+    <value>3: AttoPilot 180A</value>
+  </data>
+  <data name="CMB_batmonsensortype.Location" type="System.Drawing.Point, System.Drawing">
+    <value>160, 68</value>
+  </data>
+  <data name="CMB_batmonsensortype.Size" type="System.Drawing.Size, System.Drawing">
+    <value>121, 21</value>
+  </data>
+  <data name="CMB_batmonsensortype.TabIndex" type="System.Int32, mscorlib">
+    <value>48</value>
+  </data>
+  <data name="&gt;&gt;CMB_batmonsensortype.Name" xml:space="preserve">
+    <value>CMB_batmonsensortype</value>
+  </data>
+  <data name="&gt;&gt;CMB_batmonsensortype.Type" xml:space="preserve">
+    <value>System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;CMB_batmonsensortype.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name="&gt;&gt;CMB_batmonsensortype.ZOrder" xml:space="preserve">
+    <value>2</value>
+  </data>
+  <data name="textBox3.Font" type="System.Drawing.Font, System.Drawing">
+    <value>Microsoft Sans Serif, 8.25pt</value>
+  </data>
+  <data name="textBox3.Location" type="System.Drawing.Point, System.Drawing">
+    <value>282, 172</value>
+  </data>
+  <data name="textBox3.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
+    <value>2, 2, 2, 2</value>
+  </data>
+  <data name="textBox3.Multiline" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <data name="textBox3.Size" type="System.Drawing.Size, System.Drawing">
+    <value>219, 131</value>
+  </data>
+  <data name="textBox3.TabIndex" type="System.Int32, mscorlib">
+    <value>47</value>
+  </data>
   <data name="textBox3.Text" xml:space="preserve">
     <value>Voltage sensor calibration:
 To calibrate your sensor, use a multimeter to measure the voltage coming out of your ESC's battery-elimination circuit (these are black and red wires in the three-wire cable that is powering your APM board).
 Then subtract 0.3v from that value and enter it in field #1 at left.
 </value>
   </data>
+  <data name="&gt;&gt;textBox3.Name" xml:space="preserve">
+    <value>textBox3</value>
+  </data>
+  <data name="&gt;&gt;textBox3.Type" xml:space="preserve">
+    <value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;textBox3.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name="&gt;&gt;textBox3.ZOrder" xml:space="preserve">
+    <value>3</value>
+  </data>
+  <data name="label29.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <data name="label29.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
+    <value>NoControl</value>
+  </data>
+  <data name="label29.Location" type="System.Drawing.Point, System.Drawing">
+    <value>288, 45</value>
+  </data>
+  <data name="label29.Size" type="System.Drawing.Size, System.Drawing">
+    <value>48, 13</value>
+  </data>
+  <data name="label29.TabIndex" type="System.Int32, mscorlib">
+    <value>43</value>
+  </data>
+  <data name="label29.Text" xml:space="preserve">
+    <value>Capacity</value>
+  </data>
+  <data name="&gt;&gt;label29.Name" xml:space="preserve">
+    <value>label29</value>
+  </data>
+  <data name="&gt;&gt;label29.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;label29.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name="&gt;&gt;label29.ZOrder" xml:space="preserve">
+    <value>4</value>
+  </data>
+  <data name="label30.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
+    <value>NoControl</value>
+  </data>
+  <data name="label30.Location" type="System.Drawing.Point, System.Drawing">
+    <value>106, 45</value>
+  </data>
+  <data name="label30.Size" type="System.Drawing.Size, System.Drawing">
+    <value>42, 13</value>
+  </data>
+  <data name="label30.TabIndex" type="System.Int32, mscorlib">
+    <value>44</value>
+  </data>
+  <data name="label30.Text" xml:space="preserve">
+    <value>Monitor</value>
+  </data>
+  <data name="&gt;&gt;label30.Name" xml:space="preserve">
+    <value>label30</value>
+  </data>
+  <data name="&gt;&gt;label30.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;label30.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name="&gt;&gt;label30.ZOrder" xml:space="preserve">
+    <value>5</value>
+  </data>
+  <data name="TXT_battcapacity.Location" type="System.Drawing.Point, System.Drawing">
+    <value>349, 42</value>
+  </data>
+  <data name="TXT_battcapacity.Size" type="System.Drawing.Size, System.Drawing">
+    <value>83, 20</value>
+  </data>
+  <data name="TXT_battcapacity.TabIndex" type="System.Int32, mscorlib">
+    <value>45</value>
+  </data>
+  <data name="&gt;&gt;TXT_battcapacity.Name" xml:space="preserve">
+    <value>TXT_battcapacity</value>
+  </data>
+  <data name="&gt;&gt;TXT_battcapacity.Type" xml:space="preserve">
+    <value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;TXT_battcapacity.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name="&gt;&gt;TXT_battcapacity.ZOrder" xml:space="preserve">
+    <value>6</value>
+  </data>
+  <data name="CMB_batmontype.Items" xml:space="preserve">
+    <value>0: Disabled</value>
+  </data>
+  <data name="CMB_batmontype.Items1" xml:space="preserve">
+    <value>3: Battery Volts</value>
+  </data>
+  <data name="CMB_batmontype.Items2" xml:space="preserve">
+    <value>4: Volts &amp; Current</value>
+  </data>
+  <data name="CMB_batmontype.Location" type="System.Drawing.Point, System.Drawing">
+    <value>160, 41</value>
+  </data>
+  <data name="CMB_batmontype.Size" type="System.Drawing.Size, System.Drawing">
+    <value>121, 21</value>
+  </data>
+  <data name="CMB_batmontype.TabIndex" type="System.Int32, mscorlib">
+    <value>46</value>
+  </data>
+  <data name="&gt;&gt;CMB_batmontype.Name" xml:space="preserve">
+    <value>CMB_batmontype</value>
+  </data>
+  <data name="&gt;&gt;CMB_batmontype.Type" xml:space="preserve">
+    <value>System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;CMB_batmontype.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name="&gt;&gt;CMB_batmontype.ZOrder" xml:space="preserve">
+    <value>7</value>
+  </data>
+  <data name="pictureBox5.BackgroundImageLayout" type="System.Windows.Forms.ImageLayout, System.Windows.Forms">
+    <value>Zoom</value>
+  </data>
+  <data name="pictureBox5.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
+    <value>NoControl</value>
+  </data>
+  <data name="pictureBox5.Location" type="System.Drawing.Point, System.Drawing">
+    <value>14, 16</value>
+  </data>
+  <data name="pictureBox5.Size" type="System.Drawing.Size, System.Drawing">
+    <value>75, 75</value>
+  </data>
+  <data name="pictureBox5.TabIndex" type="System.Int32, mscorlib">
+    <value>42</value>
+  </data>
+  <data name="&gt;&gt;pictureBox5.Name" xml:space="preserve">
+    <value>pictureBox5</value>
+  </data>
+  <data name="&gt;&gt;pictureBox5.Type" xml:space="preserve">
+    <value>System.Windows.Forms.PictureBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;pictureBox5.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name="&gt;&gt;pictureBox5.ZOrder" xml:space="preserve">
+    <value>8</value>
+  </data>
+  <metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+    <value>True</value>
+  </metadata>
+  <data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
+    <value>6, 13</value>
+  </data>
+  <data name="$this.Size" type="System.Drawing.Size, System.Drawing">
+    <value>518, 322</value>
+  </data>
+  <data name="&gt;&gt;$this.Name" xml:space="preserve">
+    <value>ConfigBatteryMonitoring</value>
+  </data>
+  <data name="&gt;&gt;$this.Type" xml:space="preserve">
+    <value>System.Windows.Forms.UserControl, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
 </root>
\ No newline at end of file
diff --git a/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigBatteryMonitoring.zh-Hans.resx b/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigBatteryMonitoring.zh-Hans.resx
new file mode 100644
index 000000000..f96892c42
--- /dev/null
+++ b/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigBatteryMonitoring.zh-Hans.resx
@@ -0,0 +1,496 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <data name="tabRadioIn.Text" xml:space="preserve">
+    <value>遥控输入</value>
+  </data>
+  <data name="tabModes.Text" xml:space="preserve">
+    <value>模式</value>
+  </data>
+  <data name="tabHardware.Text" xml:space="preserve">
+    <value>硬件</value>
+  </data>
+  <data name="tabBattery.Text" xml:space="preserve">
+    <value>电池</value>
+  </data>
+  <data name="tabHeli.Text" xml:space="preserve">
+    <value>AC2 直升机</value>
+  </data>
+  <data name="groupBoxElevons.Text" xml:space="preserve">
+    <value>上降副翼 (Elevon) 配置</value>
+  </data>
+  <assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
+  <data name="CHK_elevonch2rev.Size" type="System.Drawing.Size, System.Drawing">
+    <value>115, 17</value>
+  </data>
+  <data name="CHK_elevonch2rev.Text" xml:space="preserve">
+    <value>Elevons CH2 逆转</value>
+  </data>
+  <data name="CHK_elevonrev.Size" type="System.Drawing.Size, System.Drawing">
+    <value>91, 17</value>
+  </data>
+  <data name="CHK_elevonrev.Text" xml:space="preserve">
+    <value>Elevons 逆转</value>
+  </data>
+  <data name="CHK_elevonch1rev.Size" type="System.Drawing.Size, System.Drawing">
+    <value>115, 17</value>
+  </data>
+  <data name="CHK_elevonch1rev.Text" xml:space="preserve">
+    <value>Elevons CH1 逆转</value>
+  </data>
+  <data name="CHK_revch3.Size" type="System.Drawing.Size, System.Drawing">
+    <value>50, 17</value>
+  </data>
+  <data name="CHK_revch3.Text" xml:space="preserve">
+    <value>逆转</value>
+  </data>
+  <data name="CHK_revch4.Size" type="System.Drawing.Size, System.Drawing">
+    <value>50, 17</value>
+  </data>
+  <data name="CHK_revch4.Text" xml:space="preserve">
+    <value>逆转</value>
+  </data>
+  <data name="CHK_revch2.Size" type="System.Drawing.Size, System.Drawing">
+    <value>50, 17</value>
+  </data>
+  <data name="CHK_revch2.Text" xml:space="preserve">
+    <value>逆转</value>
+  </data>
+  <data name="CHK_revch1.Size" type="System.Drawing.Size, System.Drawing">
+    <value>50, 17</value>
+  </data>
+  <data name="CHK_revch1.Text" xml:space="preserve">
+    <value>逆转</value>
+  </data>
+  <data name="BUT_Calibrateradio.Text" xml:space="preserve">
+    <value>校准遥控</value>
+  </data>
+  <data name="CB_simple6.Size" type="System.Drawing.Size, System.Drawing">
+    <value>74, 17</value>
+  </data>
+  <data name="CB_simple6.Text" xml:space="preserve">
+    <value>简单模式</value>
+  </data>
+  <data name="CB_simple5.Size" type="System.Drawing.Size, System.Drawing">
+    <value>74, 17</value>
+  </data>
+  <data name="CB_simple5.Text" xml:space="preserve">
+    <value>简单模式</value>
+  </data>
+  <data name="CB_simple4.Size" type="System.Drawing.Size, System.Drawing">
+    <value>74, 17</value>
+  </data>
+  <data name="CB_simple4.Text" xml:space="preserve">
+    <value>简单模式</value>
+  </data>
+  <data name="CB_simple3.Size" type="System.Drawing.Size, System.Drawing">
+    <value>74, 17</value>
+  </data>
+  <data name="CB_simple3.Text" xml:space="preserve">
+    <value>简单模式</value>
+  </data>
+  <data name="CB_simple2.Size" type="System.Drawing.Size, System.Drawing">
+    <value>74, 17</value>
+  </data>
+  <data name="CB_simple2.Text" xml:space="preserve">
+    <value>简单模式</value>
+  </data>
+  <data name="CB_simple1.Size" type="System.Drawing.Size, System.Drawing">
+    <value>74, 17</value>
+  </data>
+  <data name="CB_simple1.Text" xml:space="preserve">
+    <value>简单模式</value>
+  </data>
+  <data name="label14.Size" type="System.Drawing.Size, System.Drawing">
+    <value>64, 13</value>
+  </data>
+  <data name="label14.Text" xml:space="preserve">
+    <value>当前 PWM:</value>
+  </data>
+  <data name="label13.Size" type="System.Drawing.Size, System.Drawing">
+    <value>58, 13</value>
+  </data>
+  <data name="label13.Text" xml:space="preserve">
+    <value>当前模式:</value>
+  </data>
+  <data name="label6.Size" type="System.Drawing.Size, System.Drawing">
+    <value>64, 13</value>
+  </data>
+  <data name="label6.Text" xml:space="preserve">
+    <value>飞行模式 6</value>
+  </data>
+  <data name="label5.Size" type="System.Drawing.Size, System.Drawing">
+    <value>64, 13</value>
+  </data>
+  <data name="label5.Text" xml:space="preserve">
+    <value>飞行模式 5</value>
+  </data>
+  <data name="label4.Size" type="System.Drawing.Size, System.Drawing">
+    <value>64, 13</value>
+  </data>
+  <data name="label4.Text" xml:space="preserve">
+    <value>飞行模式 4</value>
+  </data>
+  <data name="label3.Size" type="System.Drawing.Size, System.Drawing">
+    <value>64, 13</value>
+  </data>
+  <data name="label3.Text" xml:space="preserve">
+    <value>飞行模式 3</value>
+  </data>
+  <data name="label2.Size" type="System.Drawing.Size, System.Drawing">
+    <value>64, 13</value>
+  </data>
+  <data name="label2.Text" xml:space="preserve">
+    <value>飞行模式 2</value>
+  </data>
+  <data name="label1.Size" type="System.Drawing.Size, System.Drawing">
+    <value>64, 13</value>
+  </data>
+  <data name="label1.Text" xml:space="preserve">
+    <value>飞行模式 1</value>
+  </data>
+  <data name="BUT_SaveModes.Text" xml:space="preserve">
+    <value>保存模式</value>
+  </data>
+  <data name="label27.Text" xml:space="preserve">
+    <value>十进制, 2° 3' W 就是 -2.3</value>
+  </data>
+  <data name="CHK_enableoptflow.Text" xml:space="preserve">
+    <value>启用光流</value>
+  </data>
+  <data name="linkLabelmagdec.Size" type="System.Drawing.Size, System.Drawing">
+    <value>67, 13</value>
+  </data>
+  <data name="linkLabelmagdec.Text" xml:space="preserve">
+    <value>磁偏角网站</value>
+  </data>
+  <data name="label100.Text" xml:space="preserve">
+    <value>磁偏角</value>
+  </data>
+  <data name="CHK_enableairspeed.Text" xml:space="preserve">
+    <value>启用空速计</value>
+  </data>
+  <data name="CHK_enablesonar.Text" xml:space="preserve">
+    <value>启用声纳</value>
+  </data>
+  <data name="CHK_enablecompass.Text" xml:space="preserve">
+    <value>启用罗盘</value>
+  </data>
+  <data name="label31.Size" type="System.Drawing.Size, System.Drawing">
+    <value>58, 13</value>
+  </data>
+  <data name="label31.Text" xml:space="preserve">
+    <value>输入电压:</value>
+  </data>
+  <data name="label32.Size" type="System.Drawing.Size, System.Drawing">
+    <value>94, 13</value>
+  </data>
+  <data name="label32.Text" xml:space="preserve">
+    <value>测量的电池电压:</value>
+  </data>
+  <data name="label33.Size" type="System.Drawing.Size, System.Drawing">
+    <value>58, 13</value>
+  </data>
+  <data name="label33.Text" xml:space="preserve">
+    <value>电池电压:</value>
+  </data>
+  <data name="label34.Size" type="System.Drawing.Size, System.Drawing">
+    <value>52, 13</value>
+  </data>
+  <data name="label34.Text" xml:space="preserve">
+    <value>分 压 比:</value>
+  </data>
+  <data name="label35.Size" type="System.Drawing.Size, System.Drawing">
+    <value>63, 13</value>
+  </data>
+  <data name="label35.Text" xml:space="preserve">
+    <value>安培/伏特:</value>
+  </data>
+  <data name="label47.Size" type="System.Drawing.Size, System.Drawing">
+    <value>48, 18</value>
+  </data>
+  <data name="label47.Text" xml:space="preserve">
+    <value>传感器</value>
+  </data>
+  <data name="textBox3.Text" xml:space="preserve">
+    <value>电压传感器校准:
+1. 测量APM输入电压,输入到下方的文本框中
+2. 测量电池电压,输入到下方的文本框中
+3. 从当前的传感器的数据表中找到安培/伏特,输入到下方的文本框中</value>
+  </data>
+  <data name="label29.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label29.Text" xml:space="preserve">
+    <value>容量</value>
+  </data>
+  <data name="label30.Size" type="System.Drawing.Size, System.Drawing">
+    <value>48, 13</value>
+  </data>
+  <data name="label30.Text" xml:space="preserve">
+    <value>监控器</value>
+  </data>
+  <data name="label28.Size" type="System.Drawing.Size, System.Drawing">
+    <value>175, 13</value>
+  </data>
+  <data name="label28.Text" xml:space="preserve">
+    <value>设置水平面的默认加速度计偏移</value>
+  </data>
+  <data name="label16.Size" type="System.Drawing.Size, System.Drawing">
+    <value>261, 13</value>
+  </data>
+  <data name="label16.Text" xml:space="preserve">
+    <value>注: 图片只是用于展示,设置可以用于六轴等机架</value>
+  </data>
+  <data name="label15.Size" type="System.Drawing.Size, System.Drawing">
+    <value>93, 13</value>
+  </data>
+  <data name="label15.Text" xml:space="preserve">
+    <value>机架设置 (+ 或 x)</value>
+  </data>
+  <data name="BUT_levelac2.Text" xml:space="preserve">
+    <value>找平</value>
+  </data>
+  <data name="BUT_HS4save.Text" xml:space="preserve">
+    <value>手动</value>
+  </data>
+  <data name="BUT_swash_manual.Text" xml:space="preserve">
+    <value>手动</value>
+  </data>
+  <data name="label46.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label46.Text" xml:space="preserve">
+    <value>感度</value>
+  </data>
+  <data name="label45.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label45.Text" xml:space="preserve">
+    <value>启用</value>
+  </data>
+  <data name="label44.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label44.Text" xml:space="preserve">
+    <value>微调</value>
+  </data>
+  <data name="label43.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label43.Text" xml:space="preserve">
+    <value>逆转</value>
+  </data>
+  <data name="label42.Size" type="System.Drawing.Size, System.Drawing">
+    <value>43, 13</value>
+  </data>
+  <data name="label42.Text" xml:space="preserve">
+    <value>方向舵</value>
+  </data>
+  <data name="label24.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label24.Text" xml:space="preserve">
+    <value>最大</value>
+  </data>
+  <data name="label40.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label40.Text" xml:space="preserve">
+    <value>最小</value>
+  </data>
+  <data name="label41.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label41.Text" xml:space="preserve">
+    <value>最低</value>
+  </data>
+  <data name="label21.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label21.Text" xml:space="preserve">
+    <value>最高</value>
+  </data>
+  <data name="BUT_0collective.Text" xml:space="preserve">
+    <value>0度</value>
+  </data>
+  <data name="label39.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label39.Text" xml:space="preserve">
+    <value>微调</value>
+  </data>
+  <data name="label38.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label38.Text" xml:space="preserve">
+    <value>逆转</value>
+  </data>
+  <data name="label37.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label37.Text" xml:space="preserve">
+    <value>位置</value>
+  </data>
+  <data name="label36.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label36.Text" xml:space="preserve">
+    <value>舵机</value>
+  </data>
+  <data name="label26.Size" type="System.Drawing.Size, System.Drawing">
+    <value>55, 13</value>
+  </data>
+  <data name="label26.Text" xml:space="preserve">
+    <value>最大俯仰</value>
+  </data>
+  <data name="label25.Size" type="System.Drawing.Size, System.Drawing">
+    <value>55, 13</value>
+  </data>
+  <data name="label25.Text" xml:space="preserve">
+    <value>最大侧倾</value>
+  </data>
+  <data name="label23.Size" type="System.Drawing.Size, System.Drawing">
+    <value>55, 13</value>
+  </data>
+  <data name="label23.Text" xml:space="preserve">
+    <value>舵机行程</value>
+  </data>
+  <data name="label22.Size" type="System.Drawing.Size, System.Drawing">
+    <value>79, 13</value>
+  </data>
+  <data name="label22.Text" xml:space="preserve">
+    <value>斜盘水平微调</value>
+  </data>
+  <data name="label17.Size" type="System.Drawing.Size, System.Drawing">
+    <value>79, 13</value>
+  </data>
+  <data name="label17.Text" xml:space="preserve">
+    <value>斜盘舵机位置</value>
+  </data>
+  <data name="tabReset.Text" xml:space="preserve">
+    <value>重置</value>
+  </data>
+  <data name="BUT_reset.Text" xml:space="preserve">
+    <value>重置 APM 为默认设置</value>
+  </data>
+  <data name="$this.Text" xml:space="preserve">
+    <value>APM设置</value>
+  </data>
+</root>
\ No newline at end of file
diff --git a/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigBatteryMonitoring.zh-TW.resx b/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigBatteryMonitoring.zh-TW.resx
new file mode 100644
index 000000000..0c03fbf8e
--- /dev/null
+++ b/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigBatteryMonitoring.zh-TW.resx
@@ -0,0 +1,460 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <data name="tabReset.Text" xml:space="preserve">
+    <value>重置</value>
+  </data>
+  <data name="tabRadioIn.Text" xml:space="preserve">
+    <value>遙控輸入</value>
+  </data>
+  <data name="tabModes.Text" xml:space="preserve">
+    <value>模式</value>
+  </data>
+  <data name="tabHardware.Text" xml:space="preserve">
+    <value>硬件</value>
+  </data>
+  <data name="tabBattery.Text" xml:space="preserve">
+    <value>電池</value>
+  </data>
+  <data name="BUT_reset.Text" xml:space="preserve">
+    <value>重置 APM 為默認設置</value>
+  </data>
+  <assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
+  <data name="CHK_revch3.Size" type="System.Drawing.Size, System.Drawing">
+    <value>50, 17</value>
+  </data>
+  <data name="CHK_revch3.Text" xml:space="preserve">
+    <value>逆轉</value>
+  </data>
+  <data name="CHK_revch4.Size" type="System.Drawing.Size, System.Drawing">
+    <value>50, 17</value>
+  </data>
+  <data name="CHK_revch4.Text" xml:space="preserve">
+    <value>逆轉</value>
+  </data>
+  <data name="CHK_revch2.Size" type="System.Drawing.Size, System.Drawing">
+    <value>50, 17</value>
+  </data>
+  <data name="CHK_revch2.Text" xml:space="preserve">
+    <value>逆轉</value>
+  </data>
+  <data name="CHK_revch1.Size" type="System.Drawing.Size, System.Drawing">
+    <value>50, 17</value>
+  </data>
+  <data name="CHK_revch1.Text" xml:space="preserve">
+    <value>逆轉</value>
+  </data>
+  <data name="BUT_Calibrateradio.Text" xml:space="preserve">
+    <value>校準遙控</value>
+  </data>
+  <data name="CB_simple6.Size" type="System.Drawing.Size, System.Drawing">
+    <value>74, 17</value>
+  </data>
+  <data name="CB_simple6.Text" xml:space="preserve">
+    <value>簡單模式</value>
+  </data>
+  <data name="CB_simple5.Size" type="System.Drawing.Size, System.Drawing">
+    <value>74, 17</value>
+  </data>
+  <data name="CB_simple5.Text" xml:space="preserve">
+    <value>簡單模式</value>
+  </data>
+  <data name="CB_simple4.Size" type="System.Drawing.Size, System.Drawing">
+    <value>74, 17</value>
+  </data>
+  <data name="CB_simple4.Text" xml:space="preserve">
+    <value>簡單模式</value>
+  </data>
+  <data name="CB_simple3.Size" type="System.Drawing.Size, System.Drawing">
+    <value>74, 17</value>
+  </data>
+  <data name="CB_simple3.Text" xml:space="preserve">
+    <value>簡單模式</value>
+  </data>
+  <data name="CB_simple2.Size" type="System.Drawing.Size, System.Drawing">
+    <value>74, 17</value>
+  </data>
+  <data name="CB_simple2.Text" xml:space="preserve">
+    <value>簡單模式</value>
+  </data>
+  <data name="CB_simple1.Size" type="System.Drawing.Size, System.Drawing">
+    <value>74, 17</value>
+  </data>
+  <data name="CB_simple1.Text" xml:space="preserve">
+    <value>簡單模式</value>
+  </data>
+  <data name="label14.Size" type="System.Drawing.Size, System.Drawing">
+    <value>64, 13</value>
+  </data>
+  <data name="label14.Text" xml:space="preserve">
+    <value>當前 PWM:</value>
+  </data>
+  <data name="label13.Size" type="System.Drawing.Size, System.Drawing">
+    <value>58, 13</value>
+  </data>
+  <data name="label13.Text" xml:space="preserve">
+    <value>當前模式:</value>
+  </data>
+  <data name="label6.Size" type="System.Drawing.Size, System.Drawing">
+    <value>64, 13</value>
+  </data>
+  <data name="label6.Text" xml:space="preserve">
+    <value>飛行模式 6</value>
+  </data>
+  <data name="label5.Size" type="System.Drawing.Size, System.Drawing">
+    <value>64, 13</value>
+  </data>
+  <data name="label5.Text" xml:space="preserve">
+    <value>飛行模式 5</value>
+  </data>
+  <data name="label4.Size" type="System.Drawing.Size, System.Drawing">
+    <value>64, 13</value>
+  </data>
+  <data name="label4.Text" xml:space="preserve">
+    <value>飛行模式 4</value>
+  </data>
+  <data name="label3.Size" type="System.Drawing.Size, System.Drawing">
+    <value>64, 13</value>
+  </data>
+  <data name="label3.Text" xml:space="preserve">
+    <value>飛行模式 3</value>
+  </data>
+  <data name="label2.Size" type="System.Drawing.Size, System.Drawing">
+    <value>64, 13</value>
+  </data>
+  <data name="label2.Text" xml:space="preserve">
+    <value>飛行模式 2</value>
+  </data>
+  <data name="label1.Size" type="System.Drawing.Size, System.Drawing">
+    <value>64, 13</value>
+  </data>
+  <data name="label1.Text" xml:space="preserve">
+    <value>飛行模式 1</value>
+  </data>
+  <data name="BUT_SaveModes.Text" xml:space="preserve">
+    <value>保存模式</value>
+  </data>
+  <data name="linkLabelmagdec.Size" type="System.Drawing.Size, System.Drawing">
+    <value>67, 13</value>
+  </data>
+  <data name="linkLabelmagdec.Text" xml:space="preserve">
+    <value>磁偏角網站</value>
+  </data>
+  <data name="label100.Text" xml:space="preserve">
+    <value>磁偏角</value>
+  </data>
+  <data name="CHK_enableairspeed.Text" xml:space="preserve">
+    <value>啟用空速計</value>
+  </data>
+  <data name="CHK_enablesonar.Text" xml:space="preserve">
+    <value>啟用聲納</value>
+  </data>
+  <data name="CHK_enablecompass.Text" xml:space="preserve">
+    <value>啟用羅盤</value>
+  </data>
+  <data name="label35.Size" type="System.Drawing.Size, System.Drawing">
+    <value>63, 13</value>
+  </data>
+  <data name="label35.Text" xml:space="preserve">
+    <value>安培/伏特:</value>
+  </data>
+  <data name="label34.Size" type="System.Drawing.Size, System.Drawing">
+    <value>52, 13</value>
+  </data>
+  <data name="label34.Text" xml:space="preserve">
+    <value>分 壓 比:</value>
+  </data>
+  <data name="label33.Size" type="System.Drawing.Size, System.Drawing">
+    <value>58, 13</value>
+  </data>
+  <data name="label33.Text" xml:space="preserve">
+    <value>電池電壓:</value>
+  </data>
+  <data name="label32.Size" type="System.Drawing.Size, System.Drawing">
+    <value>94, 13</value>
+  </data>
+  <data name="label32.Text" xml:space="preserve">
+    <value>測量的電池電壓:</value>
+  </data>
+  <data name="label31.Size" type="System.Drawing.Size, System.Drawing">
+    <value>58, 13</value>
+  </data>
+  <data name="label31.Text" xml:space="preserve">
+    <value>輸入電壓:</value>
+  </data>
+  <data name="textBox3.Text" xml:space="preserve">
+    <value>電壓傳感器校準:
+1. 測量APM輸入電壓,輸入到下方的文本框中
+2. 測量電池電壓,輸入到下方的文本框中
+3. 從當前的傳感器的數據表中找到安培/伏特,輸入到下方的文本框中</value>
+  </data>
+  <data name="label29.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label29.Text" xml:space="preserve">
+    <value>容量</value>
+  </data>
+  <data name="label30.Size" type="System.Drawing.Size, System.Drawing">
+    <value>48, 13</value>
+  </data>
+  <data name="label30.Text" xml:space="preserve">
+    <value>監控器</value>
+  </data>
+  <data name="label28.Size" type="System.Drawing.Size, System.Drawing">
+    <value>175, 13</value>
+  </data>
+  <data name="label28.Text" xml:space="preserve">
+    <value>設置水平面的默認加速度計偏移</value>
+  </data>
+  <data name="label16.Size" type="System.Drawing.Size, System.Drawing">
+    <value>261, 13</value>
+  </data>
+  <data name="label16.Text" xml:space="preserve">
+    <value>注: 圖片只是用於展示,設置可以用於六軸等機架</value>
+  </data>
+  <data name="label15.Size" type="System.Drawing.Size, System.Drawing">
+    <value>93, 13</value>
+  </data>
+  <data name="label15.Text" xml:space="preserve">
+    <value>機架設置 (+ 或 x)</value>
+  </data>
+  <data name="BUT_levelac2.Text" xml:space="preserve">
+    <value>找平</value>
+  </data>
+  <data name="label46.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label46.Text" xml:space="preserve">
+    <value>感度</value>
+  </data>
+  <data name="label45.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label45.Text" xml:space="preserve">
+    <value>啟用</value>
+  </data>
+  <data name="label44.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label44.Text" xml:space="preserve">
+    <value>微調</value>
+  </data>
+  <data name="label43.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label43.Text" xml:space="preserve">
+    <value>逆轉</value>
+  </data>
+  <data name="label42.Size" type="System.Drawing.Size, System.Drawing">
+    <value>43, 13</value>
+  </data>
+  <data name="label42.Text" xml:space="preserve">
+    <value>方向舵</value>
+  </data>
+  <data name="BUT_HS4save.Text" xml:space="preserve">
+    <value>手動</value>
+  </data>
+  <data name="label24.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label24.Text" xml:space="preserve">
+    <value>最大</value>
+  </data>
+  <data name="label40.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label40.Text" xml:space="preserve">
+    <value>最小</value>
+  </data>
+  <data name="BUT_swash_manual.Text" xml:space="preserve">
+    <value>手動</value>
+  </data>
+  <data name="label41.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label41.Text" xml:space="preserve">
+    <value>最低</value>
+  </data>
+  <data name="label21.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label21.Text" xml:space="preserve">
+    <value>最高</value>
+  </data>
+  <data name="BUT_0collective.Text" xml:space="preserve">
+    <value>0度</value>
+  </data>
+  <data name="label39.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label39.Text" xml:space="preserve">
+    <value>微調</value>
+  </data>
+  <data name="label38.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label38.Text" xml:space="preserve">
+    <value>逆轉</value>
+  </data>
+  <data name="label37.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label37.Text" xml:space="preserve">
+    <value>位置</value>
+  </data>
+  <data name="label36.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label36.Text" xml:space="preserve">
+    <value>舵機</value>
+  </data>
+  <data name="label26.Size" type="System.Drawing.Size, System.Drawing">
+    <value>55, 13</value>
+  </data>
+  <data name="label26.Text" xml:space="preserve">
+    <value>最大俯仰</value>
+  </data>
+  <data name="label25.Size" type="System.Drawing.Size, System.Drawing">
+    <value>55, 13</value>
+  </data>
+  <data name="label25.Text" xml:space="preserve">
+    <value>最大側傾</value>
+  </data>
+  <data name="label23.Size" type="System.Drawing.Size, System.Drawing">
+    <value>55, 13</value>
+  </data>
+  <data name="label23.Text" xml:space="preserve">
+    <value>舵機行程</value>
+  </data>
+  <data name="label22.Size" type="System.Drawing.Size, System.Drawing">
+    <value>79, 13</value>
+  </data>
+  <data name="label22.Text" xml:space="preserve">
+    <value>斜盤水平微調</value>
+  </data>
+  <data name="label17.Size" type="System.Drawing.Size, System.Drawing">
+    <value>79, 13</value>
+  </data>
+  <data name="label17.Text" xml:space="preserve">
+    <value>斜盤舵機位置</value>
+  </data>
+  <data name="$this.Text" xml:space="preserve">
+    <value>APM設置</value>
+  </data>
+</root>
\ No newline at end of file
diff --git a/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigFlightModes.Designer.cs b/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigFlightModes.Designer.cs
index 829ad3689..6117c75a5 100644
--- a/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigFlightModes.Designer.cs
+++ b/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigFlightModes.Designer.cs
@@ -29,6 +29,7 @@
         private void InitializeComponent()
         {
             this.components = new System.ComponentModel.Container();
+            System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ConfigFlightModes));
             this.CB_simple6 = new System.Windows.Forms.CheckBox();
             this.CB_simple5 = new System.Windows.Forms.CheckBox();
             this.CB_simple4 = new System.Windows.Forms.CheckBox();
@@ -39,6 +40,7 @@
             this.LBL_flightmodepwm = new System.Windows.Forms.Label();
             this.label13 = new System.Windows.Forms.Label();
             this.lbl_currentmode = new System.Windows.Forms.Label();
+            this.currentStateBindingSource = new System.Windows.Forms.BindingSource(this.components);
             this.label12 = new System.Windows.Forms.Label();
             this.label11 = new System.Windows.Forms.Label();
             this.label10 = new System.Windows.Forms.Label();
@@ -58,192 +60,100 @@
             this.label1 = new System.Windows.Forms.Label();
             this.CMB_fmode1 = new System.Windows.Forms.ComboBox();
             this.BUT_SaveModes = new ArdupilotMega.MyButton();
-            this.currentStateBindingSource = new System.Windows.Forms.BindingSource(this.components);
             ((System.ComponentModel.ISupportInitialize)(this.currentStateBindingSource)).BeginInit();
             this.SuspendLayout();
             // 
             // CB_simple6
             // 
-            this.CB_simple6.AutoSize = true;
-            this.CB_simple6.ImeMode = System.Windows.Forms.ImeMode.NoControl;
-            this.CB_simple6.Location = new System.Drawing.Point(232, 200);
-            this.CB_simple6.Margin = new System.Windows.Forms.Padding(2);
+            resources.ApplyResources(this.CB_simple6, "CB_simple6");
             this.CB_simple6.Name = "CB_simple6";
-            this.CB_simple6.Size = new System.Drawing.Size(87, 17);
-            this.CB_simple6.TabIndex = 148;
-            this.CB_simple6.Text = "Simple Mode";
             this.CB_simple6.UseVisualStyleBackColor = true;
             // 
             // CB_simple5
             // 
-            this.CB_simple5.AutoSize = true;
-            this.CB_simple5.ImeMode = System.Windows.Forms.ImeMode.NoControl;
-            this.CB_simple5.Location = new System.Drawing.Point(232, 173);
-            this.CB_simple5.Margin = new System.Windows.Forms.Padding(2);
+            resources.ApplyResources(this.CB_simple5, "CB_simple5");
             this.CB_simple5.Name = "CB_simple5";
-            this.CB_simple5.Size = new System.Drawing.Size(87, 17);
-            this.CB_simple5.TabIndex = 147;
-            this.CB_simple5.Text = "Simple Mode";
             this.CB_simple5.UseVisualStyleBackColor = true;
             // 
             // CB_simple4
             // 
-            this.CB_simple4.AutoSize = true;
-            this.CB_simple4.ImeMode = System.Windows.Forms.ImeMode.NoControl;
-            this.CB_simple4.Location = new System.Drawing.Point(232, 146);
-            this.CB_simple4.Margin = new System.Windows.Forms.Padding(2);
+            resources.ApplyResources(this.CB_simple4, "CB_simple4");
             this.CB_simple4.Name = "CB_simple4";
-            this.CB_simple4.Size = new System.Drawing.Size(87, 17);
-            this.CB_simple4.TabIndex = 146;
-            this.CB_simple4.Text = "Simple Mode";
             this.CB_simple4.UseVisualStyleBackColor = true;
             // 
             // CB_simple3
             // 
-            this.CB_simple3.AutoSize = true;
-            this.CB_simple3.ImeMode = System.Windows.Forms.ImeMode.NoControl;
-            this.CB_simple3.Location = new System.Drawing.Point(232, 119);
-            this.CB_simple3.Margin = new System.Windows.Forms.Padding(2);
+            resources.ApplyResources(this.CB_simple3, "CB_simple3");
             this.CB_simple3.Name = "CB_simple3";
-            this.CB_simple3.Size = new System.Drawing.Size(87, 17);
-            this.CB_simple3.TabIndex = 145;
-            this.CB_simple3.Text = "Simple Mode";
             this.CB_simple3.UseVisualStyleBackColor = true;
             // 
             // CB_simple2
             // 
-            this.CB_simple2.AutoSize = true;
-            this.CB_simple2.ImeMode = System.Windows.Forms.ImeMode.NoControl;
-            this.CB_simple2.Location = new System.Drawing.Point(232, 92);
-            this.CB_simple2.Margin = new System.Windows.Forms.Padding(2);
+            resources.ApplyResources(this.CB_simple2, "CB_simple2");
             this.CB_simple2.Name = "CB_simple2";
-            this.CB_simple2.Size = new System.Drawing.Size(87, 17);
-            this.CB_simple2.TabIndex = 144;
-            this.CB_simple2.Text = "Simple Mode";
             this.CB_simple2.UseVisualStyleBackColor = true;
             // 
             // CB_simple1
             // 
-            this.CB_simple1.AutoSize = true;
-            this.CB_simple1.ImeMode = System.Windows.Forms.ImeMode.NoControl;
-            this.CB_simple1.Location = new System.Drawing.Point(232, 65);
-            this.CB_simple1.Margin = new System.Windows.Forms.Padding(2);
+            resources.ApplyResources(this.CB_simple1, "CB_simple1");
             this.CB_simple1.Name = "CB_simple1";
-            this.CB_simple1.Size = new System.Drawing.Size(87, 17);
-            this.CB_simple1.TabIndex = 143;
-            this.CB_simple1.Text = "Simple Mode";
             this.CB_simple1.UseVisualStyleBackColor = true;
             // 
             // label14
             // 
-            this.label14.AutoSize = true;
-            this.label14.ImeMode = System.Windows.Forms.ImeMode.NoControl;
-            this.label14.Location = new System.Drawing.Point(94, 32);
+            resources.ApplyResources(this.label14, "label14");
             this.label14.Name = "label14";
-            this.label14.Size = new System.Drawing.Size(74, 13);
-            this.label14.TabIndex = 142;
-            this.label14.Text = "Current PWM:";
             // 
             // LBL_flightmodepwm
             // 
-            this.LBL_flightmodepwm.AutoSize = true;
-            this.LBL_flightmodepwm.ImeMode = System.Windows.Forms.ImeMode.NoControl;
-            this.LBL_flightmodepwm.Location = new System.Drawing.Point(174, 32);
+            resources.ApplyResources(this.LBL_flightmodepwm, "LBL_flightmodepwm");
             this.LBL_flightmodepwm.Name = "LBL_flightmodepwm";
-            this.LBL_flightmodepwm.Size = new System.Drawing.Size(13, 13);
-            this.LBL_flightmodepwm.TabIndex = 141;
-            this.LBL_flightmodepwm.Text = "0";
             // 
             // label13
             // 
-            this.label13.AutoSize = true;
-            this.label13.ImeMode = System.Windows.Forms.ImeMode.NoControl;
-            this.label13.Location = new System.Drawing.Point(94, 15);
+            resources.ApplyResources(this.label13, "label13");
             this.label13.Name = "label13";
-            this.label13.Size = new System.Drawing.Size(74, 13);
-            this.label13.TabIndex = 140;
-            this.label13.Text = "Current Mode:";
             // 
             // lbl_currentmode
             // 
-            this.lbl_currentmode.AutoSize = true;
+            resources.ApplyResources(this.lbl_currentmode, "lbl_currentmode");
             this.lbl_currentmode.DataBindings.Add(new System.Windows.Forms.Binding("Text", this.currentStateBindingSource, "mode", true));
-            this.lbl_currentmode.ImeMode = System.Windows.Forms.ImeMode.NoControl;
-            this.lbl_currentmode.Location = new System.Drawing.Point(174, 15);
             this.lbl_currentmode.Name = "lbl_currentmode";
-            this.lbl_currentmode.Size = new System.Drawing.Size(42, 13);
-            this.lbl_currentmode.TabIndex = 139;
-            this.lbl_currentmode.Text = "Manual";
             // 
             // label12
             // 
-            this.label12.AutoSize = true;
-            this.label12.ImeMode = System.Windows.Forms.ImeMode.NoControl;
-            this.label12.Location = new System.Drawing.Point(358, 66);
+            resources.ApplyResources(this.label12, "label12");
             this.label12.Name = "label12";
-            this.label12.Size = new System.Drawing.Size(76, 13);
-            this.label12.TabIndex = 138;
-            this.label12.Text = "PWM 0 - 1230";
             // 
             // label11
             // 
-            this.label11.AutoSize = true;
-            this.label11.ImeMode = System.Windows.Forms.ImeMode.NoControl;
-            this.label11.Location = new System.Drawing.Point(358, 201);
+            resources.ApplyResources(this.label11, "label11");
             this.label11.Name = "label11";
-            this.label11.Size = new System.Drawing.Size(70, 13);
-            this.label11.TabIndex = 137;
-            this.label11.Text = "PWM 1750 +";
             // 
             // label10
             // 
-            this.label10.AutoSize = true;
-            this.label10.ImeMode = System.Windows.Forms.ImeMode.NoControl;
-            this.label10.Location = new System.Drawing.Point(358, 174);
+            resources.ApplyResources(this.label10, "label10");
             this.label10.Name = "label10";
-            this.label10.Size = new System.Drawing.Size(94, 13);
-            this.label10.TabIndex = 136;
-            this.label10.Text = "PWM 1621 - 1749";
             // 
             // label9
             // 
-            this.label9.AutoSize = true;
-            this.label9.ImeMode = System.Windows.Forms.ImeMode.NoControl;
-            this.label9.Location = new System.Drawing.Point(358, 147);
+            resources.ApplyResources(this.label9, "label9");
             this.label9.Name = "label9";
-            this.label9.Size = new System.Drawing.Size(94, 13);
-            this.label9.TabIndex = 135;
-            this.label9.Text = "PWM 1491 - 1620";
             // 
             // label8
             // 
-            this.label8.AutoSize = true;
-            this.label8.ImeMode = System.Windows.Forms.ImeMode.NoControl;
-            this.label8.Location = new System.Drawing.Point(358, 120);
+            resources.ApplyResources(this.label8, "label8");
             this.label8.Name = "label8";
-            this.label8.Size = new System.Drawing.Size(94, 13);
-            this.label8.TabIndex = 134;
-            this.label8.Text = "PWM 1361 - 1490";
             // 
             // label7
             // 
-            this.label7.AutoSize = true;
-            this.label7.ImeMode = System.Windows.Forms.ImeMode.NoControl;
-            this.label7.Location = new System.Drawing.Point(358, 93);
+            resources.ApplyResources(this.label7, "label7");
             this.label7.Name = "label7";
-            this.label7.Size = new System.Drawing.Size(94, 13);
-            this.label7.TabIndex = 133;
-            this.label7.Text = "PWM 1231 - 1360";
             // 
             // label6
             // 
-            this.label6.AutoSize = true;
-            this.label6.ImeMode = System.Windows.Forms.ImeMode.NoControl;
-            this.label6.Location = new System.Drawing.Point(20, 201);
+            resources.ApplyResources(this.label6, "label6");
             this.label6.Name = "label6";
-            this.label6.Size = new System.Drawing.Size(71, 13);
-            this.label6.TabIndex = 131;
-            this.label6.Text = "Flight Mode 6";
             // 
             // CMB_fmode6
             // 
@@ -251,20 +161,13 @@
             this.CMB_fmode6.AutoCompleteSource = System.Windows.Forms.AutoCompleteSource.ListItems;
             this.CMB_fmode6.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
             this.CMB_fmode6.FormattingEnabled = true;
-            this.CMB_fmode6.Location = new System.Drawing.Point(97, 198);
+            resources.ApplyResources(this.CMB_fmode6, "CMB_fmode6");
             this.CMB_fmode6.Name = "CMB_fmode6";
-            this.CMB_fmode6.Size = new System.Drawing.Size(121, 21);
-            this.CMB_fmode6.TabIndex = 130;
             // 
             // label5
             // 
-            this.label5.AutoSize = true;
-            this.label5.ImeMode = System.Windows.Forms.ImeMode.NoControl;
-            this.label5.Location = new System.Drawing.Point(20, 174);
+            resources.ApplyResources(this.label5, "label5");
             this.label5.Name = "label5";
-            this.label5.Size = new System.Drawing.Size(71, 13);
-            this.label5.TabIndex = 129;
-            this.label5.Text = "Flight Mode 5";
             // 
             // CMB_fmode5
             // 
@@ -272,20 +175,13 @@
             this.CMB_fmode5.AutoCompleteSource = System.Windows.Forms.AutoCompleteSource.ListItems;
             this.CMB_fmode5.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
             this.CMB_fmode5.FormattingEnabled = true;
-            this.CMB_fmode5.Location = new System.Drawing.Point(97, 171);
+            resources.ApplyResources(this.CMB_fmode5, "CMB_fmode5");
             this.CMB_fmode5.Name = "CMB_fmode5";
-            this.CMB_fmode5.Size = new System.Drawing.Size(121, 21);
-            this.CMB_fmode5.TabIndex = 128;
             // 
             // label4
             // 
-            this.label4.AutoSize = true;
-            this.label4.ImeMode = System.Windows.Forms.ImeMode.NoControl;
-            this.label4.Location = new System.Drawing.Point(20, 147);
+            resources.ApplyResources(this.label4, "label4");
             this.label4.Name = "label4";
-            this.label4.Size = new System.Drawing.Size(71, 13);
-            this.label4.TabIndex = 127;
-            this.label4.Text = "Flight Mode 4";
             // 
             // CMB_fmode4
             // 
@@ -293,20 +189,13 @@
             this.CMB_fmode4.AutoCompleteSource = System.Windows.Forms.AutoCompleteSource.ListItems;
             this.CMB_fmode4.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
             this.CMB_fmode4.FormattingEnabled = true;
-            this.CMB_fmode4.Location = new System.Drawing.Point(97, 144);
+            resources.ApplyResources(this.CMB_fmode4, "CMB_fmode4");
             this.CMB_fmode4.Name = "CMB_fmode4";
-            this.CMB_fmode4.Size = new System.Drawing.Size(121, 21);
-            this.CMB_fmode4.TabIndex = 126;
             // 
             // label3
             // 
-            this.label3.AutoSize = true;
-            this.label3.ImeMode = System.Windows.Forms.ImeMode.NoControl;
-            this.label3.Location = new System.Drawing.Point(20, 120);
+            resources.ApplyResources(this.label3, "label3");
             this.label3.Name = "label3";
-            this.label3.Size = new System.Drawing.Size(71, 13);
-            this.label3.TabIndex = 125;
-            this.label3.Text = "Flight Mode 3";
             // 
             // CMB_fmode3
             // 
@@ -314,20 +203,13 @@
             this.CMB_fmode3.AutoCompleteSource = System.Windows.Forms.AutoCompleteSource.ListItems;
             this.CMB_fmode3.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
             this.CMB_fmode3.FormattingEnabled = true;
-            this.CMB_fmode3.Location = new System.Drawing.Point(97, 117);
+            resources.ApplyResources(this.CMB_fmode3, "CMB_fmode3");
             this.CMB_fmode3.Name = "CMB_fmode3";
-            this.CMB_fmode3.Size = new System.Drawing.Size(121, 21);
-            this.CMB_fmode3.TabIndex = 124;
             // 
             // label2
             // 
-            this.label2.AutoSize = true;
-            this.label2.ImeMode = System.Windows.Forms.ImeMode.NoControl;
-            this.label2.Location = new System.Drawing.Point(20, 93);
+            resources.ApplyResources(this.label2, "label2");
             this.label2.Name = "label2";
-            this.label2.Size = new System.Drawing.Size(71, 13);
-            this.label2.TabIndex = 123;
-            this.label2.Text = "Flight Mode 2";
             // 
             // CMB_fmode2
             // 
@@ -335,20 +217,13 @@
             this.CMB_fmode2.AutoCompleteSource = System.Windows.Forms.AutoCompleteSource.ListItems;
             this.CMB_fmode2.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
             this.CMB_fmode2.FormattingEnabled = true;
-            this.CMB_fmode2.Location = new System.Drawing.Point(97, 90);
+            resources.ApplyResources(this.CMB_fmode2, "CMB_fmode2");
             this.CMB_fmode2.Name = "CMB_fmode2";
-            this.CMB_fmode2.Size = new System.Drawing.Size(121, 21);
-            this.CMB_fmode2.TabIndex = 122;
             // 
             // label1
             // 
-            this.label1.AutoSize = true;
-            this.label1.ImeMode = System.Windows.Forms.ImeMode.NoControl;
-            this.label1.Location = new System.Drawing.Point(20, 66);
+            resources.ApplyResources(this.label1, "label1");
             this.label1.Name = "label1";
-            this.label1.Size = new System.Drawing.Size(71, 13);
-            this.label1.TabIndex = 121;
-            this.label1.Text = "Flight Mode 1";
             // 
             // CMB_fmode1
             // 
@@ -356,25 +231,19 @@
             this.CMB_fmode1.AutoCompleteSource = System.Windows.Forms.AutoCompleteSource.ListItems;
             this.CMB_fmode1.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
             this.CMB_fmode1.FormattingEnabled = true;
-            this.CMB_fmode1.Location = new System.Drawing.Point(97, 63);
+            resources.ApplyResources(this.CMB_fmode1, "CMB_fmode1");
             this.CMB_fmode1.Name = "CMB_fmode1";
-            this.CMB_fmode1.Size = new System.Drawing.Size(121, 21);
-            this.CMB_fmode1.TabIndex = 120;
             // 
             // BUT_SaveModes
             // 
-            this.BUT_SaveModes.ImeMode = System.Windows.Forms.ImeMode.NoControl;
-            this.BUT_SaveModes.Location = new System.Drawing.Point(97, 225);
+            resources.ApplyResources(this.BUT_SaveModes, "BUT_SaveModes");
             this.BUT_SaveModes.Name = "BUT_SaveModes";
-            this.BUT_SaveModes.Size = new System.Drawing.Size(121, 23);
-            this.BUT_SaveModes.TabIndex = 132;
-            this.BUT_SaveModes.Text = "Save Modes";
             this.BUT_SaveModes.UseVisualStyleBackColor = true;
             this.BUT_SaveModes.Click += new System.EventHandler(this.BUT_SaveModes_Click);
             // 
             // ConfigFlightModes
             // 
-            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+            resources.ApplyResources(this, "$this");
             this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
             this.Controls.Add(this.CB_simple6);
             this.Controls.Add(this.CB_simple5);
@@ -406,7 +275,6 @@
             this.Controls.Add(this.CMB_fmode1);
             this.Controls.Add(this.BUT_SaveModes);
             this.Name = "ConfigFlightModes";
-            this.Size = new System.Drawing.Size(500, 270);
             this.Load += new System.EventHandler(this.ConfigFlightModes_Load);
             ((System.ComponentModel.ISupportInitialize)(this.currentStateBindingSource)).EndInit();
             this.ResumeLayout(false);
diff --git a/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigFlightModes.cs b/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigFlightModes.cs
index d9acf7002..58994c233 100644
--- a/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigFlightModes.cs
+++ b/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigFlightModes.cs
@@ -6,10 +6,11 @@ using System.Data;
 using System.Linq;
 using System.Text;
 using System.Windows.Forms;
+using ArdupilotMega.Controls.BackstageView;
 
 namespace ArdupilotMega.GCSViews.ConfigurationView
 {
-    public partial class ConfigFlightModes : UserControl
+    public partial class ConfigFlightModes : BackStageViewContentPanel
     {
         Timer timer = new Timer();
 
@@ -138,6 +139,16 @@ namespace ArdupilotMega.GCSViews.ConfigurationView
 
         private void ConfigFlightModes_Load(object sender, EventArgs e)
         {
+            if (!MainV2.comPort.BaseStream.IsOpen)
+            {
+                this.Enabled = false;
+                return;
+            }
+            else
+            {
+                this.Enabled = true;
+            }
+
             if (MainV2.cs.firmware == MainV2.Firmwares.ArduPlane) // APM
             {
                 CB_simple1.Visible = false;
diff --git a/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigFlightModes.es-ES.resx b/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigFlightModes.es-ES.resx
new file mode 100644
index 000000000..70ad73f1a
--- /dev/null
+++ b/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigFlightModes.es-ES.resx
@@ -0,0 +1,315 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <data name="SV3_POS_.Text" xml:space="preserve">
+    <value>180</value>
+  </data>
+  <data name="BUT_HS4save.Text" xml:space="preserve">
+    <value>Manual</value>
+  </data>
+  <data name="label12.Text" xml:space="preserve">
+    <value>PWM 0 - 1230</value>
+  </data>
+  <data name="label10.Text" xml:space="preserve">
+    <value>PWM 1621 - 1749</value>
+  </data>
+  <data name="label13.Text" xml:space="preserve">
+    <value>Modo actual:</value>
+  </data>
+  <data name="CHK_enableoptflow.Text" xml:space="preserve">
+    <value>Habilitar el flujo óptico</value>
+  </data>
+  <data name="label16.Text" xml:space="preserve">
+    <value>NOTA: Las imágenes son sólo para su presentación</value>
+  </data>
+  <data name="CB_simple5.Text" xml:space="preserve">
+    <value>Modo Simple</value>
+  </data>
+  <data name="label11.Text" xml:space="preserve">
+    <value>PWM 1750 +</value>
+  </data>
+  <data name="CHK_elevonch1rev.Text" xml:space="preserve">
+    <value>Elevons CH1 Rev</value>
+  </data>
+  <data name="label14.Text" xml:space="preserve">
+    <value>PWM Actual:</value>
+  </data>
+  <data name="$this.Text" xml:space="preserve">
+    <value>APMSetup</value>
+  </data>
+  <data name="label17.Text" xml:space="preserve">
+    <value>Swash-Servo posición</value>
+  </data>
+  <data name="CHK_enablecompass.Text" xml:space="preserve">
+    <value>Activar Compas</value>
+  </data>
+  <data name="CB_simple4.Text" xml:space="preserve">
+    <value>Modo Simple</value>
+  </data>
+  <data name="tabArducopter.Text" xml:space="preserve">
+    <value>ArduCopter2</value>
+  </data>
+  <data name="CB_simple1.Text" xml:space="preserve">
+    <value>Modo Simple</value>
+  </data>
+  <data name="label15.Text" xml:space="preserve">
+    <value>Ajuste Chásis (+ or x)</value>
+  </data>
+  <data name="SV2_POS_.Text" xml:space="preserve">
+    <value>60</value>
+  </data>
+  <data name="label18.Text" xml:space="preserve">
+    <value>1</value>
+  </data>
+  <data name="CB_simple6.Text" xml:space="preserve">
+    <value>Modo Simple</value>
+  </data>
+  <data name="CB_simple3.Text" xml:space="preserve">
+    <value>Modo Simple</value>
+  </data>
+  <data name="label19.Text" xml:space="preserve">
+    <value>2</value>
+  </data>
+  <data name="tabModes.Text" xml:space="preserve">
+    <value>Modos</value>
+  </data>
+  <data name="CB_simple2.Text" xml:space="preserve">
+    <value>Modo Simple</value>
+  </data>
+  <data name="label20.Text" xml:space="preserve">
+    <value>3</value>
+  </data>
+  <data name="tabReset.Text" xml:space="preserve">
+    <value>Reset</value>
+  </data>
+  <data name="SV1_POS_.Text" xml:space="preserve">
+    <value>-60</value>
+  </data>
+  <data name="label21.Text" xml:space="preserve">
+    <value>Superior</value>
+  </data>
+  <data name="label22.Text" xml:space="preserve">
+    <value>Swash de Viaje</value>
+  </data>
+  <data name="lbl_currentmode.Text" xml:space="preserve">
+    <value>Manual</value>
+  </data>
+  <data name="label23.Text" xml:space="preserve">
+    <value>Timón de Viaje</value>
+  </data>
+  <data name="textBox3.Text" xml:space="preserve">
+    <value>Calibración del sensor de voltaje:Para calibrar el sensor, use un multímetro para medir la tensión que sale de la CES de la batería-la eliminación del circuito (se trata de cables negro y rojo en el cable de tres hilos que suministra energía a la placa APM).Luego reste 0,3 V de ese valor y entrar en él en el campo # 1 a la izquierda.</value>
+  </data>
+  <data name="BUT_Calibrateradio.Text" xml:space="preserve">
+    <value>Calibrar Radio</value>
+  </data>
+  <data name="label24.Text" xml:space="preserve">
+    <value>Max</value>
+  </data>
+  <data name="label2.Text" xml:space="preserve">
+    <value>Modo de Vuelo 2</value>
+  </data>
+  <data name="label25.Text" xml:space="preserve">
+    <value>Alabeo Max</value>
+  </data>
+  <data name="label3.Text" xml:space="preserve">
+    <value>Modo de Vuelo 3</value>
+  </data>
+  <data name="label26.Text" xml:space="preserve">
+    <value>Cabeceo Max</value>
+  </data>
+  <data name="label27.Text" xml:space="preserve">
+    <value>por ejemplo, en grados 2 ° 3 'W es -2,3</value>
+  </data>
+  <data name="label1.Text" xml:space="preserve">
+    <value>Modo de Vuelo 1</value>
+  </data>
+  <data name="label28.Text" xml:space="preserve">
+    <value>Nivel tu quad para establecer las compensaciones por defecto acel</value>
+  </data>
+  <data name="label6.Text" xml:space="preserve">
+    <value>Modo de Vuelo 6</value>
+  </data>
+  <data name="label29.Text" xml:space="preserve">
+    <value>Capacidad</value>
+  </data>
+  <data name="label100.Text" xml:space="preserve">
+    <value>Declinación</value>
+  </data>
+  <data name="CHK_enablesonar.Text" xml:space="preserve">
+    <value>Activar Sonar</value>
+  </data>
+  <data name="label7.Text" xml:space="preserve">
+    <value>PWM 1231 - 1360</value>
+  </data>
+  <data name="tabRadioIn.Text" xml:space="preserve">
+    <value>Entrada Radio</value>
+  </data>
+  <data name="groupBox4.Text" xml:space="preserve">
+    <value>Calibración</value>
+  </data>
+  <data name="HS4_MIN.Text" xml:space="preserve">
+    <value>1500</value>
+  </data>
+  <data name="label4.Text" xml:space="preserve">
+    <value>Modo de Vuelo 4</value>
+  </data>
+  <data name="label5.Text" xml:space="preserve">
+    <value>Modo de Vuelo 5</value>
+  </data>
+  <data name="groupBox3.Text" xml:space="preserve">
+    <value>Gyro</value>
+  </data>
+  <data name="label8.Text" xml:space="preserve">
+    <value>PWM 1361 - 1490</value>
+  </data>
+  <data name="tabHardware.Text" xml:space="preserve">
+    <value>Hardware</value>
+  </data>
+  <data name="label9.Text" xml:space="preserve">
+    <value>PWM 1491 - 1620</value>
+  </data>
+  <data name="linkLabelmagdec.Text" xml:space="preserve">
+    <value>Sitio Web Declinación</value>
+  </data>
+  <data name="HS4_MAX.Text" xml:space="preserve">
+    <value>1500</value>
+  </data>
+  <data name="tabBattery.Text" xml:space="preserve">
+    <value>Batería</value>
+  </data>
+  <data name="BUT_0collective.Text" xml:space="preserve">
+    <value>Cero</value>
+  </data>
+  <data name="CHK_enableairspeed.Text" xml:space="preserve">
+    <value>Activar Airspeed</value>
+  </data>
+  <data name="PIT_MAX_.Text" xml:space="preserve">
+    <value>4500</value>
+  </data>
+  <data name="BUT_reset.Text" xml:space="preserve">
+    <value>Restablecer los Ajustes de hardware APM</value>
+  </data>
+  <data name="GYR_GAIN_.Text" xml:space="preserve">
+    <value>1000</value>
+  </data>
+  <data name="label30.Text" xml:space="preserve">
+    <value>Monitor</value>
+  </data>
+</root>
\ No newline at end of file
diff --git a/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigFlightModes.fr.resx b/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigFlightModes.fr.resx
new file mode 100644
index 000000000..1bd274bee
--- /dev/null
+++ b/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigFlightModes.fr.resx
@@ -0,0 +1,312 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <data name="SV3_POS_.Text" xml:space="preserve">
+    <value>180</value>
+  </data>
+  <data name="BUT_HS4save.Text" xml:space="preserve">
+    <value>Manuel</value>
+  </data>
+  <data name="label12.Text" xml:space="preserve">
+    <value>PWM 0 - 1230</value>
+  </data>
+  <data name="label10.Text" xml:space="preserve">
+    <value>PWM 1621 - 1749</value>
+  </data>
+  <data name="label13.Text" xml:space="preserve">
+    <value>Mode Courant:</value>
+  </data>
+  <data name="CHK_enableoptflow.Text" xml:space="preserve">
+    <value>Activ. capteur optique</value>
+  </data>
+  <data name="label16.Text" xml:space="preserve">
+    <value>NOTE: images pou presentation uniquement. Fonctionnel pour Hex, Octo etc...</value>
+  </data>
+  <data name="CB_simple5.Text" xml:space="preserve">
+    <value>Mode Simple</value>
+  </data>
+  <data name="label11.Text" xml:space="preserve">
+    <value>PWM 1750 +</value>
+  </data>
+  <data name="CHK_elevonch1rev.Text" xml:space="preserve">
+    <value>Elevons CH1 Rev</value>
+  </data>
+  <data name="label14.Text" xml:space="preserve">
+    <value>PWM Actuel:</value>
+  </data>
+  <data name="$this.Text" xml:space="preserve">
+    <value>APMSetup</value>
+  </data>
+  <data name="label17.Text" xml:space="preserve">
+    <value>Swash-Servo position</value>
+  </data>
+  <data name="CHK_enablecompass.Text" xml:space="preserve">
+    <value>Activ. Boussole</value>
+  </data>
+  <data name="CB_simple4.Text" xml:space="preserve">
+    <value>Mode Simple</value>
+  </data>
+  <data name="tabArducopter.Text" xml:space="preserve">
+    <value>ArduCopter2</value>
+  </data>
+  <data name="CB_simple1.Text" xml:space="preserve">
+    <value>Mode Simple</value>
+  </data>
+  <data name="label15.Text" xml:space="preserve">
+    <value>type de châssis (+ ou x)</value>
+  </data>
+  <data name="SV2_POS_.Text" xml:space="preserve">
+    <value>60</value>
+  </data>
+  <data name="label18.Text" xml:space="preserve">
+    <value>1</value>
+  </data>
+  <data name="CB_simple6.Text" xml:space="preserve">
+    <value>Mode Simple</value>
+  </data>
+  <data name="CB_simple3.Text" xml:space="preserve">
+    <value>Mode Simple</value>
+  </data>
+  <data name="label19.Text" xml:space="preserve">
+    <value>2</value>
+  </data>
+  <data name="tabModes.Text" xml:space="preserve">
+    <value>Modes</value>
+  </data>
+  <data name="CB_simple2.Text" xml:space="preserve">
+    <value>Mode Simple</value>
+  </data>
+  <data name="label20.Text" xml:space="preserve">
+    <value>3</value>
+  </data>
+  <data name="tabReset.Text" xml:space="preserve">
+    <value>Réinit.</value>
+  </data>
+  <data name="SV1_POS_.Text" xml:space="preserve">
+    <value>-60</value>
+  </data>
+  <data name="label21.Text" xml:space="preserve">
+    <value>Haut</value>
+  </data>
+  <data name="label22.Text" xml:space="preserve">
+    <value>Mouvement Swash</value>
+  </data>
+  <data name="lbl_currentmode.Text" xml:space="preserve">
+    <value>Manuel</value>
+  </data>
+  <data name="label23.Text" xml:space="preserve">
+    <value>Deplac. du Gouvernail</value>
+  </data>
+  <data name="textBox3.Text" xml:space="preserve">
+    <value>Calibration du capteur de Voltage.1. Mesurer le voltage sur APM et inscrivez-le dans la boite ci-bas.2. Mesurer le voltage de la batterie et inscrivez-le dans la boite ci-bas.3. Inscrire les ampères par volt de la documentation du capteur de courant ci-bas</value>
+  </data>
+  <data name="BUT_Calibrateradio.Text" xml:space="preserve">
+    <value>Calibrer Radio</value>
+  </data>
+  <data name="label24.Text" xml:space="preserve">
+    <value>Max</value>
+  </data>
+  <data name="label2.Text" xml:space="preserve">
+    <value>Mode de vol 2</value>
+  </data>
+  <data name="label25.Text" xml:space="preserve">
+    <value>Roulis Max</value>
+  </data>
+  <data name="label3.Text" xml:space="preserve">
+    <value>Mode de vol 2</value>
+  </data>
+  <data name="label26.Text" xml:space="preserve">
+    <value>Tangage Max</value>
+  </data>
+  <data name="label27.Text" xml:space="preserve">
+    <value>en degrés eg 2° 3' W est -2.3</value>
+  </data>
+  <data name="label1.Text" xml:space="preserve">
+    <value>Mode de vol 1</value>
+  </data>
+  <data name="label28.Text" xml:space="preserve">
+    <value>Niveler l'apareil pour copensation des accels</value>
+  </data>
+  <data name="label6.Text" xml:space="preserve">
+    <value>Mode de vol 6</value>
+  </data>
+  <data name="label29.Text" xml:space="preserve">
+    <value>Capacité</value>
+  </data>
+  <data name="label100.Text" xml:space="preserve">
+    <value>Déclination</value>
+  </data>
+  <data name="CHK_enablesonar.Text" xml:space="preserve">
+    <value>Activer Sonar</value>
+  </data>
+  <data name="label7.Text" xml:space="preserve">
+    <value>PWM 1231 - 1360</value>
+  </data>
+  <data name="tabRadioIn.Text" xml:space="preserve">
+    <value>Entrée Radio</value>
+  </data>
+  <data name="HS4_MIN.Text" xml:space="preserve">
+    <value>1500</value>
+  </data>
+  <data name="label4.Text" xml:space="preserve">
+    <value>Mode de vol 4</value>
+  </data>
+  <data name="label5.Text" xml:space="preserve">
+    <value>Mode de vol 5</value>
+  </data>
+  <data name="groupBox3.Text" xml:space="preserve">
+    <value>Gyro</value>
+  </data>
+  <data name="label8.Text" xml:space="preserve">
+    <value>PWM 1361 - 1490</value>
+  </data>
+  <data name="tabHardware.Text" xml:space="preserve">
+    <value>Matériel</value>
+  </data>
+  <data name="label9.Text" xml:space="preserve">
+    <value>PWM 1491 - 1620</value>
+  </data>
+  <data name="linkLabelmagdec.Text" xml:space="preserve">
+    <value>Site Web Déclination</value>
+  </data>
+  <data name="HS4_MAX.Text" xml:space="preserve">
+    <value>1500</value>
+  </data>
+  <data name="tabBattery.Text" xml:space="preserve">
+    <value>Batterie</value>
+  </data>
+  <data name="BUT_0collective.Text" xml:space="preserve">
+    <value>Zéro</value>
+  </data>
+  <data name="CHK_enableairspeed.Text" xml:space="preserve">
+    <value>Activ. Airspeed</value>
+  </data>
+  <data name="PIT_MAX_.Text" xml:space="preserve">
+    <value>4500</value>
+  </data>
+  <data name="BUT_reset.Text" xml:space="preserve">
+    <value>RàZ tout parametres du APM</value>
+  </data>
+  <data name="GYR_GAIN_.Text" xml:space="preserve">
+    <value>1000</value>
+  </data>
+  <data name="label30.Text" xml:space="preserve">
+    <value>Moniteur</value>
+  </data>
+</root>
\ No newline at end of file
diff --git a/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigFlightModes.it-IT.resx b/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigFlightModes.it-IT.resx
new file mode 100644
index 000000000..2b2636c81
--- /dev/null
+++ b/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigFlightModes.it-IT.resx
@@ -0,0 +1,318 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <data name="SV3_POS_.Text" xml:space="preserve">
+    <value>180</value>
+  </data>
+  <data name="BUT_HS4save.Text" xml:space="preserve">
+    <value>Manuale</value>
+  </data>
+  <data name="label12.Text" xml:space="preserve">
+    <value>PWM 0 - 1230</value>
+  </data>
+  <data name="label10.Text" xml:space="preserve">
+    <value>PWM 1621 - 1749</value>
+  </data>
+  <data name="label13.Text" xml:space="preserve">
+    <value>Modo Corrente:</value>
+  </data>
+  <data name="CHK_enableoptflow.Text" xml:space="preserve">
+    <value>Abilita Flusso ottico</value>
+  </data>
+  <data name="label16.Text" xml:space="preserve">
+    <value>Nota: le immagini sono sono per presentazione, funzionerà con Hexa, etc.</value>
+  </data>
+  <data name="CB_simple5.Text" xml:space="preserve">
+    <value>Modo Semplice</value>
+  </data>
+  <data name="label11.Text" xml:space="preserve">
+    <value>PWM 1750 +</value>
+  </data>
+  <data name="CHK_elevonch1rev.Text" xml:space="preserve">
+    <value>Elevatore CH1 Rev</value>
+  </data>
+  <data name="label14.Text" xml:space="preserve">
+    <value>PWM Corrente:</value>
+  </data>
+  <data name="$this.Text" xml:space="preserve">
+    <value>Imposta APM</value>
+  </data>
+  <data name="label17.Text" xml:space="preserve">
+    <value>Posizione del servo del piatto</value>
+  </data>
+  <data name="CHK_enablecompass.Text" xml:space="preserve">
+    <value>Abilita Magnetometro</value>
+  </data>
+  <data name="CB_simple4.Text" xml:space="preserve">
+    <value>Modo Semplice</value>
+  </data>
+  <data name="tabArducopter.Text" xml:space="preserve">
+    <value>ArduCopter2</value>
+  </data>
+  <data name="CB_simple1.Text" xml:space="preserve">
+    <value>Modo Semplice</value>
+  </data>
+  <data name="label15.Text" xml:space="preserve">
+    <value>Imposta Frame (+ or x)</value>
+  </data>
+  <data name="SV2_POS_.Text" xml:space="preserve">
+    <value>60</value>
+  </data>
+  <data name="label18.Text" xml:space="preserve">
+    <value>1</value>
+  </data>
+  <data name="CB_simple6.Text" xml:space="preserve">
+    <value>Modo Semplice</value>
+  </data>
+  <data name="CB_simple3.Text" xml:space="preserve">
+    <value>Modo Semplice</value>
+  </data>
+  <data name="label19.Text" xml:space="preserve">
+    <value>2</value>
+  </data>
+  <data name="tabModes.Text" xml:space="preserve">
+    <value>Modi</value>
+  </data>
+  <data name="CB_simple2.Text" xml:space="preserve">
+    <value>Modo Semplice</value>
+  </data>
+  <data name="label20.Text" xml:space="preserve">
+    <value>3</value>
+  </data>
+  <data name="tabReset.Text" xml:space="preserve">
+    <value>Riavvia</value>
+  </data>
+  <data name="SV1_POS_.Text" xml:space="preserve">
+    <value>-60</value>
+  </data>
+  <data name="label21.Text" xml:space="preserve">
+    <value>Alto</value>
+  </data>
+  <data name="label22.Text" xml:space="preserve">
+    <value>Escursione del piatto</value>
+  </data>
+  <data name="lbl_currentmode.Text" xml:space="preserve">
+    <value>Manuale</value>
+  </data>
+  <data name="label23.Text" xml:space="preserve">
+    <value>Escursione Timone</value>
+  </data>
+  <data name="textBox3.Text" xml:space="preserve">
+    <value>Calibarzione del sensore di voltaggio:
+1. Misura il valtaggio di ingresso di APM e inseriscilo nel box sotto 
+2. Misura il voltaggio della batteria e inseriscilo nel box sotto 
+3. Dalle caratteristiche del sensore di corrente, inserisci il valore degli ampere per volt nel box qui sotto</value>
+  </data>
+  <data name="BUT_Calibrateradio.Text" xml:space="preserve">
+    <value>Calibrazione Radio</value>
+  </data>
+  <data name="label24.Text" xml:space="preserve">
+    <value>Massimo</value>
+  </data>
+  <data name="label2.Text" xml:space="preserve">
+    <value>Modo di volo 2</value>
+  </data>
+  <data name="label25.Text" xml:space="preserve">
+    <value>Rollio massimo</value>
+  </data>
+  <data name="label3.Text" xml:space="preserve">
+    <value>Modo di volo 3</value>
+  </data>
+  <data name="label26.Text" xml:space="preserve">
+    <value>Passo massimo</value>
+  </data>
+  <data name="label27.Text" xml:space="preserve">
+    <value>in gradi es 2° 3' W is -2.3</value>
+  </data>
+  <data name="label1.Text" xml:space="preserve">
+    <value>Modo di volo 1</value>
+  </data>
+  <data name="label28.Text" xml:space="preserve">
+    <value>Livella il quad per impostare gli accelerometri</value>
+  </data>
+  <data name="label6.Text" xml:space="preserve">
+    <value>Modo di volo 6</value>
+  </data>
+  <data name="label29.Text" xml:space="preserve">
+    <value>Capacità</value>
+  </data>
+  <data name="label100.Text" xml:space="preserve">
+    <value>Declinazione</value>
+  </data>
+  <data name="CHK_enablesonar.Text" xml:space="preserve">
+    <value>Attiva Sonar</value>
+  </data>
+  <data name="label7.Text" xml:space="preserve">
+    <value>PWM 1231 - 1360</value>
+  </data>
+  <data name="tabRadioIn.Text" xml:space="preserve">
+    <value>Ingresso Radio</value>
+  </data>
+  <data name="groupBox4.Text" xml:space="preserve">
+    <value>Calibration</value>
+  </data>
+  <data name="HS4_MIN.Text" xml:space="preserve">
+    <value>1500</value>
+  </data>
+  <data name="label4.Text" xml:space="preserve">
+    <value>Modo di volo 4</value>
+  </data>
+  <data name="label5.Text" xml:space="preserve">
+    <value>Modo di volo 5</value>
+  </data>
+  <data name="groupBox3.Text" xml:space="preserve">
+    <value>Giroscopio</value>
+  </data>
+  <data name="label8.Text" xml:space="preserve">
+    <value>PWM 1361 - 1490</value>
+  </data>
+  <data name="tabHardware.Text" xml:space="preserve">
+    <value>Hardware</value>
+  </data>
+  <data name="label9.Text" xml:space="preserve">
+    <value>PWM 1491 - 1620</value>
+  </data>
+  <data name="linkLabelmagdec.Text" xml:space="preserve">
+    <value>Sito Web per la Declinazione</value>
+  </data>
+  <data name="HS4_MAX.Text" xml:space="preserve">
+    <value>1500</value>
+  </data>
+  <data name="tabBattery.Text" xml:space="preserve">
+    <value>Batteria</value>
+  </data>
+  <data name="BUT_0collective.Text" xml:space="preserve">
+    <value>Zero</value>
+  </data>
+  <data name="CHK_enableairspeed.Text" xml:space="preserve">
+    <value>Attiva Sensore Velocità</value>
+  </data>
+  <data name="PIT_MAX_.Text" xml:space="preserve">
+    <value>4500</value>
+  </data>
+  <data name="BUT_reset.Text" xml:space="preserve">
+    <value>Resetta APM ai valori di Default</value>
+  </data>
+  <data name="GYR_GAIN_.Text" xml:space="preserve">
+    <value>1000</value>
+  </data>
+  <data name="label30.Text" xml:space="preserve">
+    <value>Monitor</value>
+  </data>
+</root>
\ No newline at end of file
diff --git a/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigFlightModes.pl.resx b/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigFlightModes.pl.resx
new file mode 100644
index 000000000..057b93271
--- /dev/null
+++ b/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigFlightModes.pl.resx
@@ -0,0 +1,318 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <data name="SV3_POS_.Text" xml:space="preserve">
+    <value>180</value>
+  </data>
+  <data name="BUT_HS4save.Text" xml:space="preserve">
+    <value>Ręczne</value>
+  </data>
+  <data name="label12.Text" xml:space="preserve">
+    <value>PWM 0 - 1230</value>
+  </data>
+  <data name="label10.Text" xml:space="preserve">
+    <value>PWM 1621 - 1749</value>
+  </data>
+  <data name="label13.Text" xml:space="preserve">
+    <value>Aktualny tryb:</value>
+  </data>
+  <data name="CHK_enableoptflow.Text" xml:space="preserve">
+    <value>Włącz Optical Flow</value>
+  </data>
+  <data name="label16.Text" xml:space="preserve">
+    <value>UWAGA: Obrazy są wyłącznie do prezentacji, działają jedynie z hexa, itp.</value>
+  </data>
+  <data name="CB_simple5.Text" xml:space="preserve">
+    <value>Tryb prosty</value>
+  </data>
+  <data name="label11.Text" xml:space="preserve">
+    <value>PWM 1750 +</value>
+  </data>
+  <data name="CHK_elevonch1rev.Text" xml:space="preserve">
+    <value>Odwr. Elevon CH1</value>
+  </data>
+  <data name="label14.Text" xml:space="preserve">
+    <value>Aktualny PWM:</value>
+  </data>
+  <data name="$this.Text" xml:space="preserve">
+    <value>Ustawienia APM</value>
+  </data>
+  <data name="label17.Text" xml:space="preserve">
+    <value>Pozycja serwa płyty ster.</value>
+  </data>
+  <data name="CHK_enablecompass.Text" xml:space="preserve">
+    <value>Włącz kompas</value>
+  </data>
+  <data name="CB_simple4.Text" xml:space="preserve">
+    <value>Tryb prosty</value>
+  </data>
+  <data name="tabArducopter.Text" xml:space="preserve">
+    <value>ArduCopter2</value>
+  </data>
+  <data name="CB_simple1.Text" xml:space="preserve">
+    <value>Tryb prosty</value>
+  </data>
+  <data name="label15.Text" xml:space="preserve">
+    <value>Ustawienie ramy (+ lub x)</value>
+  </data>
+  <data name="SV2_POS_.Text" xml:space="preserve">
+    <value>60</value>
+  </data>
+  <data name="label18.Text" xml:space="preserve">
+    <value>1</value>
+  </data>
+  <data name="CB_simple6.Text" xml:space="preserve">
+    <value>Tryb prosty</value>
+  </data>
+  <data name="CB_simple3.Text" xml:space="preserve">
+    <value>Tryb prosty</value>
+  </data>
+  <data name="label19.Text" xml:space="preserve">
+    <value>2</value>
+  </data>
+  <data name="tabModes.Text" xml:space="preserve">
+    <value>Tryby</value>
+  </data>
+  <data name="CB_simple2.Text" xml:space="preserve">
+    <value>Tryb prosty</value>
+  </data>
+  <data name="label20.Text" xml:space="preserve">
+    <value>3</value>
+  </data>
+  <data name="tabReset.Text" xml:space="preserve">
+    <value>Reset</value>
+  </data>
+  <data name="SV1_POS_.Text" xml:space="preserve">
+    <value>-60</value>
+  </data>
+  <data name="label21.Text" xml:space="preserve">
+    <value>Góra</value>
+  </data>
+  <data name="label22.Text" xml:space="preserve">
+    <value>Zakres ruchu płyty sterującej</value>
+  </data>
+  <data name="lbl_currentmode.Text" xml:space="preserve">
+    <value>Ręczne</value>
+  </data>
+  <data name="label23.Text" xml:space="preserve">
+    <value>Zakres steru kierunku</value>
+  </data>
+  <data name="textBox3.Text" xml:space="preserve">
+    <value>Kalibracja czujnika napięcia:
+1. Zmierz napięcie wejściowe APM i wpisz poniżej
+2. Zmierz napięcie baterii i wpisz poniżej
+3. Wpisz poniżej ilość amperów/wolt [A/V] z dokumentacji czujnika prądu</value>
+  </data>
+  <data name="BUT_Calibrateradio.Text" xml:space="preserve">
+    <value>Kalibracja radia</value>
+  </data>
+  <data name="label24.Text" xml:space="preserve">
+    <value>Max</value>
+  </data>
+  <data name="label2.Text" xml:space="preserve">
+    <value>Tryb lotu 2</value>
+  </data>
+  <data name="label25.Text" xml:space="preserve">
+    <value>Max przechylenie</value>
+  </data>
+  <data name="label3.Text" xml:space="preserve">
+    <value>Tryb lotu 3</value>
+  </data>
+  <data name="label26.Text" xml:space="preserve">
+    <value>Max pochylenie</value>
+  </data>
+  <data name="label27.Text" xml:space="preserve">
+    <value>w stopniech np. 2° 3' W to -2.3</value>
+  </data>
+  <data name="label1.Text" xml:space="preserve">
+    <value>Tryb lotu 1</value>
+  </data>
+  <data name="label28.Text" xml:space="preserve">
+    <value>Wypoziomuj quada żeby stawić domyśle offsety przysp.</value>
+  </data>
+  <data name="label6.Text" xml:space="preserve">
+    <value>Tryb lotu 6</value>
+  </data>
+  <data name="label29.Text" xml:space="preserve">
+    <value>Pojemność</value>
+  </data>
+  <data name="label100.Text" xml:space="preserve">
+    <value>Deklinacja</value>
+  </data>
+  <data name="CHK_enablesonar.Text" xml:space="preserve">
+    <value>Włącz sonar</value>
+  </data>
+  <data name="label7.Text" xml:space="preserve">
+    <value>PWM 1231 - 1360</value>
+  </data>
+  <data name="tabRadioIn.Text" xml:space="preserve">
+    <value>Wejścia radia</value>
+  </data>
+  <data name="groupBox4.Text" xml:space="preserve">
+    <value>Calibration</value>
+  </data>
+  <data name="HS4_MIN.Text" xml:space="preserve">
+    <value>1500</value>
+  </data>
+  <data name="label4.Text" xml:space="preserve">
+    <value>Tryb lotu 4</value>
+  </data>
+  <data name="label5.Text" xml:space="preserve">
+    <value>Tryb lotu 5</value>
+  </data>
+  <data name="groupBox3.Text" xml:space="preserve">
+    <value>Żyro</value>
+  </data>
+  <data name="label8.Text" xml:space="preserve">
+    <value>PWM 1361 - 1490</value>
+  </data>
+  <data name="tabHardware.Text" xml:space="preserve">
+    <value>Hardware</value>
+  </data>
+  <data name="label9.Text" xml:space="preserve">
+    <value>PWM 1491 - 1620</value>
+  </data>
+  <data name="linkLabelmagdec.Text" xml:space="preserve">
+    <value>Strona www deklinacji</value>
+  </data>
+  <data name="HS4_MAX.Text" xml:space="preserve">
+    <value>1500</value>
+  </data>
+  <data name="tabBattery.Text" xml:space="preserve">
+    <value>Bateria</value>
+  </data>
+  <data name="BUT_0collective.Text" xml:space="preserve">
+    <value>Zero</value>
+  </data>
+  <data name="CHK_enableairspeed.Text" xml:space="preserve">
+    <value>Włącz prędkość powietrza</value>
+  </data>
+  <data name="PIT_MAX_.Text" xml:space="preserve">
+    <value>4500</value>
+  </data>
+  <data name="BUT_reset.Text" xml:space="preserve">
+    <value>Reset APM do stawień domyślnych</value>
+  </data>
+  <data name="GYR_GAIN_.Text" xml:space="preserve">
+    <value>1000</value>
+  </data>
+  <data name="label30.Text" xml:space="preserve">
+    <value>Monitor</value>
+  </data>
+</root>
\ No newline at end of file
diff --git a/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigFlightModes.resx b/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigFlightModes.resx
index ff1f88db6..a4992dbe3 100644
--- a/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigFlightModes.resx
+++ b/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigFlightModes.resx
@@ -117,10 +117,862 @@
   <resheader name="writer">
     <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
   </resheader>
+  <assembly alias="mscorlib" name="mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
+  <data name="CB_simple6.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
+  <data name="CB_simple6.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
+    <value>NoControl</value>
+  </data>
+  <assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
+  <data name="CB_simple6.Location" type="System.Drawing.Point, System.Drawing">
+    <value>232, 200</value>
+  </data>
+  <data name="CB_simple6.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
+    <value>2, 2, 2, 2</value>
+  </data>
+  <data name="CB_simple6.Size" type="System.Drawing.Size, System.Drawing">
+    <value>87, 17</value>
+  </data>
+  <data name="CB_simple6.TabIndex" type="System.Int32, mscorlib">
+    <value>148</value>
+  </data>
+  <data name="CB_simple6.Text" xml:space="preserve">
+    <value>Simple Mode</value>
+  </data>
+  <data name="&gt;&gt;CB_simple6.Name" xml:space="preserve">
+    <value>CB_simple6</value>
+  </data>
+  <data name="&gt;&gt;CB_simple6.Type" xml:space="preserve">
+    <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;CB_simple6.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name="&gt;&gt;CB_simple6.ZOrder" xml:space="preserve">
+    <value>0</value>
+  </data>
+  <data name="CB_simple5.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <data name="CB_simple5.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
+    <value>NoControl</value>
+  </data>
+  <data name="CB_simple5.Location" type="System.Drawing.Point, System.Drawing">
+    <value>232, 173</value>
+  </data>
+  <data name="CB_simple5.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
+    <value>2, 2, 2, 2</value>
+  </data>
+  <data name="CB_simple5.Size" type="System.Drawing.Size, System.Drawing">
+    <value>87, 17</value>
+  </data>
+  <data name="CB_simple5.TabIndex" type="System.Int32, mscorlib">
+    <value>147</value>
+  </data>
+  <data name="CB_simple5.Text" xml:space="preserve">
+    <value>Simple Mode</value>
+  </data>
+  <data name="&gt;&gt;CB_simple5.Name" xml:space="preserve">
+    <value>CB_simple5</value>
+  </data>
+  <data name="&gt;&gt;CB_simple5.Type" xml:space="preserve">
+    <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;CB_simple5.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name="&gt;&gt;CB_simple5.ZOrder" xml:space="preserve">
+    <value>1</value>
+  </data>
+  <data name="CB_simple4.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <data name="CB_simple4.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
+    <value>NoControl</value>
+  </data>
+  <data name="CB_simple4.Location" type="System.Drawing.Point, System.Drawing">
+    <value>232, 146</value>
+  </data>
+  <data name="CB_simple4.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
+    <value>2, 2, 2, 2</value>
+  </data>
+  <data name="CB_simple4.Size" type="System.Drawing.Size, System.Drawing">
+    <value>87, 17</value>
+  </data>
+  <data name="CB_simple4.TabIndex" type="System.Int32, mscorlib">
+    <value>146</value>
+  </data>
+  <data name="CB_simple4.Text" xml:space="preserve">
+    <value>Simple Mode</value>
+  </data>
+  <data name="&gt;&gt;CB_simple4.Name" xml:space="preserve">
+    <value>CB_simple4</value>
+  </data>
+  <data name="&gt;&gt;CB_simple4.Type" xml:space="preserve">
+    <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;CB_simple4.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name="&gt;&gt;CB_simple4.ZOrder" xml:space="preserve">
+    <value>2</value>
+  </data>
+  <data name="CB_simple3.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <data name="CB_simple3.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
+    <value>NoControl</value>
+  </data>
+  <data name="CB_simple3.Location" type="System.Drawing.Point, System.Drawing">
+    <value>232, 119</value>
+  </data>
+  <data name="CB_simple3.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
+    <value>2, 2, 2, 2</value>
+  </data>
+  <data name="CB_simple3.Size" type="System.Drawing.Size, System.Drawing">
+    <value>87, 17</value>
+  </data>
+  <data name="CB_simple3.TabIndex" type="System.Int32, mscorlib">
+    <value>145</value>
+  </data>
+  <data name="CB_simple3.Text" xml:space="preserve">
+    <value>Simple Mode</value>
+  </data>
+  <data name="&gt;&gt;CB_simple3.Name" xml:space="preserve">
+    <value>CB_simple3</value>
+  </data>
+  <data name="&gt;&gt;CB_simple3.Type" xml:space="preserve">
+    <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;CB_simple3.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name="&gt;&gt;CB_simple3.ZOrder" xml:space="preserve">
+    <value>3</value>
+  </data>
+  <data name="CB_simple2.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <data name="CB_simple2.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
+    <value>NoControl</value>
+  </data>
+  <data name="CB_simple2.Location" type="System.Drawing.Point, System.Drawing">
+    <value>232, 92</value>
+  </data>
+  <data name="CB_simple2.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
+    <value>2, 2, 2, 2</value>
+  </data>
+  <data name="CB_simple2.Size" type="System.Drawing.Size, System.Drawing">
+    <value>87, 17</value>
+  </data>
+  <data name="CB_simple2.TabIndex" type="System.Int32, mscorlib">
+    <value>144</value>
+  </data>
+  <data name="CB_simple2.Text" xml:space="preserve">
+    <value>Simple Mode</value>
+  </data>
+  <data name="&gt;&gt;CB_simple2.Name" xml:space="preserve">
+    <value>CB_simple2</value>
+  </data>
+  <data name="&gt;&gt;CB_simple2.Type" xml:space="preserve">
+    <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;CB_simple2.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name="&gt;&gt;CB_simple2.ZOrder" xml:space="preserve">
+    <value>4</value>
+  </data>
+  <data name="CB_simple1.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <data name="CB_simple1.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
+    <value>NoControl</value>
+  </data>
+  <data name="CB_simple1.Location" type="System.Drawing.Point, System.Drawing">
+    <value>232, 65</value>
+  </data>
+  <data name="CB_simple1.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
+    <value>2, 2, 2, 2</value>
+  </data>
+  <data name="CB_simple1.Size" type="System.Drawing.Size, System.Drawing">
+    <value>87, 17</value>
+  </data>
+  <data name="CB_simple1.TabIndex" type="System.Int32, mscorlib">
+    <value>143</value>
+  </data>
+  <data name="CB_simple1.Text" xml:space="preserve">
+    <value>Simple Mode</value>
+  </data>
+  <data name="&gt;&gt;CB_simple1.Name" xml:space="preserve">
+    <value>CB_simple1</value>
+  </data>
+  <data name="&gt;&gt;CB_simple1.Type" xml:space="preserve">
+    <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;CB_simple1.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name="&gt;&gt;CB_simple1.ZOrder" xml:space="preserve">
+    <value>5</value>
+  </data>
+  <data name="label14.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <data name="label14.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
+    <value>NoControl</value>
+  </data>
+  <data name="label14.Location" type="System.Drawing.Point, System.Drawing">
+    <value>94, 32</value>
+  </data>
+  <data name="label14.Size" type="System.Drawing.Size, System.Drawing">
+    <value>74, 13</value>
+  </data>
+  <data name="label14.TabIndex" type="System.Int32, mscorlib">
+    <value>142</value>
+  </data>
+  <data name="label14.Text" xml:space="preserve">
+    <value>Current PWM:</value>
+  </data>
+  <data name="&gt;&gt;label14.Name" xml:space="preserve">
+    <value>label14</value>
+  </data>
+  <data name="&gt;&gt;label14.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;label14.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name="&gt;&gt;label14.ZOrder" xml:space="preserve">
+    <value>6</value>
+  </data>
+  <data name="LBL_flightmodepwm.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <data name="LBL_flightmodepwm.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
+    <value>NoControl</value>
+  </data>
+  <data name="LBL_flightmodepwm.Location" type="System.Drawing.Point, System.Drawing">
+    <value>174, 32</value>
+  </data>
+  <data name="LBL_flightmodepwm.Size" type="System.Drawing.Size, System.Drawing">
+    <value>13, 13</value>
+  </data>
+  <data name="LBL_flightmodepwm.TabIndex" type="System.Int32, mscorlib">
+    <value>141</value>
+  </data>
+  <data name="LBL_flightmodepwm.Text" xml:space="preserve">
+    <value>0</value>
+  </data>
+  <data name="&gt;&gt;LBL_flightmodepwm.Name" xml:space="preserve">
+    <value>LBL_flightmodepwm</value>
+  </data>
+  <data name="&gt;&gt;LBL_flightmodepwm.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;LBL_flightmodepwm.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name="&gt;&gt;LBL_flightmodepwm.ZOrder" xml:space="preserve">
+    <value>7</value>
+  </data>
+  <data name="label13.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <data name="label13.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
+    <value>NoControl</value>
+  </data>
+  <data name="label13.Location" type="System.Drawing.Point, System.Drawing">
+    <value>94, 15</value>
+  </data>
+  <data name="label13.Size" type="System.Drawing.Size, System.Drawing">
+    <value>74, 13</value>
+  </data>
+  <data name="label13.TabIndex" type="System.Int32, mscorlib">
+    <value>140</value>
+  </data>
+  <data name="label13.Text" xml:space="preserve">
+    <value>Current Mode:</value>
+  </data>
+  <data name="&gt;&gt;label13.Name" xml:space="preserve">
+    <value>label13</value>
+  </data>
+  <data name="&gt;&gt;label13.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;label13.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name="&gt;&gt;label13.ZOrder" xml:space="preserve">
+    <value>8</value>
+  </data>
+  <data name="lbl_currentmode.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
   <metadata name="currentStateBindingSource.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
     <value>17, 17</value>
   </metadata>
-  <metadata name="currentStateBindingSource.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
-    <value>17, 17</value>
+  <data name="lbl_currentmode.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
+    <value>NoControl</value>
+  </data>
+  <data name="lbl_currentmode.Location" type="System.Drawing.Point, System.Drawing">
+    <value>174, 15</value>
+  </data>
+  <data name="lbl_currentmode.Size" type="System.Drawing.Size, System.Drawing">
+    <value>42, 13</value>
+  </data>
+  <data name="lbl_currentmode.TabIndex" type="System.Int32, mscorlib">
+    <value>139</value>
+  </data>
+  <data name="lbl_currentmode.Text" xml:space="preserve">
+    <value>Manual</value>
+  </data>
+  <data name="&gt;&gt;lbl_currentmode.Name" xml:space="preserve">
+    <value>lbl_currentmode</value>
+  </data>
+  <data name="&gt;&gt;lbl_currentmode.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;lbl_currentmode.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name="&gt;&gt;lbl_currentmode.ZOrder" xml:space="preserve">
+    <value>9</value>
+  </data>
+  <data name="label12.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <data name="label12.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
+    <value>NoControl</value>
+  </data>
+  <data name="label12.Location" type="System.Drawing.Point, System.Drawing">
+    <value>358, 66</value>
+  </data>
+  <data name="label12.Size" type="System.Drawing.Size, System.Drawing">
+    <value>76, 13</value>
+  </data>
+  <data name="label12.TabIndex" type="System.Int32, mscorlib">
+    <value>138</value>
+  </data>
+  <data name="label12.Text" xml:space="preserve">
+    <value>PWM 0 - 1230</value>
+  </data>
+  <data name="&gt;&gt;label12.Name" xml:space="preserve">
+    <value>label12</value>
+  </data>
+  <data name="&gt;&gt;label12.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;label12.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name="&gt;&gt;label12.ZOrder" xml:space="preserve">
+    <value>10</value>
+  </data>
+  <data name="label11.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <data name="label11.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
+    <value>NoControl</value>
+  </data>
+  <data name="label11.Location" type="System.Drawing.Point, System.Drawing">
+    <value>358, 201</value>
+  </data>
+  <data name="label11.Size" type="System.Drawing.Size, System.Drawing">
+    <value>70, 13</value>
+  </data>
+  <data name="label11.TabIndex" type="System.Int32, mscorlib">
+    <value>137</value>
+  </data>
+  <data name="label11.Text" xml:space="preserve">
+    <value>PWM 1750 +</value>
+  </data>
+  <data name="&gt;&gt;label11.Name" xml:space="preserve">
+    <value>label11</value>
+  </data>
+  <data name="&gt;&gt;label11.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;label11.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name="&gt;&gt;label11.ZOrder" xml:space="preserve">
+    <value>11</value>
+  </data>
+  <data name="label10.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <data name="label10.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
+    <value>NoControl</value>
+  </data>
+  <data name="label10.Location" type="System.Drawing.Point, System.Drawing">
+    <value>358, 174</value>
+  </data>
+  <data name="label10.Size" type="System.Drawing.Size, System.Drawing">
+    <value>94, 13</value>
+  </data>
+  <data name="label10.TabIndex" type="System.Int32, mscorlib">
+    <value>136</value>
+  </data>
+  <data name="label10.Text" xml:space="preserve">
+    <value>PWM 1621 - 1749</value>
+  </data>
+  <data name="&gt;&gt;label10.Name" xml:space="preserve">
+    <value>label10</value>
+  </data>
+  <data name="&gt;&gt;label10.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;label10.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name="&gt;&gt;label10.ZOrder" xml:space="preserve">
+    <value>12</value>
+  </data>
+  <data name="label9.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <data name="label9.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
+    <value>NoControl</value>
+  </data>
+  <data name="label9.Location" type="System.Drawing.Point, System.Drawing">
+    <value>358, 147</value>
+  </data>
+  <data name="label9.Size" type="System.Drawing.Size, System.Drawing">
+    <value>94, 13</value>
+  </data>
+  <data name="label9.TabIndex" type="System.Int32, mscorlib">
+    <value>135</value>
+  </data>
+  <data name="label9.Text" xml:space="preserve">
+    <value>PWM 1491 - 1620</value>
+  </data>
+  <data name="&gt;&gt;label9.Name" xml:space="preserve">
+    <value>label9</value>
+  </data>
+  <data name="&gt;&gt;label9.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;label9.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name="&gt;&gt;label9.ZOrder" xml:space="preserve">
+    <value>13</value>
+  </data>
+  <data name="label8.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <data name="label8.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
+    <value>NoControl</value>
+  </data>
+  <data name="label8.Location" type="System.Drawing.Point, System.Drawing">
+    <value>358, 120</value>
+  </data>
+  <data name="label8.Size" type="System.Drawing.Size, System.Drawing">
+    <value>94, 13</value>
+  </data>
+  <data name="label8.TabIndex" type="System.Int32, mscorlib">
+    <value>134</value>
+  </data>
+  <data name="label8.Text" xml:space="preserve">
+    <value>PWM 1361 - 1490</value>
+  </data>
+  <data name="&gt;&gt;label8.Name" xml:space="preserve">
+    <value>label8</value>
+  </data>
+  <data name="&gt;&gt;label8.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;label8.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name="&gt;&gt;label8.ZOrder" xml:space="preserve">
+    <value>14</value>
+  </data>
+  <data name="label7.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <data name="label7.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
+    <value>NoControl</value>
+  </data>
+  <data name="label7.Location" type="System.Drawing.Point, System.Drawing">
+    <value>358, 93</value>
+  </data>
+  <data name="label7.Size" type="System.Drawing.Size, System.Drawing">
+    <value>94, 13</value>
+  </data>
+  <data name="label7.TabIndex" type="System.Int32, mscorlib">
+    <value>133</value>
+  </data>
+  <data name="label7.Text" xml:space="preserve">
+    <value>PWM 1231 - 1360</value>
+  </data>
+  <data name="&gt;&gt;label7.Name" xml:space="preserve">
+    <value>label7</value>
+  </data>
+  <data name="&gt;&gt;label7.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;label7.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name="&gt;&gt;label7.ZOrder" xml:space="preserve">
+    <value>15</value>
+  </data>
+  <data name="label6.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <data name="label6.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
+    <value>NoControl</value>
+  </data>
+  <data name="label6.Location" type="System.Drawing.Point, System.Drawing">
+    <value>20, 201</value>
+  </data>
+  <data name="label6.Size" type="System.Drawing.Size, System.Drawing">
+    <value>71, 13</value>
+  </data>
+  <data name="label6.TabIndex" type="System.Int32, mscorlib">
+    <value>131</value>
+  </data>
+  <data name="label6.Text" xml:space="preserve">
+    <value>Flight Mode 6</value>
+  </data>
+  <data name="&gt;&gt;label6.Name" xml:space="preserve">
+    <value>label6</value>
+  </data>
+  <data name="&gt;&gt;label6.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;label6.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name="&gt;&gt;label6.ZOrder" xml:space="preserve">
+    <value>16</value>
+  </data>
+  <data name="CMB_fmode6.Location" type="System.Drawing.Point, System.Drawing">
+    <value>97, 198</value>
+  </data>
+  <data name="CMB_fmode6.Size" type="System.Drawing.Size, System.Drawing">
+    <value>121, 21</value>
+  </data>
+  <data name="CMB_fmode6.TabIndex" type="System.Int32, mscorlib">
+    <value>130</value>
+  </data>
+  <data name="&gt;&gt;CMB_fmode6.Name" xml:space="preserve">
+    <value>CMB_fmode6</value>
+  </data>
+  <data name="&gt;&gt;CMB_fmode6.Type" xml:space="preserve">
+    <value>System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;CMB_fmode6.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name="&gt;&gt;CMB_fmode6.ZOrder" xml:space="preserve">
+    <value>17</value>
+  </data>
+  <data name="label5.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <data name="label5.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
+    <value>NoControl</value>
+  </data>
+  <data name="label5.Location" type="System.Drawing.Point, System.Drawing">
+    <value>20, 174</value>
+  </data>
+  <data name="label5.Size" type="System.Drawing.Size, System.Drawing">
+    <value>71, 13</value>
+  </data>
+  <data name="label5.TabIndex" type="System.Int32, mscorlib">
+    <value>129</value>
+  </data>
+  <data name="label5.Text" xml:space="preserve">
+    <value>Flight Mode 5</value>
+  </data>
+  <data name="&gt;&gt;label5.Name" xml:space="preserve">
+    <value>label5</value>
+  </data>
+  <data name="&gt;&gt;label5.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;label5.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name="&gt;&gt;label5.ZOrder" xml:space="preserve">
+    <value>18</value>
+  </data>
+  <data name="CMB_fmode5.Location" type="System.Drawing.Point, System.Drawing">
+    <value>97, 171</value>
+  </data>
+  <data name="CMB_fmode5.Size" type="System.Drawing.Size, System.Drawing">
+    <value>121, 21</value>
+  </data>
+  <data name="CMB_fmode5.TabIndex" type="System.Int32, mscorlib">
+    <value>128</value>
+  </data>
+  <data name="&gt;&gt;CMB_fmode5.Name" xml:space="preserve">
+    <value>CMB_fmode5</value>
+  </data>
+  <data name="&gt;&gt;CMB_fmode5.Type" xml:space="preserve">
+    <value>System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;CMB_fmode5.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name="&gt;&gt;CMB_fmode5.ZOrder" xml:space="preserve">
+    <value>19</value>
+  </data>
+  <data name="label4.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <data name="label4.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
+    <value>NoControl</value>
+  </data>
+  <data name="label4.Location" type="System.Drawing.Point, System.Drawing">
+    <value>20, 147</value>
+  </data>
+  <data name="label4.Size" type="System.Drawing.Size, System.Drawing">
+    <value>71, 13</value>
+  </data>
+  <data name="label4.TabIndex" type="System.Int32, mscorlib">
+    <value>127</value>
+  </data>
+  <data name="label4.Text" xml:space="preserve">
+    <value>Flight Mode 4</value>
+  </data>
+  <data name="&gt;&gt;label4.Name" xml:space="preserve">
+    <value>label4</value>
+  </data>
+  <data name="&gt;&gt;label4.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;label4.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name="&gt;&gt;label4.ZOrder" xml:space="preserve">
+    <value>20</value>
+  </data>
+  <data name="CMB_fmode4.Location" type="System.Drawing.Point, System.Drawing">
+    <value>97, 144</value>
+  </data>
+  <data name="CMB_fmode4.Size" type="System.Drawing.Size, System.Drawing">
+    <value>121, 21</value>
+  </data>
+  <data name="CMB_fmode4.TabIndex" type="System.Int32, mscorlib">
+    <value>126</value>
+  </data>
+  <data name="&gt;&gt;CMB_fmode4.Name" xml:space="preserve">
+    <value>CMB_fmode4</value>
+  </data>
+  <data name="&gt;&gt;CMB_fmode4.Type" xml:space="preserve">
+    <value>System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;CMB_fmode4.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name="&gt;&gt;CMB_fmode4.ZOrder" xml:space="preserve">
+    <value>21</value>
+  </data>
+  <data name="label3.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <data name="label3.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
+    <value>NoControl</value>
+  </data>
+  <data name="label3.Location" type="System.Drawing.Point, System.Drawing">
+    <value>20, 120</value>
+  </data>
+  <data name="label3.Size" type="System.Drawing.Size, System.Drawing">
+    <value>71, 13</value>
+  </data>
+  <data name="label3.TabIndex" type="System.Int32, mscorlib">
+    <value>125</value>
+  </data>
+  <data name="label3.Text" xml:space="preserve">
+    <value>Flight Mode 3</value>
+  </data>
+  <data name="&gt;&gt;label3.Name" xml:space="preserve">
+    <value>label3</value>
+  </data>
+  <data name="&gt;&gt;label3.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;label3.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name="&gt;&gt;label3.ZOrder" xml:space="preserve">
+    <value>22</value>
+  </data>
+  <data name="CMB_fmode3.Location" type="System.Drawing.Point, System.Drawing">
+    <value>97, 117</value>
+  </data>
+  <data name="CMB_fmode3.Size" type="System.Drawing.Size, System.Drawing">
+    <value>121, 21</value>
+  </data>
+  <data name="CMB_fmode3.TabIndex" type="System.Int32, mscorlib">
+    <value>124</value>
+  </data>
+  <data name="&gt;&gt;CMB_fmode3.Name" xml:space="preserve">
+    <value>CMB_fmode3</value>
+  </data>
+  <data name="&gt;&gt;CMB_fmode3.Type" xml:space="preserve">
+    <value>System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;CMB_fmode3.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name="&gt;&gt;CMB_fmode3.ZOrder" xml:space="preserve">
+    <value>23</value>
+  </data>
+  <data name="label2.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <data name="label2.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
+    <value>NoControl</value>
+  </data>
+  <data name="label2.Location" type="System.Drawing.Point, System.Drawing">
+    <value>20, 93</value>
+  </data>
+  <data name="label2.Size" type="System.Drawing.Size, System.Drawing">
+    <value>71, 13</value>
+  </data>
+  <data name="label2.TabIndex" type="System.Int32, mscorlib">
+    <value>123</value>
+  </data>
+  <data name="label2.Text" xml:space="preserve">
+    <value>Flight Mode 2</value>
+  </data>
+  <data name="&gt;&gt;label2.Name" xml:space="preserve">
+    <value>label2</value>
+  </data>
+  <data name="&gt;&gt;label2.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;label2.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name="&gt;&gt;label2.ZOrder" xml:space="preserve">
+    <value>24</value>
+  </data>
+  <data name="CMB_fmode2.Location" type="System.Drawing.Point, System.Drawing">
+    <value>97, 90</value>
+  </data>
+  <data name="CMB_fmode2.Size" type="System.Drawing.Size, System.Drawing">
+    <value>121, 21</value>
+  </data>
+  <data name="CMB_fmode2.TabIndex" type="System.Int32, mscorlib">
+    <value>122</value>
+  </data>
+  <data name="&gt;&gt;CMB_fmode2.Name" xml:space="preserve">
+    <value>CMB_fmode2</value>
+  </data>
+  <data name="&gt;&gt;CMB_fmode2.Type" xml:space="preserve">
+    <value>System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;CMB_fmode2.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name="&gt;&gt;CMB_fmode2.ZOrder" xml:space="preserve">
+    <value>25</value>
+  </data>
+  <data name="label1.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <data name="label1.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
+    <value>NoControl</value>
+  </data>
+  <data name="label1.Location" type="System.Drawing.Point, System.Drawing">
+    <value>20, 66</value>
+  </data>
+  <data name="label1.Size" type="System.Drawing.Size, System.Drawing">
+    <value>71, 13</value>
+  </data>
+  <data name="label1.TabIndex" type="System.Int32, mscorlib">
+    <value>121</value>
+  </data>
+  <data name="label1.Text" xml:space="preserve">
+    <value>Flight Mode 1</value>
+  </data>
+  <data name="&gt;&gt;label1.Name" xml:space="preserve">
+    <value>label1</value>
+  </data>
+  <data name="&gt;&gt;label1.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;label1.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name="&gt;&gt;label1.ZOrder" xml:space="preserve">
+    <value>26</value>
+  </data>
+  <data name="CMB_fmode1.Location" type="System.Drawing.Point, System.Drawing">
+    <value>97, 63</value>
+  </data>
+  <data name="CMB_fmode1.Size" type="System.Drawing.Size, System.Drawing">
+    <value>121, 21</value>
+  </data>
+  <data name="CMB_fmode1.TabIndex" type="System.Int32, mscorlib">
+    <value>120</value>
+  </data>
+  <data name="&gt;&gt;CMB_fmode1.Name" xml:space="preserve">
+    <value>CMB_fmode1</value>
+  </data>
+  <data name="&gt;&gt;CMB_fmode1.Type" xml:space="preserve">
+    <value>System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;CMB_fmode1.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name="&gt;&gt;CMB_fmode1.ZOrder" xml:space="preserve">
+    <value>27</value>
+  </data>
+  <data name="BUT_SaveModes.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
+    <value>NoControl</value>
+  </data>
+  <data name="BUT_SaveModes.Location" type="System.Drawing.Point, System.Drawing">
+    <value>97, 225</value>
+  </data>
+  <data name="BUT_SaveModes.Size" type="System.Drawing.Size, System.Drawing">
+    <value>121, 23</value>
+  </data>
+  <data name="BUT_SaveModes.TabIndex" type="System.Int32, mscorlib">
+    <value>132</value>
+  </data>
+  <data name="BUT_SaveModes.Text" xml:space="preserve">
+    <value>Save Modes</value>
+  </data>
+  <data name="&gt;&gt;BUT_SaveModes.Name" xml:space="preserve">
+    <value>BUT_SaveModes</value>
+  </data>
+  <data name="&gt;&gt;BUT_SaveModes.Type" xml:space="preserve">
+    <value>ArdupilotMega.MyButton, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null</value>
+  </data>
+  <data name="&gt;&gt;BUT_SaveModes.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name="&gt;&gt;BUT_SaveModes.ZOrder" xml:space="preserve">
+    <value>28</value>
+  </data>
+  <metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+    <value>True</value>
   </metadata>
+  <data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
+    <value>6, 13</value>
+  </data>
+  <data name="$this.Size" type="System.Drawing.Size, System.Drawing">
+    <value>500, 270</value>
+  </data>
+  <data name="&gt;&gt;currentStateBindingSource.Name" xml:space="preserve">
+    <value>currentStateBindingSource</value>
+  </data>
+  <data name="&gt;&gt;currentStateBindingSource.Type" xml:space="preserve">
+    <value>System.Windows.Forms.BindingSource, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;$this.Name" xml:space="preserve">
+    <value>ConfigFlightModes</value>
+  </data>
+  <data name="&gt;&gt;$this.Type" xml:space="preserve">
+    <value>System.Windows.Forms.UserControl, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
 </root>
\ No newline at end of file
diff --git a/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigFlightModes.zh-Hans.resx b/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigFlightModes.zh-Hans.resx
new file mode 100644
index 000000000..f96892c42
--- /dev/null
+++ b/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigFlightModes.zh-Hans.resx
@@ -0,0 +1,496 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <data name="tabRadioIn.Text" xml:space="preserve">
+    <value>遥控输入</value>
+  </data>
+  <data name="tabModes.Text" xml:space="preserve">
+    <value>模式</value>
+  </data>
+  <data name="tabHardware.Text" xml:space="preserve">
+    <value>硬件</value>
+  </data>
+  <data name="tabBattery.Text" xml:space="preserve">
+    <value>电池</value>
+  </data>
+  <data name="tabHeli.Text" xml:space="preserve">
+    <value>AC2 直升机</value>
+  </data>
+  <data name="groupBoxElevons.Text" xml:space="preserve">
+    <value>上降副翼 (Elevon) 配置</value>
+  </data>
+  <assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
+  <data name="CHK_elevonch2rev.Size" type="System.Drawing.Size, System.Drawing">
+    <value>115, 17</value>
+  </data>
+  <data name="CHK_elevonch2rev.Text" xml:space="preserve">
+    <value>Elevons CH2 逆转</value>
+  </data>
+  <data name="CHK_elevonrev.Size" type="System.Drawing.Size, System.Drawing">
+    <value>91, 17</value>
+  </data>
+  <data name="CHK_elevonrev.Text" xml:space="preserve">
+    <value>Elevons 逆转</value>
+  </data>
+  <data name="CHK_elevonch1rev.Size" type="System.Drawing.Size, System.Drawing">
+    <value>115, 17</value>
+  </data>
+  <data name="CHK_elevonch1rev.Text" xml:space="preserve">
+    <value>Elevons CH1 逆转</value>
+  </data>
+  <data name="CHK_revch3.Size" type="System.Drawing.Size, System.Drawing">
+    <value>50, 17</value>
+  </data>
+  <data name="CHK_revch3.Text" xml:space="preserve">
+    <value>逆转</value>
+  </data>
+  <data name="CHK_revch4.Size" type="System.Drawing.Size, System.Drawing">
+    <value>50, 17</value>
+  </data>
+  <data name="CHK_revch4.Text" xml:space="preserve">
+    <value>逆转</value>
+  </data>
+  <data name="CHK_revch2.Size" type="System.Drawing.Size, System.Drawing">
+    <value>50, 17</value>
+  </data>
+  <data name="CHK_revch2.Text" xml:space="preserve">
+    <value>逆转</value>
+  </data>
+  <data name="CHK_revch1.Size" type="System.Drawing.Size, System.Drawing">
+    <value>50, 17</value>
+  </data>
+  <data name="CHK_revch1.Text" xml:space="preserve">
+    <value>逆转</value>
+  </data>
+  <data name="BUT_Calibrateradio.Text" xml:space="preserve">
+    <value>校准遥控</value>
+  </data>
+  <data name="CB_simple6.Size" type="System.Drawing.Size, System.Drawing">
+    <value>74, 17</value>
+  </data>
+  <data name="CB_simple6.Text" xml:space="preserve">
+    <value>简单模式</value>
+  </data>
+  <data name="CB_simple5.Size" type="System.Drawing.Size, System.Drawing">
+    <value>74, 17</value>
+  </data>
+  <data name="CB_simple5.Text" xml:space="preserve">
+    <value>简单模式</value>
+  </data>
+  <data name="CB_simple4.Size" type="System.Drawing.Size, System.Drawing">
+    <value>74, 17</value>
+  </data>
+  <data name="CB_simple4.Text" xml:space="preserve">
+    <value>简单模式</value>
+  </data>
+  <data name="CB_simple3.Size" type="System.Drawing.Size, System.Drawing">
+    <value>74, 17</value>
+  </data>
+  <data name="CB_simple3.Text" xml:space="preserve">
+    <value>简单模式</value>
+  </data>
+  <data name="CB_simple2.Size" type="System.Drawing.Size, System.Drawing">
+    <value>74, 17</value>
+  </data>
+  <data name="CB_simple2.Text" xml:space="preserve">
+    <value>简单模式</value>
+  </data>
+  <data name="CB_simple1.Size" type="System.Drawing.Size, System.Drawing">
+    <value>74, 17</value>
+  </data>
+  <data name="CB_simple1.Text" xml:space="preserve">
+    <value>简单模式</value>
+  </data>
+  <data name="label14.Size" type="System.Drawing.Size, System.Drawing">
+    <value>64, 13</value>
+  </data>
+  <data name="label14.Text" xml:space="preserve">
+    <value>当前 PWM:</value>
+  </data>
+  <data name="label13.Size" type="System.Drawing.Size, System.Drawing">
+    <value>58, 13</value>
+  </data>
+  <data name="label13.Text" xml:space="preserve">
+    <value>当前模式:</value>
+  </data>
+  <data name="label6.Size" type="System.Drawing.Size, System.Drawing">
+    <value>64, 13</value>
+  </data>
+  <data name="label6.Text" xml:space="preserve">
+    <value>飞行模式 6</value>
+  </data>
+  <data name="label5.Size" type="System.Drawing.Size, System.Drawing">
+    <value>64, 13</value>
+  </data>
+  <data name="label5.Text" xml:space="preserve">
+    <value>飞行模式 5</value>
+  </data>
+  <data name="label4.Size" type="System.Drawing.Size, System.Drawing">
+    <value>64, 13</value>
+  </data>
+  <data name="label4.Text" xml:space="preserve">
+    <value>飞行模式 4</value>
+  </data>
+  <data name="label3.Size" type="System.Drawing.Size, System.Drawing">
+    <value>64, 13</value>
+  </data>
+  <data name="label3.Text" xml:space="preserve">
+    <value>飞行模式 3</value>
+  </data>
+  <data name="label2.Size" type="System.Drawing.Size, System.Drawing">
+    <value>64, 13</value>
+  </data>
+  <data name="label2.Text" xml:space="preserve">
+    <value>飞行模式 2</value>
+  </data>
+  <data name="label1.Size" type="System.Drawing.Size, System.Drawing">
+    <value>64, 13</value>
+  </data>
+  <data name="label1.Text" xml:space="preserve">
+    <value>飞行模式 1</value>
+  </data>
+  <data name="BUT_SaveModes.Text" xml:space="preserve">
+    <value>保存模式</value>
+  </data>
+  <data name="label27.Text" xml:space="preserve">
+    <value>十进制, 2° 3' W 就是 -2.3</value>
+  </data>
+  <data name="CHK_enableoptflow.Text" xml:space="preserve">
+    <value>启用光流</value>
+  </data>
+  <data name="linkLabelmagdec.Size" type="System.Drawing.Size, System.Drawing">
+    <value>67, 13</value>
+  </data>
+  <data name="linkLabelmagdec.Text" xml:space="preserve">
+    <value>磁偏角网站</value>
+  </data>
+  <data name="label100.Text" xml:space="preserve">
+    <value>磁偏角</value>
+  </data>
+  <data name="CHK_enableairspeed.Text" xml:space="preserve">
+    <value>启用空速计</value>
+  </data>
+  <data name="CHK_enablesonar.Text" xml:space="preserve">
+    <value>启用声纳</value>
+  </data>
+  <data name="CHK_enablecompass.Text" xml:space="preserve">
+    <value>启用罗盘</value>
+  </data>
+  <data name="label31.Size" type="System.Drawing.Size, System.Drawing">
+    <value>58, 13</value>
+  </data>
+  <data name="label31.Text" xml:space="preserve">
+    <value>输入电压:</value>
+  </data>
+  <data name="label32.Size" type="System.Drawing.Size, System.Drawing">
+    <value>94, 13</value>
+  </data>
+  <data name="label32.Text" xml:space="preserve">
+    <value>测量的电池电压:</value>
+  </data>
+  <data name="label33.Size" type="System.Drawing.Size, System.Drawing">
+    <value>58, 13</value>
+  </data>
+  <data name="label33.Text" xml:space="preserve">
+    <value>电池电压:</value>
+  </data>
+  <data name="label34.Size" type="System.Drawing.Size, System.Drawing">
+    <value>52, 13</value>
+  </data>
+  <data name="label34.Text" xml:space="preserve">
+    <value>分 压 比:</value>
+  </data>
+  <data name="label35.Size" type="System.Drawing.Size, System.Drawing">
+    <value>63, 13</value>
+  </data>
+  <data name="label35.Text" xml:space="preserve">
+    <value>安培/伏特:</value>
+  </data>
+  <data name="label47.Size" type="System.Drawing.Size, System.Drawing">
+    <value>48, 18</value>
+  </data>
+  <data name="label47.Text" xml:space="preserve">
+    <value>传感器</value>
+  </data>
+  <data name="textBox3.Text" xml:space="preserve">
+    <value>电压传感器校准:
+1. 测量APM输入电压,输入到下方的文本框中
+2. 测量电池电压,输入到下方的文本框中
+3. 从当前的传感器的数据表中找到安培/伏特,输入到下方的文本框中</value>
+  </data>
+  <data name="label29.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label29.Text" xml:space="preserve">
+    <value>容量</value>
+  </data>
+  <data name="label30.Size" type="System.Drawing.Size, System.Drawing">
+    <value>48, 13</value>
+  </data>
+  <data name="label30.Text" xml:space="preserve">
+    <value>监控器</value>
+  </data>
+  <data name="label28.Size" type="System.Drawing.Size, System.Drawing">
+    <value>175, 13</value>
+  </data>
+  <data name="label28.Text" xml:space="preserve">
+    <value>设置水平面的默认加速度计偏移</value>
+  </data>
+  <data name="label16.Size" type="System.Drawing.Size, System.Drawing">
+    <value>261, 13</value>
+  </data>
+  <data name="label16.Text" xml:space="preserve">
+    <value>注: 图片只是用于展示,设置可以用于六轴等机架</value>
+  </data>
+  <data name="label15.Size" type="System.Drawing.Size, System.Drawing">
+    <value>93, 13</value>
+  </data>
+  <data name="label15.Text" xml:space="preserve">
+    <value>机架设置 (+ 或 x)</value>
+  </data>
+  <data name="BUT_levelac2.Text" xml:space="preserve">
+    <value>找平</value>
+  </data>
+  <data name="BUT_HS4save.Text" xml:space="preserve">
+    <value>手动</value>
+  </data>
+  <data name="BUT_swash_manual.Text" xml:space="preserve">
+    <value>手动</value>
+  </data>
+  <data name="label46.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label46.Text" xml:space="preserve">
+    <value>感度</value>
+  </data>
+  <data name="label45.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label45.Text" xml:space="preserve">
+    <value>启用</value>
+  </data>
+  <data name="label44.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label44.Text" xml:space="preserve">
+    <value>微调</value>
+  </data>
+  <data name="label43.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label43.Text" xml:space="preserve">
+    <value>逆转</value>
+  </data>
+  <data name="label42.Size" type="System.Drawing.Size, System.Drawing">
+    <value>43, 13</value>
+  </data>
+  <data name="label42.Text" xml:space="preserve">
+    <value>方向舵</value>
+  </data>
+  <data name="label24.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label24.Text" xml:space="preserve">
+    <value>最大</value>
+  </data>
+  <data name="label40.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label40.Text" xml:space="preserve">
+    <value>最小</value>
+  </data>
+  <data name="label41.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label41.Text" xml:space="preserve">
+    <value>最低</value>
+  </data>
+  <data name="label21.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label21.Text" xml:space="preserve">
+    <value>最高</value>
+  </data>
+  <data name="BUT_0collective.Text" xml:space="preserve">
+    <value>0度</value>
+  </data>
+  <data name="label39.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label39.Text" xml:space="preserve">
+    <value>微调</value>
+  </data>
+  <data name="label38.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label38.Text" xml:space="preserve">
+    <value>逆转</value>
+  </data>
+  <data name="label37.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label37.Text" xml:space="preserve">
+    <value>位置</value>
+  </data>
+  <data name="label36.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label36.Text" xml:space="preserve">
+    <value>舵机</value>
+  </data>
+  <data name="label26.Size" type="System.Drawing.Size, System.Drawing">
+    <value>55, 13</value>
+  </data>
+  <data name="label26.Text" xml:space="preserve">
+    <value>最大俯仰</value>
+  </data>
+  <data name="label25.Size" type="System.Drawing.Size, System.Drawing">
+    <value>55, 13</value>
+  </data>
+  <data name="label25.Text" xml:space="preserve">
+    <value>最大侧倾</value>
+  </data>
+  <data name="label23.Size" type="System.Drawing.Size, System.Drawing">
+    <value>55, 13</value>
+  </data>
+  <data name="label23.Text" xml:space="preserve">
+    <value>舵机行程</value>
+  </data>
+  <data name="label22.Size" type="System.Drawing.Size, System.Drawing">
+    <value>79, 13</value>
+  </data>
+  <data name="label22.Text" xml:space="preserve">
+    <value>斜盘水平微调</value>
+  </data>
+  <data name="label17.Size" type="System.Drawing.Size, System.Drawing">
+    <value>79, 13</value>
+  </data>
+  <data name="label17.Text" xml:space="preserve">
+    <value>斜盘舵机位置</value>
+  </data>
+  <data name="tabReset.Text" xml:space="preserve">
+    <value>重置</value>
+  </data>
+  <data name="BUT_reset.Text" xml:space="preserve">
+    <value>重置 APM 为默认设置</value>
+  </data>
+  <data name="$this.Text" xml:space="preserve">
+    <value>APM设置</value>
+  </data>
+</root>
\ No newline at end of file
diff --git a/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigFlightModes.zh-TW.resx b/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigFlightModes.zh-TW.resx
new file mode 100644
index 000000000..0c03fbf8e
--- /dev/null
+++ b/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigFlightModes.zh-TW.resx
@@ -0,0 +1,460 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <data name="tabReset.Text" xml:space="preserve">
+    <value>重置</value>
+  </data>
+  <data name="tabRadioIn.Text" xml:space="preserve">
+    <value>遙控輸入</value>
+  </data>
+  <data name="tabModes.Text" xml:space="preserve">
+    <value>模式</value>
+  </data>
+  <data name="tabHardware.Text" xml:space="preserve">
+    <value>硬件</value>
+  </data>
+  <data name="tabBattery.Text" xml:space="preserve">
+    <value>電池</value>
+  </data>
+  <data name="BUT_reset.Text" xml:space="preserve">
+    <value>重置 APM 為默認設置</value>
+  </data>
+  <assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
+  <data name="CHK_revch3.Size" type="System.Drawing.Size, System.Drawing">
+    <value>50, 17</value>
+  </data>
+  <data name="CHK_revch3.Text" xml:space="preserve">
+    <value>逆轉</value>
+  </data>
+  <data name="CHK_revch4.Size" type="System.Drawing.Size, System.Drawing">
+    <value>50, 17</value>
+  </data>
+  <data name="CHK_revch4.Text" xml:space="preserve">
+    <value>逆轉</value>
+  </data>
+  <data name="CHK_revch2.Size" type="System.Drawing.Size, System.Drawing">
+    <value>50, 17</value>
+  </data>
+  <data name="CHK_revch2.Text" xml:space="preserve">
+    <value>逆轉</value>
+  </data>
+  <data name="CHK_revch1.Size" type="System.Drawing.Size, System.Drawing">
+    <value>50, 17</value>
+  </data>
+  <data name="CHK_revch1.Text" xml:space="preserve">
+    <value>逆轉</value>
+  </data>
+  <data name="BUT_Calibrateradio.Text" xml:space="preserve">
+    <value>校準遙控</value>
+  </data>
+  <data name="CB_simple6.Size" type="System.Drawing.Size, System.Drawing">
+    <value>74, 17</value>
+  </data>
+  <data name="CB_simple6.Text" xml:space="preserve">
+    <value>簡單模式</value>
+  </data>
+  <data name="CB_simple5.Size" type="System.Drawing.Size, System.Drawing">
+    <value>74, 17</value>
+  </data>
+  <data name="CB_simple5.Text" xml:space="preserve">
+    <value>簡單模式</value>
+  </data>
+  <data name="CB_simple4.Size" type="System.Drawing.Size, System.Drawing">
+    <value>74, 17</value>
+  </data>
+  <data name="CB_simple4.Text" xml:space="preserve">
+    <value>簡單模式</value>
+  </data>
+  <data name="CB_simple3.Size" type="System.Drawing.Size, System.Drawing">
+    <value>74, 17</value>
+  </data>
+  <data name="CB_simple3.Text" xml:space="preserve">
+    <value>簡單模式</value>
+  </data>
+  <data name="CB_simple2.Size" type="System.Drawing.Size, System.Drawing">
+    <value>74, 17</value>
+  </data>
+  <data name="CB_simple2.Text" xml:space="preserve">
+    <value>簡單模式</value>
+  </data>
+  <data name="CB_simple1.Size" type="System.Drawing.Size, System.Drawing">
+    <value>74, 17</value>
+  </data>
+  <data name="CB_simple1.Text" xml:space="preserve">
+    <value>簡單模式</value>
+  </data>
+  <data name="label14.Size" type="System.Drawing.Size, System.Drawing">
+    <value>64, 13</value>
+  </data>
+  <data name="label14.Text" xml:space="preserve">
+    <value>當前 PWM:</value>
+  </data>
+  <data name="label13.Size" type="System.Drawing.Size, System.Drawing">
+    <value>58, 13</value>
+  </data>
+  <data name="label13.Text" xml:space="preserve">
+    <value>當前模式:</value>
+  </data>
+  <data name="label6.Size" type="System.Drawing.Size, System.Drawing">
+    <value>64, 13</value>
+  </data>
+  <data name="label6.Text" xml:space="preserve">
+    <value>飛行模式 6</value>
+  </data>
+  <data name="label5.Size" type="System.Drawing.Size, System.Drawing">
+    <value>64, 13</value>
+  </data>
+  <data name="label5.Text" xml:space="preserve">
+    <value>飛行模式 5</value>
+  </data>
+  <data name="label4.Size" type="System.Drawing.Size, System.Drawing">
+    <value>64, 13</value>
+  </data>
+  <data name="label4.Text" xml:space="preserve">
+    <value>飛行模式 4</value>
+  </data>
+  <data name="label3.Size" type="System.Drawing.Size, System.Drawing">
+    <value>64, 13</value>
+  </data>
+  <data name="label3.Text" xml:space="preserve">
+    <value>飛行模式 3</value>
+  </data>
+  <data name="label2.Size" type="System.Drawing.Size, System.Drawing">
+    <value>64, 13</value>
+  </data>
+  <data name="label2.Text" xml:space="preserve">
+    <value>飛行模式 2</value>
+  </data>
+  <data name="label1.Size" type="System.Drawing.Size, System.Drawing">
+    <value>64, 13</value>
+  </data>
+  <data name="label1.Text" xml:space="preserve">
+    <value>飛行模式 1</value>
+  </data>
+  <data name="BUT_SaveModes.Text" xml:space="preserve">
+    <value>保存模式</value>
+  </data>
+  <data name="linkLabelmagdec.Size" type="System.Drawing.Size, System.Drawing">
+    <value>67, 13</value>
+  </data>
+  <data name="linkLabelmagdec.Text" xml:space="preserve">
+    <value>磁偏角網站</value>
+  </data>
+  <data name="label100.Text" xml:space="preserve">
+    <value>磁偏角</value>
+  </data>
+  <data name="CHK_enableairspeed.Text" xml:space="preserve">
+    <value>啟用空速計</value>
+  </data>
+  <data name="CHK_enablesonar.Text" xml:space="preserve">
+    <value>啟用聲納</value>
+  </data>
+  <data name="CHK_enablecompass.Text" xml:space="preserve">
+    <value>啟用羅盤</value>
+  </data>
+  <data name="label35.Size" type="System.Drawing.Size, System.Drawing">
+    <value>63, 13</value>
+  </data>
+  <data name="label35.Text" xml:space="preserve">
+    <value>安培/伏特:</value>
+  </data>
+  <data name="label34.Size" type="System.Drawing.Size, System.Drawing">
+    <value>52, 13</value>
+  </data>
+  <data name="label34.Text" xml:space="preserve">
+    <value>分 壓 比:</value>
+  </data>
+  <data name="label33.Size" type="System.Drawing.Size, System.Drawing">
+    <value>58, 13</value>
+  </data>
+  <data name="label33.Text" xml:space="preserve">
+    <value>電池電壓:</value>
+  </data>
+  <data name="label32.Size" type="System.Drawing.Size, System.Drawing">
+    <value>94, 13</value>
+  </data>
+  <data name="label32.Text" xml:space="preserve">
+    <value>測量的電池電壓:</value>
+  </data>
+  <data name="label31.Size" type="System.Drawing.Size, System.Drawing">
+    <value>58, 13</value>
+  </data>
+  <data name="label31.Text" xml:space="preserve">
+    <value>輸入電壓:</value>
+  </data>
+  <data name="textBox3.Text" xml:space="preserve">
+    <value>電壓傳感器校準:
+1. 測量APM輸入電壓,輸入到下方的文本框中
+2. 測量電池電壓,輸入到下方的文本框中
+3. 從當前的傳感器的數據表中找到安培/伏特,輸入到下方的文本框中</value>
+  </data>
+  <data name="label29.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label29.Text" xml:space="preserve">
+    <value>容量</value>
+  </data>
+  <data name="label30.Size" type="System.Drawing.Size, System.Drawing">
+    <value>48, 13</value>
+  </data>
+  <data name="label30.Text" xml:space="preserve">
+    <value>監控器</value>
+  </data>
+  <data name="label28.Size" type="System.Drawing.Size, System.Drawing">
+    <value>175, 13</value>
+  </data>
+  <data name="label28.Text" xml:space="preserve">
+    <value>設置水平面的默認加速度計偏移</value>
+  </data>
+  <data name="label16.Size" type="System.Drawing.Size, System.Drawing">
+    <value>261, 13</value>
+  </data>
+  <data name="label16.Text" xml:space="preserve">
+    <value>注: 圖片只是用於展示,設置可以用於六軸等機架</value>
+  </data>
+  <data name="label15.Size" type="System.Drawing.Size, System.Drawing">
+    <value>93, 13</value>
+  </data>
+  <data name="label15.Text" xml:space="preserve">
+    <value>機架設置 (+ 或 x)</value>
+  </data>
+  <data name="BUT_levelac2.Text" xml:space="preserve">
+    <value>找平</value>
+  </data>
+  <data name="label46.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label46.Text" xml:space="preserve">
+    <value>感度</value>
+  </data>
+  <data name="label45.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label45.Text" xml:space="preserve">
+    <value>啟用</value>
+  </data>
+  <data name="label44.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label44.Text" xml:space="preserve">
+    <value>微調</value>
+  </data>
+  <data name="label43.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label43.Text" xml:space="preserve">
+    <value>逆轉</value>
+  </data>
+  <data name="label42.Size" type="System.Drawing.Size, System.Drawing">
+    <value>43, 13</value>
+  </data>
+  <data name="label42.Text" xml:space="preserve">
+    <value>方向舵</value>
+  </data>
+  <data name="BUT_HS4save.Text" xml:space="preserve">
+    <value>手動</value>
+  </data>
+  <data name="label24.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label24.Text" xml:space="preserve">
+    <value>最大</value>
+  </data>
+  <data name="label40.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label40.Text" xml:space="preserve">
+    <value>最小</value>
+  </data>
+  <data name="BUT_swash_manual.Text" xml:space="preserve">
+    <value>手動</value>
+  </data>
+  <data name="label41.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label41.Text" xml:space="preserve">
+    <value>最低</value>
+  </data>
+  <data name="label21.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label21.Text" xml:space="preserve">
+    <value>最高</value>
+  </data>
+  <data name="BUT_0collective.Text" xml:space="preserve">
+    <value>0度</value>
+  </data>
+  <data name="label39.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label39.Text" xml:space="preserve">
+    <value>微調</value>
+  </data>
+  <data name="label38.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label38.Text" xml:space="preserve">
+    <value>逆轉</value>
+  </data>
+  <data name="label37.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label37.Text" xml:space="preserve">
+    <value>位置</value>
+  </data>
+  <data name="label36.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label36.Text" xml:space="preserve">
+    <value>舵機</value>
+  </data>
+  <data name="label26.Size" type="System.Drawing.Size, System.Drawing">
+    <value>55, 13</value>
+  </data>
+  <data name="label26.Text" xml:space="preserve">
+    <value>最大俯仰</value>
+  </data>
+  <data name="label25.Size" type="System.Drawing.Size, System.Drawing">
+    <value>55, 13</value>
+  </data>
+  <data name="label25.Text" xml:space="preserve">
+    <value>最大側傾</value>
+  </data>
+  <data name="label23.Size" type="System.Drawing.Size, System.Drawing">
+    <value>55, 13</value>
+  </data>
+  <data name="label23.Text" xml:space="preserve">
+    <value>舵機行程</value>
+  </data>
+  <data name="label22.Size" type="System.Drawing.Size, System.Drawing">
+    <value>79, 13</value>
+  </data>
+  <data name="label22.Text" xml:space="preserve">
+    <value>斜盤水平微調</value>
+  </data>
+  <data name="label17.Size" type="System.Drawing.Size, System.Drawing">
+    <value>79, 13</value>
+  </data>
+  <data name="label17.Text" xml:space="preserve">
+    <value>斜盤舵機位置</value>
+  </data>
+  <data name="$this.Text" xml:space="preserve">
+    <value>APM設置</value>
+  </data>
+</root>
\ No newline at end of file
diff --git a/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigHardwareOptions.Designer.cs b/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigHardwareOptions.Designer.cs
index 909cb7731..fcd141dac 100644
--- a/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigHardwareOptions.Designer.cs
+++ b/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigHardwareOptions.Designer.cs
@@ -28,6 +28,7 @@
         /// </summary>
         private void InitializeComponent()
         {
+            System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ConfigHardwareOptions));
             this.BUT_MagCalibration = new ArdupilotMega.MyButton();
             this.label27 = new System.Windows.Forms.Label();
             this.CMB_sonartype = new System.Windows.Forms.ComboBox();
@@ -50,158 +51,111 @@
             // 
             // BUT_MagCalibration
             // 
-            this.BUT_MagCalibration.ImeMode = System.Windows.Forms.ImeMode.NoControl;
-            this.BUT_MagCalibration.Location = new System.Drawing.Point(340, 13);
+            resources.ApplyResources(this.BUT_MagCalibration, "BUT_MagCalibration");
             this.BUT_MagCalibration.Name = "BUT_MagCalibration";
-            this.BUT_MagCalibration.Size = new System.Drawing.Size(75, 23);
-            this.BUT_MagCalibration.TabIndex = 47;
-            this.BUT_MagCalibration.Text = "Calibration";
             this.BUT_MagCalibration.UseVisualStyleBackColor = true;
+            this.BUT_MagCalibration.Click += new System.EventHandler(this.BUT_MagCalibration_Click);
             // 
             // label27
             // 
-            this.label27.ImeMode = System.Windows.Forms.ImeMode.NoControl;
-            this.label27.Location = new System.Drawing.Point(445, 45);
+            resources.ApplyResources(this.label27, "label27");
             this.label27.Name = "label27";
-            this.label27.Size = new System.Drawing.Size(150, 20);
-            this.label27.TabIndex = 46;
-            this.label27.Text = "in Degrees eg 2° 3\' W is -2.3";
             // 
             // CMB_sonartype
             // 
             this.CMB_sonartype.FormattingEnabled = true;
             this.CMB_sonartype.Items.AddRange(new object[] {
-            "XL-EZ0",
-            "LV-EZ0",
-            "XL-EZL0"});
-            this.CMB_sonartype.Location = new System.Drawing.Point(243, 122);
+            resources.GetString("CMB_sonartype.Items"),
+            resources.GetString("CMB_sonartype.Items1"),
+            resources.GetString("CMB_sonartype.Items2")});
+            resources.ApplyResources(this.CMB_sonartype, "CMB_sonartype");
             this.CMB_sonartype.Name = "CMB_sonartype";
-            this.CMB_sonartype.Size = new System.Drawing.Size(121, 21);
-            this.CMB_sonartype.TabIndex = 45;
+            this.CMB_sonartype.SelectedIndexChanged += new System.EventHandler(this.CMB_sonartype_SelectedIndexChanged);
             // 
             // CHK_enableoptflow
             // 
-            this.CHK_enableoptflow.ImeMode = System.Windows.Forms.ImeMode.NoControl;
-            this.CHK_enableoptflow.Location = new System.Drawing.Point(97, 285);
+            resources.ApplyResources(this.CHK_enableoptflow, "CHK_enableoptflow");
             this.CHK_enableoptflow.Name = "CHK_enableoptflow";
-            this.CHK_enableoptflow.Size = new System.Drawing.Size(134, 19);
-            this.CHK_enableoptflow.TabIndex = 44;
-            this.CHK_enableoptflow.Text = "Enable Optical Flow";
             this.CHK_enableoptflow.UseVisualStyleBackColor = true;
+            this.CHK_enableoptflow.CheckedChanged += new System.EventHandler(this.CHK_enableoptflow_CheckedChanged);
             // 
             // pictureBox2
             // 
             this.pictureBox2.BackColor = System.Drawing.Color.White;
             this.pictureBox2.BackgroundImage = global::ArdupilotMega.Properties.Resources.opticalflow;
-            this.pictureBox2.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom;
+            resources.ApplyResources(this.pictureBox2, "pictureBox2");
             this.pictureBox2.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
-            this.pictureBox2.ImeMode = System.Windows.Forms.ImeMode.NoControl;
-            this.pictureBox2.Location = new System.Drawing.Point(13, 259);
             this.pictureBox2.Name = "pictureBox2";
-            this.pictureBox2.Size = new System.Drawing.Size(75, 75);
-            this.pictureBox2.TabIndex = 43;
             this.pictureBox2.TabStop = false;
             // 
             // linkLabelmagdec
             // 
-            this.linkLabelmagdec.AutoSize = true;
-            this.linkLabelmagdec.ImeMode = System.Windows.Forms.ImeMode.NoControl;
-            this.linkLabelmagdec.Location = new System.Drawing.Point(325, 68);
+            resources.ApplyResources(this.linkLabelmagdec, "linkLabelmagdec");
             this.linkLabelmagdec.Name = "linkLabelmagdec";
-            this.linkLabelmagdec.Size = new System.Drawing.Size(104, 13);
-            this.linkLabelmagdec.TabIndex = 42;
             this.linkLabelmagdec.TabStop = true;
-            this.linkLabelmagdec.Text = "Declination WebSite";
+            this.linkLabelmagdec.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkLabel1_LinkClicked);
             // 
             // label100
             // 
-            this.label100.ImeMode = System.Windows.Forms.ImeMode.NoControl;
-            this.label100.Location = new System.Drawing.Point(240, 45);
+            resources.ApplyResources(this.label100, "label100");
             this.label100.Name = "label100";
-            this.label100.Size = new System.Drawing.Size(72, 16);
-            this.label100.TabIndex = 38;
-            this.label100.Text = "Declination";
             // 
             // TXT_declination
             // 
-            this.TXT_declination.Location = new System.Drawing.Point(318, 45);
+            resources.ApplyResources(this.TXT_declination, "TXT_declination");
             this.TXT_declination.Name = "TXT_declination";
-            this.TXT_declination.Size = new System.Drawing.Size(121, 20);
-            this.TXT_declination.TabIndex = 37;
+            this.TXT_declination.Validated += new System.EventHandler(this.TXT_declination_Validated);
             // 
             // CHK_enableairspeed
             // 
-            this.CHK_enableairspeed.ImeMode = System.Windows.Forms.ImeMode.NoControl;
-            this.CHK_enableairspeed.Location = new System.Drawing.Point(97, 202);
+            resources.ApplyResources(this.CHK_enableairspeed, "CHK_enableairspeed");
             this.CHK_enableairspeed.Name = "CHK_enableairspeed";
-            this.CHK_enableairspeed.Size = new System.Drawing.Size(103, 17);
-            this.CHK_enableairspeed.TabIndex = 39;
-            this.CHK_enableairspeed.Text = "Enable Airspeed";
             this.CHK_enableairspeed.UseVisualStyleBackColor = true;
+            this.CHK_enableairspeed.CheckedChanged += new System.EventHandler(this.CHK_enableairspeed_CheckedChanged);
             // 
             // CHK_enablesonar
             // 
-            this.CHK_enablesonar.ImeMode = System.Windows.Forms.ImeMode.NoControl;
-            this.CHK_enablesonar.Location = new System.Drawing.Point(94, 124);
+            resources.ApplyResources(this.CHK_enablesonar, "CHK_enablesonar");
             this.CHK_enablesonar.Name = "CHK_enablesonar";
-            this.CHK_enablesonar.Size = new System.Drawing.Size(90, 17);
-            this.CHK_enablesonar.TabIndex = 40;
-            this.CHK_enablesonar.Text = "Enable Sonar";
             this.CHK_enablesonar.UseVisualStyleBackColor = true;
+            this.CHK_enablesonar.CheckedChanged += new System.EventHandler(this.CHK_enablesonar_CheckedChanged);
             // 
             // CHK_enablecompass
             // 
-            this.CHK_enablecompass.ImeMode = System.Windows.Forms.ImeMode.NoControl;
-            this.CHK_enablecompass.Location = new System.Drawing.Point(97, 44);
+            resources.ApplyResources(this.CHK_enablecompass, "CHK_enablecompass");
             this.CHK_enablecompass.Name = "CHK_enablecompass";
-            this.CHK_enablecompass.Size = new System.Drawing.Size(105, 17);
-            this.CHK_enablecompass.TabIndex = 41;
-            this.CHK_enablecompass.Text = "Enable Compass";
             this.CHK_enablecompass.UseVisualStyleBackColor = true;
+            this.CHK_enablecompass.CheckedChanged += new System.EventHandler(this.CHK_enablecompass_CheckedChanged);
             // 
             // pictureBox4
             // 
             this.pictureBox4.BackColor = System.Drawing.Color.White;
             this.pictureBox4.BackgroundImage = global::ArdupilotMega.Properties.Resources.airspeed;
-            this.pictureBox4.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom;
+            resources.ApplyResources(this.pictureBox4, "pictureBox4");
             this.pictureBox4.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
-            this.pictureBox4.ImeMode = System.Windows.Forms.ImeMode.NoControl;
-            this.pictureBox4.Location = new System.Drawing.Point(13, 176);
             this.pictureBox4.Name = "pictureBox4";
-            this.pictureBox4.Size = new System.Drawing.Size(75, 75);
-            this.pictureBox4.TabIndex = 36;
             this.pictureBox4.TabStop = false;
             // 
             // pictureBox3
             // 
             this.pictureBox3.BackColor = System.Drawing.Color.White;
             this.pictureBox3.BackgroundImage = global::ArdupilotMega.Properties.Resources.sonar;
-            this.pictureBox3.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom;
+            resources.ApplyResources(this.pictureBox3, "pictureBox3");
             this.pictureBox3.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
-            this.pictureBox3.ImeMode = System.Windows.Forms.ImeMode.NoControl;
-            this.pictureBox3.Location = new System.Drawing.Point(13, 94);
             this.pictureBox3.Name = "pictureBox3";
-            this.pictureBox3.Size = new System.Drawing.Size(75, 75);
-            this.pictureBox3.TabIndex = 35;
             this.pictureBox3.TabStop = false;
             // 
             // pictureBox1
             // 
             this.pictureBox1.BackgroundImage = global::ArdupilotMega.Properties.Resources.compass;
-            this.pictureBox1.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom;
+            resources.ApplyResources(this.pictureBox1, "pictureBox1");
             this.pictureBox1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
-            this.pictureBox1.ErrorImage = null;
-            this.pictureBox1.ImeMode = System.Windows.Forms.ImeMode.NoControl;
-            this.pictureBox1.InitialImage = null;
-            this.pictureBox1.Location = new System.Drawing.Point(13, 13);
             this.pictureBox1.Name = "pictureBox1";
-            this.pictureBox1.Size = new System.Drawing.Size(75, 75);
-            this.pictureBox1.TabIndex = 34;
             this.pictureBox1.TabStop = false;
             // 
             // ConfigHardwareOptions
             // 
-            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+            resources.ApplyResources(this, "$this");
             this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
             this.Controls.Add(this.BUT_MagCalibration);
             this.Controls.Add(this.label27);
@@ -218,7 +172,7 @@
             this.Controls.Add(this.pictureBox3);
             this.Controls.Add(this.pictureBox1);
             this.Name = "ConfigHardwareOptions";
-            this.Size = new System.Drawing.Size(602, 351);
+            this.Load += new System.EventHandler(this.ConfigHardwareOptions_Load);
             ((System.ComponentModel.ISupportInitialize)(this.pictureBox2)).EndInit();
             ((System.ComponentModel.ISupportInitialize)(this.pictureBox4)).EndInit();
             ((System.ComponentModel.ISupportInitialize)(this.pictureBox3)).EndInit();
diff --git a/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigHardwareOptions.cs b/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigHardwareOptions.cs
index ed884a1ae..d54bb4d02 100644
--- a/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigHardwareOptions.cs
+++ b/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigHardwareOptions.cs
@@ -6,44 +6,266 @@ using System.Data;
 using System.Linq;
 using System.Text;
 using System.Windows.Forms;
+using ArdupilotMega.Controls.BackstageView;
 
 namespace ArdupilotMega.GCSViews.ConfigurationView
 {
-    public partial class ConfigHardwareOptions : UserControl
+    public partial class ConfigHardwareOptions : BackStageViewContentPanel
     {
+        bool startup = false;
+
+        const float rad2deg = (float)(180 / Math.PI);
+        const float deg2rad = (float)(1.0 / rad2deg);
+
         public ConfigHardwareOptions()
         {
             InitializeComponent();
         }
 
-        private void CHK_enableoptflow_CheckedChanged(object sender, EventArgs e)
+        private void BUT_MagCalibration_Click(object sender, EventArgs e)
         {
+            if (DialogResult.Yes == CustomMessageBox.Show("Use live data, or a log\n\nYes for Live data", "Mag Calibration", MessageBoxButtons.YesNo))
+            {
+                List<Tuple<float, float, float>> data = new List<Tuple<float, float, float>>();
+
+                byte backupratesens = MainV2.cs.ratesensors;
+
+                MainV2.cs.ratesensors = 10;
+
+                MainV2.comPort.requestDatastream((byte)MAVLink.MAV_DATA_STREAM.MAV_DATA_STREAM_RAW_SENSORS, MainV2.cs.ratesensors); // mag captures at 10 hz
+
+                CustomMessageBox.Show("Data will be collected for 30 seconds, Please click ok and move the apm around all axises");
+
+                DateTime deadline = DateTime.Now.AddSeconds(30);
+
+                float oldmx = 0;
+                float oldmy = 0;
+                float oldmz = 0;
+
+                while (deadline > DateTime.Now)
+                {
+                    Application.DoEvents();
+
+                    if (oldmx != MainV2.cs.mx &&
+                        oldmy != MainV2.cs.my &&
+                        oldmz != MainV2.cs.mz)
+                    {
+                        data.Add(new Tuple<float, float, float>(
+                            MainV2.cs.mx - (float)MainV2.cs.mag_ofs_x,
+                            MainV2.cs.my - (float)MainV2.cs.mag_ofs_y,
+                            MainV2.cs.mz - (float)MainV2.cs.mag_ofs_z));
+
+                        oldmx = MainV2.cs.mx;
+                        oldmy = MainV2.cs.my;
+                        oldmz = MainV2.cs.mz;
+                    }
+                }
 
+                MainV2.cs.ratesensors = backupratesens;
+
+                if (data.Count < 10)
+                {
+                    CustomMessageBox.Show("Log does not contain enough data");
+                    return;
+                }
+
+                double[] ans = MagCalib.LeastSq(data);
+
+                MagCalib.SaveOffsets(ans);
+
+            }
+            else
+            {
+                string minthro = "30";
+                Common.InputBox("Min Throttle", "Use only data above this throttle percent.", ref minthro);
+
+                int ans = 0;
+                int.TryParse(minthro, out ans);
+
+                MagCalib.ProcessLog(ans);
+            }
         }
 
         private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
         {
+            try
+            {
+                //System.Diagnostics.Process.Start("http://www.ngdc.noaa.gov/geomagmodels/Declination.jsp");
+                System.Diagnostics.Process.Start("http://www.magnetic-declination.com/");
+            }
+            catch { CustomMessageBox.Show("Webpage open failed... do you have a virus?\nhttp://www.magnetic-declination.com/"); }
+        }
 
+        private void TXT_declination_Validating(object sender, CancelEventArgs e)
+        {
+            float ans = 0;
+            e.Cancel = !float.TryParse(TXT_declination.Text, out ans);
         }
 
         private void TXT_declination_Validated(object sender, EventArgs e)
         {
+            if (startup)
+                return;
+            try
+            {
+                if (MainV2.comPort.param["COMPASS_DEC"] == null)
+                {
+                    CustomMessageBox.Show("Not Available");
+                }
+                else
+                {
+                    float dec = 0.0f;
+                    try
+                    {
+                        string declination = TXT_declination.Text;
+                        float.TryParse(declination, out dec);
+                        float deg = (float)((int)dec);
+                        float mins = (dec - deg);
+                        if (dec > 0)
+                        {
+                            dec += ((mins) / 60.0f);
+                        }
+                        else
+                        {
+                            dec -= ((mins) / 60.0f);
+                        }
+                    }
+                    catch { CustomMessageBox.Show("Invalid input!"); return; }
+
+                    TXT_declination.Text = dec.ToString();
 
+                    MainV2.comPort.setParam("COMPASS_DEC", dec * deg2rad);
+                }
+            }
+            catch { CustomMessageBox.Show("Set COMPASS_DEC Failed"); }
         }
 
-        private void CHK_enableairspeed_CheckedChanged(object sender, EventArgs e)
-        {
 
+        private void CHK_enablecompass_CheckedChanged(object sender, EventArgs e)
+        {
+            if (startup)
+                return;
+            try
+            {
+                if (MainV2.comPort.param["MAG_ENABLE"] == null)
+                {
+                    CustomMessageBox.Show("Not Available");
+                }
+                else
+                {
+                    MainV2.comPort.setParam("MAG_ENABLE", ((CheckBox)sender).Checked == true ? 1 : 0);
+                }
+            }
+            catch { CustomMessageBox.Show("Set MAG_ENABLE Failed"); }
         }
 
         private void CHK_enablesonar_CheckedChanged(object sender, EventArgs e)
         {
+            if (startup)
+                return;
+            try
+            {
+                if (MainV2.comPort.param["SONAR_ENABLE"] == null)
+                {
+                    CustomMessageBox.Show("Not Available");
+                }
+                else
+                {
+                    MainV2.comPort.setParam("SONAR_ENABLE", ((CheckBox)sender).Checked == true ? 1 : 0);
+                }
+            }
+            catch { CustomMessageBox.Show("Set SONAR_ENABLE Failed"); }
+        }
 
+        private void CHK_enableairspeed_CheckedChanged(object sender, EventArgs e)
+        {
+            if (startup)
+                return;
+            try
+            {
+                if (MainV2.comPort.param["ARSPD_ENABLE"] == null)
+                {
+                    CustomMessageBox.Show("Not Available on " + MainV2.cs.firmware.ToString());
+                }
+                else
+                {
+                    MainV2.comPort.setParam("ARSPD_ENABLE", ((CheckBox)sender).Checked == true ? 1 : 0);
+                }
+            }
+            catch { CustomMessageBox.Show("Set ARSPD_ENABLE Failed"); }
         }
 
-        private void CHK_enablecompass_CheckedChanged(object sender, EventArgs e)
+        private void CHK_enableoptflow_CheckedChanged(object sender, EventArgs e)
+        {
+
+            if (startup)
+                return;
+            try
+            {
+                if (MainV2.comPort.param["FLOW_ENABLE"] == null)
+                {
+                    CustomMessageBox.Show("Not Available on " + MainV2.cs.firmware.ToString());
+                }
+                else
+                {
+                    MainV2.comPort.setParam("FLOW_ENABLE", ((CheckBox)sender).Checked == true ? 1 : 0);
+                }
+            }
+            catch { CustomMessageBox.Show("Set FLOW_ENABLE Failed"); }
+        }
+
+        private void CMB_sonartype_SelectedIndexChanged(object sender, EventArgs e)
         {
+            if (startup)
+                return;
+            try
+            {
+                if (MainV2.comPort.param["SONAR_TYPE"] == null)
+                {
+                    CustomMessageBox.Show("Not Available on " + MainV2.cs.firmware.ToString());
+                }
+                else
+                {
+                    MainV2.comPort.setParam("SONAR_TYPE", ((ComboBox)sender).SelectedIndex);
+                }
+            }
+            catch { CustomMessageBox.Show("Set SONAR_TYPE Failed"); }
+        }
+
+        private void ConfigHardwareOptions_Load(object sender, EventArgs e)
+        {
+            if (!MainV2.comPort.BaseStream.IsOpen)
+            {
+                this.Enabled = false;
+                return;
+            }
+            else
+            {
+                this.Enabled = true;
+            }
+
+            startup = true;
+
+            if (MainV2.comPort.param["ARSPD_ENABLE"] != null)
+                CHK_enableairspeed.Checked = MainV2.comPort.param["ARSPD_ENABLE"].ToString() == "1" ? true : false;
+
+            if (MainV2.comPort.param["SONAR_ENABLE"] != null)
+                CHK_enablesonar.Checked = MainV2.comPort.param["SONAR_ENABLE"].ToString() == "1" ? true : false;
+
+            if (MainV2.comPort.param["MAG_ENABLE"] != null)
+                CHK_enablecompass.Checked = MainV2.comPort.param["MAG_ENABLE"].ToString() == "1" ? true : false;
+
+            if (MainV2.comPort.param["COMPASS_DEC"] != null)
+                TXT_declination.Text = (float.Parse(MainV2.comPort.param["COMPASS_DEC"].ToString()) * rad2deg).ToString();
+
+            if (MainV2.comPort.param["SONAR_TYPE"] != null)
+                CMB_sonartype.SelectedIndex = int.Parse(MainV2.comPort.param["SONAR_TYPE"].ToString());
+
+            if (MainV2.comPort.param["FLOW_ENABLE"] != null)
+                CHK_enableoptflow.Checked = MainV2.comPort.param["FLOW_ENABLE"].ToString() == "1" ? true : false;
+
 
+            startup = false;
         }
     }
 }
diff --git a/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigHardwareOptions.es-ES.resx b/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigHardwareOptions.es-ES.resx
new file mode 100644
index 000000000..70ad73f1a
--- /dev/null
+++ b/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigHardwareOptions.es-ES.resx
@@ -0,0 +1,315 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <data name="SV3_POS_.Text" xml:space="preserve">
+    <value>180</value>
+  </data>
+  <data name="BUT_HS4save.Text" xml:space="preserve">
+    <value>Manual</value>
+  </data>
+  <data name="label12.Text" xml:space="preserve">
+    <value>PWM 0 - 1230</value>
+  </data>
+  <data name="label10.Text" xml:space="preserve">
+    <value>PWM 1621 - 1749</value>
+  </data>
+  <data name="label13.Text" xml:space="preserve">
+    <value>Modo actual:</value>
+  </data>
+  <data name="CHK_enableoptflow.Text" xml:space="preserve">
+    <value>Habilitar el flujo óptico</value>
+  </data>
+  <data name="label16.Text" xml:space="preserve">
+    <value>NOTA: Las imágenes son sólo para su presentación</value>
+  </data>
+  <data name="CB_simple5.Text" xml:space="preserve">
+    <value>Modo Simple</value>
+  </data>
+  <data name="label11.Text" xml:space="preserve">
+    <value>PWM 1750 +</value>
+  </data>
+  <data name="CHK_elevonch1rev.Text" xml:space="preserve">
+    <value>Elevons CH1 Rev</value>
+  </data>
+  <data name="label14.Text" xml:space="preserve">
+    <value>PWM Actual:</value>
+  </data>
+  <data name="$this.Text" xml:space="preserve">
+    <value>APMSetup</value>
+  </data>
+  <data name="label17.Text" xml:space="preserve">
+    <value>Swash-Servo posición</value>
+  </data>
+  <data name="CHK_enablecompass.Text" xml:space="preserve">
+    <value>Activar Compas</value>
+  </data>
+  <data name="CB_simple4.Text" xml:space="preserve">
+    <value>Modo Simple</value>
+  </data>
+  <data name="tabArducopter.Text" xml:space="preserve">
+    <value>ArduCopter2</value>
+  </data>
+  <data name="CB_simple1.Text" xml:space="preserve">
+    <value>Modo Simple</value>
+  </data>
+  <data name="label15.Text" xml:space="preserve">
+    <value>Ajuste Chásis (+ or x)</value>
+  </data>
+  <data name="SV2_POS_.Text" xml:space="preserve">
+    <value>60</value>
+  </data>
+  <data name="label18.Text" xml:space="preserve">
+    <value>1</value>
+  </data>
+  <data name="CB_simple6.Text" xml:space="preserve">
+    <value>Modo Simple</value>
+  </data>
+  <data name="CB_simple3.Text" xml:space="preserve">
+    <value>Modo Simple</value>
+  </data>
+  <data name="label19.Text" xml:space="preserve">
+    <value>2</value>
+  </data>
+  <data name="tabModes.Text" xml:space="preserve">
+    <value>Modos</value>
+  </data>
+  <data name="CB_simple2.Text" xml:space="preserve">
+    <value>Modo Simple</value>
+  </data>
+  <data name="label20.Text" xml:space="preserve">
+    <value>3</value>
+  </data>
+  <data name="tabReset.Text" xml:space="preserve">
+    <value>Reset</value>
+  </data>
+  <data name="SV1_POS_.Text" xml:space="preserve">
+    <value>-60</value>
+  </data>
+  <data name="label21.Text" xml:space="preserve">
+    <value>Superior</value>
+  </data>
+  <data name="label22.Text" xml:space="preserve">
+    <value>Swash de Viaje</value>
+  </data>
+  <data name="lbl_currentmode.Text" xml:space="preserve">
+    <value>Manual</value>
+  </data>
+  <data name="label23.Text" xml:space="preserve">
+    <value>Timón de Viaje</value>
+  </data>
+  <data name="textBox3.Text" xml:space="preserve">
+    <value>Calibración del sensor de voltaje:Para calibrar el sensor, use un multímetro para medir la tensión que sale de la CES de la batería-la eliminación del circuito (se trata de cables negro y rojo en el cable de tres hilos que suministra energía a la placa APM).Luego reste 0,3 V de ese valor y entrar en él en el campo # 1 a la izquierda.</value>
+  </data>
+  <data name="BUT_Calibrateradio.Text" xml:space="preserve">
+    <value>Calibrar Radio</value>
+  </data>
+  <data name="label24.Text" xml:space="preserve">
+    <value>Max</value>
+  </data>
+  <data name="label2.Text" xml:space="preserve">
+    <value>Modo de Vuelo 2</value>
+  </data>
+  <data name="label25.Text" xml:space="preserve">
+    <value>Alabeo Max</value>
+  </data>
+  <data name="label3.Text" xml:space="preserve">
+    <value>Modo de Vuelo 3</value>
+  </data>
+  <data name="label26.Text" xml:space="preserve">
+    <value>Cabeceo Max</value>
+  </data>
+  <data name="label27.Text" xml:space="preserve">
+    <value>por ejemplo, en grados 2 ° 3 'W es -2,3</value>
+  </data>
+  <data name="label1.Text" xml:space="preserve">
+    <value>Modo de Vuelo 1</value>
+  </data>
+  <data name="label28.Text" xml:space="preserve">
+    <value>Nivel tu quad para establecer las compensaciones por defecto acel</value>
+  </data>
+  <data name="label6.Text" xml:space="preserve">
+    <value>Modo de Vuelo 6</value>
+  </data>
+  <data name="label29.Text" xml:space="preserve">
+    <value>Capacidad</value>
+  </data>
+  <data name="label100.Text" xml:space="preserve">
+    <value>Declinación</value>
+  </data>
+  <data name="CHK_enablesonar.Text" xml:space="preserve">
+    <value>Activar Sonar</value>
+  </data>
+  <data name="label7.Text" xml:space="preserve">
+    <value>PWM 1231 - 1360</value>
+  </data>
+  <data name="tabRadioIn.Text" xml:space="preserve">
+    <value>Entrada Radio</value>
+  </data>
+  <data name="groupBox4.Text" xml:space="preserve">
+    <value>Calibración</value>
+  </data>
+  <data name="HS4_MIN.Text" xml:space="preserve">
+    <value>1500</value>
+  </data>
+  <data name="label4.Text" xml:space="preserve">
+    <value>Modo de Vuelo 4</value>
+  </data>
+  <data name="label5.Text" xml:space="preserve">
+    <value>Modo de Vuelo 5</value>
+  </data>
+  <data name="groupBox3.Text" xml:space="preserve">
+    <value>Gyro</value>
+  </data>
+  <data name="label8.Text" xml:space="preserve">
+    <value>PWM 1361 - 1490</value>
+  </data>
+  <data name="tabHardware.Text" xml:space="preserve">
+    <value>Hardware</value>
+  </data>
+  <data name="label9.Text" xml:space="preserve">
+    <value>PWM 1491 - 1620</value>
+  </data>
+  <data name="linkLabelmagdec.Text" xml:space="preserve">
+    <value>Sitio Web Declinación</value>
+  </data>
+  <data name="HS4_MAX.Text" xml:space="preserve">
+    <value>1500</value>
+  </data>
+  <data name="tabBattery.Text" xml:space="preserve">
+    <value>Batería</value>
+  </data>
+  <data name="BUT_0collective.Text" xml:space="preserve">
+    <value>Cero</value>
+  </data>
+  <data name="CHK_enableairspeed.Text" xml:space="preserve">
+    <value>Activar Airspeed</value>
+  </data>
+  <data name="PIT_MAX_.Text" xml:space="preserve">
+    <value>4500</value>
+  </data>
+  <data name="BUT_reset.Text" xml:space="preserve">
+    <value>Restablecer los Ajustes de hardware APM</value>
+  </data>
+  <data name="GYR_GAIN_.Text" xml:space="preserve">
+    <value>1000</value>
+  </data>
+  <data name="label30.Text" xml:space="preserve">
+    <value>Monitor</value>
+  </data>
+</root>
\ No newline at end of file
diff --git a/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigHardwareOptions.fr.resx b/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigHardwareOptions.fr.resx
new file mode 100644
index 000000000..1bd274bee
--- /dev/null
+++ b/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigHardwareOptions.fr.resx
@@ -0,0 +1,312 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <data name="SV3_POS_.Text" xml:space="preserve">
+    <value>180</value>
+  </data>
+  <data name="BUT_HS4save.Text" xml:space="preserve">
+    <value>Manuel</value>
+  </data>
+  <data name="label12.Text" xml:space="preserve">
+    <value>PWM 0 - 1230</value>
+  </data>
+  <data name="label10.Text" xml:space="preserve">
+    <value>PWM 1621 - 1749</value>
+  </data>
+  <data name="label13.Text" xml:space="preserve">
+    <value>Mode Courant:</value>
+  </data>
+  <data name="CHK_enableoptflow.Text" xml:space="preserve">
+    <value>Activ. capteur optique</value>
+  </data>
+  <data name="label16.Text" xml:space="preserve">
+    <value>NOTE: images pou presentation uniquement. Fonctionnel pour Hex, Octo etc...</value>
+  </data>
+  <data name="CB_simple5.Text" xml:space="preserve">
+    <value>Mode Simple</value>
+  </data>
+  <data name="label11.Text" xml:space="preserve">
+    <value>PWM 1750 +</value>
+  </data>
+  <data name="CHK_elevonch1rev.Text" xml:space="preserve">
+    <value>Elevons CH1 Rev</value>
+  </data>
+  <data name="label14.Text" xml:space="preserve">
+    <value>PWM Actuel:</value>
+  </data>
+  <data name="$this.Text" xml:space="preserve">
+    <value>APMSetup</value>
+  </data>
+  <data name="label17.Text" xml:space="preserve">
+    <value>Swash-Servo position</value>
+  </data>
+  <data name="CHK_enablecompass.Text" xml:space="preserve">
+    <value>Activ. Boussole</value>
+  </data>
+  <data name="CB_simple4.Text" xml:space="preserve">
+    <value>Mode Simple</value>
+  </data>
+  <data name="tabArducopter.Text" xml:space="preserve">
+    <value>ArduCopter2</value>
+  </data>
+  <data name="CB_simple1.Text" xml:space="preserve">
+    <value>Mode Simple</value>
+  </data>
+  <data name="label15.Text" xml:space="preserve">
+    <value>type de châssis (+ ou x)</value>
+  </data>
+  <data name="SV2_POS_.Text" xml:space="preserve">
+    <value>60</value>
+  </data>
+  <data name="label18.Text" xml:space="preserve">
+    <value>1</value>
+  </data>
+  <data name="CB_simple6.Text" xml:space="preserve">
+    <value>Mode Simple</value>
+  </data>
+  <data name="CB_simple3.Text" xml:space="preserve">
+    <value>Mode Simple</value>
+  </data>
+  <data name="label19.Text" xml:space="preserve">
+    <value>2</value>
+  </data>
+  <data name="tabModes.Text" xml:space="preserve">
+    <value>Modes</value>
+  </data>
+  <data name="CB_simple2.Text" xml:space="preserve">
+    <value>Mode Simple</value>
+  </data>
+  <data name="label20.Text" xml:space="preserve">
+    <value>3</value>
+  </data>
+  <data name="tabReset.Text" xml:space="preserve">
+    <value>Réinit.</value>
+  </data>
+  <data name="SV1_POS_.Text" xml:space="preserve">
+    <value>-60</value>
+  </data>
+  <data name="label21.Text" xml:space="preserve">
+    <value>Haut</value>
+  </data>
+  <data name="label22.Text" xml:space="preserve">
+    <value>Mouvement Swash</value>
+  </data>
+  <data name="lbl_currentmode.Text" xml:space="preserve">
+    <value>Manuel</value>
+  </data>
+  <data name="label23.Text" xml:space="preserve">
+    <value>Deplac. du Gouvernail</value>
+  </data>
+  <data name="textBox3.Text" xml:space="preserve">
+    <value>Calibration du capteur de Voltage.1. Mesurer le voltage sur APM et inscrivez-le dans la boite ci-bas.2. Mesurer le voltage de la batterie et inscrivez-le dans la boite ci-bas.3. Inscrire les ampères par volt de la documentation du capteur de courant ci-bas</value>
+  </data>
+  <data name="BUT_Calibrateradio.Text" xml:space="preserve">
+    <value>Calibrer Radio</value>
+  </data>
+  <data name="label24.Text" xml:space="preserve">
+    <value>Max</value>
+  </data>
+  <data name="label2.Text" xml:space="preserve">
+    <value>Mode de vol 2</value>
+  </data>
+  <data name="label25.Text" xml:space="preserve">
+    <value>Roulis Max</value>
+  </data>
+  <data name="label3.Text" xml:space="preserve">
+    <value>Mode de vol 2</value>
+  </data>
+  <data name="label26.Text" xml:space="preserve">
+    <value>Tangage Max</value>
+  </data>
+  <data name="label27.Text" xml:space="preserve">
+    <value>en degrés eg 2° 3' W est -2.3</value>
+  </data>
+  <data name="label1.Text" xml:space="preserve">
+    <value>Mode de vol 1</value>
+  </data>
+  <data name="label28.Text" xml:space="preserve">
+    <value>Niveler l'apareil pour copensation des accels</value>
+  </data>
+  <data name="label6.Text" xml:space="preserve">
+    <value>Mode de vol 6</value>
+  </data>
+  <data name="label29.Text" xml:space="preserve">
+    <value>Capacité</value>
+  </data>
+  <data name="label100.Text" xml:space="preserve">
+    <value>Déclination</value>
+  </data>
+  <data name="CHK_enablesonar.Text" xml:space="preserve">
+    <value>Activer Sonar</value>
+  </data>
+  <data name="label7.Text" xml:space="preserve">
+    <value>PWM 1231 - 1360</value>
+  </data>
+  <data name="tabRadioIn.Text" xml:space="preserve">
+    <value>Entrée Radio</value>
+  </data>
+  <data name="HS4_MIN.Text" xml:space="preserve">
+    <value>1500</value>
+  </data>
+  <data name="label4.Text" xml:space="preserve">
+    <value>Mode de vol 4</value>
+  </data>
+  <data name="label5.Text" xml:space="preserve">
+    <value>Mode de vol 5</value>
+  </data>
+  <data name="groupBox3.Text" xml:space="preserve">
+    <value>Gyro</value>
+  </data>
+  <data name="label8.Text" xml:space="preserve">
+    <value>PWM 1361 - 1490</value>
+  </data>
+  <data name="tabHardware.Text" xml:space="preserve">
+    <value>Matériel</value>
+  </data>
+  <data name="label9.Text" xml:space="preserve">
+    <value>PWM 1491 - 1620</value>
+  </data>
+  <data name="linkLabelmagdec.Text" xml:space="preserve">
+    <value>Site Web Déclination</value>
+  </data>
+  <data name="HS4_MAX.Text" xml:space="preserve">
+    <value>1500</value>
+  </data>
+  <data name="tabBattery.Text" xml:space="preserve">
+    <value>Batterie</value>
+  </data>
+  <data name="BUT_0collective.Text" xml:space="preserve">
+    <value>Zéro</value>
+  </data>
+  <data name="CHK_enableairspeed.Text" xml:space="preserve">
+    <value>Activ. Airspeed</value>
+  </data>
+  <data name="PIT_MAX_.Text" xml:space="preserve">
+    <value>4500</value>
+  </data>
+  <data name="BUT_reset.Text" xml:space="preserve">
+    <value>RàZ tout parametres du APM</value>
+  </data>
+  <data name="GYR_GAIN_.Text" xml:space="preserve">
+    <value>1000</value>
+  </data>
+  <data name="label30.Text" xml:space="preserve">
+    <value>Moniteur</value>
+  </data>
+</root>
\ No newline at end of file
diff --git a/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigHardwareOptions.it-IT.resx b/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigHardwareOptions.it-IT.resx
new file mode 100644
index 000000000..2b2636c81
--- /dev/null
+++ b/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigHardwareOptions.it-IT.resx
@@ -0,0 +1,318 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <data name="SV3_POS_.Text" xml:space="preserve">
+    <value>180</value>
+  </data>
+  <data name="BUT_HS4save.Text" xml:space="preserve">
+    <value>Manuale</value>
+  </data>
+  <data name="label12.Text" xml:space="preserve">
+    <value>PWM 0 - 1230</value>
+  </data>
+  <data name="label10.Text" xml:space="preserve">
+    <value>PWM 1621 - 1749</value>
+  </data>
+  <data name="label13.Text" xml:space="preserve">
+    <value>Modo Corrente:</value>
+  </data>
+  <data name="CHK_enableoptflow.Text" xml:space="preserve">
+    <value>Abilita Flusso ottico</value>
+  </data>
+  <data name="label16.Text" xml:space="preserve">
+    <value>Nota: le immagini sono sono per presentazione, funzionerà con Hexa, etc.</value>
+  </data>
+  <data name="CB_simple5.Text" xml:space="preserve">
+    <value>Modo Semplice</value>
+  </data>
+  <data name="label11.Text" xml:space="preserve">
+    <value>PWM 1750 +</value>
+  </data>
+  <data name="CHK_elevonch1rev.Text" xml:space="preserve">
+    <value>Elevatore CH1 Rev</value>
+  </data>
+  <data name="label14.Text" xml:space="preserve">
+    <value>PWM Corrente:</value>
+  </data>
+  <data name="$this.Text" xml:space="preserve">
+    <value>Imposta APM</value>
+  </data>
+  <data name="label17.Text" xml:space="preserve">
+    <value>Posizione del servo del piatto</value>
+  </data>
+  <data name="CHK_enablecompass.Text" xml:space="preserve">
+    <value>Abilita Magnetometro</value>
+  </data>
+  <data name="CB_simple4.Text" xml:space="preserve">
+    <value>Modo Semplice</value>
+  </data>
+  <data name="tabArducopter.Text" xml:space="preserve">
+    <value>ArduCopter2</value>
+  </data>
+  <data name="CB_simple1.Text" xml:space="preserve">
+    <value>Modo Semplice</value>
+  </data>
+  <data name="label15.Text" xml:space="preserve">
+    <value>Imposta Frame (+ or x)</value>
+  </data>
+  <data name="SV2_POS_.Text" xml:space="preserve">
+    <value>60</value>
+  </data>
+  <data name="label18.Text" xml:space="preserve">
+    <value>1</value>
+  </data>
+  <data name="CB_simple6.Text" xml:space="preserve">
+    <value>Modo Semplice</value>
+  </data>
+  <data name="CB_simple3.Text" xml:space="preserve">
+    <value>Modo Semplice</value>
+  </data>
+  <data name="label19.Text" xml:space="preserve">
+    <value>2</value>
+  </data>
+  <data name="tabModes.Text" xml:space="preserve">
+    <value>Modi</value>
+  </data>
+  <data name="CB_simple2.Text" xml:space="preserve">
+    <value>Modo Semplice</value>
+  </data>
+  <data name="label20.Text" xml:space="preserve">
+    <value>3</value>
+  </data>
+  <data name="tabReset.Text" xml:space="preserve">
+    <value>Riavvia</value>
+  </data>
+  <data name="SV1_POS_.Text" xml:space="preserve">
+    <value>-60</value>
+  </data>
+  <data name="label21.Text" xml:space="preserve">
+    <value>Alto</value>
+  </data>
+  <data name="label22.Text" xml:space="preserve">
+    <value>Escursione del piatto</value>
+  </data>
+  <data name="lbl_currentmode.Text" xml:space="preserve">
+    <value>Manuale</value>
+  </data>
+  <data name="label23.Text" xml:space="preserve">
+    <value>Escursione Timone</value>
+  </data>
+  <data name="textBox3.Text" xml:space="preserve">
+    <value>Calibarzione del sensore di voltaggio:
+1. Misura il valtaggio di ingresso di APM e inseriscilo nel box sotto 
+2. Misura il voltaggio della batteria e inseriscilo nel box sotto 
+3. Dalle caratteristiche del sensore di corrente, inserisci il valore degli ampere per volt nel box qui sotto</value>
+  </data>
+  <data name="BUT_Calibrateradio.Text" xml:space="preserve">
+    <value>Calibrazione Radio</value>
+  </data>
+  <data name="label24.Text" xml:space="preserve">
+    <value>Massimo</value>
+  </data>
+  <data name="label2.Text" xml:space="preserve">
+    <value>Modo di volo 2</value>
+  </data>
+  <data name="label25.Text" xml:space="preserve">
+    <value>Rollio massimo</value>
+  </data>
+  <data name="label3.Text" xml:space="preserve">
+    <value>Modo di volo 3</value>
+  </data>
+  <data name="label26.Text" xml:space="preserve">
+    <value>Passo massimo</value>
+  </data>
+  <data name="label27.Text" xml:space="preserve">
+    <value>in gradi es 2° 3' W is -2.3</value>
+  </data>
+  <data name="label1.Text" xml:space="preserve">
+    <value>Modo di volo 1</value>
+  </data>
+  <data name="label28.Text" xml:space="preserve">
+    <value>Livella il quad per impostare gli accelerometri</value>
+  </data>
+  <data name="label6.Text" xml:space="preserve">
+    <value>Modo di volo 6</value>
+  </data>
+  <data name="label29.Text" xml:space="preserve">
+    <value>Capacità</value>
+  </data>
+  <data name="label100.Text" xml:space="preserve">
+    <value>Declinazione</value>
+  </data>
+  <data name="CHK_enablesonar.Text" xml:space="preserve">
+    <value>Attiva Sonar</value>
+  </data>
+  <data name="label7.Text" xml:space="preserve">
+    <value>PWM 1231 - 1360</value>
+  </data>
+  <data name="tabRadioIn.Text" xml:space="preserve">
+    <value>Ingresso Radio</value>
+  </data>
+  <data name="groupBox4.Text" xml:space="preserve">
+    <value>Calibration</value>
+  </data>
+  <data name="HS4_MIN.Text" xml:space="preserve">
+    <value>1500</value>
+  </data>
+  <data name="label4.Text" xml:space="preserve">
+    <value>Modo di volo 4</value>
+  </data>
+  <data name="label5.Text" xml:space="preserve">
+    <value>Modo di volo 5</value>
+  </data>
+  <data name="groupBox3.Text" xml:space="preserve">
+    <value>Giroscopio</value>
+  </data>
+  <data name="label8.Text" xml:space="preserve">
+    <value>PWM 1361 - 1490</value>
+  </data>
+  <data name="tabHardware.Text" xml:space="preserve">
+    <value>Hardware</value>
+  </data>
+  <data name="label9.Text" xml:space="preserve">
+    <value>PWM 1491 - 1620</value>
+  </data>
+  <data name="linkLabelmagdec.Text" xml:space="preserve">
+    <value>Sito Web per la Declinazione</value>
+  </data>
+  <data name="HS4_MAX.Text" xml:space="preserve">
+    <value>1500</value>
+  </data>
+  <data name="tabBattery.Text" xml:space="preserve">
+    <value>Batteria</value>
+  </data>
+  <data name="BUT_0collective.Text" xml:space="preserve">
+    <value>Zero</value>
+  </data>
+  <data name="CHK_enableairspeed.Text" xml:space="preserve">
+    <value>Attiva Sensore Velocità</value>
+  </data>
+  <data name="PIT_MAX_.Text" xml:space="preserve">
+    <value>4500</value>
+  </data>
+  <data name="BUT_reset.Text" xml:space="preserve">
+    <value>Resetta APM ai valori di Default</value>
+  </data>
+  <data name="GYR_GAIN_.Text" xml:space="preserve">
+    <value>1000</value>
+  </data>
+  <data name="label30.Text" xml:space="preserve">
+    <value>Monitor</value>
+  </data>
+</root>
\ No newline at end of file
diff --git a/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigHardwareOptions.pl.resx b/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigHardwareOptions.pl.resx
new file mode 100644
index 000000000..057b93271
--- /dev/null
+++ b/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigHardwareOptions.pl.resx
@@ -0,0 +1,318 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <data name="SV3_POS_.Text" xml:space="preserve">
+    <value>180</value>
+  </data>
+  <data name="BUT_HS4save.Text" xml:space="preserve">
+    <value>Ręczne</value>
+  </data>
+  <data name="label12.Text" xml:space="preserve">
+    <value>PWM 0 - 1230</value>
+  </data>
+  <data name="label10.Text" xml:space="preserve">
+    <value>PWM 1621 - 1749</value>
+  </data>
+  <data name="label13.Text" xml:space="preserve">
+    <value>Aktualny tryb:</value>
+  </data>
+  <data name="CHK_enableoptflow.Text" xml:space="preserve">
+    <value>Włącz Optical Flow</value>
+  </data>
+  <data name="label16.Text" xml:space="preserve">
+    <value>UWAGA: Obrazy są wyłącznie do prezentacji, działają jedynie z hexa, itp.</value>
+  </data>
+  <data name="CB_simple5.Text" xml:space="preserve">
+    <value>Tryb prosty</value>
+  </data>
+  <data name="label11.Text" xml:space="preserve">
+    <value>PWM 1750 +</value>
+  </data>
+  <data name="CHK_elevonch1rev.Text" xml:space="preserve">
+    <value>Odwr. Elevon CH1</value>
+  </data>
+  <data name="label14.Text" xml:space="preserve">
+    <value>Aktualny PWM:</value>
+  </data>
+  <data name="$this.Text" xml:space="preserve">
+    <value>Ustawienia APM</value>
+  </data>
+  <data name="label17.Text" xml:space="preserve">
+    <value>Pozycja serwa płyty ster.</value>
+  </data>
+  <data name="CHK_enablecompass.Text" xml:space="preserve">
+    <value>Włącz kompas</value>
+  </data>
+  <data name="CB_simple4.Text" xml:space="preserve">
+    <value>Tryb prosty</value>
+  </data>
+  <data name="tabArducopter.Text" xml:space="preserve">
+    <value>ArduCopter2</value>
+  </data>
+  <data name="CB_simple1.Text" xml:space="preserve">
+    <value>Tryb prosty</value>
+  </data>
+  <data name="label15.Text" xml:space="preserve">
+    <value>Ustawienie ramy (+ lub x)</value>
+  </data>
+  <data name="SV2_POS_.Text" xml:space="preserve">
+    <value>60</value>
+  </data>
+  <data name="label18.Text" xml:space="preserve">
+    <value>1</value>
+  </data>
+  <data name="CB_simple6.Text" xml:space="preserve">
+    <value>Tryb prosty</value>
+  </data>
+  <data name="CB_simple3.Text" xml:space="preserve">
+    <value>Tryb prosty</value>
+  </data>
+  <data name="label19.Text" xml:space="preserve">
+    <value>2</value>
+  </data>
+  <data name="tabModes.Text" xml:space="preserve">
+    <value>Tryby</value>
+  </data>
+  <data name="CB_simple2.Text" xml:space="preserve">
+    <value>Tryb prosty</value>
+  </data>
+  <data name="label20.Text" xml:space="preserve">
+    <value>3</value>
+  </data>
+  <data name="tabReset.Text" xml:space="preserve">
+    <value>Reset</value>
+  </data>
+  <data name="SV1_POS_.Text" xml:space="preserve">
+    <value>-60</value>
+  </data>
+  <data name="label21.Text" xml:space="preserve">
+    <value>Góra</value>
+  </data>
+  <data name="label22.Text" xml:space="preserve">
+    <value>Zakres ruchu płyty sterującej</value>
+  </data>
+  <data name="lbl_currentmode.Text" xml:space="preserve">
+    <value>Ręczne</value>
+  </data>
+  <data name="label23.Text" xml:space="preserve">
+    <value>Zakres steru kierunku</value>
+  </data>
+  <data name="textBox3.Text" xml:space="preserve">
+    <value>Kalibracja czujnika napięcia:
+1. Zmierz napięcie wejściowe APM i wpisz poniżej
+2. Zmierz napięcie baterii i wpisz poniżej
+3. Wpisz poniżej ilość amperów/wolt [A/V] z dokumentacji czujnika prądu</value>
+  </data>
+  <data name="BUT_Calibrateradio.Text" xml:space="preserve">
+    <value>Kalibracja radia</value>
+  </data>
+  <data name="label24.Text" xml:space="preserve">
+    <value>Max</value>
+  </data>
+  <data name="label2.Text" xml:space="preserve">
+    <value>Tryb lotu 2</value>
+  </data>
+  <data name="label25.Text" xml:space="preserve">
+    <value>Max przechylenie</value>
+  </data>
+  <data name="label3.Text" xml:space="preserve">
+    <value>Tryb lotu 3</value>
+  </data>
+  <data name="label26.Text" xml:space="preserve">
+    <value>Max pochylenie</value>
+  </data>
+  <data name="label27.Text" xml:space="preserve">
+    <value>w stopniech np. 2° 3' W to -2.3</value>
+  </data>
+  <data name="label1.Text" xml:space="preserve">
+    <value>Tryb lotu 1</value>
+  </data>
+  <data name="label28.Text" xml:space="preserve">
+    <value>Wypoziomuj quada żeby stawić domyśle offsety przysp.</value>
+  </data>
+  <data name="label6.Text" xml:space="preserve">
+    <value>Tryb lotu 6</value>
+  </data>
+  <data name="label29.Text" xml:space="preserve">
+    <value>Pojemność</value>
+  </data>
+  <data name="label100.Text" xml:space="preserve">
+    <value>Deklinacja</value>
+  </data>
+  <data name="CHK_enablesonar.Text" xml:space="preserve">
+    <value>Włącz sonar</value>
+  </data>
+  <data name="label7.Text" xml:space="preserve">
+    <value>PWM 1231 - 1360</value>
+  </data>
+  <data name="tabRadioIn.Text" xml:space="preserve">
+    <value>Wejścia radia</value>
+  </data>
+  <data name="groupBox4.Text" xml:space="preserve">
+    <value>Calibration</value>
+  </data>
+  <data name="HS4_MIN.Text" xml:space="preserve">
+    <value>1500</value>
+  </data>
+  <data name="label4.Text" xml:space="preserve">
+    <value>Tryb lotu 4</value>
+  </data>
+  <data name="label5.Text" xml:space="preserve">
+    <value>Tryb lotu 5</value>
+  </data>
+  <data name="groupBox3.Text" xml:space="preserve">
+    <value>Żyro</value>
+  </data>
+  <data name="label8.Text" xml:space="preserve">
+    <value>PWM 1361 - 1490</value>
+  </data>
+  <data name="tabHardware.Text" xml:space="preserve">
+    <value>Hardware</value>
+  </data>
+  <data name="label9.Text" xml:space="preserve">
+    <value>PWM 1491 - 1620</value>
+  </data>
+  <data name="linkLabelmagdec.Text" xml:space="preserve">
+    <value>Strona www deklinacji</value>
+  </data>
+  <data name="HS4_MAX.Text" xml:space="preserve">
+    <value>1500</value>
+  </data>
+  <data name="tabBattery.Text" xml:space="preserve">
+    <value>Bateria</value>
+  </data>
+  <data name="BUT_0collective.Text" xml:space="preserve">
+    <value>Zero</value>
+  </data>
+  <data name="CHK_enableairspeed.Text" xml:space="preserve">
+    <value>Włącz prędkość powietrza</value>
+  </data>
+  <data name="PIT_MAX_.Text" xml:space="preserve">
+    <value>4500</value>
+  </data>
+  <data name="BUT_reset.Text" xml:space="preserve">
+    <value>Reset APM do stawień domyślnych</value>
+  </data>
+  <data name="GYR_GAIN_.Text" xml:space="preserve">
+    <value>1000</value>
+  </data>
+  <data name="label30.Text" xml:space="preserve">
+    <value>Monitor</value>
+  </data>
+</root>
\ No newline at end of file
diff --git a/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigHardwareOptions.resx b/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigHardwareOptions.resx
index 7080a7d11..587576ac9 100644
--- a/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigHardwareOptions.resx
+++ b/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigHardwareOptions.resx
@@ -117,4 +117,406 @@
   <resheader name="writer">
     <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
   </resheader>
+  <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
+  <data name="BUT_MagCalibration.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
+    <value>NoControl</value>
+  </data>
+  <assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
+  <data name="BUT_MagCalibration.Location" type="System.Drawing.Point, System.Drawing">
+    <value>340, 13</value>
+  </data>
+  <data name="BUT_MagCalibration.Size" type="System.Drawing.Size, System.Drawing">
+    <value>75, 23</value>
+  </data>
+  <assembly alias="mscorlib" name="mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
+  <data name="BUT_MagCalibration.TabIndex" type="System.Int32, mscorlib">
+    <value>47</value>
+  </data>
+  <data name="BUT_MagCalibration.Text" xml:space="preserve">
+    <value>Calibration</value>
+  </data>
+  <data name="&gt;&gt;BUT_MagCalibration.Name" xml:space="preserve">
+    <value>BUT_MagCalibration</value>
+  </data>
+  <data name="&gt;&gt;BUT_MagCalibration.Type" xml:space="preserve">
+    <value>ArdupilotMega.MyButton, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null</value>
+  </data>
+  <data name="&gt;&gt;BUT_MagCalibration.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name="&gt;&gt;BUT_MagCalibration.ZOrder" xml:space="preserve">
+    <value>0</value>
+  </data>
+  <data name="label27.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
+    <value>NoControl</value>
+  </data>
+  <data name="label27.Location" type="System.Drawing.Point, System.Drawing">
+    <value>445, 45</value>
+  </data>
+  <data name="label27.Size" type="System.Drawing.Size, System.Drawing">
+    <value>150, 20</value>
+  </data>
+  <data name="label27.TabIndex" type="System.Int32, mscorlib">
+    <value>46</value>
+  </data>
+  <data name="label27.Text" xml:space="preserve">
+    <value>in Degrees eg 2° 3' W is -2.3</value>
+  </data>
+  <data name="&gt;&gt;label27.Name" xml:space="preserve">
+    <value>label27</value>
+  </data>
+  <data name="&gt;&gt;label27.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;label27.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name="&gt;&gt;label27.ZOrder" xml:space="preserve">
+    <value>1</value>
+  </data>
+  <data name="CMB_sonartype.Items" xml:space="preserve">
+    <value>XL-EZ0</value>
+  </data>
+  <data name="CMB_sonartype.Items1" xml:space="preserve">
+    <value>LV-EZ0</value>
+  </data>
+  <data name="CMB_sonartype.Items2" xml:space="preserve">
+    <value>XL-EZL0</value>
+  </data>
+  <data name="CMB_sonartype.Location" type="System.Drawing.Point, System.Drawing">
+    <value>243, 122</value>
+  </data>
+  <data name="CMB_sonartype.Size" type="System.Drawing.Size, System.Drawing">
+    <value>121, 21</value>
+  </data>
+  <data name="CMB_sonartype.TabIndex" type="System.Int32, mscorlib">
+    <value>45</value>
+  </data>
+  <data name="&gt;&gt;CMB_sonartype.Name" xml:space="preserve">
+    <value>CMB_sonartype</value>
+  </data>
+  <data name="&gt;&gt;CMB_sonartype.Type" xml:space="preserve">
+    <value>System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;CMB_sonartype.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name="&gt;&gt;CMB_sonartype.ZOrder" xml:space="preserve">
+    <value>2</value>
+  </data>
+  <data name="CHK_enableoptflow.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
+    <value>NoControl</value>
+  </data>
+  <data name="CHK_enableoptflow.Location" type="System.Drawing.Point, System.Drawing">
+    <value>97, 285</value>
+  </data>
+  <data name="CHK_enableoptflow.Size" type="System.Drawing.Size, System.Drawing">
+    <value>134, 19</value>
+  </data>
+  <data name="CHK_enableoptflow.TabIndex" type="System.Int32, mscorlib">
+    <value>44</value>
+  </data>
+  <data name="CHK_enableoptflow.Text" xml:space="preserve">
+    <value>Enable Optical Flow</value>
+  </data>
+  <data name="&gt;&gt;CHK_enableoptflow.Name" xml:space="preserve">
+    <value>CHK_enableoptflow</value>
+  </data>
+  <data name="&gt;&gt;CHK_enableoptflow.Type" xml:space="preserve">
+    <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;CHK_enableoptflow.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name="&gt;&gt;CHK_enableoptflow.ZOrder" xml:space="preserve">
+    <value>3</value>
+  </data>
+  <data name="pictureBox2.BackgroundImageLayout" type="System.Windows.Forms.ImageLayout, System.Windows.Forms">
+    <value>Zoom</value>
+  </data>
+  <data name="pictureBox2.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
+    <value>NoControl</value>
+  </data>
+  <data name="pictureBox2.Location" type="System.Drawing.Point, System.Drawing">
+    <value>13, 259</value>
+  </data>
+  <data name="pictureBox2.Size" type="System.Drawing.Size, System.Drawing">
+    <value>75, 75</value>
+  </data>
+  <data name="pictureBox2.TabIndex" type="System.Int32, mscorlib">
+    <value>43</value>
+  </data>
+  <data name="&gt;&gt;pictureBox2.Name" xml:space="preserve">
+    <value>pictureBox2</value>
+  </data>
+  <data name="&gt;&gt;pictureBox2.Type" xml:space="preserve">
+    <value>System.Windows.Forms.PictureBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;pictureBox2.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name="&gt;&gt;pictureBox2.ZOrder" xml:space="preserve">
+    <value>4</value>
+  </data>
+  <data name="linkLabelmagdec.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <data name="linkLabelmagdec.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
+    <value>NoControl</value>
+  </data>
+  <data name="linkLabelmagdec.Location" type="System.Drawing.Point, System.Drawing">
+    <value>325, 68</value>
+  </data>
+  <data name="linkLabelmagdec.Size" type="System.Drawing.Size, System.Drawing">
+    <value>104, 13</value>
+  </data>
+  <data name="linkLabelmagdec.TabIndex" type="System.Int32, mscorlib">
+    <value>42</value>
+  </data>
+  <data name="linkLabelmagdec.Text" xml:space="preserve">
+    <value>Declination WebSite</value>
+  </data>
+  <data name="&gt;&gt;linkLabelmagdec.Name" xml:space="preserve">
+    <value>linkLabelmagdec</value>
+  </data>
+  <data name="&gt;&gt;linkLabelmagdec.Type" xml:space="preserve">
+    <value>System.Windows.Forms.LinkLabel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;linkLabelmagdec.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name="&gt;&gt;linkLabelmagdec.ZOrder" xml:space="preserve">
+    <value>5</value>
+  </data>
+  <data name="label100.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
+    <value>NoControl</value>
+  </data>
+  <data name="label100.Location" type="System.Drawing.Point, System.Drawing">
+    <value>240, 45</value>
+  </data>
+  <data name="label100.Size" type="System.Drawing.Size, System.Drawing">
+    <value>72, 16</value>
+  </data>
+  <data name="label100.TabIndex" type="System.Int32, mscorlib">
+    <value>38</value>
+  </data>
+  <data name="label100.Text" xml:space="preserve">
+    <value>Declination</value>
+  </data>
+  <data name="&gt;&gt;label100.Name" xml:space="preserve">
+    <value>label100</value>
+  </data>
+  <data name="&gt;&gt;label100.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;label100.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name="&gt;&gt;label100.ZOrder" xml:space="preserve">
+    <value>6</value>
+  </data>
+  <data name="TXT_declination.Location" type="System.Drawing.Point, System.Drawing">
+    <value>318, 45</value>
+  </data>
+  <data name="TXT_declination.Size" type="System.Drawing.Size, System.Drawing">
+    <value>121, 20</value>
+  </data>
+  <data name="TXT_declination.TabIndex" type="System.Int32, mscorlib">
+    <value>37</value>
+  </data>
+  <data name="&gt;&gt;TXT_declination.Name" xml:space="preserve">
+    <value>TXT_declination</value>
+  </data>
+  <data name="&gt;&gt;TXT_declination.Type" xml:space="preserve">
+    <value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;TXT_declination.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name="&gt;&gt;TXT_declination.ZOrder" xml:space="preserve">
+    <value>7</value>
+  </data>
+  <data name="CHK_enableairspeed.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
+    <value>NoControl</value>
+  </data>
+  <data name="CHK_enableairspeed.Location" type="System.Drawing.Point, System.Drawing">
+    <value>97, 202</value>
+  </data>
+  <data name="CHK_enableairspeed.Size" type="System.Drawing.Size, System.Drawing">
+    <value>103, 17</value>
+  </data>
+  <data name="CHK_enableairspeed.TabIndex" type="System.Int32, mscorlib">
+    <value>39</value>
+  </data>
+  <data name="CHK_enableairspeed.Text" xml:space="preserve">
+    <value>Enable Airspeed</value>
+  </data>
+  <data name="&gt;&gt;CHK_enableairspeed.Name" xml:space="preserve">
+    <value>CHK_enableairspeed</value>
+  </data>
+  <data name="&gt;&gt;CHK_enableairspeed.Type" xml:space="preserve">
+    <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;CHK_enableairspeed.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name="&gt;&gt;CHK_enableairspeed.ZOrder" xml:space="preserve">
+    <value>8</value>
+  </data>
+  <data name="CHK_enablesonar.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
+    <value>NoControl</value>
+  </data>
+  <data name="CHK_enablesonar.Location" type="System.Drawing.Point, System.Drawing">
+    <value>94, 124</value>
+  </data>
+  <data name="CHK_enablesonar.Size" type="System.Drawing.Size, System.Drawing">
+    <value>90, 17</value>
+  </data>
+  <data name="CHK_enablesonar.TabIndex" type="System.Int32, mscorlib">
+    <value>40</value>
+  </data>
+  <data name="CHK_enablesonar.Text" xml:space="preserve">
+    <value>Enable Sonar</value>
+  </data>
+  <data name="&gt;&gt;CHK_enablesonar.Name" xml:space="preserve">
+    <value>CHK_enablesonar</value>
+  </data>
+  <data name="&gt;&gt;CHK_enablesonar.Type" xml:space="preserve">
+    <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;CHK_enablesonar.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name="&gt;&gt;CHK_enablesonar.ZOrder" xml:space="preserve">
+    <value>9</value>
+  </data>
+  <data name="CHK_enablecompass.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
+    <value>NoControl</value>
+  </data>
+  <data name="CHK_enablecompass.Location" type="System.Drawing.Point, System.Drawing">
+    <value>97, 44</value>
+  </data>
+  <data name="CHK_enablecompass.Size" type="System.Drawing.Size, System.Drawing">
+    <value>105, 17</value>
+  </data>
+  <data name="CHK_enablecompass.TabIndex" type="System.Int32, mscorlib">
+    <value>41</value>
+  </data>
+  <data name="CHK_enablecompass.Text" xml:space="preserve">
+    <value>Enable Compass</value>
+  </data>
+  <data name="&gt;&gt;CHK_enablecompass.Name" xml:space="preserve">
+    <value>CHK_enablecompass</value>
+  </data>
+  <data name="&gt;&gt;CHK_enablecompass.Type" xml:space="preserve">
+    <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;CHK_enablecompass.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name="&gt;&gt;CHK_enablecompass.ZOrder" xml:space="preserve">
+    <value>10</value>
+  </data>
+  <data name="pictureBox4.BackgroundImageLayout" type="System.Windows.Forms.ImageLayout, System.Windows.Forms">
+    <value>Zoom</value>
+  </data>
+  <data name="pictureBox4.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
+    <value>NoControl</value>
+  </data>
+  <data name="pictureBox4.Location" type="System.Drawing.Point, System.Drawing">
+    <value>13, 176</value>
+  </data>
+  <data name="pictureBox4.Size" type="System.Drawing.Size, System.Drawing">
+    <value>75, 75</value>
+  </data>
+  <data name="pictureBox4.TabIndex" type="System.Int32, mscorlib">
+    <value>36</value>
+  </data>
+  <data name="&gt;&gt;pictureBox4.Name" xml:space="preserve">
+    <value>pictureBox4</value>
+  </data>
+  <data name="&gt;&gt;pictureBox4.Type" xml:space="preserve">
+    <value>System.Windows.Forms.PictureBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;pictureBox4.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name="&gt;&gt;pictureBox4.ZOrder" xml:space="preserve">
+    <value>11</value>
+  </data>
+  <data name="pictureBox3.BackgroundImageLayout" type="System.Windows.Forms.ImageLayout, System.Windows.Forms">
+    <value>Zoom</value>
+  </data>
+  <data name="pictureBox3.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
+    <value>NoControl</value>
+  </data>
+  <data name="pictureBox3.Location" type="System.Drawing.Point, System.Drawing">
+    <value>13, 94</value>
+  </data>
+  <data name="pictureBox3.Size" type="System.Drawing.Size, System.Drawing">
+    <value>75, 75</value>
+  </data>
+  <data name="pictureBox3.TabIndex" type="System.Int32, mscorlib">
+    <value>35</value>
+  </data>
+  <data name="&gt;&gt;pictureBox3.Name" xml:space="preserve">
+    <value>pictureBox3</value>
+  </data>
+  <data name="&gt;&gt;pictureBox3.Type" xml:space="preserve">
+    <value>System.Windows.Forms.PictureBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;pictureBox3.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name="&gt;&gt;pictureBox3.ZOrder" xml:space="preserve">
+    <value>12</value>
+  </data>
+  <data name="pictureBox1.BackgroundImageLayout" type="System.Windows.Forms.ImageLayout, System.Windows.Forms">
+    <value>Zoom</value>
+  </data>
+  <data name="pictureBox1.ErrorImage" type="System.Resources.ResXNullRef, System.Windows.Forms">
+    <value />
+  </data>
+  <data name="pictureBox1.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
+    <value>NoControl</value>
+  </data>
+  <data name="pictureBox1.InitialImage" type="System.Resources.ResXNullRef, System.Windows.Forms">
+    <value />
+  </data>
+  <data name="pictureBox1.Location" type="System.Drawing.Point, System.Drawing">
+    <value>13, 13</value>
+  </data>
+  <data name="pictureBox1.Size" type="System.Drawing.Size, System.Drawing">
+    <value>75, 75</value>
+  </data>
+  <data name="pictureBox1.TabIndex" type="System.Int32, mscorlib">
+    <value>34</value>
+  </data>
+  <data name="&gt;&gt;pictureBox1.Name" xml:space="preserve">
+    <value>pictureBox1</value>
+  </data>
+  <data name="&gt;&gt;pictureBox1.Type" xml:space="preserve">
+    <value>System.Windows.Forms.PictureBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;pictureBox1.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name="&gt;&gt;pictureBox1.ZOrder" xml:space="preserve">
+    <value>13</value>
+  </data>
+  <metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+    <value>True</value>
+  </metadata>
+  <data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
+    <value>6, 13</value>
+  </data>
+  <data name="$this.Size" type="System.Drawing.Size, System.Drawing">
+    <value>602, 351</value>
+  </data>
+  <data name="&gt;&gt;$this.Name" xml:space="preserve">
+    <value>ConfigHardwareOptions</value>
+  </data>
+  <data name="&gt;&gt;$this.Type" xml:space="preserve">
+    <value>System.Windows.Forms.UserControl, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
 </root>
\ No newline at end of file
diff --git a/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigHardwareOptions.zh-Hans.resx b/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigHardwareOptions.zh-Hans.resx
new file mode 100644
index 000000000..f96892c42
--- /dev/null
+++ b/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigHardwareOptions.zh-Hans.resx
@@ -0,0 +1,496 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <data name="tabRadioIn.Text" xml:space="preserve">
+    <value>遥控输入</value>
+  </data>
+  <data name="tabModes.Text" xml:space="preserve">
+    <value>模式</value>
+  </data>
+  <data name="tabHardware.Text" xml:space="preserve">
+    <value>硬件</value>
+  </data>
+  <data name="tabBattery.Text" xml:space="preserve">
+    <value>电池</value>
+  </data>
+  <data name="tabHeli.Text" xml:space="preserve">
+    <value>AC2 直升机</value>
+  </data>
+  <data name="groupBoxElevons.Text" xml:space="preserve">
+    <value>上降副翼 (Elevon) 配置</value>
+  </data>
+  <assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
+  <data name="CHK_elevonch2rev.Size" type="System.Drawing.Size, System.Drawing">
+    <value>115, 17</value>
+  </data>
+  <data name="CHK_elevonch2rev.Text" xml:space="preserve">
+    <value>Elevons CH2 逆转</value>
+  </data>
+  <data name="CHK_elevonrev.Size" type="System.Drawing.Size, System.Drawing">
+    <value>91, 17</value>
+  </data>
+  <data name="CHK_elevonrev.Text" xml:space="preserve">
+    <value>Elevons 逆转</value>
+  </data>
+  <data name="CHK_elevonch1rev.Size" type="System.Drawing.Size, System.Drawing">
+    <value>115, 17</value>
+  </data>
+  <data name="CHK_elevonch1rev.Text" xml:space="preserve">
+    <value>Elevons CH1 逆转</value>
+  </data>
+  <data name="CHK_revch3.Size" type="System.Drawing.Size, System.Drawing">
+    <value>50, 17</value>
+  </data>
+  <data name="CHK_revch3.Text" xml:space="preserve">
+    <value>逆转</value>
+  </data>
+  <data name="CHK_revch4.Size" type="System.Drawing.Size, System.Drawing">
+    <value>50, 17</value>
+  </data>
+  <data name="CHK_revch4.Text" xml:space="preserve">
+    <value>逆转</value>
+  </data>
+  <data name="CHK_revch2.Size" type="System.Drawing.Size, System.Drawing">
+    <value>50, 17</value>
+  </data>
+  <data name="CHK_revch2.Text" xml:space="preserve">
+    <value>逆转</value>
+  </data>
+  <data name="CHK_revch1.Size" type="System.Drawing.Size, System.Drawing">
+    <value>50, 17</value>
+  </data>
+  <data name="CHK_revch1.Text" xml:space="preserve">
+    <value>逆转</value>
+  </data>
+  <data name="BUT_Calibrateradio.Text" xml:space="preserve">
+    <value>校准遥控</value>
+  </data>
+  <data name="CB_simple6.Size" type="System.Drawing.Size, System.Drawing">
+    <value>74, 17</value>
+  </data>
+  <data name="CB_simple6.Text" xml:space="preserve">
+    <value>简单模式</value>
+  </data>
+  <data name="CB_simple5.Size" type="System.Drawing.Size, System.Drawing">
+    <value>74, 17</value>
+  </data>
+  <data name="CB_simple5.Text" xml:space="preserve">
+    <value>简单模式</value>
+  </data>
+  <data name="CB_simple4.Size" type="System.Drawing.Size, System.Drawing">
+    <value>74, 17</value>
+  </data>
+  <data name="CB_simple4.Text" xml:space="preserve">
+    <value>简单模式</value>
+  </data>
+  <data name="CB_simple3.Size" type="System.Drawing.Size, System.Drawing">
+    <value>74, 17</value>
+  </data>
+  <data name="CB_simple3.Text" xml:space="preserve">
+    <value>简单模式</value>
+  </data>
+  <data name="CB_simple2.Size" type="System.Drawing.Size, System.Drawing">
+    <value>74, 17</value>
+  </data>
+  <data name="CB_simple2.Text" xml:space="preserve">
+    <value>简单模式</value>
+  </data>
+  <data name="CB_simple1.Size" type="System.Drawing.Size, System.Drawing">
+    <value>74, 17</value>
+  </data>
+  <data name="CB_simple1.Text" xml:space="preserve">
+    <value>简单模式</value>
+  </data>
+  <data name="label14.Size" type="System.Drawing.Size, System.Drawing">
+    <value>64, 13</value>
+  </data>
+  <data name="label14.Text" xml:space="preserve">
+    <value>当前 PWM:</value>
+  </data>
+  <data name="label13.Size" type="System.Drawing.Size, System.Drawing">
+    <value>58, 13</value>
+  </data>
+  <data name="label13.Text" xml:space="preserve">
+    <value>当前模式:</value>
+  </data>
+  <data name="label6.Size" type="System.Drawing.Size, System.Drawing">
+    <value>64, 13</value>
+  </data>
+  <data name="label6.Text" xml:space="preserve">
+    <value>飞行模式 6</value>
+  </data>
+  <data name="label5.Size" type="System.Drawing.Size, System.Drawing">
+    <value>64, 13</value>
+  </data>
+  <data name="label5.Text" xml:space="preserve">
+    <value>飞行模式 5</value>
+  </data>
+  <data name="label4.Size" type="System.Drawing.Size, System.Drawing">
+    <value>64, 13</value>
+  </data>
+  <data name="label4.Text" xml:space="preserve">
+    <value>飞行模式 4</value>
+  </data>
+  <data name="label3.Size" type="System.Drawing.Size, System.Drawing">
+    <value>64, 13</value>
+  </data>
+  <data name="label3.Text" xml:space="preserve">
+    <value>飞行模式 3</value>
+  </data>
+  <data name="label2.Size" type="System.Drawing.Size, System.Drawing">
+    <value>64, 13</value>
+  </data>
+  <data name="label2.Text" xml:space="preserve">
+    <value>飞行模式 2</value>
+  </data>
+  <data name="label1.Size" type="System.Drawing.Size, System.Drawing">
+    <value>64, 13</value>
+  </data>
+  <data name="label1.Text" xml:space="preserve">
+    <value>飞行模式 1</value>
+  </data>
+  <data name="BUT_SaveModes.Text" xml:space="preserve">
+    <value>保存模式</value>
+  </data>
+  <data name="label27.Text" xml:space="preserve">
+    <value>十进制, 2° 3' W 就是 -2.3</value>
+  </data>
+  <data name="CHK_enableoptflow.Text" xml:space="preserve">
+    <value>启用光流</value>
+  </data>
+  <data name="linkLabelmagdec.Size" type="System.Drawing.Size, System.Drawing">
+    <value>67, 13</value>
+  </data>
+  <data name="linkLabelmagdec.Text" xml:space="preserve">
+    <value>磁偏角网站</value>
+  </data>
+  <data name="label100.Text" xml:space="preserve">
+    <value>磁偏角</value>
+  </data>
+  <data name="CHK_enableairspeed.Text" xml:space="preserve">
+    <value>启用空速计</value>
+  </data>
+  <data name="CHK_enablesonar.Text" xml:space="preserve">
+    <value>启用声纳</value>
+  </data>
+  <data name="CHK_enablecompass.Text" xml:space="preserve">
+    <value>启用罗盘</value>
+  </data>
+  <data name="label31.Size" type="System.Drawing.Size, System.Drawing">
+    <value>58, 13</value>
+  </data>
+  <data name="label31.Text" xml:space="preserve">
+    <value>输入电压:</value>
+  </data>
+  <data name="label32.Size" type="System.Drawing.Size, System.Drawing">
+    <value>94, 13</value>
+  </data>
+  <data name="label32.Text" xml:space="preserve">
+    <value>测量的电池电压:</value>
+  </data>
+  <data name="label33.Size" type="System.Drawing.Size, System.Drawing">
+    <value>58, 13</value>
+  </data>
+  <data name="label33.Text" xml:space="preserve">
+    <value>电池电压:</value>
+  </data>
+  <data name="label34.Size" type="System.Drawing.Size, System.Drawing">
+    <value>52, 13</value>
+  </data>
+  <data name="label34.Text" xml:space="preserve">
+    <value>分 压 比:</value>
+  </data>
+  <data name="label35.Size" type="System.Drawing.Size, System.Drawing">
+    <value>63, 13</value>
+  </data>
+  <data name="label35.Text" xml:space="preserve">
+    <value>安培/伏特:</value>
+  </data>
+  <data name="label47.Size" type="System.Drawing.Size, System.Drawing">
+    <value>48, 18</value>
+  </data>
+  <data name="label47.Text" xml:space="preserve">
+    <value>传感器</value>
+  </data>
+  <data name="textBox3.Text" xml:space="preserve">
+    <value>电压传感器校准:
+1. 测量APM输入电压,输入到下方的文本框中
+2. 测量电池电压,输入到下方的文本框中
+3. 从当前的传感器的数据表中找到安培/伏特,输入到下方的文本框中</value>
+  </data>
+  <data name="label29.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label29.Text" xml:space="preserve">
+    <value>容量</value>
+  </data>
+  <data name="label30.Size" type="System.Drawing.Size, System.Drawing">
+    <value>48, 13</value>
+  </data>
+  <data name="label30.Text" xml:space="preserve">
+    <value>监控器</value>
+  </data>
+  <data name="label28.Size" type="System.Drawing.Size, System.Drawing">
+    <value>175, 13</value>
+  </data>
+  <data name="label28.Text" xml:space="preserve">
+    <value>设置水平面的默认加速度计偏移</value>
+  </data>
+  <data name="label16.Size" type="System.Drawing.Size, System.Drawing">
+    <value>261, 13</value>
+  </data>
+  <data name="label16.Text" xml:space="preserve">
+    <value>注: 图片只是用于展示,设置可以用于六轴等机架</value>
+  </data>
+  <data name="label15.Size" type="System.Drawing.Size, System.Drawing">
+    <value>93, 13</value>
+  </data>
+  <data name="label15.Text" xml:space="preserve">
+    <value>机架设置 (+ 或 x)</value>
+  </data>
+  <data name="BUT_levelac2.Text" xml:space="preserve">
+    <value>找平</value>
+  </data>
+  <data name="BUT_HS4save.Text" xml:space="preserve">
+    <value>手动</value>
+  </data>
+  <data name="BUT_swash_manual.Text" xml:space="preserve">
+    <value>手动</value>
+  </data>
+  <data name="label46.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label46.Text" xml:space="preserve">
+    <value>感度</value>
+  </data>
+  <data name="label45.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label45.Text" xml:space="preserve">
+    <value>启用</value>
+  </data>
+  <data name="label44.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label44.Text" xml:space="preserve">
+    <value>微调</value>
+  </data>
+  <data name="label43.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label43.Text" xml:space="preserve">
+    <value>逆转</value>
+  </data>
+  <data name="label42.Size" type="System.Drawing.Size, System.Drawing">
+    <value>43, 13</value>
+  </data>
+  <data name="label42.Text" xml:space="preserve">
+    <value>方向舵</value>
+  </data>
+  <data name="label24.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label24.Text" xml:space="preserve">
+    <value>最大</value>
+  </data>
+  <data name="label40.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label40.Text" xml:space="preserve">
+    <value>最小</value>
+  </data>
+  <data name="label41.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label41.Text" xml:space="preserve">
+    <value>最低</value>
+  </data>
+  <data name="label21.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label21.Text" xml:space="preserve">
+    <value>最高</value>
+  </data>
+  <data name="BUT_0collective.Text" xml:space="preserve">
+    <value>0度</value>
+  </data>
+  <data name="label39.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label39.Text" xml:space="preserve">
+    <value>微调</value>
+  </data>
+  <data name="label38.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label38.Text" xml:space="preserve">
+    <value>逆转</value>
+  </data>
+  <data name="label37.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label37.Text" xml:space="preserve">
+    <value>位置</value>
+  </data>
+  <data name="label36.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label36.Text" xml:space="preserve">
+    <value>舵机</value>
+  </data>
+  <data name="label26.Size" type="System.Drawing.Size, System.Drawing">
+    <value>55, 13</value>
+  </data>
+  <data name="label26.Text" xml:space="preserve">
+    <value>最大俯仰</value>
+  </data>
+  <data name="label25.Size" type="System.Drawing.Size, System.Drawing">
+    <value>55, 13</value>
+  </data>
+  <data name="label25.Text" xml:space="preserve">
+    <value>最大侧倾</value>
+  </data>
+  <data name="label23.Size" type="System.Drawing.Size, System.Drawing">
+    <value>55, 13</value>
+  </data>
+  <data name="label23.Text" xml:space="preserve">
+    <value>舵机行程</value>
+  </data>
+  <data name="label22.Size" type="System.Drawing.Size, System.Drawing">
+    <value>79, 13</value>
+  </data>
+  <data name="label22.Text" xml:space="preserve">
+    <value>斜盘水平微调</value>
+  </data>
+  <data name="label17.Size" type="System.Drawing.Size, System.Drawing">
+    <value>79, 13</value>
+  </data>
+  <data name="label17.Text" xml:space="preserve">
+    <value>斜盘舵机位置</value>
+  </data>
+  <data name="tabReset.Text" xml:space="preserve">
+    <value>重置</value>
+  </data>
+  <data name="BUT_reset.Text" xml:space="preserve">
+    <value>重置 APM 为默认设置</value>
+  </data>
+  <data name="$this.Text" xml:space="preserve">
+    <value>APM设置</value>
+  </data>
+</root>
\ No newline at end of file
diff --git a/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigHardwareOptions.zh-TW.resx b/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigHardwareOptions.zh-TW.resx
new file mode 100644
index 000000000..0c03fbf8e
--- /dev/null
+++ b/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigHardwareOptions.zh-TW.resx
@@ -0,0 +1,460 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <data name="tabReset.Text" xml:space="preserve">
+    <value>重置</value>
+  </data>
+  <data name="tabRadioIn.Text" xml:space="preserve">
+    <value>遙控輸入</value>
+  </data>
+  <data name="tabModes.Text" xml:space="preserve">
+    <value>模式</value>
+  </data>
+  <data name="tabHardware.Text" xml:space="preserve">
+    <value>硬件</value>
+  </data>
+  <data name="tabBattery.Text" xml:space="preserve">
+    <value>電池</value>
+  </data>
+  <data name="BUT_reset.Text" xml:space="preserve">
+    <value>重置 APM 為默認設置</value>
+  </data>
+  <assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
+  <data name="CHK_revch3.Size" type="System.Drawing.Size, System.Drawing">
+    <value>50, 17</value>
+  </data>
+  <data name="CHK_revch3.Text" xml:space="preserve">
+    <value>逆轉</value>
+  </data>
+  <data name="CHK_revch4.Size" type="System.Drawing.Size, System.Drawing">
+    <value>50, 17</value>
+  </data>
+  <data name="CHK_revch4.Text" xml:space="preserve">
+    <value>逆轉</value>
+  </data>
+  <data name="CHK_revch2.Size" type="System.Drawing.Size, System.Drawing">
+    <value>50, 17</value>
+  </data>
+  <data name="CHK_revch2.Text" xml:space="preserve">
+    <value>逆轉</value>
+  </data>
+  <data name="CHK_revch1.Size" type="System.Drawing.Size, System.Drawing">
+    <value>50, 17</value>
+  </data>
+  <data name="CHK_revch1.Text" xml:space="preserve">
+    <value>逆轉</value>
+  </data>
+  <data name="BUT_Calibrateradio.Text" xml:space="preserve">
+    <value>校準遙控</value>
+  </data>
+  <data name="CB_simple6.Size" type="System.Drawing.Size, System.Drawing">
+    <value>74, 17</value>
+  </data>
+  <data name="CB_simple6.Text" xml:space="preserve">
+    <value>簡單模式</value>
+  </data>
+  <data name="CB_simple5.Size" type="System.Drawing.Size, System.Drawing">
+    <value>74, 17</value>
+  </data>
+  <data name="CB_simple5.Text" xml:space="preserve">
+    <value>簡單模式</value>
+  </data>
+  <data name="CB_simple4.Size" type="System.Drawing.Size, System.Drawing">
+    <value>74, 17</value>
+  </data>
+  <data name="CB_simple4.Text" xml:space="preserve">
+    <value>簡單模式</value>
+  </data>
+  <data name="CB_simple3.Size" type="System.Drawing.Size, System.Drawing">
+    <value>74, 17</value>
+  </data>
+  <data name="CB_simple3.Text" xml:space="preserve">
+    <value>簡單模式</value>
+  </data>
+  <data name="CB_simple2.Size" type="System.Drawing.Size, System.Drawing">
+    <value>74, 17</value>
+  </data>
+  <data name="CB_simple2.Text" xml:space="preserve">
+    <value>簡單模式</value>
+  </data>
+  <data name="CB_simple1.Size" type="System.Drawing.Size, System.Drawing">
+    <value>74, 17</value>
+  </data>
+  <data name="CB_simple1.Text" xml:space="preserve">
+    <value>簡單模式</value>
+  </data>
+  <data name="label14.Size" type="System.Drawing.Size, System.Drawing">
+    <value>64, 13</value>
+  </data>
+  <data name="label14.Text" xml:space="preserve">
+    <value>當前 PWM:</value>
+  </data>
+  <data name="label13.Size" type="System.Drawing.Size, System.Drawing">
+    <value>58, 13</value>
+  </data>
+  <data name="label13.Text" xml:space="preserve">
+    <value>當前模式:</value>
+  </data>
+  <data name="label6.Size" type="System.Drawing.Size, System.Drawing">
+    <value>64, 13</value>
+  </data>
+  <data name="label6.Text" xml:space="preserve">
+    <value>飛行模式 6</value>
+  </data>
+  <data name="label5.Size" type="System.Drawing.Size, System.Drawing">
+    <value>64, 13</value>
+  </data>
+  <data name="label5.Text" xml:space="preserve">
+    <value>飛行模式 5</value>
+  </data>
+  <data name="label4.Size" type="System.Drawing.Size, System.Drawing">
+    <value>64, 13</value>
+  </data>
+  <data name="label4.Text" xml:space="preserve">
+    <value>飛行模式 4</value>
+  </data>
+  <data name="label3.Size" type="System.Drawing.Size, System.Drawing">
+    <value>64, 13</value>
+  </data>
+  <data name="label3.Text" xml:space="preserve">
+    <value>飛行模式 3</value>
+  </data>
+  <data name="label2.Size" type="System.Drawing.Size, System.Drawing">
+    <value>64, 13</value>
+  </data>
+  <data name="label2.Text" xml:space="preserve">
+    <value>飛行模式 2</value>
+  </data>
+  <data name="label1.Size" type="System.Drawing.Size, System.Drawing">
+    <value>64, 13</value>
+  </data>
+  <data name="label1.Text" xml:space="preserve">
+    <value>飛行模式 1</value>
+  </data>
+  <data name="BUT_SaveModes.Text" xml:space="preserve">
+    <value>保存模式</value>
+  </data>
+  <data name="linkLabelmagdec.Size" type="System.Drawing.Size, System.Drawing">
+    <value>67, 13</value>
+  </data>
+  <data name="linkLabelmagdec.Text" xml:space="preserve">
+    <value>磁偏角網站</value>
+  </data>
+  <data name="label100.Text" xml:space="preserve">
+    <value>磁偏角</value>
+  </data>
+  <data name="CHK_enableairspeed.Text" xml:space="preserve">
+    <value>啟用空速計</value>
+  </data>
+  <data name="CHK_enablesonar.Text" xml:space="preserve">
+    <value>啟用聲納</value>
+  </data>
+  <data name="CHK_enablecompass.Text" xml:space="preserve">
+    <value>啟用羅盤</value>
+  </data>
+  <data name="label35.Size" type="System.Drawing.Size, System.Drawing">
+    <value>63, 13</value>
+  </data>
+  <data name="label35.Text" xml:space="preserve">
+    <value>安培/伏特:</value>
+  </data>
+  <data name="label34.Size" type="System.Drawing.Size, System.Drawing">
+    <value>52, 13</value>
+  </data>
+  <data name="label34.Text" xml:space="preserve">
+    <value>分 壓 比:</value>
+  </data>
+  <data name="label33.Size" type="System.Drawing.Size, System.Drawing">
+    <value>58, 13</value>
+  </data>
+  <data name="label33.Text" xml:space="preserve">
+    <value>電池電壓:</value>
+  </data>
+  <data name="label32.Size" type="System.Drawing.Size, System.Drawing">
+    <value>94, 13</value>
+  </data>
+  <data name="label32.Text" xml:space="preserve">
+    <value>測量的電池電壓:</value>
+  </data>
+  <data name="label31.Size" type="System.Drawing.Size, System.Drawing">
+    <value>58, 13</value>
+  </data>
+  <data name="label31.Text" xml:space="preserve">
+    <value>輸入電壓:</value>
+  </data>
+  <data name="textBox3.Text" xml:space="preserve">
+    <value>電壓傳感器校準:
+1. 測量APM輸入電壓,輸入到下方的文本框中
+2. 測量電池電壓,輸入到下方的文本框中
+3. 從當前的傳感器的數據表中找到安培/伏特,輸入到下方的文本框中</value>
+  </data>
+  <data name="label29.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label29.Text" xml:space="preserve">
+    <value>容量</value>
+  </data>
+  <data name="label30.Size" type="System.Drawing.Size, System.Drawing">
+    <value>48, 13</value>
+  </data>
+  <data name="label30.Text" xml:space="preserve">
+    <value>監控器</value>
+  </data>
+  <data name="label28.Size" type="System.Drawing.Size, System.Drawing">
+    <value>175, 13</value>
+  </data>
+  <data name="label28.Text" xml:space="preserve">
+    <value>設置水平面的默認加速度計偏移</value>
+  </data>
+  <data name="label16.Size" type="System.Drawing.Size, System.Drawing">
+    <value>261, 13</value>
+  </data>
+  <data name="label16.Text" xml:space="preserve">
+    <value>注: 圖片只是用於展示,設置可以用於六軸等機架</value>
+  </data>
+  <data name="label15.Size" type="System.Drawing.Size, System.Drawing">
+    <value>93, 13</value>
+  </data>
+  <data name="label15.Text" xml:space="preserve">
+    <value>機架設置 (+ 或 x)</value>
+  </data>
+  <data name="BUT_levelac2.Text" xml:space="preserve">
+    <value>找平</value>
+  </data>
+  <data name="label46.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label46.Text" xml:space="preserve">
+    <value>感度</value>
+  </data>
+  <data name="label45.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label45.Text" xml:space="preserve">
+    <value>啟用</value>
+  </data>
+  <data name="label44.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label44.Text" xml:space="preserve">
+    <value>微調</value>
+  </data>
+  <data name="label43.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label43.Text" xml:space="preserve">
+    <value>逆轉</value>
+  </data>
+  <data name="label42.Size" type="System.Drawing.Size, System.Drawing">
+    <value>43, 13</value>
+  </data>
+  <data name="label42.Text" xml:space="preserve">
+    <value>方向舵</value>
+  </data>
+  <data name="BUT_HS4save.Text" xml:space="preserve">
+    <value>手動</value>
+  </data>
+  <data name="label24.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label24.Text" xml:space="preserve">
+    <value>最大</value>
+  </data>
+  <data name="label40.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label40.Text" xml:space="preserve">
+    <value>最小</value>
+  </data>
+  <data name="BUT_swash_manual.Text" xml:space="preserve">
+    <value>手動</value>
+  </data>
+  <data name="label41.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label41.Text" xml:space="preserve">
+    <value>最低</value>
+  </data>
+  <data name="label21.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label21.Text" xml:space="preserve">
+    <value>最高</value>
+  </data>
+  <data name="BUT_0collective.Text" xml:space="preserve">
+    <value>0度</value>
+  </data>
+  <data name="label39.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label39.Text" xml:space="preserve">
+    <value>微調</value>
+  </data>
+  <data name="label38.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label38.Text" xml:space="preserve">
+    <value>逆轉</value>
+  </data>
+  <data name="label37.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label37.Text" xml:space="preserve">
+    <value>位置</value>
+  </data>
+  <data name="label36.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label36.Text" xml:space="preserve">
+    <value>舵機</value>
+  </data>
+  <data name="label26.Size" type="System.Drawing.Size, System.Drawing">
+    <value>55, 13</value>
+  </data>
+  <data name="label26.Text" xml:space="preserve">
+    <value>最大俯仰</value>
+  </data>
+  <data name="label25.Size" type="System.Drawing.Size, System.Drawing">
+    <value>55, 13</value>
+  </data>
+  <data name="label25.Text" xml:space="preserve">
+    <value>最大側傾</value>
+  </data>
+  <data name="label23.Size" type="System.Drawing.Size, System.Drawing">
+    <value>55, 13</value>
+  </data>
+  <data name="label23.Text" xml:space="preserve">
+    <value>舵機行程</value>
+  </data>
+  <data name="label22.Size" type="System.Drawing.Size, System.Drawing">
+    <value>79, 13</value>
+  </data>
+  <data name="label22.Text" xml:space="preserve">
+    <value>斜盤水平微調</value>
+  </data>
+  <data name="label17.Size" type="System.Drawing.Size, System.Drawing">
+    <value>79, 13</value>
+  </data>
+  <data name="label17.Text" xml:space="preserve">
+    <value>斜盤舵機位置</value>
+  </data>
+  <data name="$this.Text" xml:space="preserve">
+    <value>APM設置</value>
+  </data>
+</root>
\ No newline at end of file
diff --git a/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigPlanner.cs b/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigPlanner.cs
index 5040d85be..f09ac19d4 100644
--- a/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigPlanner.cs
+++ b/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigPlanner.cs
@@ -9,10 +9,11 @@ using System.Runtime.InteropServices;
 using System.Text;
 using System.Windows.Forms;
 using DirectShowLib;
+using ArdupilotMega.Controls.BackstageView;
 
 namespace ArdupilotMega.GCSViews.ConfigurationView
 {
-    public partial class ConfigPlanner : UserControl
+    public partial class ConfigPlanner : BackStageViewContentPanel
     {
         // AR todo: replicate this functionality
         private bool startup = false;
diff --git a/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigRadioInput.Designer.cs b/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigRadioInput.Designer.cs
index 04dca22d3..f3e54cffe 100644
--- a/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigRadioInput.Designer.cs
+++ b/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigRadioInput.Designer.cs
@@ -29,6 +29,7 @@
         private void InitializeComponent()
         {
             this.components = new System.ComponentModel.Container();
+            System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ConfigRadioInput));
             this.groupBoxElevons = new System.Windows.Forms.GroupBox();
             this.CHK_mixmode = new System.Windows.Forms.CheckBox();
             this.CHK_elevonch2rev = new System.Windows.Forms.CheckBox();
@@ -40,6 +41,7 @@
             this.CHK_revch1 = new System.Windows.Forms.CheckBox();
             this.BUT_Calibrateradio = new ArdupilotMega.MyButton();
             this.BAR8 = new ArdupilotMega.HorizontalProgressBar2();
+            this.currentStateBindingSource = new System.Windows.Forms.BindingSource(this.components);
             this.BAR7 = new ArdupilotMega.HorizontalProgressBar2();
             this.BAR6 = new ArdupilotMega.HorizontalProgressBar2();
             this.BAR5 = new ArdupilotMega.HorizontalProgressBar2();
@@ -47,7 +49,6 @@
             this.BARthrottle = new ArdupilotMega.VerticalProgressBar2();
             this.BARyaw = new ArdupilotMega.HorizontalProgressBar2();
             this.BARroll = new ArdupilotMega.HorizontalProgressBar2();
-            this.currentStateBindingSource = new System.Windows.Forms.BindingSource(this.components);
             this.groupBoxElevons.SuspendLayout();
             ((System.ComponentModel.ISupportInitialize)(this.currentStateBindingSource)).BeginInit();
             this.SuspendLayout();
@@ -58,117 +59,70 @@
             this.groupBoxElevons.Controls.Add(this.CHK_elevonch2rev);
             this.groupBoxElevons.Controls.Add(this.CHK_elevonrev);
             this.groupBoxElevons.Controls.Add(this.CHK_elevonch1rev);
-            this.groupBoxElevons.Location = new System.Drawing.Point(12, 356);
+            resources.ApplyResources(this.groupBoxElevons, "groupBoxElevons");
             this.groupBoxElevons.Name = "groupBoxElevons";
-            this.groupBoxElevons.Size = new System.Drawing.Size(409, 42);
-            this.groupBoxElevons.TabIndex = 125;
             this.groupBoxElevons.TabStop = false;
-            this.groupBoxElevons.Text = "Elevon Config";
             // 
             // CHK_mixmode
             // 
-            this.CHK_mixmode.AutoSize = true;
-            this.CHK_mixmode.ImeMode = System.Windows.Forms.ImeMode.NoControl;
-            this.CHK_mixmode.Location = new System.Drawing.Point(13, 19);
+            resources.ApplyResources(this.CHK_mixmode, "CHK_mixmode");
             this.CHK_mixmode.Name = "CHK_mixmode";
-            this.CHK_mixmode.Size = new System.Drawing.Size(64, 17);
-            this.CHK_mixmode.TabIndex = 107;
-            this.CHK_mixmode.Text = "Elevons";
             this.CHK_mixmode.UseVisualStyleBackColor = true;
             this.CHK_mixmode.CheckedChanged += new System.EventHandler(this.CHK_mixmode_CheckedChanged);
             // 
             // CHK_elevonch2rev
             // 
-            this.CHK_elevonch2rev.AutoSize = true;
-            this.CHK_elevonch2rev.ImeMode = System.Windows.Forms.ImeMode.NoControl;
-            this.CHK_elevonch2rev.Location = new System.Drawing.Point(292, 19);
+            resources.ApplyResources(this.CHK_elevonch2rev, "CHK_elevonch2rev");
             this.CHK_elevonch2rev.Name = "CHK_elevonch2rev";
-            this.CHK_elevonch2rev.Size = new System.Drawing.Size(111, 17);
-            this.CHK_elevonch2rev.TabIndex = 110;
-            this.CHK_elevonch2rev.Text = "Elevons CH2 Rev";
             this.CHK_elevonch2rev.UseVisualStyleBackColor = true;
             this.CHK_elevonch2rev.CheckedChanged += new System.EventHandler(this.CHK_elevonch2rev_CheckedChanged);
             // 
             // CHK_elevonrev
             // 
-            this.CHK_elevonrev.AutoSize = true;
-            this.CHK_elevonrev.ImeMode = System.Windows.Forms.ImeMode.NoControl;
-            this.CHK_elevonrev.Location = new System.Drawing.Point(82, 19);
+            resources.ApplyResources(this.CHK_elevonrev, "CHK_elevonrev");
             this.CHK_elevonrev.Name = "CHK_elevonrev";
-            this.CHK_elevonrev.Size = new System.Drawing.Size(87, 17);
-            this.CHK_elevonrev.TabIndex = 108;
-            this.CHK_elevonrev.Text = "Elevons Rev";
             this.CHK_elevonrev.UseVisualStyleBackColor = true;
             this.CHK_elevonrev.CheckedChanged += new System.EventHandler(this.CHK_elevonrev_CheckedChanged);
             // 
             // CHK_elevonch1rev
             // 
-            this.CHK_elevonch1rev.AutoSize = true;
-            this.CHK_elevonch1rev.ImeMode = System.Windows.Forms.ImeMode.NoControl;
-            this.CHK_elevonch1rev.Location = new System.Drawing.Point(175, 19);
+            resources.ApplyResources(this.CHK_elevonch1rev, "CHK_elevonch1rev");
             this.CHK_elevonch1rev.Name = "CHK_elevonch1rev";
-            this.CHK_elevonch1rev.Size = new System.Drawing.Size(111, 17);
-            this.CHK_elevonch1rev.TabIndex = 109;
-            this.CHK_elevonch1rev.Text = "Elevons CH1 Rev";
             this.CHK_elevonch1rev.UseVisualStyleBackColor = true;
             this.CHK_elevonch1rev.CheckedChanged += new System.EventHandler(this.CHK_elevonch1rev_CheckedChanged);
             // 
             // CHK_revch3
             // 
-            this.CHK_revch3.AutoSize = true;
-            this.CHK_revch3.ImeMode = System.Windows.Forms.ImeMode.NoControl;
-            this.CHK_revch3.Location = new System.Drawing.Point(278, 161);
+            resources.ApplyResources(this.CHK_revch3, "CHK_revch3");
             this.CHK_revch3.Name = "CHK_revch3";
-            this.CHK_revch3.Size = new System.Drawing.Size(66, 17);
-            this.CHK_revch3.TabIndex = 124;
-            this.CHK_revch3.Text = "Reverse";
             this.CHK_revch3.UseVisualStyleBackColor = true;
             this.CHK_revch3.CheckedChanged += new System.EventHandler(this.CHK_revch3_CheckedChanged);
             // 
             // CHK_revch4
             // 
-            this.CHK_revch4.AutoSize = true;
-            this.CHK_revch4.ImeMode = System.Windows.Forms.ImeMode.NoControl;
-            this.CHK_revch4.Location = new System.Drawing.Point(306, 313);
+            resources.ApplyResources(this.CHK_revch4, "CHK_revch4");
             this.CHK_revch4.Name = "CHK_revch4";
-            this.CHK_revch4.Size = new System.Drawing.Size(66, 17);
-            this.CHK_revch4.TabIndex = 123;
-            this.CHK_revch4.Text = "Reverse";
             this.CHK_revch4.UseVisualStyleBackColor = true;
             this.CHK_revch4.CheckedChanged += new System.EventHandler(this.CHK_revch4_CheckedChanged);
             // 
             // CHK_revch2
             // 
-            this.CHK_revch2.AutoSize = true;
-            this.CHK_revch2.ImeMode = System.Windows.Forms.ImeMode.NoControl;
-            this.CHK_revch2.Location = new System.Drawing.Point(62, 161);
+            resources.ApplyResources(this.CHK_revch2, "CHK_revch2");
             this.CHK_revch2.Name = "CHK_revch2";
-            this.CHK_revch2.Size = new System.Drawing.Size(66, 17);
-            this.CHK_revch2.TabIndex = 122;
-            this.CHK_revch2.Text = "Reverse";
             this.CHK_revch2.UseVisualStyleBackColor = true;
             this.CHK_revch2.CheckedChanged += new System.EventHandler(this.CHK_revch2_CheckedChanged);
             // 
             // CHK_revch1
             // 
-            this.CHK_revch1.AutoSize = true;
-            this.CHK_revch1.ImeMode = System.Windows.Forms.ImeMode.NoControl;
-            this.CHK_revch1.Location = new System.Drawing.Point(306, 19);
+            resources.ApplyResources(this.CHK_revch1, "CHK_revch1");
             this.CHK_revch1.Name = "CHK_revch1";
-            this.CHK_revch1.Size = new System.Drawing.Size(66, 17);
-            this.CHK_revch1.TabIndex = 121;
-            this.CHK_revch1.Text = "Reverse";
             this.CHK_revch1.UseVisualStyleBackColor = true;
             this.CHK_revch1.CheckedChanged += new System.EventHandler(this.CHK_revch1_CheckedChanged);
             // 
             // BUT_Calibrateradio
             // 
-            this.BUT_Calibrateradio.ImeMode = System.Windows.Forms.ImeMode.NoControl;
-            this.BUT_Calibrateradio.Location = new System.Drawing.Point(473, 347);
+            resources.ApplyResources(this.BUT_Calibrateradio, "BUT_Calibrateradio");
             this.BUT_Calibrateradio.Name = "BUT_Calibrateradio";
-            this.BUT_Calibrateradio.Size = new System.Drawing.Size(134, 23);
-            this.BUT_Calibrateradio.TabIndex = 120;
-            this.BUT_Calibrateradio.Text = "Calibrate Radio";
             this.BUT_Calibrateradio.UseVisualStyleBackColor = true;
             this.BUT_Calibrateradio.Click += new System.EventHandler(this.BUT_Calibrateradio_Click);
             // 
@@ -178,31 +132,31 @@
             this.BAR8.BorderColor = System.Drawing.SystemColors.ActiveBorder;
             this.BAR8.DataBindings.Add(new System.Windows.Forms.Binding("Value", this.currentStateBindingSource, "ch8in", true));
             this.BAR8.Label = "Radio 8";
-            this.BAR8.Location = new System.Drawing.Point(437, 247);
+            resources.ApplyResources(this.BAR8, "BAR8");
             this.BAR8.Maximum = 2200;
             this.BAR8.maxline = 0;
             this.BAR8.Minimum = 800;
             this.BAR8.minline = 0;
             this.BAR8.Name = "BAR8";
-            this.BAR8.Size = new System.Drawing.Size(170, 25);
-            this.BAR8.TabIndex = 119;
             this.BAR8.Value = 1500;
             this.BAR8.ValueColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(0)))), ((int)(((byte)(255)))));
             // 
+            // currentStateBindingSource
+            // 
+            this.currentStateBindingSource.DataSource = typeof(ArdupilotMega.CurrentState);
+            // 
             // BAR7
             // 
             this.BAR7.BackgroundColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(255)))));
             this.BAR7.BorderColor = System.Drawing.SystemColors.ActiveBorder;
             this.BAR7.DataBindings.Add(new System.Windows.Forms.Binding("Value", this.currentStateBindingSource, "ch7in", true));
             this.BAR7.Label = "Radio 7";
-            this.BAR7.Location = new System.Drawing.Point(437, 192);
+            resources.ApplyResources(this.BAR7, "BAR7");
             this.BAR7.Maximum = 2200;
             this.BAR7.maxline = 0;
             this.BAR7.Minimum = 800;
             this.BAR7.minline = 0;
             this.BAR7.Name = "BAR7";
-            this.BAR7.Size = new System.Drawing.Size(170, 25);
-            this.BAR7.TabIndex = 118;
             this.BAR7.Value = 1500;
             this.BAR7.ValueColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(0)))), ((int)(((byte)(255)))));
             // 
@@ -212,14 +166,12 @@
             this.BAR6.BorderColor = System.Drawing.SystemColors.ActiveBorder;
             this.BAR6.DataBindings.Add(new System.Windows.Forms.Binding("Value", this.currentStateBindingSource, "ch6in", true));
             this.BAR6.Label = "Radio 6";
-            this.BAR6.Location = new System.Drawing.Point(437, 137);
+            resources.ApplyResources(this.BAR6, "BAR6");
             this.BAR6.Maximum = 2200;
             this.BAR6.maxline = 0;
             this.BAR6.Minimum = 800;
             this.BAR6.minline = 0;
             this.BAR6.Name = "BAR6";
-            this.BAR6.Size = new System.Drawing.Size(170, 25);
-            this.BAR6.TabIndex = 117;
             this.BAR6.Value = 1500;
             this.BAR6.ValueColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(0)))), ((int)(((byte)(255)))));
             // 
@@ -229,14 +181,12 @@
             this.BAR5.BorderColor = System.Drawing.SystemColors.ActiveBorder;
             this.BAR5.DataBindings.Add(new System.Windows.Forms.Binding("Value", this.currentStateBindingSource, "ch5in", true));
             this.BAR5.Label = "Radio 5";
-            this.BAR5.Location = new System.Drawing.Point(437, 82);
+            resources.ApplyResources(this.BAR5, "BAR5");
             this.BAR5.Maximum = 2200;
             this.BAR5.maxline = 0;
             this.BAR5.Minimum = 800;
             this.BAR5.minline = 0;
             this.BAR5.Name = "BAR5";
-            this.BAR5.Size = new System.Drawing.Size(170, 25);
-            this.BAR5.TabIndex = 116;
             this.BAR5.Value = 1500;
             this.BAR5.ValueColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(0)))), ((int)(((byte)(255)))));
             // 
@@ -246,14 +196,12 @@
             this.BARpitch.BorderColor = System.Drawing.SystemColors.ActiveBorder;
             this.BARpitch.DataBindings.Add(new System.Windows.Forms.Binding("Value", this.currentStateBindingSource, "ch2in", true));
             this.BARpitch.Label = "Pitch";
-            this.BARpitch.Location = new System.Drawing.Point(134, 64);
+            resources.ApplyResources(this.BARpitch, "BARpitch");
             this.BARpitch.Maximum = 2200;
             this.BARpitch.maxline = 0;
             this.BARpitch.Minimum = 800;
             this.BARpitch.minline = 0;
             this.BARpitch.Name = "BARpitch";
-            this.BARpitch.Size = new System.Drawing.Size(47, 211);
-            this.BARpitch.TabIndex = 115;
             this.BARpitch.Value = 1500;
             this.BARpitch.ValueColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(0)))), ((int)(((byte)(255)))));
             // 
@@ -263,14 +211,12 @@
             this.BARthrottle.BorderColor = System.Drawing.SystemColors.ActiveBorder;
             this.BARthrottle.DataBindings.Add(new System.Windows.Forms.Binding("Value", this.currentStateBindingSource, "ch3in", true));
             this.BARthrottle.Label = "Throttle";
-            this.BARthrottle.Location = new System.Drawing.Point(350, 64);
+            resources.ApplyResources(this.BARthrottle, "BARthrottle");
             this.BARthrottle.Maximum = 2200;
             this.BARthrottle.maxline = 0;
             this.BARthrottle.Minimum = 800;
             this.BARthrottle.minline = 0;
             this.BARthrottle.Name = "BARthrottle";
-            this.BARthrottle.Size = new System.Drawing.Size(47, 211);
-            this.BARthrottle.TabIndex = 114;
             this.BARthrottle.Value = 1000;
             this.BARthrottle.ValueColor = System.Drawing.Color.Magenta;
             // 
@@ -280,14 +226,12 @@
             this.BARyaw.BorderColor = System.Drawing.SystemColors.ActiveBorder;
             this.BARyaw.DataBindings.Add(new System.Windows.Forms.Binding("Value", this.currentStateBindingSource, "ch4in", true));
             this.BARyaw.Label = "Yaw";
-            this.BARyaw.Location = new System.Drawing.Point(12, 307);
+            resources.ApplyResources(this.BARyaw, "BARyaw");
             this.BARyaw.Maximum = 2200;
             this.BARyaw.maxline = 0;
             this.BARyaw.Minimum = 800;
             this.BARyaw.minline = 0;
             this.BARyaw.Name = "BARyaw";
-            this.BARyaw.Size = new System.Drawing.Size(288, 23);
-            this.BARyaw.TabIndex = 113;
             this.BARyaw.Value = 1500;
             this.BARyaw.ValueColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(0)))), ((int)(((byte)(255)))));
             // 
@@ -297,24 +241,18 @@
             this.BARroll.BorderColor = System.Drawing.SystemColors.ActiveBorder;
             this.BARroll.DataBindings.Add(new System.Windows.Forms.Binding("Value", this.currentStateBindingSource, "ch1in", true));
             this.BARroll.Label = "Roll";
-            this.BARroll.Location = new System.Drawing.Point(12, 13);
+            resources.ApplyResources(this.BARroll, "BARroll");
             this.BARroll.Maximum = 2200;
             this.BARroll.maxline = 0;
             this.BARroll.Minimum = 800;
             this.BARroll.minline = 0;
             this.BARroll.Name = "BARroll";
-            this.BARroll.Size = new System.Drawing.Size(288, 23);
-            this.BARroll.TabIndex = 112;
             this.BARroll.Value = 1500;
             this.BARroll.ValueColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(0)))), ((int)(((byte)(255)))));
             // 
-            // currentStateBindingSource
-            // 
-            this.currentStateBindingSource.DataSource = typeof(ArdupilotMega.CurrentState);
-            // 
             // ConfigRadioInput
             // 
-            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+            resources.ApplyResources(this, "$this");
             this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
             this.Controls.Add(this.groupBoxElevons);
             this.Controls.Add(this.CHK_revch3);
@@ -331,7 +269,6 @@
             this.Controls.Add(this.BARyaw);
             this.Controls.Add(this.BARroll);
             this.Name = "ConfigRadioInput";
-            this.Size = new System.Drawing.Size(628, 406);
             this.Load += new System.EventHandler(this.ConfigRadioInput_Load);
             this.groupBoxElevons.ResumeLayout(false);
             this.groupBoxElevons.PerformLayout();
diff --git a/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigRadioInput.cs b/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigRadioInput.cs
index 1be32e8e8..afc309479 100644
--- a/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigRadioInput.cs
+++ b/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigRadioInput.cs
@@ -6,10 +6,11 @@ using System.Data;
 using System.Linq;
 using System.Text;
 using System.Windows.Forms;
+using ArdupilotMega.Controls.BackstageView;
 
 namespace ArdupilotMega.GCSViews.ConfigurationView
 {
-    public partial class ConfigRadioInput : UserControl
+    public partial class ConfigRadioInput : BackStageViewContentPanel
     {
         bool startup = false;
         bool run = false;
@@ -52,6 +53,16 @@ namespace ArdupilotMega.GCSViews.ConfigurationView
 
         private void ConfigRadioInput_Load(object sender, EventArgs e)
         {
+            if (!MainV2.comPort.BaseStream.IsOpen)
+            {
+                this.Enabled = false;
+                return;
+            }
+            else
+            {
+                this.Enabled = true;
+            }
+
             startup = true;
 
             if (MainV2.cs.firmware == MainV2.Firmwares.ArduCopter2)
diff --git a/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigRadioInput.es-ES.resx b/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigRadioInput.es-ES.resx
new file mode 100644
index 000000000..70ad73f1a
--- /dev/null
+++ b/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigRadioInput.es-ES.resx
@@ -0,0 +1,315 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <data name="SV3_POS_.Text" xml:space="preserve">
+    <value>180</value>
+  </data>
+  <data name="BUT_HS4save.Text" xml:space="preserve">
+    <value>Manual</value>
+  </data>
+  <data name="label12.Text" xml:space="preserve">
+    <value>PWM 0 - 1230</value>
+  </data>
+  <data name="label10.Text" xml:space="preserve">
+    <value>PWM 1621 - 1749</value>
+  </data>
+  <data name="label13.Text" xml:space="preserve">
+    <value>Modo actual:</value>
+  </data>
+  <data name="CHK_enableoptflow.Text" xml:space="preserve">
+    <value>Habilitar el flujo óptico</value>
+  </data>
+  <data name="label16.Text" xml:space="preserve">
+    <value>NOTA: Las imágenes son sólo para su presentación</value>
+  </data>
+  <data name="CB_simple5.Text" xml:space="preserve">
+    <value>Modo Simple</value>
+  </data>
+  <data name="label11.Text" xml:space="preserve">
+    <value>PWM 1750 +</value>
+  </data>
+  <data name="CHK_elevonch1rev.Text" xml:space="preserve">
+    <value>Elevons CH1 Rev</value>
+  </data>
+  <data name="label14.Text" xml:space="preserve">
+    <value>PWM Actual:</value>
+  </data>
+  <data name="$this.Text" xml:space="preserve">
+    <value>APMSetup</value>
+  </data>
+  <data name="label17.Text" xml:space="preserve">
+    <value>Swash-Servo posición</value>
+  </data>
+  <data name="CHK_enablecompass.Text" xml:space="preserve">
+    <value>Activar Compas</value>
+  </data>
+  <data name="CB_simple4.Text" xml:space="preserve">
+    <value>Modo Simple</value>
+  </data>
+  <data name="tabArducopter.Text" xml:space="preserve">
+    <value>ArduCopter2</value>
+  </data>
+  <data name="CB_simple1.Text" xml:space="preserve">
+    <value>Modo Simple</value>
+  </data>
+  <data name="label15.Text" xml:space="preserve">
+    <value>Ajuste Chásis (+ or x)</value>
+  </data>
+  <data name="SV2_POS_.Text" xml:space="preserve">
+    <value>60</value>
+  </data>
+  <data name="label18.Text" xml:space="preserve">
+    <value>1</value>
+  </data>
+  <data name="CB_simple6.Text" xml:space="preserve">
+    <value>Modo Simple</value>
+  </data>
+  <data name="CB_simple3.Text" xml:space="preserve">
+    <value>Modo Simple</value>
+  </data>
+  <data name="label19.Text" xml:space="preserve">
+    <value>2</value>
+  </data>
+  <data name="tabModes.Text" xml:space="preserve">
+    <value>Modos</value>
+  </data>
+  <data name="CB_simple2.Text" xml:space="preserve">
+    <value>Modo Simple</value>
+  </data>
+  <data name="label20.Text" xml:space="preserve">
+    <value>3</value>
+  </data>
+  <data name="tabReset.Text" xml:space="preserve">
+    <value>Reset</value>
+  </data>
+  <data name="SV1_POS_.Text" xml:space="preserve">
+    <value>-60</value>
+  </data>
+  <data name="label21.Text" xml:space="preserve">
+    <value>Superior</value>
+  </data>
+  <data name="label22.Text" xml:space="preserve">
+    <value>Swash de Viaje</value>
+  </data>
+  <data name="lbl_currentmode.Text" xml:space="preserve">
+    <value>Manual</value>
+  </data>
+  <data name="label23.Text" xml:space="preserve">
+    <value>Timón de Viaje</value>
+  </data>
+  <data name="textBox3.Text" xml:space="preserve">
+    <value>Calibración del sensor de voltaje:Para calibrar el sensor, use un multímetro para medir la tensión que sale de la CES de la batería-la eliminación del circuito (se trata de cables negro y rojo en el cable de tres hilos que suministra energía a la placa APM).Luego reste 0,3 V de ese valor y entrar en él en el campo # 1 a la izquierda.</value>
+  </data>
+  <data name="BUT_Calibrateradio.Text" xml:space="preserve">
+    <value>Calibrar Radio</value>
+  </data>
+  <data name="label24.Text" xml:space="preserve">
+    <value>Max</value>
+  </data>
+  <data name="label2.Text" xml:space="preserve">
+    <value>Modo de Vuelo 2</value>
+  </data>
+  <data name="label25.Text" xml:space="preserve">
+    <value>Alabeo Max</value>
+  </data>
+  <data name="label3.Text" xml:space="preserve">
+    <value>Modo de Vuelo 3</value>
+  </data>
+  <data name="label26.Text" xml:space="preserve">
+    <value>Cabeceo Max</value>
+  </data>
+  <data name="label27.Text" xml:space="preserve">
+    <value>por ejemplo, en grados 2 ° 3 'W es -2,3</value>
+  </data>
+  <data name="label1.Text" xml:space="preserve">
+    <value>Modo de Vuelo 1</value>
+  </data>
+  <data name="label28.Text" xml:space="preserve">
+    <value>Nivel tu quad para establecer las compensaciones por defecto acel</value>
+  </data>
+  <data name="label6.Text" xml:space="preserve">
+    <value>Modo de Vuelo 6</value>
+  </data>
+  <data name="label29.Text" xml:space="preserve">
+    <value>Capacidad</value>
+  </data>
+  <data name="label100.Text" xml:space="preserve">
+    <value>Declinación</value>
+  </data>
+  <data name="CHK_enablesonar.Text" xml:space="preserve">
+    <value>Activar Sonar</value>
+  </data>
+  <data name="label7.Text" xml:space="preserve">
+    <value>PWM 1231 - 1360</value>
+  </data>
+  <data name="tabRadioIn.Text" xml:space="preserve">
+    <value>Entrada Radio</value>
+  </data>
+  <data name="groupBox4.Text" xml:space="preserve">
+    <value>Calibración</value>
+  </data>
+  <data name="HS4_MIN.Text" xml:space="preserve">
+    <value>1500</value>
+  </data>
+  <data name="label4.Text" xml:space="preserve">
+    <value>Modo de Vuelo 4</value>
+  </data>
+  <data name="label5.Text" xml:space="preserve">
+    <value>Modo de Vuelo 5</value>
+  </data>
+  <data name="groupBox3.Text" xml:space="preserve">
+    <value>Gyro</value>
+  </data>
+  <data name="label8.Text" xml:space="preserve">
+    <value>PWM 1361 - 1490</value>
+  </data>
+  <data name="tabHardware.Text" xml:space="preserve">
+    <value>Hardware</value>
+  </data>
+  <data name="label9.Text" xml:space="preserve">
+    <value>PWM 1491 - 1620</value>
+  </data>
+  <data name="linkLabelmagdec.Text" xml:space="preserve">
+    <value>Sitio Web Declinación</value>
+  </data>
+  <data name="HS4_MAX.Text" xml:space="preserve">
+    <value>1500</value>
+  </data>
+  <data name="tabBattery.Text" xml:space="preserve">
+    <value>Batería</value>
+  </data>
+  <data name="BUT_0collective.Text" xml:space="preserve">
+    <value>Cero</value>
+  </data>
+  <data name="CHK_enableairspeed.Text" xml:space="preserve">
+    <value>Activar Airspeed</value>
+  </data>
+  <data name="PIT_MAX_.Text" xml:space="preserve">
+    <value>4500</value>
+  </data>
+  <data name="BUT_reset.Text" xml:space="preserve">
+    <value>Restablecer los Ajustes de hardware APM</value>
+  </data>
+  <data name="GYR_GAIN_.Text" xml:space="preserve">
+    <value>1000</value>
+  </data>
+  <data name="label30.Text" xml:space="preserve">
+    <value>Monitor</value>
+  </data>
+</root>
\ No newline at end of file
diff --git a/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigRadioInput.fr.resx b/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigRadioInput.fr.resx
new file mode 100644
index 000000000..1bd274bee
--- /dev/null
+++ b/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigRadioInput.fr.resx
@@ -0,0 +1,312 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <data name="SV3_POS_.Text" xml:space="preserve">
+    <value>180</value>
+  </data>
+  <data name="BUT_HS4save.Text" xml:space="preserve">
+    <value>Manuel</value>
+  </data>
+  <data name="label12.Text" xml:space="preserve">
+    <value>PWM 0 - 1230</value>
+  </data>
+  <data name="label10.Text" xml:space="preserve">
+    <value>PWM 1621 - 1749</value>
+  </data>
+  <data name="label13.Text" xml:space="preserve">
+    <value>Mode Courant:</value>
+  </data>
+  <data name="CHK_enableoptflow.Text" xml:space="preserve">
+    <value>Activ. capteur optique</value>
+  </data>
+  <data name="label16.Text" xml:space="preserve">
+    <value>NOTE: images pou presentation uniquement. Fonctionnel pour Hex, Octo etc...</value>
+  </data>
+  <data name="CB_simple5.Text" xml:space="preserve">
+    <value>Mode Simple</value>
+  </data>
+  <data name="label11.Text" xml:space="preserve">
+    <value>PWM 1750 +</value>
+  </data>
+  <data name="CHK_elevonch1rev.Text" xml:space="preserve">
+    <value>Elevons CH1 Rev</value>
+  </data>
+  <data name="label14.Text" xml:space="preserve">
+    <value>PWM Actuel:</value>
+  </data>
+  <data name="$this.Text" xml:space="preserve">
+    <value>APMSetup</value>
+  </data>
+  <data name="label17.Text" xml:space="preserve">
+    <value>Swash-Servo position</value>
+  </data>
+  <data name="CHK_enablecompass.Text" xml:space="preserve">
+    <value>Activ. Boussole</value>
+  </data>
+  <data name="CB_simple4.Text" xml:space="preserve">
+    <value>Mode Simple</value>
+  </data>
+  <data name="tabArducopter.Text" xml:space="preserve">
+    <value>ArduCopter2</value>
+  </data>
+  <data name="CB_simple1.Text" xml:space="preserve">
+    <value>Mode Simple</value>
+  </data>
+  <data name="label15.Text" xml:space="preserve">
+    <value>type de châssis (+ ou x)</value>
+  </data>
+  <data name="SV2_POS_.Text" xml:space="preserve">
+    <value>60</value>
+  </data>
+  <data name="label18.Text" xml:space="preserve">
+    <value>1</value>
+  </data>
+  <data name="CB_simple6.Text" xml:space="preserve">
+    <value>Mode Simple</value>
+  </data>
+  <data name="CB_simple3.Text" xml:space="preserve">
+    <value>Mode Simple</value>
+  </data>
+  <data name="label19.Text" xml:space="preserve">
+    <value>2</value>
+  </data>
+  <data name="tabModes.Text" xml:space="preserve">
+    <value>Modes</value>
+  </data>
+  <data name="CB_simple2.Text" xml:space="preserve">
+    <value>Mode Simple</value>
+  </data>
+  <data name="label20.Text" xml:space="preserve">
+    <value>3</value>
+  </data>
+  <data name="tabReset.Text" xml:space="preserve">
+    <value>Réinit.</value>
+  </data>
+  <data name="SV1_POS_.Text" xml:space="preserve">
+    <value>-60</value>
+  </data>
+  <data name="label21.Text" xml:space="preserve">
+    <value>Haut</value>
+  </data>
+  <data name="label22.Text" xml:space="preserve">
+    <value>Mouvement Swash</value>
+  </data>
+  <data name="lbl_currentmode.Text" xml:space="preserve">
+    <value>Manuel</value>
+  </data>
+  <data name="label23.Text" xml:space="preserve">
+    <value>Deplac. du Gouvernail</value>
+  </data>
+  <data name="textBox3.Text" xml:space="preserve">
+    <value>Calibration du capteur de Voltage.1. Mesurer le voltage sur APM et inscrivez-le dans la boite ci-bas.2. Mesurer le voltage de la batterie et inscrivez-le dans la boite ci-bas.3. Inscrire les ampères par volt de la documentation du capteur de courant ci-bas</value>
+  </data>
+  <data name="BUT_Calibrateradio.Text" xml:space="preserve">
+    <value>Calibrer Radio</value>
+  </data>
+  <data name="label24.Text" xml:space="preserve">
+    <value>Max</value>
+  </data>
+  <data name="label2.Text" xml:space="preserve">
+    <value>Mode de vol 2</value>
+  </data>
+  <data name="label25.Text" xml:space="preserve">
+    <value>Roulis Max</value>
+  </data>
+  <data name="label3.Text" xml:space="preserve">
+    <value>Mode de vol 2</value>
+  </data>
+  <data name="label26.Text" xml:space="preserve">
+    <value>Tangage Max</value>
+  </data>
+  <data name="label27.Text" xml:space="preserve">
+    <value>en degrés eg 2° 3' W est -2.3</value>
+  </data>
+  <data name="label1.Text" xml:space="preserve">
+    <value>Mode de vol 1</value>
+  </data>
+  <data name="label28.Text" xml:space="preserve">
+    <value>Niveler l'apareil pour copensation des accels</value>
+  </data>
+  <data name="label6.Text" xml:space="preserve">
+    <value>Mode de vol 6</value>
+  </data>
+  <data name="label29.Text" xml:space="preserve">
+    <value>Capacité</value>
+  </data>
+  <data name="label100.Text" xml:space="preserve">
+    <value>Déclination</value>
+  </data>
+  <data name="CHK_enablesonar.Text" xml:space="preserve">
+    <value>Activer Sonar</value>
+  </data>
+  <data name="label7.Text" xml:space="preserve">
+    <value>PWM 1231 - 1360</value>
+  </data>
+  <data name="tabRadioIn.Text" xml:space="preserve">
+    <value>Entrée Radio</value>
+  </data>
+  <data name="HS4_MIN.Text" xml:space="preserve">
+    <value>1500</value>
+  </data>
+  <data name="label4.Text" xml:space="preserve">
+    <value>Mode de vol 4</value>
+  </data>
+  <data name="label5.Text" xml:space="preserve">
+    <value>Mode de vol 5</value>
+  </data>
+  <data name="groupBox3.Text" xml:space="preserve">
+    <value>Gyro</value>
+  </data>
+  <data name="label8.Text" xml:space="preserve">
+    <value>PWM 1361 - 1490</value>
+  </data>
+  <data name="tabHardware.Text" xml:space="preserve">
+    <value>Matériel</value>
+  </data>
+  <data name="label9.Text" xml:space="preserve">
+    <value>PWM 1491 - 1620</value>
+  </data>
+  <data name="linkLabelmagdec.Text" xml:space="preserve">
+    <value>Site Web Déclination</value>
+  </data>
+  <data name="HS4_MAX.Text" xml:space="preserve">
+    <value>1500</value>
+  </data>
+  <data name="tabBattery.Text" xml:space="preserve">
+    <value>Batterie</value>
+  </data>
+  <data name="BUT_0collective.Text" xml:space="preserve">
+    <value>Zéro</value>
+  </data>
+  <data name="CHK_enableairspeed.Text" xml:space="preserve">
+    <value>Activ. Airspeed</value>
+  </data>
+  <data name="PIT_MAX_.Text" xml:space="preserve">
+    <value>4500</value>
+  </data>
+  <data name="BUT_reset.Text" xml:space="preserve">
+    <value>RàZ tout parametres du APM</value>
+  </data>
+  <data name="GYR_GAIN_.Text" xml:space="preserve">
+    <value>1000</value>
+  </data>
+  <data name="label30.Text" xml:space="preserve">
+    <value>Moniteur</value>
+  </data>
+</root>
\ No newline at end of file
diff --git a/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigRadioInput.it-IT.resx b/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigRadioInput.it-IT.resx
new file mode 100644
index 000000000..2b2636c81
--- /dev/null
+++ b/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigRadioInput.it-IT.resx
@@ -0,0 +1,318 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <data name="SV3_POS_.Text" xml:space="preserve">
+    <value>180</value>
+  </data>
+  <data name="BUT_HS4save.Text" xml:space="preserve">
+    <value>Manuale</value>
+  </data>
+  <data name="label12.Text" xml:space="preserve">
+    <value>PWM 0 - 1230</value>
+  </data>
+  <data name="label10.Text" xml:space="preserve">
+    <value>PWM 1621 - 1749</value>
+  </data>
+  <data name="label13.Text" xml:space="preserve">
+    <value>Modo Corrente:</value>
+  </data>
+  <data name="CHK_enableoptflow.Text" xml:space="preserve">
+    <value>Abilita Flusso ottico</value>
+  </data>
+  <data name="label16.Text" xml:space="preserve">
+    <value>Nota: le immagini sono sono per presentazione, funzionerà con Hexa, etc.</value>
+  </data>
+  <data name="CB_simple5.Text" xml:space="preserve">
+    <value>Modo Semplice</value>
+  </data>
+  <data name="label11.Text" xml:space="preserve">
+    <value>PWM 1750 +</value>
+  </data>
+  <data name="CHK_elevonch1rev.Text" xml:space="preserve">
+    <value>Elevatore CH1 Rev</value>
+  </data>
+  <data name="label14.Text" xml:space="preserve">
+    <value>PWM Corrente:</value>
+  </data>
+  <data name="$this.Text" xml:space="preserve">
+    <value>Imposta APM</value>
+  </data>
+  <data name="label17.Text" xml:space="preserve">
+    <value>Posizione del servo del piatto</value>
+  </data>
+  <data name="CHK_enablecompass.Text" xml:space="preserve">
+    <value>Abilita Magnetometro</value>
+  </data>
+  <data name="CB_simple4.Text" xml:space="preserve">
+    <value>Modo Semplice</value>
+  </data>
+  <data name="tabArducopter.Text" xml:space="preserve">
+    <value>ArduCopter2</value>
+  </data>
+  <data name="CB_simple1.Text" xml:space="preserve">
+    <value>Modo Semplice</value>
+  </data>
+  <data name="label15.Text" xml:space="preserve">
+    <value>Imposta Frame (+ or x)</value>
+  </data>
+  <data name="SV2_POS_.Text" xml:space="preserve">
+    <value>60</value>
+  </data>
+  <data name="label18.Text" xml:space="preserve">
+    <value>1</value>
+  </data>
+  <data name="CB_simple6.Text" xml:space="preserve">
+    <value>Modo Semplice</value>
+  </data>
+  <data name="CB_simple3.Text" xml:space="preserve">
+    <value>Modo Semplice</value>
+  </data>
+  <data name="label19.Text" xml:space="preserve">
+    <value>2</value>
+  </data>
+  <data name="tabModes.Text" xml:space="preserve">
+    <value>Modi</value>
+  </data>
+  <data name="CB_simple2.Text" xml:space="preserve">
+    <value>Modo Semplice</value>
+  </data>
+  <data name="label20.Text" xml:space="preserve">
+    <value>3</value>
+  </data>
+  <data name="tabReset.Text" xml:space="preserve">
+    <value>Riavvia</value>
+  </data>
+  <data name="SV1_POS_.Text" xml:space="preserve">
+    <value>-60</value>
+  </data>
+  <data name="label21.Text" xml:space="preserve">
+    <value>Alto</value>
+  </data>
+  <data name="label22.Text" xml:space="preserve">
+    <value>Escursione del piatto</value>
+  </data>
+  <data name="lbl_currentmode.Text" xml:space="preserve">
+    <value>Manuale</value>
+  </data>
+  <data name="label23.Text" xml:space="preserve">
+    <value>Escursione Timone</value>
+  </data>
+  <data name="textBox3.Text" xml:space="preserve">
+    <value>Calibarzione del sensore di voltaggio:
+1. Misura il valtaggio di ingresso di APM e inseriscilo nel box sotto 
+2. Misura il voltaggio della batteria e inseriscilo nel box sotto 
+3. Dalle caratteristiche del sensore di corrente, inserisci il valore degli ampere per volt nel box qui sotto</value>
+  </data>
+  <data name="BUT_Calibrateradio.Text" xml:space="preserve">
+    <value>Calibrazione Radio</value>
+  </data>
+  <data name="label24.Text" xml:space="preserve">
+    <value>Massimo</value>
+  </data>
+  <data name="label2.Text" xml:space="preserve">
+    <value>Modo di volo 2</value>
+  </data>
+  <data name="label25.Text" xml:space="preserve">
+    <value>Rollio massimo</value>
+  </data>
+  <data name="label3.Text" xml:space="preserve">
+    <value>Modo di volo 3</value>
+  </data>
+  <data name="label26.Text" xml:space="preserve">
+    <value>Passo massimo</value>
+  </data>
+  <data name="label27.Text" xml:space="preserve">
+    <value>in gradi es 2° 3' W is -2.3</value>
+  </data>
+  <data name="label1.Text" xml:space="preserve">
+    <value>Modo di volo 1</value>
+  </data>
+  <data name="label28.Text" xml:space="preserve">
+    <value>Livella il quad per impostare gli accelerometri</value>
+  </data>
+  <data name="label6.Text" xml:space="preserve">
+    <value>Modo di volo 6</value>
+  </data>
+  <data name="label29.Text" xml:space="preserve">
+    <value>Capacità</value>
+  </data>
+  <data name="label100.Text" xml:space="preserve">
+    <value>Declinazione</value>
+  </data>
+  <data name="CHK_enablesonar.Text" xml:space="preserve">
+    <value>Attiva Sonar</value>
+  </data>
+  <data name="label7.Text" xml:space="preserve">
+    <value>PWM 1231 - 1360</value>
+  </data>
+  <data name="tabRadioIn.Text" xml:space="preserve">
+    <value>Ingresso Radio</value>
+  </data>
+  <data name="groupBox4.Text" xml:space="preserve">
+    <value>Calibration</value>
+  </data>
+  <data name="HS4_MIN.Text" xml:space="preserve">
+    <value>1500</value>
+  </data>
+  <data name="label4.Text" xml:space="preserve">
+    <value>Modo di volo 4</value>
+  </data>
+  <data name="label5.Text" xml:space="preserve">
+    <value>Modo di volo 5</value>
+  </data>
+  <data name="groupBox3.Text" xml:space="preserve">
+    <value>Giroscopio</value>
+  </data>
+  <data name="label8.Text" xml:space="preserve">
+    <value>PWM 1361 - 1490</value>
+  </data>
+  <data name="tabHardware.Text" xml:space="preserve">
+    <value>Hardware</value>
+  </data>
+  <data name="label9.Text" xml:space="preserve">
+    <value>PWM 1491 - 1620</value>
+  </data>
+  <data name="linkLabelmagdec.Text" xml:space="preserve">
+    <value>Sito Web per la Declinazione</value>
+  </data>
+  <data name="HS4_MAX.Text" xml:space="preserve">
+    <value>1500</value>
+  </data>
+  <data name="tabBattery.Text" xml:space="preserve">
+    <value>Batteria</value>
+  </data>
+  <data name="BUT_0collective.Text" xml:space="preserve">
+    <value>Zero</value>
+  </data>
+  <data name="CHK_enableairspeed.Text" xml:space="preserve">
+    <value>Attiva Sensore Velocità</value>
+  </data>
+  <data name="PIT_MAX_.Text" xml:space="preserve">
+    <value>4500</value>
+  </data>
+  <data name="BUT_reset.Text" xml:space="preserve">
+    <value>Resetta APM ai valori di Default</value>
+  </data>
+  <data name="GYR_GAIN_.Text" xml:space="preserve">
+    <value>1000</value>
+  </data>
+  <data name="label30.Text" xml:space="preserve">
+    <value>Monitor</value>
+  </data>
+</root>
\ No newline at end of file
diff --git a/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigRadioInput.pl.resx b/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigRadioInput.pl.resx
new file mode 100644
index 000000000..057b93271
--- /dev/null
+++ b/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigRadioInput.pl.resx
@@ -0,0 +1,318 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <data name="SV3_POS_.Text" xml:space="preserve">
+    <value>180</value>
+  </data>
+  <data name="BUT_HS4save.Text" xml:space="preserve">
+    <value>Ręczne</value>
+  </data>
+  <data name="label12.Text" xml:space="preserve">
+    <value>PWM 0 - 1230</value>
+  </data>
+  <data name="label10.Text" xml:space="preserve">
+    <value>PWM 1621 - 1749</value>
+  </data>
+  <data name="label13.Text" xml:space="preserve">
+    <value>Aktualny tryb:</value>
+  </data>
+  <data name="CHK_enableoptflow.Text" xml:space="preserve">
+    <value>Włącz Optical Flow</value>
+  </data>
+  <data name="label16.Text" xml:space="preserve">
+    <value>UWAGA: Obrazy są wyłącznie do prezentacji, działają jedynie z hexa, itp.</value>
+  </data>
+  <data name="CB_simple5.Text" xml:space="preserve">
+    <value>Tryb prosty</value>
+  </data>
+  <data name="label11.Text" xml:space="preserve">
+    <value>PWM 1750 +</value>
+  </data>
+  <data name="CHK_elevonch1rev.Text" xml:space="preserve">
+    <value>Odwr. Elevon CH1</value>
+  </data>
+  <data name="label14.Text" xml:space="preserve">
+    <value>Aktualny PWM:</value>
+  </data>
+  <data name="$this.Text" xml:space="preserve">
+    <value>Ustawienia APM</value>
+  </data>
+  <data name="label17.Text" xml:space="preserve">
+    <value>Pozycja serwa płyty ster.</value>
+  </data>
+  <data name="CHK_enablecompass.Text" xml:space="preserve">
+    <value>Włącz kompas</value>
+  </data>
+  <data name="CB_simple4.Text" xml:space="preserve">
+    <value>Tryb prosty</value>
+  </data>
+  <data name="tabArducopter.Text" xml:space="preserve">
+    <value>ArduCopter2</value>
+  </data>
+  <data name="CB_simple1.Text" xml:space="preserve">
+    <value>Tryb prosty</value>
+  </data>
+  <data name="label15.Text" xml:space="preserve">
+    <value>Ustawienie ramy (+ lub x)</value>
+  </data>
+  <data name="SV2_POS_.Text" xml:space="preserve">
+    <value>60</value>
+  </data>
+  <data name="label18.Text" xml:space="preserve">
+    <value>1</value>
+  </data>
+  <data name="CB_simple6.Text" xml:space="preserve">
+    <value>Tryb prosty</value>
+  </data>
+  <data name="CB_simple3.Text" xml:space="preserve">
+    <value>Tryb prosty</value>
+  </data>
+  <data name="label19.Text" xml:space="preserve">
+    <value>2</value>
+  </data>
+  <data name="tabModes.Text" xml:space="preserve">
+    <value>Tryby</value>
+  </data>
+  <data name="CB_simple2.Text" xml:space="preserve">
+    <value>Tryb prosty</value>
+  </data>
+  <data name="label20.Text" xml:space="preserve">
+    <value>3</value>
+  </data>
+  <data name="tabReset.Text" xml:space="preserve">
+    <value>Reset</value>
+  </data>
+  <data name="SV1_POS_.Text" xml:space="preserve">
+    <value>-60</value>
+  </data>
+  <data name="label21.Text" xml:space="preserve">
+    <value>Góra</value>
+  </data>
+  <data name="label22.Text" xml:space="preserve">
+    <value>Zakres ruchu płyty sterującej</value>
+  </data>
+  <data name="lbl_currentmode.Text" xml:space="preserve">
+    <value>Ręczne</value>
+  </data>
+  <data name="label23.Text" xml:space="preserve">
+    <value>Zakres steru kierunku</value>
+  </data>
+  <data name="textBox3.Text" xml:space="preserve">
+    <value>Kalibracja czujnika napięcia:
+1. Zmierz napięcie wejściowe APM i wpisz poniżej
+2. Zmierz napięcie baterii i wpisz poniżej
+3. Wpisz poniżej ilość amperów/wolt [A/V] z dokumentacji czujnika prądu</value>
+  </data>
+  <data name="BUT_Calibrateradio.Text" xml:space="preserve">
+    <value>Kalibracja radia</value>
+  </data>
+  <data name="label24.Text" xml:space="preserve">
+    <value>Max</value>
+  </data>
+  <data name="label2.Text" xml:space="preserve">
+    <value>Tryb lotu 2</value>
+  </data>
+  <data name="label25.Text" xml:space="preserve">
+    <value>Max przechylenie</value>
+  </data>
+  <data name="label3.Text" xml:space="preserve">
+    <value>Tryb lotu 3</value>
+  </data>
+  <data name="label26.Text" xml:space="preserve">
+    <value>Max pochylenie</value>
+  </data>
+  <data name="label27.Text" xml:space="preserve">
+    <value>w stopniech np. 2° 3' W to -2.3</value>
+  </data>
+  <data name="label1.Text" xml:space="preserve">
+    <value>Tryb lotu 1</value>
+  </data>
+  <data name="label28.Text" xml:space="preserve">
+    <value>Wypoziomuj quada żeby stawić domyśle offsety przysp.</value>
+  </data>
+  <data name="label6.Text" xml:space="preserve">
+    <value>Tryb lotu 6</value>
+  </data>
+  <data name="label29.Text" xml:space="preserve">
+    <value>Pojemność</value>
+  </data>
+  <data name="label100.Text" xml:space="preserve">
+    <value>Deklinacja</value>
+  </data>
+  <data name="CHK_enablesonar.Text" xml:space="preserve">
+    <value>Włącz sonar</value>
+  </data>
+  <data name="label7.Text" xml:space="preserve">
+    <value>PWM 1231 - 1360</value>
+  </data>
+  <data name="tabRadioIn.Text" xml:space="preserve">
+    <value>Wejścia radia</value>
+  </data>
+  <data name="groupBox4.Text" xml:space="preserve">
+    <value>Calibration</value>
+  </data>
+  <data name="HS4_MIN.Text" xml:space="preserve">
+    <value>1500</value>
+  </data>
+  <data name="label4.Text" xml:space="preserve">
+    <value>Tryb lotu 4</value>
+  </data>
+  <data name="label5.Text" xml:space="preserve">
+    <value>Tryb lotu 5</value>
+  </data>
+  <data name="groupBox3.Text" xml:space="preserve">
+    <value>Żyro</value>
+  </data>
+  <data name="label8.Text" xml:space="preserve">
+    <value>PWM 1361 - 1490</value>
+  </data>
+  <data name="tabHardware.Text" xml:space="preserve">
+    <value>Hardware</value>
+  </data>
+  <data name="label9.Text" xml:space="preserve">
+    <value>PWM 1491 - 1620</value>
+  </data>
+  <data name="linkLabelmagdec.Text" xml:space="preserve">
+    <value>Strona www deklinacji</value>
+  </data>
+  <data name="HS4_MAX.Text" xml:space="preserve">
+    <value>1500</value>
+  </data>
+  <data name="tabBattery.Text" xml:space="preserve">
+    <value>Bateria</value>
+  </data>
+  <data name="BUT_0collective.Text" xml:space="preserve">
+    <value>Zero</value>
+  </data>
+  <data name="CHK_enableairspeed.Text" xml:space="preserve">
+    <value>Włącz prędkość powietrza</value>
+  </data>
+  <data name="PIT_MAX_.Text" xml:space="preserve">
+    <value>4500</value>
+  </data>
+  <data name="BUT_reset.Text" xml:space="preserve">
+    <value>Reset APM do stawień domyślnych</value>
+  </data>
+  <data name="GYR_GAIN_.Text" xml:space="preserve">
+    <value>1000</value>
+  </data>
+  <data name="label30.Text" xml:space="preserve">
+    <value>Monitor</value>
+  </data>
+</root>
\ No newline at end of file
diff --git a/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigRadioInput.resx b/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigRadioInput.resx
index 6791def87..f4c0f26f3 100644
--- a/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigRadioInput.resx
+++ b/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigRadioInput.resx
@@ -117,7 +117,490 @@
   <resheader name="writer">
     <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
   </resheader>
+  <assembly alias="mscorlib" name="mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
+  <data name="CHK_mixmode.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
+  <data name="CHK_mixmode.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
+    <value>NoControl</value>
+  </data>
+  <assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
+  <data name="CHK_mixmode.Location" type="System.Drawing.Point, System.Drawing">
+    <value>13, 19</value>
+  </data>
+  <data name="CHK_mixmode.Size" type="System.Drawing.Size, System.Drawing">
+    <value>64, 17</value>
+  </data>
+  <data name="CHK_mixmode.TabIndex" type="System.Int32, mscorlib">
+    <value>107</value>
+  </data>
+  <data name="CHK_mixmode.Text" xml:space="preserve">
+    <value>Elevons</value>
+  </data>
+  <data name="&gt;&gt;CHK_mixmode.Name" xml:space="preserve">
+    <value>CHK_mixmode</value>
+  </data>
+  <data name="&gt;&gt;CHK_mixmode.Type" xml:space="preserve">
+    <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;CHK_mixmode.Parent" xml:space="preserve">
+    <value>groupBoxElevons</value>
+  </data>
+  <data name="&gt;&gt;CHK_mixmode.ZOrder" xml:space="preserve">
+    <value>0</value>
+  </data>
+  <data name="CHK_elevonch2rev.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <data name="CHK_elevonch2rev.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
+    <value>NoControl</value>
+  </data>
+  <data name="CHK_elevonch2rev.Location" type="System.Drawing.Point, System.Drawing">
+    <value>292, 19</value>
+  </data>
+  <data name="CHK_elevonch2rev.Size" type="System.Drawing.Size, System.Drawing">
+    <value>111, 17</value>
+  </data>
+  <data name="CHK_elevonch2rev.TabIndex" type="System.Int32, mscorlib">
+    <value>110</value>
+  </data>
+  <data name="CHK_elevonch2rev.Text" xml:space="preserve">
+    <value>Elevons CH2 Rev</value>
+  </data>
+  <data name="&gt;&gt;CHK_elevonch2rev.Name" xml:space="preserve">
+    <value>CHK_elevonch2rev</value>
+  </data>
+  <data name="&gt;&gt;CHK_elevonch2rev.Type" xml:space="preserve">
+    <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;CHK_elevonch2rev.Parent" xml:space="preserve">
+    <value>groupBoxElevons</value>
+  </data>
+  <data name="&gt;&gt;CHK_elevonch2rev.ZOrder" xml:space="preserve">
+    <value>1</value>
+  </data>
+  <data name="CHK_elevonrev.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <data name="CHK_elevonrev.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
+    <value>NoControl</value>
+  </data>
+  <data name="CHK_elevonrev.Location" type="System.Drawing.Point, System.Drawing">
+    <value>82, 19</value>
+  </data>
+  <data name="CHK_elevonrev.Size" type="System.Drawing.Size, System.Drawing">
+    <value>87, 17</value>
+  </data>
+  <data name="CHK_elevonrev.TabIndex" type="System.Int32, mscorlib">
+    <value>108</value>
+  </data>
+  <data name="CHK_elevonrev.Text" xml:space="preserve">
+    <value>Elevons Rev</value>
+  </data>
+  <data name="&gt;&gt;CHK_elevonrev.Name" xml:space="preserve">
+    <value>CHK_elevonrev</value>
+  </data>
+  <data name="&gt;&gt;CHK_elevonrev.Type" xml:space="preserve">
+    <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;CHK_elevonrev.Parent" xml:space="preserve">
+    <value>groupBoxElevons</value>
+  </data>
+  <data name="&gt;&gt;CHK_elevonrev.ZOrder" xml:space="preserve">
+    <value>2</value>
+  </data>
+  <data name="CHK_elevonch1rev.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <data name="CHK_elevonch1rev.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
+    <value>NoControl</value>
+  </data>
+  <data name="CHK_elevonch1rev.Location" type="System.Drawing.Point, System.Drawing">
+    <value>175, 19</value>
+  </data>
+  <data name="CHK_elevonch1rev.Size" type="System.Drawing.Size, System.Drawing">
+    <value>111, 17</value>
+  </data>
+  <data name="CHK_elevonch1rev.TabIndex" type="System.Int32, mscorlib">
+    <value>109</value>
+  </data>
+  <data name="CHK_elevonch1rev.Text" xml:space="preserve">
+    <value>Elevons CH1 Rev</value>
+  </data>
+  <data name="&gt;&gt;CHK_elevonch1rev.Name" xml:space="preserve">
+    <value>CHK_elevonch1rev</value>
+  </data>
+  <data name="&gt;&gt;CHK_elevonch1rev.Type" xml:space="preserve">
+    <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;CHK_elevonch1rev.Parent" xml:space="preserve">
+    <value>groupBoxElevons</value>
+  </data>
+  <data name="&gt;&gt;CHK_elevonch1rev.ZOrder" xml:space="preserve">
+    <value>3</value>
+  </data>
+  <data name="groupBoxElevons.Location" type="System.Drawing.Point, System.Drawing">
+    <value>12, 356</value>
+  </data>
+  <data name="groupBoxElevons.Size" type="System.Drawing.Size, System.Drawing">
+    <value>409, 42</value>
+  </data>
+  <data name="groupBoxElevons.TabIndex" type="System.Int32, mscorlib">
+    <value>125</value>
+  </data>
+  <data name="groupBoxElevons.Text" xml:space="preserve">
+    <value>Elevon Config</value>
+  </data>
+  <data name="&gt;&gt;groupBoxElevons.Name" xml:space="preserve">
+    <value>groupBoxElevons</value>
+  </data>
+  <data name="&gt;&gt;groupBoxElevons.Type" xml:space="preserve">
+    <value>System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;groupBoxElevons.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name="&gt;&gt;groupBoxElevons.ZOrder" xml:space="preserve">
+    <value>0</value>
+  </data>
+  <data name="CHK_revch3.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <data name="CHK_revch3.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
+    <value>NoControl</value>
+  </data>
+  <data name="CHK_revch3.Location" type="System.Drawing.Point, System.Drawing">
+    <value>278, 161</value>
+  </data>
+  <data name="CHK_revch3.Size" type="System.Drawing.Size, System.Drawing">
+    <value>66, 17</value>
+  </data>
+  <data name="CHK_revch3.TabIndex" type="System.Int32, mscorlib">
+    <value>124</value>
+  </data>
+  <data name="CHK_revch3.Text" xml:space="preserve">
+    <value>Reverse</value>
+  </data>
+  <data name="&gt;&gt;CHK_revch3.Name" xml:space="preserve">
+    <value>CHK_revch3</value>
+  </data>
+  <data name="&gt;&gt;CHK_revch3.Type" xml:space="preserve">
+    <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;CHK_revch3.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name="&gt;&gt;CHK_revch3.ZOrder" xml:space="preserve">
+    <value>1</value>
+  </data>
+  <data name="CHK_revch4.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <data name="CHK_revch4.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
+    <value>NoControl</value>
+  </data>
+  <data name="CHK_revch4.Location" type="System.Drawing.Point, System.Drawing">
+    <value>306, 313</value>
+  </data>
+  <data name="CHK_revch4.Size" type="System.Drawing.Size, System.Drawing">
+    <value>66, 17</value>
+  </data>
+  <data name="CHK_revch4.TabIndex" type="System.Int32, mscorlib">
+    <value>123</value>
+  </data>
+  <data name="CHK_revch4.Text" xml:space="preserve">
+    <value>Reverse</value>
+  </data>
+  <data name="&gt;&gt;CHK_revch4.Name" xml:space="preserve">
+    <value>CHK_revch4</value>
+  </data>
+  <data name="&gt;&gt;CHK_revch4.Type" xml:space="preserve">
+    <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;CHK_revch4.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name="&gt;&gt;CHK_revch4.ZOrder" xml:space="preserve">
+    <value>2</value>
+  </data>
+  <data name="CHK_revch2.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <data name="CHK_revch2.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
+    <value>NoControl</value>
+  </data>
+  <data name="CHK_revch2.Location" type="System.Drawing.Point, System.Drawing">
+    <value>62, 161</value>
+  </data>
+  <data name="CHK_revch2.Size" type="System.Drawing.Size, System.Drawing">
+    <value>66, 17</value>
+  </data>
+  <data name="CHK_revch2.TabIndex" type="System.Int32, mscorlib">
+    <value>122</value>
+  </data>
+  <data name="CHK_revch2.Text" xml:space="preserve">
+    <value>Reverse</value>
+  </data>
+  <data name="&gt;&gt;CHK_revch2.Name" xml:space="preserve">
+    <value>CHK_revch2</value>
+  </data>
+  <data name="&gt;&gt;CHK_revch2.Type" xml:space="preserve">
+    <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;CHK_revch2.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name="&gt;&gt;CHK_revch2.ZOrder" xml:space="preserve">
+    <value>3</value>
+  </data>
+  <data name="CHK_revch1.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <data name="CHK_revch1.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
+    <value>NoControl</value>
+  </data>
+  <data name="CHK_revch1.Location" type="System.Drawing.Point, System.Drawing">
+    <value>306, 19</value>
+  </data>
+  <data name="CHK_revch1.Size" type="System.Drawing.Size, System.Drawing">
+    <value>66, 17</value>
+  </data>
+  <data name="CHK_revch1.TabIndex" type="System.Int32, mscorlib">
+    <value>121</value>
+  </data>
+  <data name="CHK_revch1.Text" xml:space="preserve">
+    <value>Reverse</value>
+  </data>
+  <data name="&gt;&gt;CHK_revch1.Name" xml:space="preserve">
+    <value>CHK_revch1</value>
+  </data>
+  <data name="&gt;&gt;CHK_revch1.Type" xml:space="preserve">
+    <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;CHK_revch1.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name="&gt;&gt;CHK_revch1.ZOrder" xml:space="preserve">
+    <value>4</value>
+  </data>
+  <data name="BUT_Calibrateradio.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
+    <value>NoControl</value>
+  </data>
+  <data name="BUT_Calibrateradio.Location" type="System.Drawing.Point, System.Drawing">
+    <value>473, 347</value>
+  </data>
+  <data name="BUT_Calibrateradio.Size" type="System.Drawing.Size, System.Drawing">
+    <value>134, 23</value>
+  </data>
+  <data name="BUT_Calibrateradio.TabIndex" type="System.Int32, mscorlib">
+    <value>120</value>
+  </data>
+  <data name="BUT_Calibrateradio.Text" xml:space="preserve">
+    <value>Calibrate Radio</value>
+  </data>
+  <data name="&gt;&gt;BUT_Calibrateradio.Name" xml:space="preserve">
+    <value>BUT_Calibrateradio</value>
+  </data>
+  <data name="&gt;&gt;BUT_Calibrateradio.Type" xml:space="preserve">
+    <value>ArdupilotMega.MyButton, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null</value>
+  </data>
+  <data name="&gt;&gt;BUT_Calibrateradio.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name="&gt;&gt;BUT_Calibrateradio.ZOrder" xml:space="preserve">
+    <value>5</value>
+  </data>
   <metadata name="currentStateBindingSource.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
     <value>17, 17</value>
   </metadata>
+  <data name="BAR8.Location" type="System.Drawing.Point, System.Drawing">
+    <value>437, 247</value>
+  </data>
+  <data name="BAR8.Size" type="System.Drawing.Size, System.Drawing">
+    <value>170, 25</value>
+  </data>
+  <data name="BAR8.TabIndex" type="System.Int32, mscorlib">
+    <value>119</value>
+  </data>
+  <data name="&gt;&gt;BAR8.Name" xml:space="preserve">
+    <value>BAR8</value>
+  </data>
+  <data name="&gt;&gt;BAR8.Type" xml:space="preserve">
+    <value>ArdupilotMega.HorizontalProgressBar2, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null</value>
+  </data>
+  <data name="&gt;&gt;BAR8.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name="&gt;&gt;BAR8.ZOrder" xml:space="preserve">
+    <value>6</value>
+  </data>
+  <data name="BAR7.Location" type="System.Drawing.Point, System.Drawing">
+    <value>437, 192</value>
+  </data>
+  <data name="BAR7.Size" type="System.Drawing.Size, System.Drawing">
+    <value>170, 25</value>
+  </data>
+  <data name="BAR7.TabIndex" type="System.Int32, mscorlib">
+    <value>118</value>
+  </data>
+  <data name="&gt;&gt;BAR7.Name" xml:space="preserve">
+    <value>BAR7</value>
+  </data>
+  <data name="&gt;&gt;BAR7.Type" xml:space="preserve">
+    <value>ArdupilotMega.HorizontalProgressBar2, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null</value>
+  </data>
+  <data name="&gt;&gt;BAR7.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name="&gt;&gt;BAR7.ZOrder" xml:space="preserve">
+    <value>7</value>
+  </data>
+  <data name="BAR6.Location" type="System.Drawing.Point, System.Drawing">
+    <value>437, 137</value>
+  </data>
+  <data name="BAR6.Size" type="System.Drawing.Size, System.Drawing">
+    <value>170, 25</value>
+  </data>
+  <data name="BAR6.TabIndex" type="System.Int32, mscorlib">
+    <value>117</value>
+  </data>
+  <data name="&gt;&gt;BAR6.Name" xml:space="preserve">
+    <value>BAR6</value>
+  </data>
+  <data name="&gt;&gt;BAR6.Type" xml:space="preserve">
+    <value>ArdupilotMega.HorizontalProgressBar2, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null</value>
+  </data>
+  <data name="&gt;&gt;BAR6.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name="&gt;&gt;BAR6.ZOrder" xml:space="preserve">
+    <value>8</value>
+  </data>
+  <data name="BAR5.Location" type="System.Drawing.Point, System.Drawing">
+    <value>437, 82</value>
+  </data>
+  <data name="BAR5.Size" type="System.Drawing.Size, System.Drawing">
+    <value>170, 25</value>
+  </data>
+  <data name="BAR5.TabIndex" type="System.Int32, mscorlib">
+    <value>116</value>
+  </data>
+  <data name="&gt;&gt;BAR5.Name" xml:space="preserve">
+    <value>BAR5</value>
+  </data>
+  <data name="&gt;&gt;BAR5.Type" xml:space="preserve">
+    <value>ArdupilotMega.HorizontalProgressBar2, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null</value>
+  </data>
+  <data name="&gt;&gt;BAR5.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name="&gt;&gt;BAR5.ZOrder" xml:space="preserve">
+    <value>9</value>
+  </data>
+  <data name="BARpitch.Location" type="System.Drawing.Point, System.Drawing">
+    <value>134, 64</value>
+  </data>
+  <data name="BARpitch.Size" type="System.Drawing.Size, System.Drawing">
+    <value>47, 211</value>
+  </data>
+  <data name="BARpitch.TabIndex" type="System.Int32, mscorlib">
+    <value>115</value>
+  </data>
+  <data name="&gt;&gt;BARpitch.Name" xml:space="preserve">
+    <value>BARpitch</value>
+  </data>
+  <data name="&gt;&gt;BARpitch.Type" xml:space="preserve">
+    <value>ArdupilotMega.VerticalProgressBar2, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null</value>
+  </data>
+  <data name="&gt;&gt;BARpitch.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name="&gt;&gt;BARpitch.ZOrder" xml:space="preserve">
+    <value>10</value>
+  </data>
+  <data name="BARthrottle.Location" type="System.Drawing.Point, System.Drawing">
+    <value>350, 64</value>
+  </data>
+  <data name="BARthrottle.Size" type="System.Drawing.Size, System.Drawing">
+    <value>47, 211</value>
+  </data>
+  <data name="BARthrottle.TabIndex" type="System.Int32, mscorlib">
+    <value>114</value>
+  </data>
+  <data name="&gt;&gt;BARthrottle.Name" xml:space="preserve">
+    <value>BARthrottle</value>
+  </data>
+  <data name="&gt;&gt;BARthrottle.Type" xml:space="preserve">
+    <value>ArdupilotMega.VerticalProgressBar2, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null</value>
+  </data>
+  <data name="&gt;&gt;BARthrottle.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name="&gt;&gt;BARthrottle.ZOrder" xml:space="preserve">
+    <value>11</value>
+  </data>
+  <data name="BARyaw.Location" type="System.Drawing.Point, System.Drawing">
+    <value>12, 307</value>
+  </data>
+  <data name="BARyaw.Size" type="System.Drawing.Size, System.Drawing">
+    <value>288, 23</value>
+  </data>
+  <data name="BARyaw.TabIndex" type="System.Int32, mscorlib">
+    <value>113</value>
+  </data>
+  <data name="&gt;&gt;BARyaw.Name" xml:space="preserve">
+    <value>BARyaw</value>
+  </data>
+  <data name="&gt;&gt;BARyaw.Type" xml:space="preserve">
+    <value>ArdupilotMega.HorizontalProgressBar2, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null</value>
+  </data>
+  <data name="&gt;&gt;BARyaw.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name="&gt;&gt;BARyaw.ZOrder" xml:space="preserve">
+    <value>12</value>
+  </data>
+  <data name="BARroll.Location" type="System.Drawing.Point, System.Drawing">
+    <value>12, 13</value>
+  </data>
+  <data name="BARroll.Size" type="System.Drawing.Size, System.Drawing">
+    <value>288, 23</value>
+  </data>
+  <data name="BARroll.TabIndex" type="System.Int32, mscorlib">
+    <value>112</value>
+  </data>
+  <data name="&gt;&gt;BARroll.Name" xml:space="preserve">
+    <value>BARroll</value>
+  </data>
+  <data name="&gt;&gt;BARroll.Type" xml:space="preserve">
+    <value>ArdupilotMega.HorizontalProgressBar2, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null</value>
+  </data>
+  <data name="&gt;&gt;BARroll.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name="&gt;&gt;BARroll.ZOrder" xml:space="preserve">
+    <value>13</value>
+  </data>
+  <metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+    <value>True</value>
+  </metadata>
+  <data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
+    <value>6, 13</value>
+  </data>
+  <data name="$this.Size" type="System.Drawing.Size, System.Drawing">
+    <value>628, 406</value>
+  </data>
+  <data name="&gt;&gt;currentStateBindingSource.Name" xml:space="preserve">
+    <value>currentStateBindingSource</value>
+  </data>
+  <data name="&gt;&gt;currentStateBindingSource.Type" xml:space="preserve">
+    <value>System.Windows.Forms.BindingSource, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;$this.Name" xml:space="preserve">
+    <value>ConfigRadioInput</value>
+  </data>
+  <data name="&gt;&gt;$this.Type" xml:space="preserve">
+    <value>System.Windows.Forms.UserControl, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
 </root>
\ No newline at end of file
diff --git a/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigRadioInput.zh-Hans.resx b/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigRadioInput.zh-Hans.resx
new file mode 100644
index 000000000..f96892c42
--- /dev/null
+++ b/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigRadioInput.zh-Hans.resx
@@ -0,0 +1,496 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <data name="tabRadioIn.Text" xml:space="preserve">
+    <value>遥控输入</value>
+  </data>
+  <data name="tabModes.Text" xml:space="preserve">
+    <value>模式</value>
+  </data>
+  <data name="tabHardware.Text" xml:space="preserve">
+    <value>硬件</value>
+  </data>
+  <data name="tabBattery.Text" xml:space="preserve">
+    <value>电池</value>
+  </data>
+  <data name="tabHeli.Text" xml:space="preserve">
+    <value>AC2 直升机</value>
+  </data>
+  <data name="groupBoxElevons.Text" xml:space="preserve">
+    <value>上降副翼 (Elevon) 配置</value>
+  </data>
+  <assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
+  <data name="CHK_elevonch2rev.Size" type="System.Drawing.Size, System.Drawing">
+    <value>115, 17</value>
+  </data>
+  <data name="CHK_elevonch2rev.Text" xml:space="preserve">
+    <value>Elevons CH2 逆转</value>
+  </data>
+  <data name="CHK_elevonrev.Size" type="System.Drawing.Size, System.Drawing">
+    <value>91, 17</value>
+  </data>
+  <data name="CHK_elevonrev.Text" xml:space="preserve">
+    <value>Elevons 逆转</value>
+  </data>
+  <data name="CHK_elevonch1rev.Size" type="System.Drawing.Size, System.Drawing">
+    <value>115, 17</value>
+  </data>
+  <data name="CHK_elevonch1rev.Text" xml:space="preserve">
+    <value>Elevons CH1 逆转</value>
+  </data>
+  <data name="CHK_revch3.Size" type="System.Drawing.Size, System.Drawing">
+    <value>50, 17</value>
+  </data>
+  <data name="CHK_revch3.Text" xml:space="preserve">
+    <value>逆转</value>
+  </data>
+  <data name="CHK_revch4.Size" type="System.Drawing.Size, System.Drawing">
+    <value>50, 17</value>
+  </data>
+  <data name="CHK_revch4.Text" xml:space="preserve">
+    <value>逆转</value>
+  </data>
+  <data name="CHK_revch2.Size" type="System.Drawing.Size, System.Drawing">
+    <value>50, 17</value>
+  </data>
+  <data name="CHK_revch2.Text" xml:space="preserve">
+    <value>逆转</value>
+  </data>
+  <data name="CHK_revch1.Size" type="System.Drawing.Size, System.Drawing">
+    <value>50, 17</value>
+  </data>
+  <data name="CHK_revch1.Text" xml:space="preserve">
+    <value>逆转</value>
+  </data>
+  <data name="BUT_Calibrateradio.Text" xml:space="preserve">
+    <value>校准遥控</value>
+  </data>
+  <data name="CB_simple6.Size" type="System.Drawing.Size, System.Drawing">
+    <value>74, 17</value>
+  </data>
+  <data name="CB_simple6.Text" xml:space="preserve">
+    <value>简单模式</value>
+  </data>
+  <data name="CB_simple5.Size" type="System.Drawing.Size, System.Drawing">
+    <value>74, 17</value>
+  </data>
+  <data name="CB_simple5.Text" xml:space="preserve">
+    <value>简单模式</value>
+  </data>
+  <data name="CB_simple4.Size" type="System.Drawing.Size, System.Drawing">
+    <value>74, 17</value>
+  </data>
+  <data name="CB_simple4.Text" xml:space="preserve">
+    <value>简单模式</value>
+  </data>
+  <data name="CB_simple3.Size" type="System.Drawing.Size, System.Drawing">
+    <value>74, 17</value>
+  </data>
+  <data name="CB_simple3.Text" xml:space="preserve">
+    <value>简单模式</value>
+  </data>
+  <data name="CB_simple2.Size" type="System.Drawing.Size, System.Drawing">
+    <value>74, 17</value>
+  </data>
+  <data name="CB_simple2.Text" xml:space="preserve">
+    <value>简单模式</value>
+  </data>
+  <data name="CB_simple1.Size" type="System.Drawing.Size, System.Drawing">
+    <value>74, 17</value>
+  </data>
+  <data name="CB_simple1.Text" xml:space="preserve">
+    <value>简单模式</value>
+  </data>
+  <data name="label14.Size" type="System.Drawing.Size, System.Drawing">
+    <value>64, 13</value>
+  </data>
+  <data name="label14.Text" xml:space="preserve">
+    <value>当前 PWM:</value>
+  </data>
+  <data name="label13.Size" type="System.Drawing.Size, System.Drawing">
+    <value>58, 13</value>
+  </data>
+  <data name="label13.Text" xml:space="preserve">
+    <value>当前模式:</value>
+  </data>
+  <data name="label6.Size" type="System.Drawing.Size, System.Drawing">
+    <value>64, 13</value>
+  </data>
+  <data name="label6.Text" xml:space="preserve">
+    <value>飞行模式 6</value>
+  </data>
+  <data name="label5.Size" type="System.Drawing.Size, System.Drawing">
+    <value>64, 13</value>
+  </data>
+  <data name="label5.Text" xml:space="preserve">
+    <value>飞行模式 5</value>
+  </data>
+  <data name="label4.Size" type="System.Drawing.Size, System.Drawing">
+    <value>64, 13</value>
+  </data>
+  <data name="label4.Text" xml:space="preserve">
+    <value>飞行模式 4</value>
+  </data>
+  <data name="label3.Size" type="System.Drawing.Size, System.Drawing">
+    <value>64, 13</value>
+  </data>
+  <data name="label3.Text" xml:space="preserve">
+    <value>飞行模式 3</value>
+  </data>
+  <data name="label2.Size" type="System.Drawing.Size, System.Drawing">
+    <value>64, 13</value>
+  </data>
+  <data name="label2.Text" xml:space="preserve">
+    <value>飞行模式 2</value>
+  </data>
+  <data name="label1.Size" type="System.Drawing.Size, System.Drawing">
+    <value>64, 13</value>
+  </data>
+  <data name="label1.Text" xml:space="preserve">
+    <value>飞行模式 1</value>
+  </data>
+  <data name="BUT_SaveModes.Text" xml:space="preserve">
+    <value>保存模式</value>
+  </data>
+  <data name="label27.Text" xml:space="preserve">
+    <value>十进制, 2° 3' W 就是 -2.3</value>
+  </data>
+  <data name="CHK_enableoptflow.Text" xml:space="preserve">
+    <value>启用光流</value>
+  </data>
+  <data name="linkLabelmagdec.Size" type="System.Drawing.Size, System.Drawing">
+    <value>67, 13</value>
+  </data>
+  <data name="linkLabelmagdec.Text" xml:space="preserve">
+    <value>磁偏角网站</value>
+  </data>
+  <data name="label100.Text" xml:space="preserve">
+    <value>磁偏角</value>
+  </data>
+  <data name="CHK_enableairspeed.Text" xml:space="preserve">
+    <value>启用空速计</value>
+  </data>
+  <data name="CHK_enablesonar.Text" xml:space="preserve">
+    <value>启用声纳</value>
+  </data>
+  <data name="CHK_enablecompass.Text" xml:space="preserve">
+    <value>启用罗盘</value>
+  </data>
+  <data name="label31.Size" type="System.Drawing.Size, System.Drawing">
+    <value>58, 13</value>
+  </data>
+  <data name="label31.Text" xml:space="preserve">
+    <value>输入电压:</value>
+  </data>
+  <data name="label32.Size" type="System.Drawing.Size, System.Drawing">
+    <value>94, 13</value>
+  </data>
+  <data name="label32.Text" xml:space="preserve">
+    <value>测量的电池电压:</value>
+  </data>
+  <data name="label33.Size" type="System.Drawing.Size, System.Drawing">
+    <value>58, 13</value>
+  </data>
+  <data name="label33.Text" xml:space="preserve">
+    <value>电池电压:</value>
+  </data>
+  <data name="label34.Size" type="System.Drawing.Size, System.Drawing">
+    <value>52, 13</value>
+  </data>
+  <data name="label34.Text" xml:space="preserve">
+    <value>分 压 比:</value>
+  </data>
+  <data name="label35.Size" type="System.Drawing.Size, System.Drawing">
+    <value>63, 13</value>
+  </data>
+  <data name="label35.Text" xml:space="preserve">
+    <value>安培/伏特:</value>
+  </data>
+  <data name="label47.Size" type="System.Drawing.Size, System.Drawing">
+    <value>48, 18</value>
+  </data>
+  <data name="label47.Text" xml:space="preserve">
+    <value>传感器</value>
+  </data>
+  <data name="textBox3.Text" xml:space="preserve">
+    <value>电压传感器校准:
+1. 测量APM输入电压,输入到下方的文本框中
+2. 测量电池电压,输入到下方的文本框中
+3. 从当前的传感器的数据表中找到安培/伏特,输入到下方的文本框中</value>
+  </data>
+  <data name="label29.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label29.Text" xml:space="preserve">
+    <value>容量</value>
+  </data>
+  <data name="label30.Size" type="System.Drawing.Size, System.Drawing">
+    <value>48, 13</value>
+  </data>
+  <data name="label30.Text" xml:space="preserve">
+    <value>监控器</value>
+  </data>
+  <data name="label28.Size" type="System.Drawing.Size, System.Drawing">
+    <value>175, 13</value>
+  </data>
+  <data name="label28.Text" xml:space="preserve">
+    <value>设置水平面的默认加速度计偏移</value>
+  </data>
+  <data name="label16.Size" type="System.Drawing.Size, System.Drawing">
+    <value>261, 13</value>
+  </data>
+  <data name="label16.Text" xml:space="preserve">
+    <value>注: 图片只是用于展示,设置可以用于六轴等机架</value>
+  </data>
+  <data name="label15.Size" type="System.Drawing.Size, System.Drawing">
+    <value>93, 13</value>
+  </data>
+  <data name="label15.Text" xml:space="preserve">
+    <value>机架设置 (+ 或 x)</value>
+  </data>
+  <data name="BUT_levelac2.Text" xml:space="preserve">
+    <value>找平</value>
+  </data>
+  <data name="BUT_HS4save.Text" xml:space="preserve">
+    <value>手动</value>
+  </data>
+  <data name="BUT_swash_manual.Text" xml:space="preserve">
+    <value>手动</value>
+  </data>
+  <data name="label46.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label46.Text" xml:space="preserve">
+    <value>感度</value>
+  </data>
+  <data name="label45.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label45.Text" xml:space="preserve">
+    <value>启用</value>
+  </data>
+  <data name="label44.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label44.Text" xml:space="preserve">
+    <value>微调</value>
+  </data>
+  <data name="label43.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label43.Text" xml:space="preserve">
+    <value>逆转</value>
+  </data>
+  <data name="label42.Size" type="System.Drawing.Size, System.Drawing">
+    <value>43, 13</value>
+  </data>
+  <data name="label42.Text" xml:space="preserve">
+    <value>方向舵</value>
+  </data>
+  <data name="label24.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label24.Text" xml:space="preserve">
+    <value>最大</value>
+  </data>
+  <data name="label40.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label40.Text" xml:space="preserve">
+    <value>最小</value>
+  </data>
+  <data name="label41.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label41.Text" xml:space="preserve">
+    <value>最低</value>
+  </data>
+  <data name="label21.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label21.Text" xml:space="preserve">
+    <value>最高</value>
+  </data>
+  <data name="BUT_0collective.Text" xml:space="preserve">
+    <value>0度</value>
+  </data>
+  <data name="label39.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label39.Text" xml:space="preserve">
+    <value>微调</value>
+  </data>
+  <data name="label38.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label38.Text" xml:space="preserve">
+    <value>逆转</value>
+  </data>
+  <data name="label37.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label37.Text" xml:space="preserve">
+    <value>位置</value>
+  </data>
+  <data name="label36.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label36.Text" xml:space="preserve">
+    <value>舵机</value>
+  </data>
+  <data name="label26.Size" type="System.Drawing.Size, System.Drawing">
+    <value>55, 13</value>
+  </data>
+  <data name="label26.Text" xml:space="preserve">
+    <value>最大俯仰</value>
+  </data>
+  <data name="label25.Size" type="System.Drawing.Size, System.Drawing">
+    <value>55, 13</value>
+  </data>
+  <data name="label25.Text" xml:space="preserve">
+    <value>最大侧倾</value>
+  </data>
+  <data name="label23.Size" type="System.Drawing.Size, System.Drawing">
+    <value>55, 13</value>
+  </data>
+  <data name="label23.Text" xml:space="preserve">
+    <value>舵机行程</value>
+  </data>
+  <data name="label22.Size" type="System.Drawing.Size, System.Drawing">
+    <value>79, 13</value>
+  </data>
+  <data name="label22.Text" xml:space="preserve">
+    <value>斜盘水平微调</value>
+  </data>
+  <data name="label17.Size" type="System.Drawing.Size, System.Drawing">
+    <value>79, 13</value>
+  </data>
+  <data name="label17.Text" xml:space="preserve">
+    <value>斜盘舵机位置</value>
+  </data>
+  <data name="tabReset.Text" xml:space="preserve">
+    <value>重置</value>
+  </data>
+  <data name="BUT_reset.Text" xml:space="preserve">
+    <value>重置 APM 为默认设置</value>
+  </data>
+  <data name="$this.Text" xml:space="preserve">
+    <value>APM设置</value>
+  </data>
+</root>
\ No newline at end of file
diff --git a/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigRadioInput.zh-TW.resx b/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigRadioInput.zh-TW.resx
new file mode 100644
index 000000000..0c03fbf8e
--- /dev/null
+++ b/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigRadioInput.zh-TW.resx
@@ -0,0 +1,460 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <data name="tabReset.Text" xml:space="preserve">
+    <value>重置</value>
+  </data>
+  <data name="tabRadioIn.Text" xml:space="preserve">
+    <value>遙控輸入</value>
+  </data>
+  <data name="tabModes.Text" xml:space="preserve">
+    <value>模式</value>
+  </data>
+  <data name="tabHardware.Text" xml:space="preserve">
+    <value>硬件</value>
+  </data>
+  <data name="tabBattery.Text" xml:space="preserve">
+    <value>電池</value>
+  </data>
+  <data name="BUT_reset.Text" xml:space="preserve">
+    <value>重置 APM 為默認設置</value>
+  </data>
+  <assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
+  <data name="CHK_revch3.Size" type="System.Drawing.Size, System.Drawing">
+    <value>50, 17</value>
+  </data>
+  <data name="CHK_revch3.Text" xml:space="preserve">
+    <value>逆轉</value>
+  </data>
+  <data name="CHK_revch4.Size" type="System.Drawing.Size, System.Drawing">
+    <value>50, 17</value>
+  </data>
+  <data name="CHK_revch4.Text" xml:space="preserve">
+    <value>逆轉</value>
+  </data>
+  <data name="CHK_revch2.Size" type="System.Drawing.Size, System.Drawing">
+    <value>50, 17</value>
+  </data>
+  <data name="CHK_revch2.Text" xml:space="preserve">
+    <value>逆轉</value>
+  </data>
+  <data name="CHK_revch1.Size" type="System.Drawing.Size, System.Drawing">
+    <value>50, 17</value>
+  </data>
+  <data name="CHK_revch1.Text" xml:space="preserve">
+    <value>逆轉</value>
+  </data>
+  <data name="BUT_Calibrateradio.Text" xml:space="preserve">
+    <value>校準遙控</value>
+  </data>
+  <data name="CB_simple6.Size" type="System.Drawing.Size, System.Drawing">
+    <value>74, 17</value>
+  </data>
+  <data name="CB_simple6.Text" xml:space="preserve">
+    <value>簡單模式</value>
+  </data>
+  <data name="CB_simple5.Size" type="System.Drawing.Size, System.Drawing">
+    <value>74, 17</value>
+  </data>
+  <data name="CB_simple5.Text" xml:space="preserve">
+    <value>簡單模式</value>
+  </data>
+  <data name="CB_simple4.Size" type="System.Drawing.Size, System.Drawing">
+    <value>74, 17</value>
+  </data>
+  <data name="CB_simple4.Text" xml:space="preserve">
+    <value>簡單模式</value>
+  </data>
+  <data name="CB_simple3.Size" type="System.Drawing.Size, System.Drawing">
+    <value>74, 17</value>
+  </data>
+  <data name="CB_simple3.Text" xml:space="preserve">
+    <value>簡單模式</value>
+  </data>
+  <data name="CB_simple2.Size" type="System.Drawing.Size, System.Drawing">
+    <value>74, 17</value>
+  </data>
+  <data name="CB_simple2.Text" xml:space="preserve">
+    <value>簡單模式</value>
+  </data>
+  <data name="CB_simple1.Size" type="System.Drawing.Size, System.Drawing">
+    <value>74, 17</value>
+  </data>
+  <data name="CB_simple1.Text" xml:space="preserve">
+    <value>簡單模式</value>
+  </data>
+  <data name="label14.Size" type="System.Drawing.Size, System.Drawing">
+    <value>64, 13</value>
+  </data>
+  <data name="label14.Text" xml:space="preserve">
+    <value>當前 PWM:</value>
+  </data>
+  <data name="label13.Size" type="System.Drawing.Size, System.Drawing">
+    <value>58, 13</value>
+  </data>
+  <data name="label13.Text" xml:space="preserve">
+    <value>當前模式:</value>
+  </data>
+  <data name="label6.Size" type="System.Drawing.Size, System.Drawing">
+    <value>64, 13</value>
+  </data>
+  <data name="label6.Text" xml:space="preserve">
+    <value>飛行模式 6</value>
+  </data>
+  <data name="label5.Size" type="System.Drawing.Size, System.Drawing">
+    <value>64, 13</value>
+  </data>
+  <data name="label5.Text" xml:space="preserve">
+    <value>飛行模式 5</value>
+  </data>
+  <data name="label4.Size" type="System.Drawing.Size, System.Drawing">
+    <value>64, 13</value>
+  </data>
+  <data name="label4.Text" xml:space="preserve">
+    <value>飛行模式 4</value>
+  </data>
+  <data name="label3.Size" type="System.Drawing.Size, System.Drawing">
+    <value>64, 13</value>
+  </data>
+  <data name="label3.Text" xml:space="preserve">
+    <value>飛行模式 3</value>
+  </data>
+  <data name="label2.Size" type="System.Drawing.Size, System.Drawing">
+    <value>64, 13</value>
+  </data>
+  <data name="label2.Text" xml:space="preserve">
+    <value>飛行模式 2</value>
+  </data>
+  <data name="label1.Size" type="System.Drawing.Size, System.Drawing">
+    <value>64, 13</value>
+  </data>
+  <data name="label1.Text" xml:space="preserve">
+    <value>飛行模式 1</value>
+  </data>
+  <data name="BUT_SaveModes.Text" xml:space="preserve">
+    <value>保存模式</value>
+  </data>
+  <data name="linkLabelmagdec.Size" type="System.Drawing.Size, System.Drawing">
+    <value>67, 13</value>
+  </data>
+  <data name="linkLabelmagdec.Text" xml:space="preserve">
+    <value>磁偏角網站</value>
+  </data>
+  <data name="label100.Text" xml:space="preserve">
+    <value>磁偏角</value>
+  </data>
+  <data name="CHK_enableairspeed.Text" xml:space="preserve">
+    <value>啟用空速計</value>
+  </data>
+  <data name="CHK_enablesonar.Text" xml:space="preserve">
+    <value>啟用聲納</value>
+  </data>
+  <data name="CHK_enablecompass.Text" xml:space="preserve">
+    <value>啟用羅盤</value>
+  </data>
+  <data name="label35.Size" type="System.Drawing.Size, System.Drawing">
+    <value>63, 13</value>
+  </data>
+  <data name="label35.Text" xml:space="preserve">
+    <value>安培/伏特:</value>
+  </data>
+  <data name="label34.Size" type="System.Drawing.Size, System.Drawing">
+    <value>52, 13</value>
+  </data>
+  <data name="label34.Text" xml:space="preserve">
+    <value>分 壓 比:</value>
+  </data>
+  <data name="label33.Size" type="System.Drawing.Size, System.Drawing">
+    <value>58, 13</value>
+  </data>
+  <data name="label33.Text" xml:space="preserve">
+    <value>電池電壓:</value>
+  </data>
+  <data name="label32.Size" type="System.Drawing.Size, System.Drawing">
+    <value>94, 13</value>
+  </data>
+  <data name="label32.Text" xml:space="preserve">
+    <value>測量的電池電壓:</value>
+  </data>
+  <data name="label31.Size" type="System.Drawing.Size, System.Drawing">
+    <value>58, 13</value>
+  </data>
+  <data name="label31.Text" xml:space="preserve">
+    <value>輸入電壓:</value>
+  </data>
+  <data name="textBox3.Text" xml:space="preserve">
+    <value>電壓傳感器校準:
+1. 測量APM輸入電壓,輸入到下方的文本框中
+2. 測量電池電壓,輸入到下方的文本框中
+3. 從當前的傳感器的數據表中找到安培/伏特,輸入到下方的文本框中</value>
+  </data>
+  <data name="label29.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label29.Text" xml:space="preserve">
+    <value>容量</value>
+  </data>
+  <data name="label30.Size" type="System.Drawing.Size, System.Drawing">
+    <value>48, 13</value>
+  </data>
+  <data name="label30.Text" xml:space="preserve">
+    <value>監控器</value>
+  </data>
+  <data name="label28.Size" type="System.Drawing.Size, System.Drawing">
+    <value>175, 13</value>
+  </data>
+  <data name="label28.Text" xml:space="preserve">
+    <value>設置水平面的默認加速度計偏移</value>
+  </data>
+  <data name="label16.Size" type="System.Drawing.Size, System.Drawing">
+    <value>261, 13</value>
+  </data>
+  <data name="label16.Text" xml:space="preserve">
+    <value>注: 圖片只是用於展示,設置可以用於六軸等機架</value>
+  </data>
+  <data name="label15.Size" type="System.Drawing.Size, System.Drawing">
+    <value>93, 13</value>
+  </data>
+  <data name="label15.Text" xml:space="preserve">
+    <value>機架設置 (+ 或 x)</value>
+  </data>
+  <data name="BUT_levelac2.Text" xml:space="preserve">
+    <value>找平</value>
+  </data>
+  <data name="label46.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label46.Text" xml:space="preserve">
+    <value>感度</value>
+  </data>
+  <data name="label45.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label45.Text" xml:space="preserve">
+    <value>啟用</value>
+  </data>
+  <data name="label44.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label44.Text" xml:space="preserve">
+    <value>微調</value>
+  </data>
+  <data name="label43.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label43.Text" xml:space="preserve">
+    <value>逆轉</value>
+  </data>
+  <data name="label42.Size" type="System.Drawing.Size, System.Drawing">
+    <value>43, 13</value>
+  </data>
+  <data name="label42.Text" xml:space="preserve">
+    <value>方向舵</value>
+  </data>
+  <data name="BUT_HS4save.Text" xml:space="preserve">
+    <value>手動</value>
+  </data>
+  <data name="label24.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label24.Text" xml:space="preserve">
+    <value>最大</value>
+  </data>
+  <data name="label40.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label40.Text" xml:space="preserve">
+    <value>最小</value>
+  </data>
+  <data name="BUT_swash_manual.Text" xml:space="preserve">
+    <value>手動</value>
+  </data>
+  <data name="label41.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label41.Text" xml:space="preserve">
+    <value>最低</value>
+  </data>
+  <data name="label21.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label21.Text" xml:space="preserve">
+    <value>最高</value>
+  </data>
+  <data name="BUT_0collective.Text" xml:space="preserve">
+    <value>0度</value>
+  </data>
+  <data name="label39.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label39.Text" xml:space="preserve">
+    <value>微調</value>
+  </data>
+  <data name="label38.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label38.Text" xml:space="preserve">
+    <value>逆轉</value>
+  </data>
+  <data name="label37.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label37.Text" xml:space="preserve">
+    <value>位置</value>
+  </data>
+  <data name="label36.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label36.Text" xml:space="preserve">
+    <value>舵機</value>
+  </data>
+  <data name="label26.Size" type="System.Drawing.Size, System.Drawing">
+    <value>55, 13</value>
+  </data>
+  <data name="label26.Text" xml:space="preserve">
+    <value>最大俯仰</value>
+  </data>
+  <data name="label25.Size" type="System.Drawing.Size, System.Drawing">
+    <value>55, 13</value>
+  </data>
+  <data name="label25.Text" xml:space="preserve">
+    <value>最大側傾</value>
+  </data>
+  <data name="label23.Size" type="System.Drawing.Size, System.Drawing">
+    <value>55, 13</value>
+  </data>
+  <data name="label23.Text" xml:space="preserve">
+    <value>舵機行程</value>
+  </data>
+  <data name="label22.Size" type="System.Drawing.Size, System.Drawing">
+    <value>79, 13</value>
+  </data>
+  <data name="label22.Text" xml:space="preserve">
+    <value>斜盤水平微調</value>
+  </data>
+  <data name="label17.Size" type="System.Drawing.Size, System.Drawing">
+    <value>79, 13</value>
+  </data>
+  <data name="label17.Text" xml:space="preserve">
+    <value>斜盤舵機位置</value>
+  </data>
+  <data name="$this.Text" xml:space="preserve">
+    <value>APM設置</value>
+  </data>
+</root>
\ No newline at end of file
diff --git a/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigRawParams.cs b/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigRawParams.cs
index 5b2c7d1d8..bb6cbb9ce 100644
--- a/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigRawParams.cs
+++ b/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigRawParams.cs
@@ -9,10 +9,11 @@ using System.Linq;
 using System.Text;
 using System.Windows.Forms;
 using log4net;
+using ArdupilotMega.Controls.BackstageView;
 
 namespace ArdupilotMega.GCSViews.ConfigurationView
 {
-    public partial class ConfigRawParams : UserControl
+    public partial class ConfigRawParams : BackStageViewContentPanel
     {
         private static readonly ILog log =
           LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
diff --git a/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigTradHeli.Designer.cs b/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigTradHeli.Designer.cs
index fd4b1fcd6..668c9742f 100644
--- a/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigTradHeli.Designer.cs
+++ b/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigTradHeli.Designer.cs
@@ -28,6 +28,8 @@
         /// </summary>
         private void InitializeComponent()
         {
+            this.components = new System.ComponentModel.Container();
+            System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ConfigTradHeli));
             this.groupBox5 = new System.Windows.Forms.GroupBox();
             this.H1_ENABLE = new System.Windows.Forms.RadioButton();
             this.CCPM = new System.Windows.Forms.RadioButton();
@@ -74,8 +76,14 @@
             this.HS1_REV = new System.Windows.Forms.CheckBox();
             this.label17 = new System.Windows.Forms.Label();
             this.HS4 = new ArdupilotMega.HorizontalProgressBar2();
+            this.currentStateBindingSource = new System.Windows.Forms.BindingSource(this.components);
             this.HS3 = new ArdupilotMega.VerticalProgressBar2();
             this.Gservoloc = new AGaugeApp.AGauge();
+            this.label44 = new System.Windows.Forms.Label();
+            this.label43 = new System.Windows.Forms.Label();
+            this.label42 = new System.Windows.Forms.Label();
+            this.HS4_TRIM = new System.Windows.Forms.NumericUpDown();
+            this.HS4_REV = new System.Windows.Forms.CheckBox();
             this.groupBox5.SuspendLayout();
             this.groupBox3.SuspendLayout();
             this.groupBox1.SuspendLayout();
@@ -83,62 +91,44 @@
             ((System.ComponentModel.ISupportInitialize)(this.HS3_TRIM)).BeginInit();
             ((System.ComponentModel.ISupportInitialize)(this.HS2_TRIM)).BeginInit();
             ((System.ComponentModel.ISupportInitialize)(this.HS1_TRIM)).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)(this.currentStateBindingSource)).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)(this.HS4_TRIM)).BeginInit();
             this.SuspendLayout();
             // 
             // groupBox5
             // 
             this.groupBox5.Controls.Add(this.H1_ENABLE);
             this.groupBox5.Controls.Add(this.CCPM);
-            this.groupBox5.Location = new System.Drawing.Point(257, 11);
+            resources.ApplyResources(this.groupBox5, "groupBox5");
             this.groupBox5.Name = "groupBox5";
-            this.groupBox5.Size = new System.Drawing.Size(120, 43);
-            this.groupBox5.TabIndex = 169;
             this.groupBox5.TabStop = false;
-            this.groupBox5.Text = "Swash Type";
             // 
             // H1_ENABLE
             // 
-            this.H1_ENABLE.AutoSize = true;
-            this.H1_ENABLE.ImeMode = System.Windows.Forms.ImeMode.NoControl;
-            this.H1_ENABLE.Location = new System.Drawing.Point(67, 19);
+            resources.ApplyResources(this.H1_ENABLE, "H1_ENABLE");
             this.H1_ENABLE.Name = "H1_ENABLE";
-            this.H1_ENABLE.Size = new System.Drawing.Size(39, 17);
-            this.H1_ENABLE.TabIndex = 137;
             this.H1_ENABLE.TabStop = true;
-            this.H1_ENABLE.Text = "H1";
             this.H1_ENABLE.UseVisualStyleBackColor = true;
+            this.H1_ENABLE.CheckedChanged += new System.EventHandler(this.H1_ENABLE_CheckedChanged);
             // 
             // CCPM
             // 
-            this.CCPM.AutoSize = true;
-            this.CCPM.ImeMode = System.Windows.Forms.ImeMode.NoControl;
-            this.CCPM.Location = new System.Drawing.Point(6, 19);
+            resources.ApplyResources(this.CCPM, "CCPM");
             this.CCPM.Name = "CCPM";
-            this.CCPM.Size = new System.Drawing.Size(55, 17);
-            this.CCPM.TabIndex = 136;
             this.CCPM.TabStop = true;
-            this.CCPM.Text = "CCPM";
             this.CCPM.UseVisualStyleBackColor = true;
             // 
             // BUT_swash_manual
             // 
-            this.BUT_swash_manual.ImeMode = System.Windows.Forms.ImeMode.NoControl;
-            this.BUT_swash_manual.Location = new System.Drawing.Point(302, 83);
+            resources.ApplyResources(this.BUT_swash_manual, "BUT_swash_manual");
             this.BUT_swash_manual.Name = "BUT_swash_manual";
-            this.BUT_swash_manual.Size = new System.Drawing.Size(69, 23);
-            this.BUT_swash_manual.TabIndex = 138;
-            this.BUT_swash_manual.Text = "Manual";
             this.BUT_swash_manual.UseVisualStyleBackColor = true;
+            this.BUT_swash_manual.Click += new System.EventHandler(this.BUT_swash_manual_Click);
             // 
             // label41
             // 
-            this.label41.AutoSize = true;
-            this.label41.ImeMode = System.Windows.Forms.ImeMode.NoControl;
-            this.label41.Location = new System.Drawing.Point(19, 157);
+            resources.ApplyResources(this.label41, "label41");
             this.label41.Name = "label41";
-            this.label41.Size = new System.Drawing.Size(40, 13);
-            this.label41.TabIndex = 122;
-            this.label41.Text = "Bottom";
             // 
             // groupBox3
             // 
@@ -146,79 +136,49 @@
             this.groupBox3.Controls.Add(this.label45);
             this.groupBox3.Controls.Add(this.GYR_ENABLE);
             this.groupBox3.Controls.Add(this.GYR_GAIN);
-            this.groupBox3.Location = new System.Drawing.Point(437, 314);
+            resources.ApplyResources(this.groupBox3, "groupBox3");
             this.groupBox3.Name = "groupBox3";
-            this.groupBox3.Size = new System.Drawing.Size(101, 63);
-            this.groupBox3.TabIndex = 168;
             this.groupBox3.TabStop = false;
-            this.groupBox3.Text = "Gyro";
             // 
             // label46
             // 
-            this.label46.AutoSize = true;
-            this.label46.ImeMode = System.Windows.Forms.ImeMode.NoControl;
-            this.label46.Location = new System.Drawing.Point(6, 38);
+            resources.ApplyResources(this.label46, "label46");
             this.label46.Name = "label46";
-            this.label46.Size = new System.Drawing.Size(29, 13);
-            this.label46.TabIndex = 137;
-            this.label46.Text = "Gain";
             // 
             // label45
             // 
-            this.label45.AutoSize = true;
-            this.label45.ImeMode = System.Windows.Forms.ImeMode.NoControl;
-            this.label45.Location = new System.Drawing.Point(6, 19);
+            resources.ApplyResources(this.label45, "label45");
             this.label45.Name = "label45";
-            this.label45.Size = new System.Drawing.Size(40, 13);
-            this.label45.TabIndex = 136;
-            this.label45.Text = "Enable";
             // 
             // GYR_ENABLE
             // 
-            this.GYR_ENABLE.AutoSize = true;
-            this.GYR_ENABLE.ImeMode = System.Windows.Forms.ImeMode.NoControl;
-            this.GYR_ENABLE.Location = new System.Drawing.Point(57, 19);
+            resources.ApplyResources(this.GYR_ENABLE, "GYR_ENABLE");
             this.GYR_ENABLE.Name = "GYR_ENABLE";
-            this.GYR_ENABLE.Size = new System.Drawing.Size(15, 14);
-            this.GYR_ENABLE.TabIndex = 118;
             this.GYR_ENABLE.UseVisualStyleBackColor = true;
+            this.GYR_ENABLE.CheckedChanged += new System.EventHandler(this.GYR_ENABLE__CheckedChanged);
             // 
             // GYR_GAIN
             // 
-            this.GYR_GAIN.Location = new System.Drawing.Point(41, 35);
+            resources.ApplyResources(this.GYR_GAIN, "GYR_GAIN");
             this.GYR_GAIN.Name = "GYR_GAIN";
-            this.GYR_GAIN.Size = new System.Drawing.Size(47, 20);
-            this.GYR_GAIN.TabIndex = 119;
-            this.GYR_GAIN.Text = "1000";
+            this.GYR_GAIN.Validating += new System.ComponentModel.CancelEventHandler(this.GYR_GAIN__Validating);
             // 
             // BUT_HS4save
             // 
-            this.BUT_HS4save.ImeMode = System.Windows.Forms.ImeMode.NoControl;
-            this.BUT_HS4save.Location = new System.Drawing.Point(483, 174);
+            resources.ApplyResources(this.BUT_HS4save, "BUT_HS4save");
             this.BUT_HS4save.Name = "BUT_HS4save";
-            this.BUT_HS4save.Size = new System.Drawing.Size(69, 23);
-            this.BUT_HS4save.TabIndex = 167;
-            this.BUT_HS4save.Text = "Manual";
             this.BUT_HS4save.UseVisualStyleBackColor = true;
+            this.BUT_HS4save.Click += new System.EventHandler(this.BUT_HS4save_Click);
             // 
             // label21
             // 
-            this.label21.AutoSize = true;
-            this.label21.ImeMode = System.Windows.Forms.ImeMode.NoControl;
-            this.label21.Location = new System.Drawing.Point(24, 28);
+            resources.ApplyResources(this.label21, "label21");
             this.label21.Name = "label21";
-            this.label21.Size = new System.Drawing.Size(26, 13);
-            this.label21.TabIndex = 120;
-            this.label21.Text = "Top";
             // 
             // COL_MIN
             // 
-            this.COL_MIN.Enabled = false;
-            this.COL_MIN.Location = new System.Drawing.Point(18, 173);
+            resources.ApplyResources(this.COL_MIN, "COL_MIN");
             this.COL_MIN.Name = "COL_MIN";
-            this.COL_MIN.Size = new System.Drawing.Size(43, 20);
-            this.COL_MIN.TabIndex = 119;
-            this.COL_MIN.Text = "1500";
             // 
             // groupBox1
             // 
@@ -228,40 +188,30 @@
             this.groupBox1.Controls.Add(this.COL_MID);
             this.groupBox1.Controls.Add(this.COL_MAX);
             this.groupBox1.Controls.Add(this.BUT_0collective);
-            this.groupBox1.Location = new System.Drawing.Point(297, 95);
+            resources.ApplyResources(this.groupBox1, "groupBox1");
             this.groupBox1.Name = "groupBox1";
-            this.groupBox1.Size = new System.Drawing.Size(80, 209);
-            this.groupBox1.TabIndex = 165;
             this.groupBox1.TabStop = false;
             // 
             // COL_MID
             // 
-            this.COL_MID.Enabled = false;
-            this.COL_MID.Location = new System.Drawing.Point(17, 117);
+            resources.ApplyResources(this.COL_MID, "COL_MID");
             this.COL_MID.Name = "COL_MID";
-            this.COL_MID.Size = new System.Drawing.Size(44, 20);
-            this.COL_MID.TabIndex = 117;
-            this.COL_MID.Text = "1500";
+            this.COL_MID.Validating += new System.ComponentModel.CancelEventHandler(this.PWM_Validating);
             // 
             // COL_MAX
             // 
-            this.COL_MAX.Enabled = false;
-            this.COL_MAX.Location = new System.Drawing.Point(18, 45);
+            resources.ApplyResources(this.COL_MAX, "COL_MAX");
             this.COL_MAX.Name = "COL_MAX";
-            this.COL_MAX.Size = new System.Drawing.Size(43, 20);
-            this.COL_MAX.TabIndex = 115;
-            this.COL_MAX.Text = "1500";
+            this.COL_MAX.Enter += new System.EventHandler(this.COL_MAX__Enter);
+            this.COL_MAX.Leave += new System.EventHandler(this.COL_MAX__Leave);
+            this.COL_MAX.Validating += new System.ComponentModel.CancelEventHandler(this.PWM_Validating);
             // 
             // BUT_0collective
             // 
-            this.BUT_0collective.Enabled = false;
-            this.BUT_0collective.ImeMode = System.Windows.Forms.ImeMode.NoControl;
-            this.BUT_0collective.Location = new System.Drawing.Point(11, 89);
+            resources.ApplyResources(this.BUT_0collective, "BUT_0collective");
             this.BUT_0collective.Name = "BUT_0collective";
-            this.BUT_0collective.Size = new System.Drawing.Size(58, 23);
-            this.BUT_0collective.TabIndex = 110;
-            this.BUT_0collective.Text = "Zero";
             this.BUT_0collective.UseVisualStyleBackColor = true;
+            this.BUT_0collective.Click += new System.EventHandler(this.BUT_0collective_Click);
             // 
             // groupBox2
             // 
@@ -269,53 +219,36 @@
             this.groupBox2.Controls.Add(this.HS4_MIN);
             this.groupBox2.Controls.Add(this.HS4_MAX);
             this.groupBox2.Controls.Add(this.label40);
-            this.groupBox2.Location = new System.Drawing.Point(437, 186);
+            resources.ApplyResources(this.groupBox2, "groupBox2");
             this.groupBox2.Name = "groupBox2";
-            this.groupBox2.Size = new System.Drawing.Size(169, 78);
-            this.groupBox2.TabIndex = 166;
             this.groupBox2.TabStop = false;
             // 
             // label24
             // 
-            this.label24.AutoSize = true;
-            this.label24.ImeMode = System.Windows.Forms.ImeMode.NoControl;
-            this.label24.Location = new System.Drawing.Point(112, 23);
+            resources.ApplyResources(this.label24, "label24");
             this.label24.Name = "label24";
-            this.label24.Size = new System.Drawing.Size(27, 13);
-            this.label24.TabIndex = 135;
-            this.label24.Text = "Max";
             // 
             // HS4_MIN
             // 
-            this.HS4_MIN.Enabled = false;
-            this.HS4_MIN.Location = new System.Drawing.Point(21, 40);
+            resources.ApplyResources(this.HS4_MIN, "HS4_MIN");
             this.HS4_MIN.Name = "HS4_MIN";
-            this.HS4_MIN.Size = new System.Drawing.Size(43, 20);
-            this.HS4_MIN.TabIndex = 132;
-            this.HS4_MIN.Text = "1500";
             // 
             // HS4_MAX
             // 
-            this.HS4_MAX.Enabled = false;
-            this.HS4_MAX.Location = new System.Drawing.Point(106, 40);
+            resources.ApplyResources(this.HS4_MAX, "HS4_MAX");
             this.HS4_MAX.Name = "HS4_MAX";
-            this.HS4_MAX.Size = new System.Drawing.Size(43, 20);
-            this.HS4_MAX.TabIndex = 133;
-            this.HS4_MAX.Text = "1500";
+            this.HS4_MAX.Enter += new System.EventHandler(this.HS4_MAX_Enter);
+            this.HS4_MAX.Leave += new System.EventHandler(this.HS4_MAX_Leave);
+            this.HS4_MAX.Validating += new System.ComponentModel.CancelEventHandler(this.PWM_Validating);
             // 
             // label40
             // 
-            this.label40.AutoSize = true;
-            this.label40.ImeMode = System.Windows.Forms.ImeMode.NoControl;
-            this.label40.Location = new System.Drawing.Point(27, 23);
+            resources.ApplyResources(this.label40, "label40");
             this.label40.Name = "label40";
-            this.label40.Size = new System.Drawing.Size(24, 13);
-            this.label40.TabIndex = 134;
-            this.label40.Text = "Min";
             // 
             // HS3_TRIM
             // 
-            this.HS3_TRIM.Location = new System.Drawing.Point(126, 314);
+            resources.ApplyResources(this.HS3_TRIM, "HS3_TRIM");
             this.HS3_TRIM.Maximum = new decimal(new int[] {
             2000,
             0,
@@ -327,17 +260,16 @@
             0,
             0});
             this.HS3_TRIM.Name = "HS3_TRIM";
-            this.HS3_TRIM.Size = new System.Drawing.Size(44, 20);
-            this.HS3_TRIM.TabIndex = 164;
             this.HS3_TRIM.Value = new decimal(new int[] {
             1500,
             0,
             0,
             0});
+            this.HS3_TRIM.ValueChanged += new System.EventHandler(this.HS3_TRIM_ValueChanged);
             // 
             // HS2_TRIM
             // 
-            this.HS2_TRIM.Location = new System.Drawing.Point(126, 288);
+            resources.ApplyResources(this.HS2_TRIM, "HS2_TRIM");
             this.HS2_TRIM.Maximum = new decimal(new int[] {
             2000,
             0,
@@ -349,17 +281,16 @@
             0,
             0});
             this.HS2_TRIM.Name = "HS2_TRIM";
-            this.HS2_TRIM.Size = new System.Drawing.Size(44, 20);
-            this.HS2_TRIM.TabIndex = 163;
             this.HS2_TRIM.Value = new decimal(new int[] {
             1500,
             0,
             0,
             0});
+            this.HS2_TRIM.ValueChanged += new System.EventHandler(this.HS2_TRIM_ValueChanged);
             // 
             // HS1_TRIM
             // 
-            this.HS1_TRIM.Location = new System.Drawing.Point(126, 262);
+            resources.ApplyResources(this.HS1_TRIM, "HS1_TRIM");
             this.HS1_TRIM.Maximum = new decimal(new int[] {
             2000,
             0,
@@ -371,241 +302,165 @@
             0,
             0});
             this.HS1_TRIM.Name = "HS1_TRIM";
-            this.HS1_TRIM.Size = new System.Drawing.Size(44, 20);
-            this.HS1_TRIM.TabIndex = 162;
             this.HS1_TRIM.Value = new decimal(new int[] {
             1500,
             0,
             0,
             0});
+            this.HS1_TRIM.ValueChanged += new System.EventHandler(this.HS1_TRIM_ValueChanged);
             // 
             // label39
             // 
-            this.label39.AutoSize = true;
-            this.label39.ImeMode = System.Windows.Forms.ImeMode.NoControl;
-            this.label39.Location = new System.Drawing.Point(131, 249);
+            resources.ApplyResources(this.label39, "label39");
             this.label39.Name = "label39";
-            this.label39.Size = new System.Drawing.Size(27, 13);
-            this.label39.TabIndex = 161;
-            this.label39.Text = "Trim";
             // 
             // label38
             // 
-            this.label38.AutoSize = true;
-            this.label38.ImeMode = System.Windows.Forms.ImeMode.NoControl;
-            this.label38.Location = new System.Drawing.Point(102, 249);
+            resources.ApplyResources(this.label38, "label38");
             this.label38.Name = "label38";
-            this.label38.Size = new System.Drawing.Size(27, 13);
-            this.label38.TabIndex = 160;
-            this.label38.Text = "Rev";
             // 
             // label37
             // 
-            this.label37.AutoSize = true;
-            this.label37.ImeMode = System.Windows.Forms.ImeMode.NoControl;
-            this.label37.Location = new System.Drawing.Point(54, 249);
+            resources.ApplyResources(this.label37, "label37");
             this.label37.Name = "label37";
-            this.label37.Size = new System.Drawing.Size(44, 13);
-            this.label37.TabIndex = 159;
-            this.label37.Text = "Position";
             // 
             // label36
             // 
-            this.label36.AutoSize = true;
-            this.label36.ImeMode = System.Windows.Forms.ImeMode.NoControl;
-            this.label36.Location = new System.Drawing.Point(17, 249);
+            resources.ApplyResources(this.label36, "label36");
             this.label36.Name = "label36";
-            this.label36.Size = new System.Drawing.Size(35, 13);
-            this.label36.TabIndex = 158;
-            this.label36.Text = "Servo";
             // 
             // label26
             // 
-            this.label26.AutoSize = true;
-            this.label26.ImeMode = System.Windows.Forms.ImeMode.NoControl;
-            this.label26.Location = new System.Drawing.Point(260, 365);
+            resources.ApplyResources(this.label26, "label26");
             this.label26.Name = "label26";
-            this.label26.Size = new System.Drawing.Size(54, 13);
-            this.label26.TabIndex = 157;
-            this.label26.Text = "Pitch Max";
             // 
             // PIT_MAX
             // 
-            this.PIT_MAX.Location = new System.Drawing.Point(314, 362);
+            resources.ApplyResources(this.PIT_MAX, "PIT_MAX");
             this.PIT_MAX.Name = "PIT_MAX";
-            this.PIT_MAX.Size = new System.Drawing.Size(47, 20);
-            this.PIT_MAX.TabIndex = 156;
-            this.PIT_MAX.Text = "4500";
+            this.PIT_MAX.Validating += new System.ComponentModel.CancelEventHandler(this.PIT_MAX__Validating);
             // 
             // label25
             // 
-            this.label25.AutoSize = true;
-            this.label25.ImeMode = System.Windows.Forms.ImeMode.NoControl;
-            this.label25.Location = new System.Drawing.Point(260, 341);
+            resources.ApplyResources(this.label25, "label25");
             this.label25.Name = "label25";
-            this.label25.Size = new System.Drawing.Size(48, 13);
-            this.label25.TabIndex = 155;
-            this.label25.Text = "Roll Max";
             // 
             // ROL_MAX
             // 
-            this.ROL_MAX.Location = new System.Drawing.Point(314, 336);
+            resources.ApplyResources(this.ROL_MAX, "ROL_MAX");
             this.ROL_MAX.Name = "ROL_MAX";
-            this.ROL_MAX.Size = new System.Drawing.Size(47, 20);
-            this.ROL_MAX.TabIndex = 154;
-            this.ROL_MAX.Text = "4500";
+            this.ROL_MAX.Validating += new System.ComponentModel.CancelEventHandler(this.ROL_MAX__Validating);
             // 
             // label23
             // 
-            this.label23.AutoSize = true;
-            this.label23.ImeMode = System.Windows.Forms.ImeMode.NoControl;
-            this.label23.Location = new System.Drawing.Point(480, 66);
+            resources.ApplyResources(this.label23, "label23");
             this.label23.Name = "label23";
-            this.label23.Size = new System.Drawing.Size(75, 13);
-            this.label23.TabIndex = 153;
-            this.label23.Text = "Rudder Travel";
             // 
             // label22
             // 
-            this.label22.AutoSize = true;
-            this.label22.ImeMode = System.Windows.Forms.ImeMode.NoControl;
-            this.label22.Location = new System.Drawing.Point(236, 66);
+            resources.ApplyResources(this.label22, "label22");
             this.label22.Name = "label22";
-            this.label22.Size = new System.Drawing.Size(72, 13);
-            this.label22.TabIndex = 150;
-            this.label22.Text = "Swash Travel";
             // 
             // label20
             // 
-            this.label20.AutoSize = true;
-            this.label20.ImeMode = System.Windows.Forms.ImeMode.NoControl;
-            this.label20.Location = new System.Drawing.Point(27, 317);
+            resources.ApplyResources(this.label20, "label20");
             this.label20.Name = "label20";
-            this.label20.Size = new System.Drawing.Size(13, 13);
-            this.label20.TabIndex = 149;
-            this.label20.Text = "3";
             // 
             // label19
             // 
-            this.label19.AutoSize = true;
-            this.label19.ImeMode = System.Windows.Forms.ImeMode.NoControl;
-            this.label19.Location = new System.Drawing.Point(27, 291);
+            resources.ApplyResources(this.label19, "label19");
             this.label19.Name = "label19";
-            this.label19.Size = new System.Drawing.Size(13, 13);
-            this.label19.TabIndex = 148;
-            this.label19.Text = "2";
             // 
             // label18
             // 
-            this.label18.AutoSize = true;
-            this.label18.ImeMode = System.Windows.Forms.ImeMode.NoControl;
-            this.label18.Location = new System.Drawing.Point(27, 265);
+            resources.ApplyResources(this.label18, "label18");
             this.label18.Name = "label18";
-            this.label18.Size = new System.Drawing.Size(13, 13);
-            this.label18.TabIndex = 147;
-            this.label18.Text = "1";
             // 
             // SV3_POS
             // 
-            this.SV3_POS.Location = new System.Drawing.Point(57, 314);
+            resources.ApplyResources(this.SV3_POS, "SV3_POS");
             this.SV3_POS.Name = "SV3_POS";
-            this.SV3_POS.Size = new System.Drawing.Size(39, 20);
-            this.SV3_POS.TabIndex = 146;
-            this.SV3_POS.Text = "180";
+            this.SV3_POS.Validating += new System.ComponentModel.CancelEventHandler(this.TXT_srvpos3_Validating);
             // 
             // SV2_POS
             // 
-            this.SV2_POS.Location = new System.Drawing.Point(57, 288);
+            resources.ApplyResources(this.SV2_POS, "SV2_POS");
             this.SV2_POS.Name = "SV2_POS";
-            this.SV2_POS.Size = new System.Drawing.Size(39, 20);
-            this.SV2_POS.TabIndex = 145;
-            this.SV2_POS.Text = "60";
+            this.SV2_POS.Validating += new System.ComponentModel.CancelEventHandler(this.TXT_srvpos2_Validating);
             // 
             // SV1_POS
             // 
-            this.SV1_POS.Location = new System.Drawing.Point(57, 262);
+            resources.ApplyResources(this.SV1_POS, "SV1_POS");
             this.SV1_POS.Name = "SV1_POS";
-            this.SV1_POS.Size = new System.Drawing.Size(39, 20);
-            this.SV1_POS.TabIndex = 144;
-            this.SV1_POS.Text = "-60";
+            this.SV1_POS.Validating += new System.ComponentModel.CancelEventHandler(this.TXT_srvpos1_Validating);
             // 
             // HS3_REV
             // 
-            this.HS3_REV.AutoSize = true;
-            this.HS3_REV.ImeMode = System.Windows.Forms.ImeMode.NoControl;
-            this.HS3_REV.Location = new System.Drawing.Point(105, 317);
+            resources.ApplyResources(this.HS3_REV, "HS3_REV");
             this.HS3_REV.Name = "HS3_REV";
-            this.HS3_REV.Size = new System.Drawing.Size(15, 14);
-            this.HS3_REV.TabIndex = 143;
             this.HS3_REV.UseVisualStyleBackColor = true;
+            this.HS3_REV.CheckedChanged += new System.EventHandler(this.HS3_REV_CheckedChanged);
             // 
             // HS2_REV
             // 
-            this.HS2_REV.AutoSize = true;
-            this.HS2_REV.ImeMode = System.Windows.Forms.ImeMode.NoControl;
-            this.HS2_REV.Location = new System.Drawing.Point(105, 291);
+            resources.ApplyResources(this.HS2_REV, "HS2_REV");
             this.HS2_REV.Name = "HS2_REV";
-            this.HS2_REV.Size = new System.Drawing.Size(15, 14);
-            this.HS2_REV.TabIndex = 142;
             this.HS2_REV.UseVisualStyleBackColor = true;
+            this.HS2_REV.CheckedChanged += new System.EventHandler(this.HS2_REV_CheckedChanged);
             // 
             // HS1_REV
             // 
-            this.HS1_REV.AutoSize = true;
-            this.HS1_REV.ImeMode = System.Windows.Forms.ImeMode.NoControl;
-            this.HS1_REV.Location = new System.Drawing.Point(105, 268);
+            resources.ApplyResources(this.HS1_REV, "HS1_REV");
             this.HS1_REV.Name = "HS1_REV";
-            this.HS1_REV.Size = new System.Drawing.Size(15, 14);
-            this.HS1_REV.TabIndex = 141;
             this.HS1_REV.UseVisualStyleBackColor = true;
+            this.HS1_REV.CheckedChanged += new System.EventHandler(this.HS1_REV_CheckedChanged);
             // 
             // label17
             // 
-            this.label17.AutoSize = true;
-            this.label17.ImeMode = System.Windows.Forms.ImeMode.NoControl;
-            this.label17.Location = new System.Drawing.Point(42, 66);
+            resources.ApplyResources(this.label17, "label17");
             this.label17.Name = "label17";
-            this.label17.Size = new System.Drawing.Size(109, 13);
-            this.label17.TabIndex = 140;
-            this.label17.Text = "Swash-Servo position";
             // 
             // HS4
             // 
             this.HS4.BackgroundColor = System.Drawing.Color.FromArgb(((int)(((byte)(67)))), ((int)(((byte)(68)))), ((int)(((byte)(69)))));
             this.HS4.BorderColor = System.Drawing.SystemColors.ActiveBorder;
+            this.HS4.DataBindings.Add(new System.Windows.Forms.Binding("Value", this.currentStateBindingSource, "ch4in", true));
             this.HS4.Label = "Rudder";
-            this.HS4.Location = new System.Drawing.Point(396, 93);
+            resources.ApplyResources(this.HS4, "HS4");
             this.HS4.Maximum = 2200;
             this.HS4.maxline = 0;
             this.HS4.Minimum = 800;
             this.HS4.minline = 0;
             this.HS4.Name = "HS4";
-            this.HS4.Size = new System.Drawing.Size(242, 42);
-            this.HS4.TabIndex = 152;
             this.HS4.Value = 1500;
             this.HS4.ValueColor = System.Drawing.Color.FromArgb(((int)(((byte)(148)))), ((int)(((byte)(193)))), ((int)(((byte)(31)))));
+            this.HS4.Paint += new System.Windows.Forms.PaintEventHandler(this.HS4_Paint);
+            // 
+            // currentStateBindingSource
+            // 
+            this.currentStateBindingSource.DataSource = typeof(ArdupilotMega.CurrentState);
             // 
             // HS3
             // 
             this.HS3.BackgroundColor = System.Drawing.Color.FromArgb(((int)(((byte)(67)))), ((int)(((byte)(68)))), ((int)(((byte)(69)))));
             this.HS3.BorderColor = System.Drawing.SystemColors.ActiveBorder;
+            this.HS3.DataBindings.Add(new System.Windows.Forms.Binding("Value", this.currentStateBindingSource, "ch3in", true));
             this.HS3.Label = "Collective";
-            this.HS3.Location = new System.Drawing.Point(239, 95);
+            resources.ApplyResources(this.HS3, "HS3");
             this.HS3.Maximum = 2200;
             this.HS3.maxline = 0;
             this.HS3.Minimum = 800;
             this.HS3.minline = 0;
             this.HS3.Name = "HS3";
-            this.HS3.Size = new System.Drawing.Size(42, 213);
-            this.HS3.TabIndex = 151;
             this.HS3.Value = 1500;
             this.HS3.ValueColor = System.Drawing.Color.FromArgb(((int)(((byte)(148)))), ((int)(((byte)(193)))), ((int)(((byte)(31)))));
+            this.HS3.Paint += new System.Windows.Forms.PaintEventHandler(this.HS3_Paint);
             // 
             // Gservoloc
             // 
             this.Gservoloc.BackColor = System.Drawing.Color.Transparent;
             this.Gservoloc.BackgroundImage = global::ArdupilotMega.Properties.Resources.Gaugebg;
-            this.Gservoloc.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom;
+            resources.ApplyResources(this.Gservoloc, "Gservoloc");
             this.Gservoloc.BaseArcColor = System.Drawing.Color.Transparent;
             this.Gservoloc.BaseArcRadius = 60;
             this.Gservoloc.BaseArcStart = 90;
@@ -635,9 +490,6 @@
         ""};
             this.Gservoloc.CapText = "Position";
             this.Gservoloc.Center = new System.Drawing.Point(75, 75);
-            this.Gservoloc.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F);
-            this.Gservoloc.Location = new System.Drawing.Point(20, 93);
-            this.Gservoloc.Margin = new System.Windows.Forms.Padding(0);
             this.Gservoloc.MaxValue = 180F;
             this.Gservoloc.MinValue = -180F;
             this.Gservoloc.Name = "Gservoloc";
@@ -741,18 +593,64 @@
             this.Gservoloc.ScaleNumbersRotation = 45;
             this.Gservoloc.ScaleNumbersStartScaleLine = 2;
             this.Gservoloc.ScaleNumbersStepScaleLines = 1;
-            this.Gservoloc.Size = new System.Drawing.Size(150, 150);
-            this.Gservoloc.TabIndex = 139;
             this.Gservoloc.Value = 0F;
             this.Gservoloc.Value0 = -60F;
             this.Gservoloc.Value1 = 60F;
             this.Gservoloc.Value2 = 180F;
             this.Gservoloc.Value3 = 0F;
             // 
+            // label44
+            // 
+            resources.ApplyResources(this.label44, "label44");
+            this.label44.Name = "label44";
+            // 
+            // label43
+            // 
+            resources.ApplyResources(this.label43, "label43");
+            this.label43.Name = "label43";
+            // 
+            // label42
+            // 
+            resources.ApplyResources(this.label42, "label42");
+            this.label42.Name = "label42";
+            // 
+            // HS4_TRIM
+            // 
+            resources.ApplyResources(this.HS4_TRIM, "HS4_TRIM");
+            this.HS4_TRIM.Maximum = new decimal(new int[] {
+            2000,
+            0,
+            0,
+            0});
+            this.HS4_TRIM.Minimum = new decimal(new int[] {
+            1000,
+            0,
+            0,
+            0});
+            this.HS4_TRIM.Name = "HS4_TRIM";
+            this.HS4_TRIM.Value = new decimal(new int[] {
+            1500,
+            0,
+            0,
+            0});
+            this.HS4_TRIM.ValueChanged += new System.EventHandler(this.HS4_TRIM_ValueChanged);
+            // 
+            // HS4_REV
+            // 
+            resources.ApplyResources(this.HS4_REV, "HS4_REV");
+            this.HS4_REV.Name = "HS4_REV";
+            this.HS4_REV.UseVisualStyleBackColor = true;
+            this.HS4_REV.CheckedChanged += new System.EventHandler(this.HS4_REV_CheckedChanged);
+            // 
             // ConfigTradHeli
             // 
-            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+            resources.ApplyResources(this, "$this");
             this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+            this.Controls.Add(this.label44);
+            this.Controls.Add(this.label43);
+            this.Controls.Add(this.label42);
+            this.Controls.Add(this.HS4_TRIM);
+            this.Controls.Add(this.HS4_REV);
             this.Controls.Add(this.groupBox5);
             this.Controls.Add(this.BUT_swash_manual);
             this.Controls.Add(this.groupBox3);
@@ -786,7 +684,7 @@
             this.Controls.Add(this.HS3);
             this.Controls.Add(this.Gservoloc);
             this.Name = "ConfigTradHeli";
-            this.Size = new System.Drawing.Size(654, 397);
+            this.Load += new System.EventHandler(this.ConfigTradHeli_Load);
             this.groupBox5.ResumeLayout(false);
             this.groupBox5.PerformLayout();
             this.groupBox3.ResumeLayout(false);
@@ -798,6 +696,8 @@
             ((System.ComponentModel.ISupportInitialize)(this.HS3_TRIM)).EndInit();
             ((System.ComponentModel.ISupportInitialize)(this.HS2_TRIM)).EndInit();
             ((System.ComponentModel.ISupportInitialize)(this.HS1_TRIM)).EndInit();
+            ((System.ComponentModel.ISupportInitialize)(this.currentStateBindingSource)).EndInit();
+            ((System.ComponentModel.ISupportInitialize)(this.HS4_TRIM)).EndInit();
             this.ResumeLayout(false);
             this.PerformLayout();
 
@@ -853,5 +753,11 @@
         private HorizontalProgressBar2 HS4;
         private VerticalProgressBar2 HS3;
         private AGaugeApp.AGauge Gservoloc;
+        private System.Windows.Forms.BindingSource currentStateBindingSource;
+        private System.Windows.Forms.Label label44;
+        private System.Windows.Forms.Label label43;
+        private System.Windows.Forms.Label label42;
+        private System.Windows.Forms.NumericUpDown HS4_TRIM;
+        private System.Windows.Forms.CheckBox HS4_REV;
     }
 }
diff --git a/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigTradHeli.cs b/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigTradHeli.cs
index 7c90f1b31..59522dfaf 100644
--- a/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigTradHeli.cs
+++ b/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigTradHeli.cs
@@ -6,16 +6,484 @@ using System.Data;
 using System.Linq;
 using System.Text;
 using System.Windows.Forms;
+using ArdupilotMega.Controls.BackstageView;
 
 namespace ArdupilotMega.GCSViews.ConfigurationView
 {
-    public partial class ConfigTradHeli : UserControl
+    public partial class ConfigTradHeli : BackStageViewContentPanel
     {
+        bool startup = false;
+        bool inpwmdetect = false;
+
+        Timer timer = new Timer();
+
         public ConfigTradHeli()
         {
             InitializeComponent();
         }
 
+        private void H1_ENABLE_CheckedChanged(object sender, EventArgs e)
+        {
+            if (startup)
+                return;
+            try
+            {
+                if (MainV2.comPort.param["H1_ENABLE"] == null)
+                {
+                    CustomMessageBox.Show("Not Available on " + MainV2.cs.firmware.ToString());
+                }
+                else
+                {
+                    MainV2.comPort.setParam("H1_ENABLE", ((RadioButton)sender).Checked == true ? 1 : 0);
+                }
+            }
+            catch { CustomMessageBox.Show("Set H1_ENABLE Failed"); }
+        }
+
+        private void BUT_swash_manual_Click(object sender, EventArgs e)
+        {
+            try
+            {
+                if (MainV2.comPort.param["HSV_MAN"].ToString() == "1")
+                {
+                    MainV2.comPort.setParam("COL_MIN", int.Parse(COL_MIN.Text));
+                    MainV2.comPort.setParam("COL_MAX", int.Parse(COL_MAX.Text));
+                    MainV2.comPort.setParam("HSV_MAN", 0); // randy request - last
+                    BUT_swash_manual.Text = "Manual";
+
+                    COL_MAX.Enabled = false;
+                    COL_MID.Enabled = false;
+                    COL_MIN.Enabled = false;
+                    BUT_0collective.Enabled = false;
+                }
+                else
+                {
+                    COL_MAX.Text = "1500";
+                    COL_MIN.Text = "1500";
+                    MainV2.comPort.setParam("HSV_MAN", 1); // randy request
+                    BUT_swash_manual.Text = "Save";
+
+                    COL_MAX.Enabled = true;
+                    COL_MID.Enabled = true;
+                    COL_MIN.Enabled = true;
+                    BUT_0collective.Enabled = true;
+                }
+            }
+            catch { CustomMessageBox.Show("Failed to set HSV_MAN"); }
+        }
+
+        private void BUT_HS4save_Click(object sender, EventArgs e)
+        {
+            try
+            {
+                if (MainV2.comPort.param["HSV_MAN"].ToString() == "1")
+                {
+                    MainV2.comPort.setParam("HS4_MIN", int.Parse(HS4_MIN.Text));
+                    MainV2.comPort.setParam("HS4_MAX", int.Parse(HS4_MAX.Text));
+                    MainV2.comPort.setParam("HSV_MAN", 0); // randy request - last
+                    BUT_HS4save.Text = "Manual";
+
+                    HS4_MAX.Enabled = false;
+                    HS4_MIN.Enabled = false;
+                }
+                else
+                {
+                    HS4_MIN.Text = "1500";
+                    HS4_MAX.Text = "1500";
+                    MainV2.comPort.setParam("HSV_MAN", 1); // randy request
+                    BUT_HS4save.Text = "Save";
+
+
+                    HS4_MAX.Enabled = true;
+                    HS4_MIN.Enabled = true;
+                }
+            }
+            catch { CustomMessageBox.Show("Failed to set HSV_MAN"); }
+        }
+
+        private void tabHeli_Click(object sender, EventArgs e)
+        {
+
+        }
+
+        private void HS4_Paint(object sender, PaintEventArgs e)
+        {
+            try
+            {
+                if (int.Parse(HS4_MIN.Text) > HS4.minline)
+                    HS4_MIN.Text = HS4.minline.ToString();
+                if (int.Parse(HS4_MAX.Text) < HS4.maxline)
+                    HS4_MAX.Text = HS4.maxline.ToString();
+            }
+            catch { }
+        }
+
+        private void HS3_Paint(object sender, PaintEventArgs e)
+        {
+            try
+            {
+                if (int.Parse(COL_MIN.Text) > HS3.minline)
+                    COL_MIN.Text = HS3.minline.ToString();
+                if (int.Parse(COL_MAX.Text) < HS3.maxline)
+                    COL_MAX.Text = HS3.maxline.ToString();
+            }
+            catch { }
+        }
+
+        private void COL_MAX__Enter(object sender, EventArgs e)
+        {
+            inpwmdetect = true;
+        }
+
+        private void COL_MIN__Enter(object sender, EventArgs e)
+        {
+            inpwmdetect = true;
+        }
+
+        private void COL_MAX__Leave(object sender, EventArgs e)
+        {
+            inpwmdetect = false;
+        }
+
+        private void COL_MIN__Leave(object sender, EventArgs e)
+        {
+            inpwmdetect = false;
+        }
+
+        private void HS4_MIN_Enter(object sender, EventArgs e)
+        {
+            inpwmdetect = true;
+        }
+
+        private void HS4_MIN_Leave(object sender, EventArgs e)
+        {
+            inpwmdetect = false;
+        }
+
+        private void HS4_MAX_Enter(object sender, EventArgs e)
+        {
+            inpwmdetect = true;
+        }
+
+        private void HS4_MAX_Leave(object sender, EventArgs e)
+        {
+            inpwmdetect = false;
+        }
+
+        private void PWM_Validating(object sender, CancelEventArgs e)
+        {
+            Control temp = (Control)(sender);
+
+            if (int.Parse(temp.Text) < 900)
+                temp.Text = "900";
+            if (int.Parse(temp.Text) > 2100)
+                temp.Text = "2100";
+        }
+
+        private void TXT_srvpos1_Validating(object sender, CancelEventArgs e)
+        {
+            if (startup || this.Disposing)
+                return;
+            int test = 0;
+            if (!int.TryParse(((TextBox)sender).Text, out test))
+            {
+                e.Cancel = true;
+            }
+
+            Gservoloc.Value0 = test;
+
+            try
+            {
+                MainV2.comPort.setParam("HSV_MAN", 1); // randy request
+                MainV2.comPort.setParam(((TextBox)sender).Name, test);
+                System.Threading.Thread.Sleep(100);
+                MainV2.comPort.setParam("HSV_MAN", 0); // randy request - last
+
+            }
+            catch { CustomMessageBox.Show("Set " + ((TextBox)sender).Name + " failed"); }
+        }
+
+        private void TXT_srvpos2_Validating(object sender, CancelEventArgs e)
+        {
+            if (startup || this.Disposing)
+                return;
+            int test = 0;
+            if (!int.TryParse(((TextBox)sender).Text, out test))
+            {
+                e.Cancel = true;
+            }
+
+            Gservoloc.Value1 = test;
+
+            try
+            {
+                MainV2.comPort.setParam("HSV_MAN", 1); // randy request
+                MainV2.comPort.setParam(((TextBox)sender).Name, test);
+                System.Threading.Thread.Sleep(100);
+                MainV2.comPort.setParam("HSV_MAN", 0); // randy request - last
+            }
+            catch { CustomMessageBox.Show("Set " + ((TextBox)sender).Name + " failed"); }
+        }
+
+        private void TXT_srvpos3_Validating(object sender, CancelEventArgs e)
+        {
+            if (startup || this.Disposing)
+                return;
+            int test = 0;
+            if (!int.TryParse(((TextBox)sender).Text, out test))
+            {
+                e.Cancel = true;
+            }
+
+            Gservoloc.Value2 = test;
 
+            try
+            {
+                MainV2.comPort.setParam("HSV_MAN", 1); // randy request
+                MainV2.comPort.setParam(((TextBox)sender).Name, test);
+                System.Threading.Thread.Sleep(100);
+                MainV2.comPort.setParam("HSV_MAN", 0); // randy request - last
+            }
+            catch { CustomMessageBox.Show("Set " + ((TextBox)sender).Name + " failed"); }
+        }
+
+        private void BUT_0collective_Click(object sender, EventArgs e)
+        {
+            CustomMessageBox.Show("Make sure your blades are at 0 degrees");
+
+            try
+            {
+
+                MainV2.comPort.setParam("COL_MID", MainV2.cs.ch3in);
+
+                COL_MID.Text = MainV2.comPort.param["COL_MID"].ToString();
+            }
+            catch { CustomMessageBox.Show("Set COL_MID_ failed"); }
+        }
+
+        private void HS1_REV_CheckedChanged(object sender, EventArgs e)
+        {
+            if (startup)
+                return;
+            MainV2.comPort.setParam(((CheckBox)sender).Name, ((CheckBox)sender).Checked == false ? 1.0f : -1.0f);
+        }
+
+        private void HS2_REV_CheckedChanged(object sender, EventArgs e)
+        {
+            if (startup)
+                return;
+            MainV2.comPort.setParam(((CheckBox)sender).Name, ((CheckBox)sender).Checked == false ? 1.0f : -1.0f);
+        }
+
+        private void HS3_REV_CheckedChanged(object sender, EventArgs e)
+        {
+            if (startup)
+                return;
+            MainV2.comPort.setParam(((CheckBox)sender).Name, ((CheckBox)sender).Checked == false ? 1.0f : -1.0f);
+        }
+
+        private void HS4_REV_CheckedChanged(object sender, EventArgs e)
+        {
+            if (startup)
+                return;
+            MainV2.comPort.setParam(((CheckBox)sender).Name, ((CheckBox)sender).Checked == false ? 1.0f : -1.0f);
+        }
+
+        private void HS1_TRIM_ValueChanged(object sender, EventArgs e)
+        {
+            if (startup)
+                return;
+            MainV2.comPort.setParam(((NumericUpDown)sender).Name, (float)((NumericUpDown)sender).Value);
+        }
+
+        private void HS2_TRIM_ValueChanged(object sender, EventArgs e)
+        {
+            if (startup)
+                return;
+            MainV2.comPort.setParam(((NumericUpDown)sender).Name, (float)((NumericUpDown)sender).Value);
+        }
+
+        private void HS3_TRIM_ValueChanged(object sender, EventArgs e)
+        {
+            if (startup)
+                return;
+            MainV2.comPort.setParam(((NumericUpDown)sender).Name, (float)((NumericUpDown)sender).Value);
+        }
+
+        private void HS4_TRIM_ValueChanged(object sender, EventArgs e)
+        {
+            if (startup)
+                return;
+            MainV2.comPort.setParam(((NumericUpDown)sender).Name, (float)((NumericUpDown)sender).Value);
+        }
+
+        private void ROL_MAX__Validating(object sender, CancelEventArgs e)
+        {
+            if (startup || this.Disposing)
+                return;
+            int test = 0;
+            if (!int.TryParse(((TextBox)sender).Text, out test))
+            {
+                e.Cancel = true;
+            }
+
+            MainV2.comPort.setParam(((TextBox)sender).Name, test);
+        }
+
+        private void PIT_MAX__Validating(object sender, CancelEventArgs e)
+        {
+            if (startup || this.Disposing)
+                return;
+            int test = 0;
+            if (!int.TryParse(((TextBox)sender).Text, out test))
+            {
+                e.Cancel = true;
+            }
+
+            MainV2.comPort.setParam(((TextBox)sender).Name, test);
+        }
+
+        private void GYR_GAIN__Validating(object sender, CancelEventArgs e)
+        {
+            if (startup || this.Disposing || ((TextBox)sender).Enabled == false)
+                return;
+            int test = 0;
+            if (!int.TryParse(((TextBox)sender).Text, out test))
+            {
+                e.Cancel = true;
+            }
+
+            try
+            {
+                MainV2.comPort.setParam(((TextBox)sender).Name, test);
+            }
+            catch { CustomMessageBox.Show("Failed to set Gyro Gain"); }
+        }
+
+        private void GYR_ENABLE__CheckedChanged(object sender, EventArgs e)
+        {
+            if (startup)
+                return;
+            MainV2.comPort.setParam(((CheckBox)sender).Name, ((CheckBox)sender).Checked == true ? 1.0f : 0.0f);
+        }
+
+        private void ConfigTradHeli_Load(object sender, EventArgs e)
+        {
+            if (!MainV2.comPort.BaseStream.IsOpen)
+            {
+                this.Enabled = false;
+                return;
+            }
+            else
+            {
+                this.Enabled = true;
+            }
+
+            if (MainV2.comPort.param["GYR_ENABLE"] == null)
+            {
+                this.Enabled = false;
+                return;
+            }
+
+            timer.Tick += new EventHandler(timer_Tick);
+
+            timer.Enabled = true;
+            timer.Interval = 100;
+            timer.Start();
+
+            startup = true;
+            try
+            {
+                if (MainV2.comPort.param.ContainsKey("H1_ENABLE"))
+                {
+                    CCPM.Checked = MainV2.comPort.param["H1_ENABLE"].ToString() == "0" ? true : false;
+                    H1_ENABLE.Checked = !CCPM.Checked;
+                }
+
+                foreach (string value in MainV2.comPort.param.Keys)
+                {
+                    if (value == "")
+                        continue;
+
+                    Control[] control = this.Controls.Find(value, true);
+                    if (control.Length > 0)
+                    {
+                        if (control[0].GetType() == typeof(TextBox))
+                        {
+                            TextBox temp = (TextBox)control[0];
+                            string option = MainV2.comPort.param[value].ToString();
+                            temp.Text = option;
+                        }
+                        if (control[0].GetType() == typeof(NumericUpDown))
+                        {
+                            NumericUpDown temp = (NumericUpDown)control[0];
+                            string option = MainV2.comPort.param[value].ToString();
+                            temp.Text = option;
+                        }
+                        if (control[0].GetType() == typeof(CheckBox))
+                        {
+                            CheckBox temp = (CheckBox)control[0];
+                            string option = MainV2.comPort.param[value].ToString();
+                            temp.Checked = option == "1" ? true : false;
+                        }
+                        if (control[0].GetType() == typeof(MyTrackBar))
+                        {
+                            MyTrackBar temp = (MyTrackBar)control[0];
+                            string option = MainV2.comPort.param[value].ToString();
+                            temp.Value = int.Parse(option);
+                        }
+                    }
+                }
+
+                HS1_REV.Checked = MainV2.comPort.param["HS1_REV"].ToString() == "-1";
+                HS2_REV.Checked = MainV2.comPort.param["HS2_REV"].ToString() == "-1";
+                HS3_REV.Checked = MainV2.comPort.param["HS3_REV"].ToString() == "-1";
+                HS4_REV.Checked = MainV2.comPort.param["HS4_REV"].ToString() == "-1";
+
+            }
+            catch { }
+            startup = false;
+        }
+
+        void timer_Tick(object sender, EventArgs e)
+        {
+            try
+            {
+                MainV2.cs.UpdateCurrentSettings(currentStateBindingSource);
+            }
+            catch { }
+
+            if (MainV2.comPort.param["HSV_MAN"] == null || MainV2.comPort.param["HSV_MAN"].ToString() == "0")
+                return;
+
+            if (HS3.minline == 0)
+                HS3.minline = 2200;
+
+            if (HS4.minline == 0)
+                HS4.minline = 2200;
+
+            HS3.minline = Math.Min(HS3.minline, (int)MainV2.cs.ch3in);
+            HS3.maxline = Math.Max(HS3.maxline, (int)MainV2.cs.ch3in);
+
+            HS4.minline = Math.Min(HS4.minline, (int)MainV2.cs.ch4in);
+            HS4.maxline = Math.Max(HS4.maxline, (int)MainV2.cs.ch4in);
+
+            if (!inpwmdetect)
+            {
+                HS3_Paint(null, null);
+                HS4_Paint(null, null);
+            }
+            else
+            {
+                try
+                {
+                    HS3.minline = int.Parse(COL_MIN.Text);
+                    HS3.maxline = int.Parse(COL_MAX.Text);
+                    HS4.maxline = int.Parse(HS4_MIN.Text);
+                    HS4.minline = int.Parse(HS4_MAX.Text);
+                }
+                catch { }
+            }
+        }
     }
 }
diff --git a/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigTradHeli.es-ES.resx b/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigTradHeli.es-ES.resx
new file mode 100644
index 000000000..70ad73f1a
--- /dev/null
+++ b/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigTradHeli.es-ES.resx
@@ -0,0 +1,315 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <data name="SV3_POS_.Text" xml:space="preserve">
+    <value>180</value>
+  </data>
+  <data name="BUT_HS4save.Text" xml:space="preserve">
+    <value>Manual</value>
+  </data>
+  <data name="label12.Text" xml:space="preserve">
+    <value>PWM 0 - 1230</value>
+  </data>
+  <data name="label10.Text" xml:space="preserve">
+    <value>PWM 1621 - 1749</value>
+  </data>
+  <data name="label13.Text" xml:space="preserve">
+    <value>Modo actual:</value>
+  </data>
+  <data name="CHK_enableoptflow.Text" xml:space="preserve">
+    <value>Habilitar el flujo óptico</value>
+  </data>
+  <data name="label16.Text" xml:space="preserve">
+    <value>NOTA: Las imágenes son sólo para su presentación</value>
+  </data>
+  <data name="CB_simple5.Text" xml:space="preserve">
+    <value>Modo Simple</value>
+  </data>
+  <data name="label11.Text" xml:space="preserve">
+    <value>PWM 1750 +</value>
+  </data>
+  <data name="CHK_elevonch1rev.Text" xml:space="preserve">
+    <value>Elevons CH1 Rev</value>
+  </data>
+  <data name="label14.Text" xml:space="preserve">
+    <value>PWM Actual:</value>
+  </data>
+  <data name="$this.Text" xml:space="preserve">
+    <value>APMSetup</value>
+  </data>
+  <data name="label17.Text" xml:space="preserve">
+    <value>Swash-Servo posición</value>
+  </data>
+  <data name="CHK_enablecompass.Text" xml:space="preserve">
+    <value>Activar Compas</value>
+  </data>
+  <data name="CB_simple4.Text" xml:space="preserve">
+    <value>Modo Simple</value>
+  </data>
+  <data name="tabArducopter.Text" xml:space="preserve">
+    <value>ArduCopter2</value>
+  </data>
+  <data name="CB_simple1.Text" xml:space="preserve">
+    <value>Modo Simple</value>
+  </data>
+  <data name="label15.Text" xml:space="preserve">
+    <value>Ajuste Chásis (+ or x)</value>
+  </data>
+  <data name="SV2_POS_.Text" xml:space="preserve">
+    <value>60</value>
+  </data>
+  <data name="label18.Text" xml:space="preserve">
+    <value>1</value>
+  </data>
+  <data name="CB_simple6.Text" xml:space="preserve">
+    <value>Modo Simple</value>
+  </data>
+  <data name="CB_simple3.Text" xml:space="preserve">
+    <value>Modo Simple</value>
+  </data>
+  <data name="label19.Text" xml:space="preserve">
+    <value>2</value>
+  </data>
+  <data name="tabModes.Text" xml:space="preserve">
+    <value>Modos</value>
+  </data>
+  <data name="CB_simple2.Text" xml:space="preserve">
+    <value>Modo Simple</value>
+  </data>
+  <data name="label20.Text" xml:space="preserve">
+    <value>3</value>
+  </data>
+  <data name="tabReset.Text" xml:space="preserve">
+    <value>Reset</value>
+  </data>
+  <data name="SV1_POS_.Text" xml:space="preserve">
+    <value>-60</value>
+  </data>
+  <data name="label21.Text" xml:space="preserve">
+    <value>Superior</value>
+  </data>
+  <data name="label22.Text" xml:space="preserve">
+    <value>Swash de Viaje</value>
+  </data>
+  <data name="lbl_currentmode.Text" xml:space="preserve">
+    <value>Manual</value>
+  </data>
+  <data name="label23.Text" xml:space="preserve">
+    <value>Timón de Viaje</value>
+  </data>
+  <data name="textBox3.Text" xml:space="preserve">
+    <value>Calibración del sensor de voltaje:Para calibrar el sensor, use un multímetro para medir la tensión que sale de la CES de la batería-la eliminación del circuito (se trata de cables negro y rojo en el cable de tres hilos que suministra energía a la placa APM).Luego reste 0,3 V de ese valor y entrar en él en el campo # 1 a la izquierda.</value>
+  </data>
+  <data name="BUT_Calibrateradio.Text" xml:space="preserve">
+    <value>Calibrar Radio</value>
+  </data>
+  <data name="label24.Text" xml:space="preserve">
+    <value>Max</value>
+  </data>
+  <data name="label2.Text" xml:space="preserve">
+    <value>Modo de Vuelo 2</value>
+  </data>
+  <data name="label25.Text" xml:space="preserve">
+    <value>Alabeo Max</value>
+  </data>
+  <data name="label3.Text" xml:space="preserve">
+    <value>Modo de Vuelo 3</value>
+  </data>
+  <data name="label26.Text" xml:space="preserve">
+    <value>Cabeceo Max</value>
+  </data>
+  <data name="label27.Text" xml:space="preserve">
+    <value>por ejemplo, en grados 2 ° 3 'W es -2,3</value>
+  </data>
+  <data name="label1.Text" xml:space="preserve">
+    <value>Modo de Vuelo 1</value>
+  </data>
+  <data name="label28.Text" xml:space="preserve">
+    <value>Nivel tu quad para establecer las compensaciones por defecto acel</value>
+  </data>
+  <data name="label6.Text" xml:space="preserve">
+    <value>Modo de Vuelo 6</value>
+  </data>
+  <data name="label29.Text" xml:space="preserve">
+    <value>Capacidad</value>
+  </data>
+  <data name="label100.Text" xml:space="preserve">
+    <value>Declinación</value>
+  </data>
+  <data name="CHK_enablesonar.Text" xml:space="preserve">
+    <value>Activar Sonar</value>
+  </data>
+  <data name="label7.Text" xml:space="preserve">
+    <value>PWM 1231 - 1360</value>
+  </data>
+  <data name="tabRadioIn.Text" xml:space="preserve">
+    <value>Entrada Radio</value>
+  </data>
+  <data name="groupBox4.Text" xml:space="preserve">
+    <value>Calibración</value>
+  </data>
+  <data name="HS4_MIN.Text" xml:space="preserve">
+    <value>1500</value>
+  </data>
+  <data name="label4.Text" xml:space="preserve">
+    <value>Modo de Vuelo 4</value>
+  </data>
+  <data name="label5.Text" xml:space="preserve">
+    <value>Modo de Vuelo 5</value>
+  </data>
+  <data name="groupBox3.Text" xml:space="preserve">
+    <value>Gyro</value>
+  </data>
+  <data name="label8.Text" xml:space="preserve">
+    <value>PWM 1361 - 1490</value>
+  </data>
+  <data name="tabHardware.Text" xml:space="preserve">
+    <value>Hardware</value>
+  </data>
+  <data name="label9.Text" xml:space="preserve">
+    <value>PWM 1491 - 1620</value>
+  </data>
+  <data name="linkLabelmagdec.Text" xml:space="preserve">
+    <value>Sitio Web Declinación</value>
+  </data>
+  <data name="HS4_MAX.Text" xml:space="preserve">
+    <value>1500</value>
+  </data>
+  <data name="tabBattery.Text" xml:space="preserve">
+    <value>Batería</value>
+  </data>
+  <data name="BUT_0collective.Text" xml:space="preserve">
+    <value>Cero</value>
+  </data>
+  <data name="CHK_enableairspeed.Text" xml:space="preserve">
+    <value>Activar Airspeed</value>
+  </data>
+  <data name="PIT_MAX_.Text" xml:space="preserve">
+    <value>4500</value>
+  </data>
+  <data name="BUT_reset.Text" xml:space="preserve">
+    <value>Restablecer los Ajustes de hardware APM</value>
+  </data>
+  <data name="GYR_GAIN_.Text" xml:space="preserve">
+    <value>1000</value>
+  </data>
+  <data name="label30.Text" xml:space="preserve">
+    <value>Monitor</value>
+  </data>
+</root>
\ No newline at end of file
diff --git a/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigTradHeli.fr.resx b/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigTradHeli.fr.resx
new file mode 100644
index 000000000..1bd274bee
--- /dev/null
+++ b/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigTradHeli.fr.resx
@@ -0,0 +1,312 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <data name="SV3_POS_.Text" xml:space="preserve">
+    <value>180</value>
+  </data>
+  <data name="BUT_HS4save.Text" xml:space="preserve">
+    <value>Manuel</value>
+  </data>
+  <data name="label12.Text" xml:space="preserve">
+    <value>PWM 0 - 1230</value>
+  </data>
+  <data name="label10.Text" xml:space="preserve">
+    <value>PWM 1621 - 1749</value>
+  </data>
+  <data name="label13.Text" xml:space="preserve">
+    <value>Mode Courant:</value>
+  </data>
+  <data name="CHK_enableoptflow.Text" xml:space="preserve">
+    <value>Activ. capteur optique</value>
+  </data>
+  <data name="label16.Text" xml:space="preserve">
+    <value>NOTE: images pou presentation uniquement. Fonctionnel pour Hex, Octo etc...</value>
+  </data>
+  <data name="CB_simple5.Text" xml:space="preserve">
+    <value>Mode Simple</value>
+  </data>
+  <data name="label11.Text" xml:space="preserve">
+    <value>PWM 1750 +</value>
+  </data>
+  <data name="CHK_elevonch1rev.Text" xml:space="preserve">
+    <value>Elevons CH1 Rev</value>
+  </data>
+  <data name="label14.Text" xml:space="preserve">
+    <value>PWM Actuel:</value>
+  </data>
+  <data name="$this.Text" xml:space="preserve">
+    <value>APMSetup</value>
+  </data>
+  <data name="label17.Text" xml:space="preserve">
+    <value>Swash-Servo position</value>
+  </data>
+  <data name="CHK_enablecompass.Text" xml:space="preserve">
+    <value>Activ. Boussole</value>
+  </data>
+  <data name="CB_simple4.Text" xml:space="preserve">
+    <value>Mode Simple</value>
+  </data>
+  <data name="tabArducopter.Text" xml:space="preserve">
+    <value>ArduCopter2</value>
+  </data>
+  <data name="CB_simple1.Text" xml:space="preserve">
+    <value>Mode Simple</value>
+  </data>
+  <data name="label15.Text" xml:space="preserve">
+    <value>type de châssis (+ ou x)</value>
+  </data>
+  <data name="SV2_POS_.Text" xml:space="preserve">
+    <value>60</value>
+  </data>
+  <data name="label18.Text" xml:space="preserve">
+    <value>1</value>
+  </data>
+  <data name="CB_simple6.Text" xml:space="preserve">
+    <value>Mode Simple</value>
+  </data>
+  <data name="CB_simple3.Text" xml:space="preserve">
+    <value>Mode Simple</value>
+  </data>
+  <data name="label19.Text" xml:space="preserve">
+    <value>2</value>
+  </data>
+  <data name="tabModes.Text" xml:space="preserve">
+    <value>Modes</value>
+  </data>
+  <data name="CB_simple2.Text" xml:space="preserve">
+    <value>Mode Simple</value>
+  </data>
+  <data name="label20.Text" xml:space="preserve">
+    <value>3</value>
+  </data>
+  <data name="tabReset.Text" xml:space="preserve">
+    <value>Réinit.</value>
+  </data>
+  <data name="SV1_POS_.Text" xml:space="preserve">
+    <value>-60</value>
+  </data>
+  <data name="label21.Text" xml:space="preserve">
+    <value>Haut</value>
+  </data>
+  <data name="label22.Text" xml:space="preserve">
+    <value>Mouvement Swash</value>
+  </data>
+  <data name="lbl_currentmode.Text" xml:space="preserve">
+    <value>Manuel</value>
+  </data>
+  <data name="label23.Text" xml:space="preserve">
+    <value>Deplac. du Gouvernail</value>
+  </data>
+  <data name="textBox3.Text" xml:space="preserve">
+    <value>Calibration du capteur de Voltage.1. Mesurer le voltage sur APM et inscrivez-le dans la boite ci-bas.2. Mesurer le voltage de la batterie et inscrivez-le dans la boite ci-bas.3. Inscrire les ampères par volt de la documentation du capteur de courant ci-bas</value>
+  </data>
+  <data name="BUT_Calibrateradio.Text" xml:space="preserve">
+    <value>Calibrer Radio</value>
+  </data>
+  <data name="label24.Text" xml:space="preserve">
+    <value>Max</value>
+  </data>
+  <data name="label2.Text" xml:space="preserve">
+    <value>Mode de vol 2</value>
+  </data>
+  <data name="label25.Text" xml:space="preserve">
+    <value>Roulis Max</value>
+  </data>
+  <data name="label3.Text" xml:space="preserve">
+    <value>Mode de vol 2</value>
+  </data>
+  <data name="label26.Text" xml:space="preserve">
+    <value>Tangage Max</value>
+  </data>
+  <data name="label27.Text" xml:space="preserve">
+    <value>en degrés eg 2° 3' W est -2.3</value>
+  </data>
+  <data name="label1.Text" xml:space="preserve">
+    <value>Mode de vol 1</value>
+  </data>
+  <data name="label28.Text" xml:space="preserve">
+    <value>Niveler l'apareil pour copensation des accels</value>
+  </data>
+  <data name="label6.Text" xml:space="preserve">
+    <value>Mode de vol 6</value>
+  </data>
+  <data name="label29.Text" xml:space="preserve">
+    <value>Capacité</value>
+  </data>
+  <data name="label100.Text" xml:space="preserve">
+    <value>Déclination</value>
+  </data>
+  <data name="CHK_enablesonar.Text" xml:space="preserve">
+    <value>Activer Sonar</value>
+  </data>
+  <data name="label7.Text" xml:space="preserve">
+    <value>PWM 1231 - 1360</value>
+  </data>
+  <data name="tabRadioIn.Text" xml:space="preserve">
+    <value>Entrée Radio</value>
+  </data>
+  <data name="HS4_MIN.Text" xml:space="preserve">
+    <value>1500</value>
+  </data>
+  <data name="label4.Text" xml:space="preserve">
+    <value>Mode de vol 4</value>
+  </data>
+  <data name="label5.Text" xml:space="preserve">
+    <value>Mode de vol 5</value>
+  </data>
+  <data name="groupBox3.Text" xml:space="preserve">
+    <value>Gyro</value>
+  </data>
+  <data name="label8.Text" xml:space="preserve">
+    <value>PWM 1361 - 1490</value>
+  </data>
+  <data name="tabHardware.Text" xml:space="preserve">
+    <value>Matériel</value>
+  </data>
+  <data name="label9.Text" xml:space="preserve">
+    <value>PWM 1491 - 1620</value>
+  </data>
+  <data name="linkLabelmagdec.Text" xml:space="preserve">
+    <value>Site Web Déclination</value>
+  </data>
+  <data name="HS4_MAX.Text" xml:space="preserve">
+    <value>1500</value>
+  </data>
+  <data name="tabBattery.Text" xml:space="preserve">
+    <value>Batterie</value>
+  </data>
+  <data name="BUT_0collective.Text" xml:space="preserve">
+    <value>Zéro</value>
+  </data>
+  <data name="CHK_enableairspeed.Text" xml:space="preserve">
+    <value>Activ. Airspeed</value>
+  </data>
+  <data name="PIT_MAX_.Text" xml:space="preserve">
+    <value>4500</value>
+  </data>
+  <data name="BUT_reset.Text" xml:space="preserve">
+    <value>RàZ tout parametres du APM</value>
+  </data>
+  <data name="GYR_GAIN_.Text" xml:space="preserve">
+    <value>1000</value>
+  </data>
+  <data name="label30.Text" xml:space="preserve">
+    <value>Moniteur</value>
+  </data>
+</root>
\ No newline at end of file
diff --git a/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigTradHeli.it-IT.resx b/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigTradHeli.it-IT.resx
new file mode 100644
index 000000000..2b2636c81
--- /dev/null
+++ b/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigTradHeli.it-IT.resx
@@ -0,0 +1,318 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <data name="SV3_POS_.Text" xml:space="preserve">
+    <value>180</value>
+  </data>
+  <data name="BUT_HS4save.Text" xml:space="preserve">
+    <value>Manuale</value>
+  </data>
+  <data name="label12.Text" xml:space="preserve">
+    <value>PWM 0 - 1230</value>
+  </data>
+  <data name="label10.Text" xml:space="preserve">
+    <value>PWM 1621 - 1749</value>
+  </data>
+  <data name="label13.Text" xml:space="preserve">
+    <value>Modo Corrente:</value>
+  </data>
+  <data name="CHK_enableoptflow.Text" xml:space="preserve">
+    <value>Abilita Flusso ottico</value>
+  </data>
+  <data name="label16.Text" xml:space="preserve">
+    <value>Nota: le immagini sono sono per presentazione, funzionerà con Hexa, etc.</value>
+  </data>
+  <data name="CB_simple5.Text" xml:space="preserve">
+    <value>Modo Semplice</value>
+  </data>
+  <data name="label11.Text" xml:space="preserve">
+    <value>PWM 1750 +</value>
+  </data>
+  <data name="CHK_elevonch1rev.Text" xml:space="preserve">
+    <value>Elevatore CH1 Rev</value>
+  </data>
+  <data name="label14.Text" xml:space="preserve">
+    <value>PWM Corrente:</value>
+  </data>
+  <data name="$this.Text" xml:space="preserve">
+    <value>Imposta APM</value>
+  </data>
+  <data name="label17.Text" xml:space="preserve">
+    <value>Posizione del servo del piatto</value>
+  </data>
+  <data name="CHK_enablecompass.Text" xml:space="preserve">
+    <value>Abilita Magnetometro</value>
+  </data>
+  <data name="CB_simple4.Text" xml:space="preserve">
+    <value>Modo Semplice</value>
+  </data>
+  <data name="tabArducopter.Text" xml:space="preserve">
+    <value>ArduCopter2</value>
+  </data>
+  <data name="CB_simple1.Text" xml:space="preserve">
+    <value>Modo Semplice</value>
+  </data>
+  <data name="label15.Text" xml:space="preserve">
+    <value>Imposta Frame (+ or x)</value>
+  </data>
+  <data name="SV2_POS_.Text" xml:space="preserve">
+    <value>60</value>
+  </data>
+  <data name="label18.Text" xml:space="preserve">
+    <value>1</value>
+  </data>
+  <data name="CB_simple6.Text" xml:space="preserve">
+    <value>Modo Semplice</value>
+  </data>
+  <data name="CB_simple3.Text" xml:space="preserve">
+    <value>Modo Semplice</value>
+  </data>
+  <data name="label19.Text" xml:space="preserve">
+    <value>2</value>
+  </data>
+  <data name="tabModes.Text" xml:space="preserve">
+    <value>Modi</value>
+  </data>
+  <data name="CB_simple2.Text" xml:space="preserve">
+    <value>Modo Semplice</value>
+  </data>
+  <data name="label20.Text" xml:space="preserve">
+    <value>3</value>
+  </data>
+  <data name="tabReset.Text" xml:space="preserve">
+    <value>Riavvia</value>
+  </data>
+  <data name="SV1_POS_.Text" xml:space="preserve">
+    <value>-60</value>
+  </data>
+  <data name="label21.Text" xml:space="preserve">
+    <value>Alto</value>
+  </data>
+  <data name="label22.Text" xml:space="preserve">
+    <value>Escursione del piatto</value>
+  </data>
+  <data name="lbl_currentmode.Text" xml:space="preserve">
+    <value>Manuale</value>
+  </data>
+  <data name="label23.Text" xml:space="preserve">
+    <value>Escursione Timone</value>
+  </data>
+  <data name="textBox3.Text" xml:space="preserve">
+    <value>Calibarzione del sensore di voltaggio:
+1. Misura il valtaggio di ingresso di APM e inseriscilo nel box sotto 
+2. Misura il voltaggio della batteria e inseriscilo nel box sotto 
+3. Dalle caratteristiche del sensore di corrente, inserisci il valore degli ampere per volt nel box qui sotto</value>
+  </data>
+  <data name="BUT_Calibrateradio.Text" xml:space="preserve">
+    <value>Calibrazione Radio</value>
+  </data>
+  <data name="label24.Text" xml:space="preserve">
+    <value>Massimo</value>
+  </data>
+  <data name="label2.Text" xml:space="preserve">
+    <value>Modo di volo 2</value>
+  </data>
+  <data name="label25.Text" xml:space="preserve">
+    <value>Rollio massimo</value>
+  </data>
+  <data name="label3.Text" xml:space="preserve">
+    <value>Modo di volo 3</value>
+  </data>
+  <data name="label26.Text" xml:space="preserve">
+    <value>Passo massimo</value>
+  </data>
+  <data name="label27.Text" xml:space="preserve">
+    <value>in gradi es 2° 3' W is -2.3</value>
+  </data>
+  <data name="label1.Text" xml:space="preserve">
+    <value>Modo di volo 1</value>
+  </data>
+  <data name="label28.Text" xml:space="preserve">
+    <value>Livella il quad per impostare gli accelerometri</value>
+  </data>
+  <data name="label6.Text" xml:space="preserve">
+    <value>Modo di volo 6</value>
+  </data>
+  <data name="label29.Text" xml:space="preserve">
+    <value>Capacità</value>
+  </data>
+  <data name="label100.Text" xml:space="preserve">
+    <value>Declinazione</value>
+  </data>
+  <data name="CHK_enablesonar.Text" xml:space="preserve">
+    <value>Attiva Sonar</value>
+  </data>
+  <data name="label7.Text" xml:space="preserve">
+    <value>PWM 1231 - 1360</value>
+  </data>
+  <data name="tabRadioIn.Text" xml:space="preserve">
+    <value>Ingresso Radio</value>
+  </data>
+  <data name="groupBox4.Text" xml:space="preserve">
+    <value>Calibration</value>
+  </data>
+  <data name="HS4_MIN.Text" xml:space="preserve">
+    <value>1500</value>
+  </data>
+  <data name="label4.Text" xml:space="preserve">
+    <value>Modo di volo 4</value>
+  </data>
+  <data name="label5.Text" xml:space="preserve">
+    <value>Modo di volo 5</value>
+  </data>
+  <data name="groupBox3.Text" xml:space="preserve">
+    <value>Giroscopio</value>
+  </data>
+  <data name="label8.Text" xml:space="preserve">
+    <value>PWM 1361 - 1490</value>
+  </data>
+  <data name="tabHardware.Text" xml:space="preserve">
+    <value>Hardware</value>
+  </data>
+  <data name="label9.Text" xml:space="preserve">
+    <value>PWM 1491 - 1620</value>
+  </data>
+  <data name="linkLabelmagdec.Text" xml:space="preserve">
+    <value>Sito Web per la Declinazione</value>
+  </data>
+  <data name="HS4_MAX.Text" xml:space="preserve">
+    <value>1500</value>
+  </data>
+  <data name="tabBattery.Text" xml:space="preserve">
+    <value>Batteria</value>
+  </data>
+  <data name="BUT_0collective.Text" xml:space="preserve">
+    <value>Zero</value>
+  </data>
+  <data name="CHK_enableairspeed.Text" xml:space="preserve">
+    <value>Attiva Sensore Velocità</value>
+  </data>
+  <data name="PIT_MAX_.Text" xml:space="preserve">
+    <value>4500</value>
+  </data>
+  <data name="BUT_reset.Text" xml:space="preserve">
+    <value>Resetta APM ai valori di Default</value>
+  </data>
+  <data name="GYR_GAIN_.Text" xml:space="preserve">
+    <value>1000</value>
+  </data>
+  <data name="label30.Text" xml:space="preserve">
+    <value>Monitor</value>
+  </data>
+</root>
\ No newline at end of file
diff --git a/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigTradHeli.pl.resx b/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigTradHeli.pl.resx
new file mode 100644
index 000000000..057b93271
--- /dev/null
+++ b/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigTradHeli.pl.resx
@@ -0,0 +1,318 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <data name="SV3_POS_.Text" xml:space="preserve">
+    <value>180</value>
+  </data>
+  <data name="BUT_HS4save.Text" xml:space="preserve">
+    <value>Ręczne</value>
+  </data>
+  <data name="label12.Text" xml:space="preserve">
+    <value>PWM 0 - 1230</value>
+  </data>
+  <data name="label10.Text" xml:space="preserve">
+    <value>PWM 1621 - 1749</value>
+  </data>
+  <data name="label13.Text" xml:space="preserve">
+    <value>Aktualny tryb:</value>
+  </data>
+  <data name="CHK_enableoptflow.Text" xml:space="preserve">
+    <value>Włącz Optical Flow</value>
+  </data>
+  <data name="label16.Text" xml:space="preserve">
+    <value>UWAGA: Obrazy są wyłącznie do prezentacji, działają jedynie z hexa, itp.</value>
+  </data>
+  <data name="CB_simple5.Text" xml:space="preserve">
+    <value>Tryb prosty</value>
+  </data>
+  <data name="label11.Text" xml:space="preserve">
+    <value>PWM 1750 +</value>
+  </data>
+  <data name="CHK_elevonch1rev.Text" xml:space="preserve">
+    <value>Odwr. Elevon CH1</value>
+  </data>
+  <data name="label14.Text" xml:space="preserve">
+    <value>Aktualny PWM:</value>
+  </data>
+  <data name="$this.Text" xml:space="preserve">
+    <value>Ustawienia APM</value>
+  </data>
+  <data name="label17.Text" xml:space="preserve">
+    <value>Pozycja serwa płyty ster.</value>
+  </data>
+  <data name="CHK_enablecompass.Text" xml:space="preserve">
+    <value>Włącz kompas</value>
+  </data>
+  <data name="CB_simple4.Text" xml:space="preserve">
+    <value>Tryb prosty</value>
+  </data>
+  <data name="tabArducopter.Text" xml:space="preserve">
+    <value>ArduCopter2</value>
+  </data>
+  <data name="CB_simple1.Text" xml:space="preserve">
+    <value>Tryb prosty</value>
+  </data>
+  <data name="label15.Text" xml:space="preserve">
+    <value>Ustawienie ramy (+ lub x)</value>
+  </data>
+  <data name="SV2_POS_.Text" xml:space="preserve">
+    <value>60</value>
+  </data>
+  <data name="label18.Text" xml:space="preserve">
+    <value>1</value>
+  </data>
+  <data name="CB_simple6.Text" xml:space="preserve">
+    <value>Tryb prosty</value>
+  </data>
+  <data name="CB_simple3.Text" xml:space="preserve">
+    <value>Tryb prosty</value>
+  </data>
+  <data name="label19.Text" xml:space="preserve">
+    <value>2</value>
+  </data>
+  <data name="tabModes.Text" xml:space="preserve">
+    <value>Tryby</value>
+  </data>
+  <data name="CB_simple2.Text" xml:space="preserve">
+    <value>Tryb prosty</value>
+  </data>
+  <data name="label20.Text" xml:space="preserve">
+    <value>3</value>
+  </data>
+  <data name="tabReset.Text" xml:space="preserve">
+    <value>Reset</value>
+  </data>
+  <data name="SV1_POS_.Text" xml:space="preserve">
+    <value>-60</value>
+  </data>
+  <data name="label21.Text" xml:space="preserve">
+    <value>Góra</value>
+  </data>
+  <data name="label22.Text" xml:space="preserve">
+    <value>Zakres ruchu płyty sterującej</value>
+  </data>
+  <data name="lbl_currentmode.Text" xml:space="preserve">
+    <value>Ręczne</value>
+  </data>
+  <data name="label23.Text" xml:space="preserve">
+    <value>Zakres steru kierunku</value>
+  </data>
+  <data name="textBox3.Text" xml:space="preserve">
+    <value>Kalibracja czujnika napięcia:
+1. Zmierz napięcie wejściowe APM i wpisz poniżej
+2. Zmierz napięcie baterii i wpisz poniżej
+3. Wpisz poniżej ilość amperów/wolt [A/V] z dokumentacji czujnika prądu</value>
+  </data>
+  <data name="BUT_Calibrateradio.Text" xml:space="preserve">
+    <value>Kalibracja radia</value>
+  </data>
+  <data name="label24.Text" xml:space="preserve">
+    <value>Max</value>
+  </data>
+  <data name="label2.Text" xml:space="preserve">
+    <value>Tryb lotu 2</value>
+  </data>
+  <data name="label25.Text" xml:space="preserve">
+    <value>Max przechylenie</value>
+  </data>
+  <data name="label3.Text" xml:space="preserve">
+    <value>Tryb lotu 3</value>
+  </data>
+  <data name="label26.Text" xml:space="preserve">
+    <value>Max pochylenie</value>
+  </data>
+  <data name="label27.Text" xml:space="preserve">
+    <value>w stopniech np. 2° 3' W to -2.3</value>
+  </data>
+  <data name="label1.Text" xml:space="preserve">
+    <value>Tryb lotu 1</value>
+  </data>
+  <data name="label28.Text" xml:space="preserve">
+    <value>Wypoziomuj quada żeby stawić domyśle offsety przysp.</value>
+  </data>
+  <data name="label6.Text" xml:space="preserve">
+    <value>Tryb lotu 6</value>
+  </data>
+  <data name="label29.Text" xml:space="preserve">
+    <value>Pojemność</value>
+  </data>
+  <data name="label100.Text" xml:space="preserve">
+    <value>Deklinacja</value>
+  </data>
+  <data name="CHK_enablesonar.Text" xml:space="preserve">
+    <value>Włącz sonar</value>
+  </data>
+  <data name="label7.Text" xml:space="preserve">
+    <value>PWM 1231 - 1360</value>
+  </data>
+  <data name="tabRadioIn.Text" xml:space="preserve">
+    <value>Wejścia radia</value>
+  </data>
+  <data name="groupBox4.Text" xml:space="preserve">
+    <value>Calibration</value>
+  </data>
+  <data name="HS4_MIN.Text" xml:space="preserve">
+    <value>1500</value>
+  </data>
+  <data name="label4.Text" xml:space="preserve">
+    <value>Tryb lotu 4</value>
+  </data>
+  <data name="label5.Text" xml:space="preserve">
+    <value>Tryb lotu 5</value>
+  </data>
+  <data name="groupBox3.Text" xml:space="preserve">
+    <value>Żyro</value>
+  </data>
+  <data name="label8.Text" xml:space="preserve">
+    <value>PWM 1361 - 1490</value>
+  </data>
+  <data name="tabHardware.Text" xml:space="preserve">
+    <value>Hardware</value>
+  </data>
+  <data name="label9.Text" xml:space="preserve">
+    <value>PWM 1491 - 1620</value>
+  </data>
+  <data name="linkLabelmagdec.Text" xml:space="preserve">
+    <value>Strona www deklinacji</value>
+  </data>
+  <data name="HS4_MAX.Text" xml:space="preserve">
+    <value>1500</value>
+  </data>
+  <data name="tabBattery.Text" xml:space="preserve">
+    <value>Bateria</value>
+  </data>
+  <data name="BUT_0collective.Text" xml:space="preserve">
+    <value>Zero</value>
+  </data>
+  <data name="CHK_enableairspeed.Text" xml:space="preserve">
+    <value>Włącz prędkość powietrza</value>
+  </data>
+  <data name="PIT_MAX_.Text" xml:space="preserve">
+    <value>4500</value>
+  </data>
+  <data name="BUT_reset.Text" xml:space="preserve">
+    <value>Reset APM do stawień domyślnych</value>
+  </data>
+  <data name="GYR_GAIN_.Text" xml:space="preserve">
+    <value>1000</value>
+  </data>
+  <data name="label30.Text" xml:space="preserve">
+    <value>Monitor</value>
+  </data>
+</root>
\ No newline at end of file
diff --git a/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigTradHeli.resx b/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigTradHeli.resx
index 7080a7d11..eb30a08ab 100644
--- a/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigTradHeli.resx
+++ b/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigTradHeli.resx
@@ -117,4 +117,1465 @@
   <resheader name="writer">
     <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
   </resheader>
+  <assembly alias="mscorlib" name="mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
+  <data name="H1_ENABLE.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
+  <data name="H1_ENABLE.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
+    <value>NoControl</value>
+  </data>
+  <assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
+  <data name="H1_ENABLE.Location" type="System.Drawing.Point, System.Drawing">
+    <value>67, 19</value>
+  </data>
+  <data name="H1_ENABLE.Size" type="System.Drawing.Size, System.Drawing">
+    <value>39, 17</value>
+  </data>
+  <data name="H1_ENABLE.TabIndex" type="System.Int32, mscorlib">
+    <value>137</value>
+  </data>
+  <data name="H1_ENABLE.Text" xml:space="preserve">
+    <value>H1</value>
+  </data>
+  <data name="&gt;&gt;H1_ENABLE.Name" xml:space="preserve">
+    <value>H1_ENABLE</value>
+  </data>
+  <data name="&gt;&gt;H1_ENABLE.Type" xml:space="preserve">
+    <value>System.Windows.Forms.RadioButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;H1_ENABLE.Parent" xml:space="preserve">
+    <value>groupBox5</value>
+  </data>
+  <data name="&gt;&gt;H1_ENABLE.ZOrder" xml:space="preserve">
+    <value>0</value>
+  </data>
+  <data name="CCPM.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <data name="CCPM.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
+    <value>NoControl</value>
+  </data>
+  <data name="CCPM.Location" type="System.Drawing.Point, System.Drawing">
+    <value>6, 19</value>
+  </data>
+  <data name="CCPM.Size" type="System.Drawing.Size, System.Drawing">
+    <value>55, 17</value>
+  </data>
+  <data name="CCPM.TabIndex" type="System.Int32, mscorlib">
+    <value>136</value>
+  </data>
+  <data name="CCPM.Text" xml:space="preserve">
+    <value>CCPM</value>
+  </data>
+  <data name="&gt;&gt;CCPM.Name" xml:space="preserve">
+    <value>CCPM</value>
+  </data>
+  <data name="&gt;&gt;CCPM.Type" xml:space="preserve">
+    <value>System.Windows.Forms.RadioButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;CCPM.Parent" xml:space="preserve">
+    <value>groupBox5</value>
+  </data>
+  <data name="&gt;&gt;CCPM.ZOrder" xml:space="preserve">
+    <value>1</value>
+  </data>
+  <data name="groupBox5.Location" type="System.Drawing.Point, System.Drawing">
+    <value>257, 11</value>
+  </data>
+  <data name="groupBox5.Size" type="System.Drawing.Size, System.Drawing">
+    <value>120, 43</value>
+  </data>
+  <data name="groupBox5.TabIndex" type="System.Int32, mscorlib">
+    <value>169</value>
+  </data>
+  <data name="groupBox5.Text" xml:space="preserve">
+    <value>Swash Type</value>
+  </data>
+  <data name="&gt;&gt;groupBox5.Name" xml:space="preserve">
+    <value>groupBox5</value>
+  </data>
+  <data name="&gt;&gt;groupBox5.Type" xml:space="preserve">
+    <value>System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;groupBox5.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name="&gt;&gt;groupBox5.ZOrder" xml:space="preserve">
+    <value>5</value>
+  </data>
+  <data name="BUT_swash_manual.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
+    <value>NoControl</value>
+  </data>
+  <data name="BUT_swash_manual.Location" type="System.Drawing.Point, System.Drawing">
+    <value>302, 83</value>
+  </data>
+  <data name="BUT_swash_manual.Size" type="System.Drawing.Size, System.Drawing">
+    <value>69, 23</value>
+  </data>
+  <data name="BUT_swash_manual.TabIndex" type="System.Int32, mscorlib">
+    <value>138</value>
+  </data>
+  <data name="BUT_swash_manual.Text" xml:space="preserve">
+    <value>Manual</value>
+  </data>
+  <data name="&gt;&gt;BUT_swash_manual.Name" xml:space="preserve">
+    <value>BUT_swash_manual</value>
+  </data>
+  <data name="&gt;&gt;BUT_swash_manual.Type" xml:space="preserve">
+    <value>ArdupilotMega.MyButton, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null</value>
+  </data>
+  <data name="&gt;&gt;BUT_swash_manual.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name="&gt;&gt;BUT_swash_manual.ZOrder" xml:space="preserve">
+    <value>6</value>
+  </data>
+  <data name="label41.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <data name="label41.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
+    <value>NoControl</value>
+  </data>
+  <data name="label41.Location" type="System.Drawing.Point, System.Drawing">
+    <value>19, 157</value>
+  </data>
+  <data name="label41.Size" type="System.Drawing.Size, System.Drawing">
+    <value>40, 13</value>
+  </data>
+  <data name="label41.TabIndex" type="System.Int32, mscorlib">
+    <value>122</value>
+  </data>
+  <data name="label41.Text" xml:space="preserve">
+    <value>Bottom</value>
+  </data>
+  <data name="&gt;&gt;label41.Name" xml:space="preserve">
+    <value>label41</value>
+  </data>
+  <data name="&gt;&gt;label41.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;label41.Parent" xml:space="preserve">
+    <value>groupBox1</value>
+  </data>
+  <data name="&gt;&gt;label41.ZOrder" xml:space="preserve">
+    <value>0</value>
+  </data>
+  <data name="label46.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <data name="label46.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
+    <value>NoControl</value>
+  </data>
+  <data name="label46.Location" type="System.Drawing.Point, System.Drawing">
+    <value>6, 38</value>
+  </data>
+  <data name="label46.Size" type="System.Drawing.Size, System.Drawing">
+    <value>29, 13</value>
+  </data>
+  <data name="label46.TabIndex" type="System.Int32, mscorlib">
+    <value>137</value>
+  </data>
+  <data name="label46.Text" xml:space="preserve">
+    <value>Gain</value>
+  </data>
+  <data name="&gt;&gt;label46.Name" xml:space="preserve">
+    <value>label46</value>
+  </data>
+  <data name="&gt;&gt;label46.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;label46.Parent" xml:space="preserve">
+    <value>groupBox3</value>
+  </data>
+  <data name="&gt;&gt;label46.ZOrder" xml:space="preserve">
+    <value>0</value>
+  </data>
+  <data name="label45.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <data name="label45.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
+    <value>NoControl</value>
+  </data>
+  <data name="label45.Location" type="System.Drawing.Point, System.Drawing">
+    <value>6, 19</value>
+  </data>
+  <data name="label45.Size" type="System.Drawing.Size, System.Drawing">
+    <value>40, 13</value>
+  </data>
+  <data name="label45.TabIndex" type="System.Int32, mscorlib">
+    <value>136</value>
+  </data>
+  <data name="label45.Text" xml:space="preserve">
+    <value>Enable</value>
+  </data>
+  <data name="&gt;&gt;label45.Name" xml:space="preserve">
+    <value>label45</value>
+  </data>
+  <data name="&gt;&gt;label45.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;label45.Parent" xml:space="preserve">
+    <value>groupBox3</value>
+  </data>
+  <data name="&gt;&gt;label45.ZOrder" xml:space="preserve">
+    <value>1</value>
+  </data>
+  <data name="GYR_ENABLE.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <data name="GYR_ENABLE.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
+    <value>NoControl</value>
+  </data>
+  <data name="GYR_ENABLE.Location" type="System.Drawing.Point, System.Drawing">
+    <value>57, 19</value>
+  </data>
+  <data name="GYR_ENABLE.Size" type="System.Drawing.Size, System.Drawing">
+    <value>15, 14</value>
+  </data>
+  <data name="GYR_ENABLE.TabIndex" type="System.Int32, mscorlib">
+    <value>118</value>
+  </data>
+  <data name="&gt;&gt;GYR_ENABLE.Name" xml:space="preserve">
+    <value>GYR_ENABLE</value>
+  </data>
+  <data name="&gt;&gt;GYR_ENABLE.Type" xml:space="preserve">
+    <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;GYR_ENABLE.Parent" xml:space="preserve">
+    <value>groupBox3</value>
+  </data>
+  <data name="&gt;&gt;GYR_ENABLE.ZOrder" xml:space="preserve">
+    <value>2</value>
+  </data>
+  <data name="GYR_GAIN.Location" type="System.Drawing.Point, System.Drawing">
+    <value>41, 35</value>
+  </data>
+  <data name="GYR_GAIN.Size" type="System.Drawing.Size, System.Drawing">
+    <value>47, 20</value>
+  </data>
+  <data name="GYR_GAIN.TabIndex" type="System.Int32, mscorlib">
+    <value>119</value>
+  </data>
+  <data name="GYR_GAIN.Text" xml:space="preserve">
+    <value>1000</value>
+  </data>
+  <data name="&gt;&gt;GYR_GAIN.Name" xml:space="preserve">
+    <value>GYR_GAIN</value>
+  </data>
+  <data name="&gt;&gt;GYR_GAIN.Type" xml:space="preserve">
+    <value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;GYR_GAIN.Parent" xml:space="preserve">
+    <value>groupBox3</value>
+  </data>
+  <data name="&gt;&gt;GYR_GAIN.ZOrder" xml:space="preserve">
+    <value>3</value>
+  </data>
+  <data name="groupBox3.Location" type="System.Drawing.Point, System.Drawing">
+    <value>437, 314</value>
+  </data>
+  <data name="groupBox3.Size" type="System.Drawing.Size, System.Drawing">
+    <value>101, 63</value>
+  </data>
+  <data name="groupBox3.TabIndex" type="System.Int32, mscorlib">
+    <value>168</value>
+  </data>
+  <data name="groupBox3.Text" xml:space="preserve">
+    <value>Gyro</value>
+  </data>
+  <data name="&gt;&gt;groupBox3.Name" xml:space="preserve">
+    <value>groupBox3</value>
+  </data>
+  <data name="&gt;&gt;groupBox3.Type" xml:space="preserve">
+    <value>System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;groupBox3.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name="&gt;&gt;groupBox3.ZOrder" xml:space="preserve">
+    <value>7</value>
+  </data>
+  <data name="BUT_HS4save.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
+    <value>NoControl</value>
+  </data>
+  <data name="BUT_HS4save.Location" type="System.Drawing.Point, System.Drawing">
+    <value>483, 174</value>
+  </data>
+  <data name="BUT_HS4save.Size" type="System.Drawing.Size, System.Drawing">
+    <value>69, 23</value>
+  </data>
+  <data name="BUT_HS4save.TabIndex" type="System.Int32, mscorlib">
+    <value>167</value>
+  </data>
+  <data name="BUT_HS4save.Text" xml:space="preserve">
+    <value>Manual</value>
+  </data>
+  <data name="&gt;&gt;BUT_HS4save.Name" xml:space="preserve">
+    <value>BUT_HS4save</value>
+  </data>
+  <data name="&gt;&gt;BUT_HS4save.Type" xml:space="preserve">
+    <value>ArdupilotMega.MyButton, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null</value>
+  </data>
+  <data name="&gt;&gt;BUT_HS4save.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name="&gt;&gt;BUT_HS4save.ZOrder" xml:space="preserve">
+    <value>8</value>
+  </data>
+  <data name="label21.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <data name="label21.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
+    <value>NoControl</value>
+  </data>
+  <data name="label21.Location" type="System.Drawing.Point, System.Drawing">
+    <value>24, 28</value>
+  </data>
+  <data name="label21.Size" type="System.Drawing.Size, System.Drawing">
+    <value>26, 13</value>
+  </data>
+  <data name="label21.TabIndex" type="System.Int32, mscorlib">
+    <value>120</value>
+  </data>
+  <data name="label21.Text" xml:space="preserve">
+    <value>Top</value>
+  </data>
+  <data name="&gt;&gt;label21.Name" xml:space="preserve">
+    <value>label21</value>
+  </data>
+  <data name="&gt;&gt;label21.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;label21.Parent" xml:space="preserve">
+    <value>groupBox1</value>
+  </data>
+  <data name="&gt;&gt;label21.ZOrder" xml:space="preserve">
+    <value>1</value>
+  </data>
+  <data name="COL_MIN.Enabled" type="System.Boolean, mscorlib">
+    <value>False</value>
+  </data>
+  <data name="COL_MIN.Location" type="System.Drawing.Point, System.Drawing">
+    <value>18, 173</value>
+  </data>
+  <data name="COL_MIN.Size" type="System.Drawing.Size, System.Drawing">
+    <value>43, 20</value>
+  </data>
+  <data name="COL_MIN.TabIndex" type="System.Int32, mscorlib">
+    <value>119</value>
+  </data>
+  <data name="COL_MIN.Text" xml:space="preserve">
+    <value>1500</value>
+  </data>
+  <data name="&gt;&gt;COL_MIN.Name" xml:space="preserve">
+    <value>COL_MIN</value>
+  </data>
+  <data name="&gt;&gt;COL_MIN.Type" xml:space="preserve">
+    <value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;COL_MIN.Parent" xml:space="preserve">
+    <value>groupBox1</value>
+  </data>
+  <data name="&gt;&gt;COL_MIN.ZOrder" xml:space="preserve">
+    <value>2</value>
+  </data>
+  <data name="COL_MID.Enabled" type="System.Boolean, mscorlib">
+    <value>False</value>
+  </data>
+  <data name="COL_MID.Location" type="System.Drawing.Point, System.Drawing">
+    <value>17, 117</value>
+  </data>
+  <data name="COL_MID.Size" type="System.Drawing.Size, System.Drawing">
+    <value>44, 20</value>
+  </data>
+  <data name="COL_MID.TabIndex" type="System.Int32, mscorlib">
+    <value>117</value>
+  </data>
+  <data name="COL_MID.Text" xml:space="preserve">
+    <value>1500</value>
+  </data>
+  <data name="&gt;&gt;COL_MID.Name" xml:space="preserve">
+    <value>COL_MID</value>
+  </data>
+  <data name="&gt;&gt;COL_MID.Type" xml:space="preserve">
+    <value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;COL_MID.Parent" xml:space="preserve">
+    <value>groupBox1</value>
+  </data>
+  <data name="&gt;&gt;COL_MID.ZOrder" xml:space="preserve">
+    <value>3</value>
+  </data>
+  <data name="COL_MAX.Enabled" type="System.Boolean, mscorlib">
+    <value>False</value>
+  </data>
+  <data name="COL_MAX.Location" type="System.Drawing.Point, System.Drawing">
+    <value>18, 45</value>
+  </data>
+  <data name="COL_MAX.Size" type="System.Drawing.Size, System.Drawing">
+    <value>43, 20</value>
+  </data>
+  <data name="COL_MAX.TabIndex" type="System.Int32, mscorlib">
+    <value>115</value>
+  </data>
+  <data name="COL_MAX.Text" xml:space="preserve">
+    <value>1500</value>
+  </data>
+  <data name="&gt;&gt;COL_MAX.Name" xml:space="preserve">
+    <value>COL_MAX</value>
+  </data>
+  <data name="&gt;&gt;COL_MAX.Type" xml:space="preserve">
+    <value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;COL_MAX.Parent" xml:space="preserve">
+    <value>groupBox1</value>
+  </data>
+  <data name="&gt;&gt;COL_MAX.ZOrder" xml:space="preserve">
+    <value>4</value>
+  </data>
+  <data name="BUT_0collective.Enabled" type="System.Boolean, mscorlib">
+    <value>False</value>
+  </data>
+  <data name="BUT_0collective.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
+    <value>NoControl</value>
+  </data>
+  <data name="BUT_0collective.Location" type="System.Drawing.Point, System.Drawing">
+    <value>11, 89</value>
+  </data>
+  <data name="BUT_0collective.Size" type="System.Drawing.Size, System.Drawing">
+    <value>58, 23</value>
+  </data>
+  <data name="BUT_0collective.TabIndex" type="System.Int32, mscorlib">
+    <value>110</value>
+  </data>
+  <data name="BUT_0collective.Text" xml:space="preserve">
+    <value>Zero</value>
+  </data>
+  <data name="&gt;&gt;BUT_0collective.Name" xml:space="preserve">
+    <value>BUT_0collective</value>
+  </data>
+  <data name="&gt;&gt;BUT_0collective.Type" xml:space="preserve">
+    <value>ArdupilotMega.MyButton, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null</value>
+  </data>
+  <data name="&gt;&gt;BUT_0collective.Parent" xml:space="preserve">
+    <value>groupBox1</value>
+  </data>
+  <data name="&gt;&gt;BUT_0collective.ZOrder" xml:space="preserve">
+    <value>5</value>
+  </data>
+  <data name="groupBox1.Location" type="System.Drawing.Point, System.Drawing">
+    <value>297, 95</value>
+  </data>
+  <data name="groupBox1.Size" type="System.Drawing.Size, System.Drawing">
+    <value>80, 209</value>
+  </data>
+  <data name="groupBox1.TabIndex" type="System.Int32, mscorlib">
+    <value>165</value>
+  </data>
+  <data name="&gt;&gt;groupBox1.Name" xml:space="preserve">
+    <value>groupBox1</value>
+  </data>
+  <data name="&gt;&gt;groupBox1.Type" xml:space="preserve">
+    <value>System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;groupBox1.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name="&gt;&gt;groupBox1.ZOrder" xml:space="preserve">
+    <value>9</value>
+  </data>
+  <data name="label24.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <data name="label24.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
+    <value>NoControl</value>
+  </data>
+  <data name="label24.Location" type="System.Drawing.Point, System.Drawing">
+    <value>112, 23</value>
+  </data>
+  <data name="label24.Size" type="System.Drawing.Size, System.Drawing">
+    <value>27, 13</value>
+  </data>
+  <data name="label24.TabIndex" type="System.Int32, mscorlib">
+    <value>135</value>
+  </data>
+  <data name="label24.Text" xml:space="preserve">
+    <value>Max</value>
+  </data>
+  <data name="&gt;&gt;label24.Name" xml:space="preserve">
+    <value>label24</value>
+  </data>
+  <data name="&gt;&gt;label24.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;label24.Parent" xml:space="preserve">
+    <value>groupBox2</value>
+  </data>
+  <data name="&gt;&gt;label24.ZOrder" xml:space="preserve">
+    <value>0</value>
+  </data>
+  <data name="HS4_MIN.Enabled" type="System.Boolean, mscorlib">
+    <value>False</value>
+  </data>
+  <data name="HS4_MIN.Location" type="System.Drawing.Point, System.Drawing">
+    <value>21, 40</value>
+  </data>
+  <data name="HS4_MIN.Size" type="System.Drawing.Size, System.Drawing">
+    <value>43, 20</value>
+  </data>
+  <data name="HS4_MIN.TabIndex" type="System.Int32, mscorlib">
+    <value>132</value>
+  </data>
+  <data name="HS4_MIN.Text" xml:space="preserve">
+    <value>1500</value>
+  </data>
+  <data name="&gt;&gt;HS4_MIN.Name" xml:space="preserve">
+    <value>HS4_MIN</value>
+  </data>
+  <data name="&gt;&gt;HS4_MIN.Type" xml:space="preserve">
+    <value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;HS4_MIN.Parent" xml:space="preserve">
+    <value>groupBox2</value>
+  </data>
+  <data name="&gt;&gt;HS4_MIN.ZOrder" xml:space="preserve">
+    <value>1</value>
+  </data>
+  <data name="HS4_MAX.Enabled" type="System.Boolean, mscorlib">
+    <value>False</value>
+  </data>
+  <data name="HS4_MAX.Location" type="System.Drawing.Point, System.Drawing">
+    <value>106, 40</value>
+  </data>
+  <data name="HS4_MAX.Size" type="System.Drawing.Size, System.Drawing">
+    <value>43, 20</value>
+  </data>
+  <data name="HS4_MAX.TabIndex" type="System.Int32, mscorlib">
+    <value>133</value>
+  </data>
+  <data name="HS4_MAX.Text" xml:space="preserve">
+    <value>1500</value>
+  </data>
+  <data name="&gt;&gt;HS4_MAX.Name" xml:space="preserve">
+    <value>HS4_MAX</value>
+  </data>
+  <data name="&gt;&gt;HS4_MAX.Type" xml:space="preserve">
+    <value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;HS4_MAX.Parent" xml:space="preserve">
+    <value>groupBox2</value>
+  </data>
+  <data name="&gt;&gt;HS4_MAX.ZOrder" xml:space="preserve">
+    <value>2</value>
+  </data>
+  <data name="label40.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <data name="label40.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
+    <value>NoControl</value>
+  </data>
+  <data name="label40.Location" type="System.Drawing.Point, System.Drawing">
+    <value>27, 23</value>
+  </data>
+  <data name="label40.Size" type="System.Drawing.Size, System.Drawing">
+    <value>24, 13</value>
+  </data>
+  <data name="label40.TabIndex" type="System.Int32, mscorlib">
+    <value>134</value>
+  </data>
+  <data name="label40.Text" xml:space="preserve">
+    <value>Min</value>
+  </data>
+  <data name="&gt;&gt;label40.Name" xml:space="preserve">
+    <value>label40</value>
+  </data>
+  <data name="&gt;&gt;label40.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;label40.Parent" xml:space="preserve">
+    <value>groupBox2</value>
+  </data>
+  <data name="&gt;&gt;label40.ZOrder" xml:space="preserve">
+    <value>3</value>
+  </data>
+  <data name="groupBox2.Location" type="System.Drawing.Point, System.Drawing">
+    <value>437, 186</value>
+  </data>
+  <data name="groupBox2.Size" type="System.Drawing.Size, System.Drawing">
+    <value>169, 78</value>
+  </data>
+  <data name="groupBox2.TabIndex" type="System.Int32, mscorlib">
+    <value>166</value>
+  </data>
+  <data name="&gt;&gt;groupBox2.Name" xml:space="preserve">
+    <value>groupBox2</value>
+  </data>
+  <data name="&gt;&gt;groupBox2.Type" xml:space="preserve">
+    <value>System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;groupBox2.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name="&gt;&gt;groupBox2.ZOrder" xml:space="preserve">
+    <value>10</value>
+  </data>
+  <data name="HS3_TRIM.Location" type="System.Drawing.Point, System.Drawing">
+    <value>126, 314</value>
+  </data>
+  <data name="HS3_TRIM.Size" type="System.Drawing.Size, System.Drawing">
+    <value>44, 20</value>
+  </data>
+  <data name="HS3_TRIM.TabIndex" type="System.Int32, mscorlib">
+    <value>164</value>
+  </data>
+  <data name="&gt;&gt;HS3_TRIM.Name" xml:space="preserve">
+    <value>HS3_TRIM</value>
+  </data>
+  <data name="&gt;&gt;HS3_TRIM.Type" xml:space="preserve">
+    <value>System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;HS3_TRIM.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name="&gt;&gt;HS3_TRIM.ZOrder" xml:space="preserve">
+    <value>11</value>
+  </data>
+  <data name="HS2_TRIM.Location" type="System.Drawing.Point, System.Drawing">
+    <value>126, 288</value>
+  </data>
+  <data name="HS2_TRIM.Size" type="System.Drawing.Size, System.Drawing">
+    <value>44, 20</value>
+  </data>
+  <data name="HS2_TRIM.TabIndex" type="System.Int32, mscorlib">
+    <value>163</value>
+  </data>
+  <data name="&gt;&gt;HS2_TRIM.Name" xml:space="preserve">
+    <value>HS2_TRIM</value>
+  </data>
+  <data name="&gt;&gt;HS2_TRIM.Type" xml:space="preserve">
+    <value>System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;HS2_TRIM.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name="&gt;&gt;HS2_TRIM.ZOrder" xml:space="preserve">
+    <value>12</value>
+  </data>
+  <data name="HS1_TRIM.Location" type="System.Drawing.Point, System.Drawing">
+    <value>126, 262</value>
+  </data>
+  <data name="HS1_TRIM.Size" type="System.Drawing.Size, System.Drawing">
+    <value>44, 20</value>
+  </data>
+  <data name="HS1_TRIM.TabIndex" type="System.Int32, mscorlib">
+    <value>162</value>
+  </data>
+  <data name="&gt;&gt;HS1_TRIM.Name" xml:space="preserve">
+    <value>HS1_TRIM</value>
+  </data>
+  <data name="&gt;&gt;HS1_TRIM.Type" xml:space="preserve">
+    <value>System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;HS1_TRIM.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name="&gt;&gt;HS1_TRIM.ZOrder" xml:space="preserve">
+    <value>13</value>
+  </data>
+  <data name="label39.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <data name="label39.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
+    <value>NoControl</value>
+  </data>
+  <data name="label39.Location" type="System.Drawing.Point, System.Drawing">
+    <value>131, 249</value>
+  </data>
+  <data name="label39.Size" type="System.Drawing.Size, System.Drawing">
+    <value>27, 13</value>
+  </data>
+  <data name="label39.TabIndex" type="System.Int32, mscorlib">
+    <value>161</value>
+  </data>
+  <data name="label39.Text" xml:space="preserve">
+    <value>Trim</value>
+  </data>
+  <data name="&gt;&gt;label39.Name" xml:space="preserve">
+    <value>label39</value>
+  </data>
+  <data name="&gt;&gt;label39.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;label39.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name="&gt;&gt;label39.ZOrder" xml:space="preserve">
+    <value>14</value>
+  </data>
+  <data name="label38.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <data name="label38.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
+    <value>NoControl</value>
+  </data>
+  <data name="label38.Location" type="System.Drawing.Point, System.Drawing">
+    <value>102, 249</value>
+  </data>
+  <data name="label38.Size" type="System.Drawing.Size, System.Drawing">
+    <value>27, 13</value>
+  </data>
+  <data name="label38.TabIndex" type="System.Int32, mscorlib">
+    <value>160</value>
+  </data>
+  <data name="label38.Text" xml:space="preserve">
+    <value>Rev</value>
+  </data>
+  <data name="&gt;&gt;label38.Name" xml:space="preserve">
+    <value>label38</value>
+  </data>
+  <data name="&gt;&gt;label38.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;label38.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name="&gt;&gt;label38.ZOrder" xml:space="preserve">
+    <value>15</value>
+  </data>
+  <data name="label37.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <data name="label37.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
+    <value>NoControl</value>
+  </data>
+  <data name="label37.Location" type="System.Drawing.Point, System.Drawing">
+    <value>54, 249</value>
+  </data>
+  <data name="label37.Size" type="System.Drawing.Size, System.Drawing">
+    <value>44, 13</value>
+  </data>
+  <data name="label37.TabIndex" type="System.Int32, mscorlib">
+    <value>159</value>
+  </data>
+  <data name="label37.Text" xml:space="preserve">
+    <value>Position</value>
+  </data>
+  <data name="&gt;&gt;label37.Name" xml:space="preserve">
+    <value>label37</value>
+  </data>
+  <data name="&gt;&gt;label37.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;label37.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name="&gt;&gt;label37.ZOrder" xml:space="preserve">
+    <value>16</value>
+  </data>
+  <data name="label36.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <data name="label36.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
+    <value>NoControl</value>
+  </data>
+  <data name="label36.Location" type="System.Drawing.Point, System.Drawing">
+    <value>17, 249</value>
+  </data>
+  <data name="label36.Size" type="System.Drawing.Size, System.Drawing">
+    <value>35, 13</value>
+  </data>
+  <data name="label36.TabIndex" type="System.Int32, mscorlib">
+    <value>158</value>
+  </data>
+  <data name="label36.Text" xml:space="preserve">
+    <value>Servo</value>
+  </data>
+  <data name="&gt;&gt;label36.Name" xml:space="preserve">
+    <value>label36</value>
+  </data>
+  <data name="&gt;&gt;label36.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;label36.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name="&gt;&gt;label36.ZOrder" xml:space="preserve">
+    <value>17</value>
+  </data>
+  <data name="label26.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <data name="label26.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
+    <value>NoControl</value>
+  </data>
+  <data name="label26.Location" type="System.Drawing.Point, System.Drawing">
+    <value>260, 365</value>
+  </data>
+  <data name="label26.Size" type="System.Drawing.Size, System.Drawing">
+    <value>54, 13</value>
+  </data>
+  <data name="label26.TabIndex" type="System.Int32, mscorlib">
+    <value>157</value>
+  </data>
+  <data name="label26.Text" xml:space="preserve">
+    <value>Pitch Max</value>
+  </data>
+  <data name="&gt;&gt;label26.Name" xml:space="preserve">
+    <value>label26</value>
+  </data>
+  <data name="&gt;&gt;label26.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;label26.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name="&gt;&gt;label26.ZOrder" xml:space="preserve">
+    <value>18</value>
+  </data>
+  <data name="PIT_MAX.Location" type="System.Drawing.Point, System.Drawing">
+    <value>314, 362</value>
+  </data>
+  <data name="PIT_MAX.Size" type="System.Drawing.Size, System.Drawing">
+    <value>47, 20</value>
+  </data>
+  <data name="PIT_MAX.TabIndex" type="System.Int32, mscorlib">
+    <value>156</value>
+  </data>
+  <data name="PIT_MAX.Text" xml:space="preserve">
+    <value>4500</value>
+  </data>
+  <data name="&gt;&gt;PIT_MAX.Name" xml:space="preserve">
+    <value>PIT_MAX</value>
+  </data>
+  <data name="&gt;&gt;PIT_MAX.Type" xml:space="preserve">
+    <value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;PIT_MAX.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name="&gt;&gt;PIT_MAX.ZOrder" xml:space="preserve">
+    <value>19</value>
+  </data>
+  <data name="label25.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <data name="label25.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
+    <value>NoControl</value>
+  </data>
+  <data name="label25.Location" type="System.Drawing.Point, System.Drawing">
+    <value>260, 341</value>
+  </data>
+  <data name="label25.Size" type="System.Drawing.Size, System.Drawing">
+    <value>48, 13</value>
+  </data>
+  <data name="label25.TabIndex" type="System.Int32, mscorlib">
+    <value>155</value>
+  </data>
+  <data name="label25.Text" xml:space="preserve">
+    <value>Roll Max</value>
+  </data>
+  <data name="&gt;&gt;label25.Name" xml:space="preserve">
+    <value>label25</value>
+  </data>
+  <data name="&gt;&gt;label25.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;label25.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name="&gt;&gt;label25.ZOrder" xml:space="preserve">
+    <value>20</value>
+  </data>
+  <data name="ROL_MAX.Location" type="System.Drawing.Point, System.Drawing">
+    <value>314, 336</value>
+  </data>
+  <data name="ROL_MAX.Size" type="System.Drawing.Size, System.Drawing">
+    <value>47, 20</value>
+  </data>
+  <data name="ROL_MAX.TabIndex" type="System.Int32, mscorlib">
+    <value>154</value>
+  </data>
+  <data name="ROL_MAX.Text" xml:space="preserve">
+    <value>4500</value>
+  </data>
+  <data name="&gt;&gt;ROL_MAX.Name" xml:space="preserve">
+    <value>ROL_MAX</value>
+  </data>
+  <data name="&gt;&gt;ROL_MAX.Type" xml:space="preserve">
+    <value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;ROL_MAX.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name="&gt;&gt;ROL_MAX.ZOrder" xml:space="preserve">
+    <value>21</value>
+  </data>
+  <data name="label23.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <data name="label23.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
+    <value>NoControl</value>
+  </data>
+  <data name="label23.Location" type="System.Drawing.Point, System.Drawing">
+    <value>480, 66</value>
+  </data>
+  <data name="label23.Size" type="System.Drawing.Size, System.Drawing">
+    <value>75, 13</value>
+  </data>
+  <data name="label23.TabIndex" type="System.Int32, mscorlib">
+    <value>153</value>
+  </data>
+  <data name="label23.Text" xml:space="preserve">
+    <value>Rudder Travel</value>
+  </data>
+  <data name="&gt;&gt;label23.Name" xml:space="preserve">
+    <value>label23</value>
+  </data>
+  <data name="&gt;&gt;label23.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;label23.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name="&gt;&gt;label23.ZOrder" xml:space="preserve">
+    <value>22</value>
+  </data>
+  <data name="label22.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <data name="label22.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
+    <value>NoControl</value>
+  </data>
+  <data name="label22.Location" type="System.Drawing.Point, System.Drawing">
+    <value>236, 66</value>
+  </data>
+  <data name="label22.Size" type="System.Drawing.Size, System.Drawing">
+    <value>72, 13</value>
+  </data>
+  <data name="label22.TabIndex" type="System.Int32, mscorlib">
+    <value>150</value>
+  </data>
+  <data name="label22.Text" xml:space="preserve">
+    <value>Swash Travel</value>
+  </data>
+  <data name="&gt;&gt;label22.Name" xml:space="preserve">
+    <value>label22</value>
+  </data>
+  <data name="&gt;&gt;label22.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;label22.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name="&gt;&gt;label22.ZOrder" xml:space="preserve">
+    <value>23</value>
+  </data>
+  <data name="label20.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <data name="label20.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
+    <value>NoControl</value>
+  </data>
+  <data name="label20.Location" type="System.Drawing.Point, System.Drawing">
+    <value>27, 317</value>
+  </data>
+  <data name="label20.Size" type="System.Drawing.Size, System.Drawing">
+    <value>13, 13</value>
+  </data>
+  <data name="label20.TabIndex" type="System.Int32, mscorlib">
+    <value>149</value>
+  </data>
+  <data name="label20.Text" xml:space="preserve">
+    <value>3</value>
+  </data>
+  <data name="&gt;&gt;label20.Name" xml:space="preserve">
+    <value>label20</value>
+  </data>
+  <data name="&gt;&gt;label20.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;label20.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name="&gt;&gt;label20.ZOrder" xml:space="preserve">
+    <value>24</value>
+  </data>
+  <data name="label19.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <data name="label19.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
+    <value>NoControl</value>
+  </data>
+  <data name="label19.Location" type="System.Drawing.Point, System.Drawing">
+    <value>27, 291</value>
+  </data>
+  <data name="label19.Size" type="System.Drawing.Size, System.Drawing">
+    <value>13, 13</value>
+  </data>
+  <data name="label19.TabIndex" type="System.Int32, mscorlib">
+    <value>148</value>
+  </data>
+  <data name="label19.Text" xml:space="preserve">
+    <value>2</value>
+  </data>
+  <data name="&gt;&gt;label19.Name" xml:space="preserve">
+    <value>label19</value>
+  </data>
+  <data name="&gt;&gt;label19.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;label19.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name="&gt;&gt;label19.ZOrder" xml:space="preserve">
+    <value>25</value>
+  </data>
+  <data name="label18.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <data name="label18.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
+    <value>NoControl</value>
+  </data>
+  <data name="label18.Location" type="System.Drawing.Point, System.Drawing">
+    <value>27, 265</value>
+  </data>
+  <data name="label18.Size" type="System.Drawing.Size, System.Drawing">
+    <value>13, 13</value>
+  </data>
+  <data name="label18.TabIndex" type="System.Int32, mscorlib">
+    <value>147</value>
+  </data>
+  <data name="label18.Text" xml:space="preserve">
+    <value>1</value>
+  </data>
+  <data name="&gt;&gt;label18.Name" xml:space="preserve">
+    <value>label18</value>
+  </data>
+  <data name="&gt;&gt;label18.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;label18.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name="&gt;&gt;label18.ZOrder" xml:space="preserve">
+    <value>26</value>
+  </data>
+  <data name="SV3_POS.Location" type="System.Drawing.Point, System.Drawing">
+    <value>57, 314</value>
+  </data>
+  <data name="SV3_POS.Size" type="System.Drawing.Size, System.Drawing">
+    <value>39, 20</value>
+  </data>
+  <data name="SV3_POS.TabIndex" type="System.Int32, mscorlib">
+    <value>146</value>
+  </data>
+  <data name="SV3_POS.Text" xml:space="preserve">
+    <value>180</value>
+  </data>
+  <data name="&gt;&gt;SV3_POS.Name" xml:space="preserve">
+    <value>SV3_POS</value>
+  </data>
+  <data name="&gt;&gt;SV3_POS.Type" xml:space="preserve">
+    <value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;SV3_POS.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name="&gt;&gt;SV3_POS.ZOrder" xml:space="preserve">
+    <value>27</value>
+  </data>
+  <data name="SV2_POS.Location" type="System.Drawing.Point, System.Drawing">
+    <value>57, 288</value>
+  </data>
+  <data name="SV2_POS.Size" type="System.Drawing.Size, System.Drawing">
+    <value>39, 20</value>
+  </data>
+  <data name="SV2_POS.TabIndex" type="System.Int32, mscorlib">
+    <value>145</value>
+  </data>
+  <data name="SV2_POS.Text" xml:space="preserve">
+    <value>60</value>
+  </data>
+  <data name="&gt;&gt;SV2_POS.Name" xml:space="preserve">
+    <value>SV2_POS</value>
+  </data>
+  <data name="&gt;&gt;SV2_POS.Type" xml:space="preserve">
+    <value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;SV2_POS.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name="&gt;&gt;SV2_POS.ZOrder" xml:space="preserve">
+    <value>28</value>
+  </data>
+  <data name="SV1_POS.Location" type="System.Drawing.Point, System.Drawing">
+    <value>57, 262</value>
+  </data>
+  <data name="SV1_POS.Size" type="System.Drawing.Size, System.Drawing">
+    <value>39, 20</value>
+  </data>
+  <data name="SV1_POS.TabIndex" type="System.Int32, mscorlib">
+    <value>144</value>
+  </data>
+  <data name="SV1_POS.Text" xml:space="preserve">
+    <value>-60</value>
+  </data>
+  <data name="&gt;&gt;SV1_POS.Name" xml:space="preserve">
+    <value>SV1_POS</value>
+  </data>
+  <data name="&gt;&gt;SV1_POS.Type" xml:space="preserve">
+    <value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;SV1_POS.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name="&gt;&gt;SV1_POS.ZOrder" xml:space="preserve">
+    <value>29</value>
+  </data>
+  <data name="HS3_REV.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <data name="HS3_REV.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
+    <value>NoControl</value>
+  </data>
+  <data name="HS3_REV.Location" type="System.Drawing.Point, System.Drawing">
+    <value>105, 317</value>
+  </data>
+  <data name="HS3_REV.Size" type="System.Drawing.Size, System.Drawing">
+    <value>15, 14</value>
+  </data>
+  <data name="HS3_REV.TabIndex" type="System.Int32, mscorlib">
+    <value>143</value>
+  </data>
+  <data name="&gt;&gt;HS3_REV.Name" xml:space="preserve">
+    <value>HS3_REV</value>
+  </data>
+  <data name="&gt;&gt;HS3_REV.Type" xml:space="preserve">
+    <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;HS3_REV.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name="&gt;&gt;HS3_REV.ZOrder" xml:space="preserve">
+    <value>30</value>
+  </data>
+  <data name="HS2_REV.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <data name="HS2_REV.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
+    <value>NoControl</value>
+  </data>
+  <data name="HS2_REV.Location" type="System.Drawing.Point, System.Drawing">
+    <value>105, 291</value>
+  </data>
+  <data name="HS2_REV.Size" type="System.Drawing.Size, System.Drawing">
+    <value>15, 14</value>
+  </data>
+  <data name="HS2_REV.TabIndex" type="System.Int32, mscorlib">
+    <value>142</value>
+  </data>
+  <data name="&gt;&gt;HS2_REV.Name" xml:space="preserve">
+    <value>HS2_REV</value>
+  </data>
+  <data name="&gt;&gt;HS2_REV.Type" xml:space="preserve">
+    <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;HS2_REV.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name="&gt;&gt;HS2_REV.ZOrder" xml:space="preserve">
+    <value>31</value>
+  </data>
+  <data name="HS1_REV.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <data name="HS1_REV.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
+    <value>NoControl</value>
+  </data>
+  <data name="HS1_REV.Location" type="System.Drawing.Point, System.Drawing">
+    <value>105, 268</value>
+  </data>
+  <data name="HS1_REV.Size" type="System.Drawing.Size, System.Drawing">
+    <value>15, 14</value>
+  </data>
+  <data name="HS1_REV.TabIndex" type="System.Int32, mscorlib">
+    <value>141</value>
+  </data>
+  <data name="&gt;&gt;HS1_REV.Name" xml:space="preserve">
+    <value>HS1_REV</value>
+  </data>
+  <data name="&gt;&gt;HS1_REV.Type" xml:space="preserve">
+    <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;HS1_REV.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name="&gt;&gt;HS1_REV.ZOrder" xml:space="preserve">
+    <value>32</value>
+  </data>
+  <data name="label17.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <data name="label17.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
+    <value>NoControl</value>
+  </data>
+  <data name="label17.Location" type="System.Drawing.Point, System.Drawing">
+    <value>42, 66</value>
+  </data>
+  <data name="label17.Size" type="System.Drawing.Size, System.Drawing">
+    <value>109, 13</value>
+  </data>
+  <data name="label17.TabIndex" type="System.Int32, mscorlib">
+    <value>140</value>
+  </data>
+  <data name="label17.Text" xml:space="preserve">
+    <value>Swash-Servo position</value>
+  </data>
+  <data name="&gt;&gt;label17.Name" xml:space="preserve">
+    <value>label17</value>
+  </data>
+  <data name="&gt;&gt;label17.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;label17.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name="&gt;&gt;label17.ZOrder" xml:space="preserve">
+    <value>33</value>
+  </data>
+  <metadata name="currentStateBindingSource.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>17, 17</value>
+  </metadata>
+  <data name="HS4.Location" type="System.Drawing.Point, System.Drawing">
+    <value>396, 93</value>
+  </data>
+  <data name="HS4.Size" type="System.Drawing.Size, System.Drawing">
+    <value>242, 42</value>
+  </data>
+  <data name="HS4.TabIndex" type="System.Int32, mscorlib">
+    <value>152</value>
+  </data>
+  <data name="&gt;&gt;HS4.Name" xml:space="preserve">
+    <value>HS4</value>
+  </data>
+  <data name="&gt;&gt;HS4.Type" xml:space="preserve">
+    <value>ArdupilotMega.HorizontalProgressBar2, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null</value>
+  </data>
+  <data name="&gt;&gt;HS4.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name="&gt;&gt;HS4.ZOrder" xml:space="preserve">
+    <value>34</value>
+  </data>
+  <data name="HS3.Location" type="System.Drawing.Point, System.Drawing">
+    <value>239, 95</value>
+  </data>
+  <data name="HS3.Size" type="System.Drawing.Size, System.Drawing">
+    <value>42, 213</value>
+  </data>
+  <data name="HS3.TabIndex" type="System.Int32, mscorlib">
+    <value>151</value>
+  </data>
+  <data name="&gt;&gt;HS3.Name" xml:space="preserve">
+    <value>HS3</value>
+  </data>
+  <data name="&gt;&gt;HS3.Type" xml:space="preserve">
+    <value>ArdupilotMega.VerticalProgressBar2, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null</value>
+  </data>
+  <data name="&gt;&gt;HS3.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name="&gt;&gt;HS3.ZOrder" xml:space="preserve">
+    <value>35</value>
+  </data>
+  <data name="Gservoloc.BackgroundImageLayout" type="System.Windows.Forms.ImageLayout, System.Windows.Forms">
+    <value>Zoom</value>
+  </data>
+  <data name="Gservoloc.Font" type="System.Drawing.Font, System.Drawing">
+    <value>Microsoft Sans Serif, 9pt</value>
+  </data>
+  <data name="Gservoloc.Location" type="System.Drawing.Point, System.Drawing">
+    <value>20, 93</value>
+  </data>
+  <data name="Gservoloc.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
+    <value>0, 0, 0, 0</value>
+  </data>
+  <data name="Gservoloc.Size" type="System.Drawing.Size, System.Drawing">
+    <value>150, 150</value>
+  </data>
+  <data name="Gservoloc.TabIndex" type="System.Int32, mscorlib">
+    <value>139</value>
+  </data>
+  <data name="&gt;&gt;Gservoloc.Name" xml:space="preserve">
+    <value>Gservoloc</value>
+  </data>
+  <data name="&gt;&gt;Gservoloc.Type" xml:space="preserve">
+    <value>AGaugeApp.AGauge, ArdupilotMegaPlanner, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null</value>
+  </data>
+  <data name="&gt;&gt;Gservoloc.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name="&gt;&gt;Gservoloc.ZOrder" xml:space="preserve">
+    <value>36</value>
+  </data>
+  <data name="label44.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <data name="label44.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
+    <value>NoControl</value>
+  </data>
+  <data name="label44.Location" type="System.Drawing.Point, System.Drawing">
+    <value>529, 268</value>
+  </data>
+  <data name="label44.Size" type="System.Drawing.Size, System.Drawing">
+    <value>27, 13</value>
+  </data>
+  <data name="label44.TabIndex" type="System.Int32, mscorlib">
+    <value>174</value>
+  </data>
+  <data name="label44.Text" xml:space="preserve">
+    <value>Trim</value>
+  </data>
+  <data name="&gt;&gt;label44.Name" xml:space="preserve">
+    <value>label44</value>
+  </data>
+  <data name="&gt;&gt;label44.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;label44.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name="&gt;&gt;label44.ZOrder" xml:space="preserve">
+    <value>0</value>
+  </data>
+  <data name="label43.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <data name="label43.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
+    <value>NoControl</value>
+  </data>
+  <data name="label43.Location" type="System.Drawing.Point, System.Drawing">
+    <value>496, 268</value>
+  </data>
+  <data name="label43.Size" type="System.Drawing.Size, System.Drawing">
+    <value>27, 13</value>
+  </data>
+  <data name="label43.TabIndex" type="System.Int32, mscorlib">
+    <value>173</value>
+  </data>
+  <data name="label43.Text" xml:space="preserve">
+    <value>Rev</value>
+  </data>
+  <data name="&gt;&gt;label43.Name" xml:space="preserve">
+    <value>label43</value>
+  </data>
+  <data name="&gt;&gt;label43.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;label43.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name="&gt;&gt;label43.ZOrder" xml:space="preserve">
+    <value>1</value>
+  </data>
+  <data name="label42.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <data name="label42.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
+    <value>NoControl</value>
+  </data>
+  <data name="label42.Location" type="System.Drawing.Point, System.Drawing">
+    <value>448, 288</value>
+  </data>
+  <data name="label42.Size" type="System.Drawing.Size, System.Drawing">
+    <value>42, 13</value>
+  </data>
+  <data name="label42.TabIndex" type="System.Int32, mscorlib">
+    <value>172</value>
+  </data>
+  <data name="label42.Text" xml:space="preserve">
+    <value>Rudder</value>
+  </data>
+  <data name="&gt;&gt;label42.Name" xml:space="preserve">
+    <value>label42</value>
+  </data>
+  <data name="&gt;&gt;label42.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;label42.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name="&gt;&gt;label42.ZOrder" xml:space="preserve">
+    <value>2</value>
+  </data>
+  <data name="HS4_TRIM.Location" type="System.Drawing.Point, System.Drawing">
+    <value>532, 284</value>
+  </data>
+  <data name="HS4_TRIM.Size" type="System.Drawing.Size, System.Drawing">
+    <value>44, 20</value>
+  </data>
+  <data name="HS4_TRIM.TabIndex" type="System.Int32, mscorlib">
+    <value>171</value>
+  </data>
+  <data name="&gt;&gt;HS4_TRIM.Name" xml:space="preserve">
+    <value>HS4_TRIM</value>
+  </data>
+  <data name="&gt;&gt;HS4_TRIM.Type" xml:space="preserve">
+    <value>System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;HS4_TRIM.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name="&gt;&gt;HS4_TRIM.ZOrder" xml:space="preserve">
+    <value>3</value>
+  </data>
+  <data name="HS4_REV.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <data name="HS4_REV.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
+    <value>NoControl</value>
+  </data>
+  <data name="HS4_REV.Location" type="System.Drawing.Point, System.Drawing">
+    <value>499, 287</value>
+  </data>
+  <data name="HS4_REV.Size" type="System.Drawing.Size, System.Drawing">
+    <value>15, 14</value>
+  </data>
+  <data name="HS4_REV.TabIndex" type="System.Int32, mscorlib">
+    <value>170</value>
+  </data>
+  <data name="&gt;&gt;HS4_REV.Name" xml:space="preserve">
+    <value>HS4_REV</value>
+  </data>
+  <data name="&gt;&gt;HS4_REV.Type" xml:space="preserve">
+    <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;HS4_REV.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name="&gt;&gt;HS4_REV.ZOrder" xml:space="preserve">
+    <value>4</value>
+  </data>
+  <metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+    <value>True</value>
+  </metadata>
+  <data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
+    <value>6, 13</value>
+  </data>
+  <data name="$this.Size" type="System.Drawing.Size, System.Drawing">
+    <value>654, 397</value>
+  </data>
+  <data name="&gt;&gt;currentStateBindingSource.Name" xml:space="preserve">
+    <value>currentStateBindingSource</value>
+  </data>
+  <data name="&gt;&gt;currentStateBindingSource.Type" xml:space="preserve">
+    <value>System.Windows.Forms.BindingSource, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="&gt;&gt;$this.Name" xml:space="preserve">
+    <value>ConfigTradHeli</value>
+  </data>
+  <data name="&gt;&gt;$this.Type" xml:space="preserve">
+    <value>System.Windows.Forms.UserControl, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
 </root>
\ No newline at end of file
diff --git a/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigTradHeli.zh-Hans.resx b/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigTradHeli.zh-Hans.resx
new file mode 100644
index 000000000..f96892c42
--- /dev/null
+++ b/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigTradHeli.zh-Hans.resx
@@ -0,0 +1,496 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <data name="tabRadioIn.Text" xml:space="preserve">
+    <value>遥控输入</value>
+  </data>
+  <data name="tabModes.Text" xml:space="preserve">
+    <value>模式</value>
+  </data>
+  <data name="tabHardware.Text" xml:space="preserve">
+    <value>硬件</value>
+  </data>
+  <data name="tabBattery.Text" xml:space="preserve">
+    <value>电池</value>
+  </data>
+  <data name="tabHeli.Text" xml:space="preserve">
+    <value>AC2 直升机</value>
+  </data>
+  <data name="groupBoxElevons.Text" xml:space="preserve">
+    <value>上降副翼 (Elevon) 配置</value>
+  </data>
+  <assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
+  <data name="CHK_elevonch2rev.Size" type="System.Drawing.Size, System.Drawing">
+    <value>115, 17</value>
+  </data>
+  <data name="CHK_elevonch2rev.Text" xml:space="preserve">
+    <value>Elevons CH2 逆转</value>
+  </data>
+  <data name="CHK_elevonrev.Size" type="System.Drawing.Size, System.Drawing">
+    <value>91, 17</value>
+  </data>
+  <data name="CHK_elevonrev.Text" xml:space="preserve">
+    <value>Elevons 逆转</value>
+  </data>
+  <data name="CHK_elevonch1rev.Size" type="System.Drawing.Size, System.Drawing">
+    <value>115, 17</value>
+  </data>
+  <data name="CHK_elevonch1rev.Text" xml:space="preserve">
+    <value>Elevons CH1 逆转</value>
+  </data>
+  <data name="CHK_revch3.Size" type="System.Drawing.Size, System.Drawing">
+    <value>50, 17</value>
+  </data>
+  <data name="CHK_revch3.Text" xml:space="preserve">
+    <value>逆转</value>
+  </data>
+  <data name="CHK_revch4.Size" type="System.Drawing.Size, System.Drawing">
+    <value>50, 17</value>
+  </data>
+  <data name="CHK_revch4.Text" xml:space="preserve">
+    <value>逆转</value>
+  </data>
+  <data name="CHK_revch2.Size" type="System.Drawing.Size, System.Drawing">
+    <value>50, 17</value>
+  </data>
+  <data name="CHK_revch2.Text" xml:space="preserve">
+    <value>逆转</value>
+  </data>
+  <data name="CHK_revch1.Size" type="System.Drawing.Size, System.Drawing">
+    <value>50, 17</value>
+  </data>
+  <data name="CHK_revch1.Text" xml:space="preserve">
+    <value>逆转</value>
+  </data>
+  <data name="BUT_Calibrateradio.Text" xml:space="preserve">
+    <value>校准遥控</value>
+  </data>
+  <data name="CB_simple6.Size" type="System.Drawing.Size, System.Drawing">
+    <value>74, 17</value>
+  </data>
+  <data name="CB_simple6.Text" xml:space="preserve">
+    <value>简单模式</value>
+  </data>
+  <data name="CB_simple5.Size" type="System.Drawing.Size, System.Drawing">
+    <value>74, 17</value>
+  </data>
+  <data name="CB_simple5.Text" xml:space="preserve">
+    <value>简单模式</value>
+  </data>
+  <data name="CB_simple4.Size" type="System.Drawing.Size, System.Drawing">
+    <value>74, 17</value>
+  </data>
+  <data name="CB_simple4.Text" xml:space="preserve">
+    <value>简单模式</value>
+  </data>
+  <data name="CB_simple3.Size" type="System.Drawing.Size, System.Drawing">
+    <value>74, 17</value>
+  </data>
+  <data name="CB_simple3.Text" xml:space="preserve">
+    <value>简单模式</value>
+  </data>
+  <data name="CB_simple2.Size" type="System.Drawing.Size, System.Drawing">
+    <value>74, 17</value>
+  </data>
+  <data name="CB_simple2.Text" xml:space="preserve">
+    <value>简单模式</value>
+  </data>
+  <data name="CB_simple1.Size" type="System.Drawing.Size, System.Drawing">
+    <value>74, 17</value>
+  </data>
+  <data name="CB_simple1.Text" xml:space="preserve">
+    <value>简单模式</value>
+  </data>
+  <data name="label14.Size" type="System.Drawing.Size, System.Drawing">
+    <value>64, 13</value>
+  </data>
+  <data name="label14.Text" xml:space="preserve">
+    <value>当前 PWM:</value>
+  </data>
+  <data name="label13.Size" type="System.Drawing.Size, System.Drawing">
+    <value>58, 13</value>
+  </data>
+  <data name="label13.Text" xml:space="preserve">
+    <value>当前模式:</value>
+  </data>
+  <data name="label6.Size" type="System.Drawing.Size, System.Drawing">
+    <value>64, 13</value>
+  </data>
+  <data name="label6.Text" xml:space="preserve">
+    <value>飞行模式 6</value>
+  </data>
+  <data name="label5.Size" type="System.Drawing.Size, System.Drawing">
+    <value>64, 13</value>
+  </data>
+  <data name="label5.Text" xml:space="preserve">
+    <value>飞行模式 5</value>
+  </data>
+  <data name="label4.Size" type="System.Drawing.Size, System.Drawing">
+    <value>64, 13</value>
+  </data>
+  <data name="label4.Text" xml:space="preserve">
+    <value>飞行模式 4</value>
+  </data>
+  <data name="label3.Size" type="System.Drawing.Size, System.Drawing">
+    <value>64, 13</value>
+  </data>
+  <data name="label3.Text" xml:space="preserve">
+    <value>飞行模式 3</value>
+  </data>
+  <data name="label2.Size" type="System.Drawing.Size, System.Drawing">
+    <value>64, 13</value>
+  </data>
+  <data name="label2.Text" xml:space="preserve">
+    <value>飞行模式 2</value>
+  </data>
+  <data name="label1.Size" type="System.Drawing.Size, System.Drawing">
+    <value>64, 13</value>
+  </data>
+  <data name="label1.Text" xml:space="preserve">
+    <value>飞行模式 1</value>
+  </data>
+  <data name="BUT_SaveModes.Text" xml:space="preserve">
+    <value>保存模式</value>
+  </data>
+  <data name="label27.Text" xml:space="preserve">
+    <value>十进制, 2° 3' W 就是 -2.3</value>
+  </data>
+  <data name="CHK_enableoptflow.Text" xml:space="preserve">
+    <value>启用光流</value>
+  </data>
+  <data name="linkLabelmagdec.Size" type="System.Drawing.Size, System.Drawing">
+    <value>67, 13</value>
+  </data>
+  <data name="linkLabelmagdec.Text" xml:space="preserve">
+    <value>磁偏角网站</value>
+  </data>
+  <data name="label100.Text" xml:space="preserve">
+    <value>磁偏角</value>
+  </data>
+  <data name="CHK_enableairspeed.Text" xml:space="preserve">
+    <value>启用空速计</value>
+  </data>
+  <data name="CHK_enablesonar.Text" xml:space="preserve">
+    <value>启用声纳</value>
+  </data>
+  <data name="CHK_enablecompass.Text" xml:space="preserve">
+    <value>启用罗盘</value>
+  </data>
+  <data name="label31.Size" type="System.Drawing.Size, System.Drawing">
+    <value>58, 13</value>
+  </data>
+  <data name="label31.Text" xml:space="preserve">
+    <value>输入电压:</value>
+  </data>
+  <data name="label32.Size" type="System.Drawing.Size, System.Drawing">
+    <value>94, 13</value>
+  </data>
+  <data name="label32.Text" xml:space="preserve">
+    <value>测量的电池电压:</value>
+  </data>
+  <data name="label33.Size" type="System.Drawing.Size, System.Drawing">
+    <value>58, 13</value>
+  </data>
+  <data name="label33.Text" xml:space="preserve">
+    <value>电池电压:</value>
+  </data>
+  <data name="label34.Size" type="System.Drawing.Size, System.Drawing">
+    <value>52, 13</value>
+  </data>
+  <data name="label34.Text" xml:space="preserve">
+    <value>分 压 比:</value>
+  </data>
+  <data name="label35.Size" type="System.Drawing.Size, System.Drawing">
+    <value>63, 13</value>
+  </data>
+  <data name="label35.Text" xml:space="preserve">
+    <value>安培/伏特:</value>
+  </data>
+  <data name="label47.Size" type="System.Drawing.Size, System.Drawing">
+    <value>48, 18</value>
+  </data>
+  <data name="label47.Text" xml:space="preserve">
+    <value>传感器</value>
+  </data>
+  <data name="textBox3.Text" xml:space="preserve">
+    <value>电压传感器校准:
+1. 测量APM输入电压,输入到下方的文本框中
+2. 测量电池电压,输入到下方的文本框中
+3. 从当前的传感器的数据表中找到安培/伏特,输入到下方的文本框中</value>
+  </data>
+  <data name="label29.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label29.Text" xml:space="preserve">
+    <value>容量</value>
+  </data>
+  <data name="label30.Size" type="System.Drawing.Size, System.Drawing">
+    <value>48, 13</value>
+  </data>
+  <data name="label30.Text" xml:space="preserve">
+    <value>监控器</value>
+  </data>
+  <data name="label28.Size" type="System.Drawing.Size, System.Drawing">
+    <value>175, 13</value>
+  </data>
+  <data name="label28.Text" xml:space="preserve">
+    <value>设置水平面的默认加速度计偏移</value>
+  </data>
+  <data name="label16.Size" type="System.Drawing.Size, System.Drawing">
+    <value>261, 13</value>
+  </data>
+  <data name="label16.Text" xml:space="preserve">
+    <value>注: 图片只是用于展示,设置可以用于六轴等机架</value>
+  </data>
+  <data name="label15.Size" type="System.Drawing.Size, System.Drawing">
+    <value>93, 13</value>
+  </data>
+  <data name="label15.Text" xml:space="preserve">
+    <value>机架设置 (+ 或 x)</value>
+  </data>
+  <data name="BUT_levelac2.Text" xml:space="preserve">
+    <value>找平</value>
+  </data>
+  <data name="BUT_HS4save.Text" xml:space="preserve">
+    <value>手动</value>
+  </data>
+  <data name="BUT_swash_manual.Text" xml:space="preserve">
+    <value>手动</value>
+  </data>
+  <data name="label46.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label46.Text" xml:space="preserve">
+    <value>感度</value>
+  </data>
+  <data name="label45.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label45.Text" xml:space="preserve">
+    <value>启用</value>
+  </data>
+  <data name="label44.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label44.Text" xml:space="preserve">
+    <value>微调</value>
+  </data>
+  <data name="label43.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label43.Text" xml:space="preserve">
+    <value>逆转</value>
+  </data>
+  <data name="label42.Size" type="System.Drawing.Size, System.Drawing">
+    <value>43, 13</value>
+  </data>
+  <data name="label42.Text" xml:space="preserve">
+    <value>方向舵</value>
+  </data>
+  <data name="label24.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label24.Text" xml:space="preserve">
+    <value>最大</value>
+  </data>
+  <data name="label40.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label40.Text" xml:space="preserve">
+    <value>最小</value>
+  </data>
+  <data name="label41.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label41.Text" xml:space="preserve">
+    <value>最低</value>
+  </data>
+  <data name="label21.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label21.Text" xml:space="preserve">
+    <value>最高</value>
+  </data>
+  <data name="BUT_0collective.Text" xml:space="preserve">
+    <value>0度</value>
+  </data>
+  <data name="label39.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label39.Text" xml:space="preserve">
+    <value>微调</value>
+  </data>
+  <data name="label38.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label38.Text" xml:space="preserve">
+    <value>逆转</value>
+  </data>
+  <data name="label37.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label37.Text" xml:space="preserve">
+    <value>位置</value>
+  </data>
+  <data name="label36.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label36.Text" xml:space="preserve">
+    <value>舵机</value>
+  </data>
+  <data name="label26.Size" type="System.Drawing.Size, System.Drawing">
+    <value>55, 13</value>
+  </data>
+  <data name="label26.Text" xml:space="preserve">
+    <value>最大俯仰</value>
+  </data>
+  <data name="label25.Size" type="System.Drawing.Size, System.Drawing">
+    <value>55, 13</value>
+  </data>
+  <data name="label25.Text" xml:space="preserve">
+    <value>最大侧倾</value>
+  </data>
+  <data name="label23.Size" type="System.Drawing.Size, System.Drawing">
+    <value>55, 13</value>
+  </data>
+  <data name="label23.Text" xml:space="preserve">
+    <value>舵机行程</value>
+  </data>
+  <data name="label22.Size" type="System.Drawing.Size, System.Drawing">
+    <value>79, 13</value>
+  </data>
+  <data name="label22.Text" xml:space="preserve">
+    <value>斜盘水平微调</value>
+  </data>
+  <data name="label17.Size" type="System.Drawing.Size, System.Drawing">
+    <value>79, 13</value>
+  </data>
+  <data name="label17.Text" xml:space="preserve">
+    <value>斜盘舵机位置</value>
+  </data>
+  <data name="tabReset.Text" xml:space="preserve">
+    <value>重置</value>
+  </data>
+  <data name="BUT_reset.Text" xml:space="preserve">
+    <value>重置 APM 为默认设置</value>
+  </data>
+  <data name="$this.Text" xml:space="preserve">
+    <value>APM设置</value>
+  </data>
+</root>
\ No newline at end of file
diff --git a/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigTradHeli.zh-TW.resx b/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigTradHeli.zh-TW.resx
new file mode 100644
index 000000000..0c03fbf8e
--- /dev/null
+++ b/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/ConfigTradHeli.zh-TW.resx
@@ -0,0 +1,460 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <data name="tabReset.Text" xml:space="preserve">
+    <value>重置</value>
+  </data>
+  <data name="tabRadioIn.Text" xml:space="preserve">
+    <value>遙控輸入</value>
+  </data>
+  <data name="tabModes.Text" xml:space="preserve">
+    <value>模式</value>
+  </data>
+  <data name="tabHardware.Text" xml:space="preserve">
+    <value>硬件</value>
+  </data>
+  <data name="tabBattery.Text" xml:space="preserve">
+    <value>電池</value>
+  </data>
+  <data name="BUT_reset.Text" xml:space="preserve">
+    <value>重置 APM 為默認設置</value>
+  </data>
+  <assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
+  <data name="CHK_revch3.Size" type="System.Drawing.Size, System.Drawing">
+    <value>50, 17</value>
+  </data>
+  <data name="CHK_revch3.Text" xml:space="preserve">
+    <value>逆轉</value>
+  </data>
+  <data name="CHK_revch4.Size" type="System.Drawing.Size, System.Drawing">
+    <value>50, 17</value>
+  </data>
+  <data name="CHK_revch4.Text" xml:space="preserve">
+    <value>逆轉</value>
+  </data>
+  <data name="CHK_revch2.Size" type="System.Drawing.Size, System.Drawing">
+    <value>50, 17</value>
+  </data>
+  <data name="CHK_revch2.Text" xml:space="preserve">
+    <value>逆轉</value>
+  </data>
+  <data name="CHK_revch1.Size" type="System.Drawing.Size, System.Drawing">
+    <value>50, 17</value>
+  </data>
+  <data name="CHK_revch1.Text" xml:space="preserve">
+    <value>逆轉</value>
+  </data>
+  <data name="BUT_Calibrateradio.Text" xml:space="preserve">
+    <value>校準遙控</value>
+  </data>
+  <data name="CB_simple6.Size" type="System.Drawing.Size, System.Drawing">
+    <value>74, 17</value>
+  </data>
+  <data name="CB_simple6.Text" xml:space="preserve">
+    <value>簡單模式</value>
+  </data>
+  <data name="CB_simple5.Size" type="System.Drawing.Size, System.Drawing">
+    <value>74, 17</value>
+  </data>
+  <data name="CB_simple5.Text" xml:space="preserve">
+    <value>簡單模式</value>
+  </data>
+  <data name="CB_simple4.Size" type="System.Drawing.Size, System.Drawing">
+    <value>74, 17</value>
+  </data>
+  <data name="CB_simple4.Text" xml:space="preserve">
+    <value>簡單模式</value>
+  </data>
+  <data name="CB_simple3.Size" type="System.Drawing.Size, System.Drawing">
+    <value>74, 17</value>
+  </data>
+  <data name="CB_simple3.Text" xml:space="preserve">
+    <value>簡單模式</value>
+  </data>
+  <data name="CB_simple2.Size" type="System.Drawing.Size, System.Drawing">
+    <value>74, 17</value>
+  </data>
+  <data name="CB_simple2.Text" xml:space="preserve">
+    <value>簡單模式</value>
+  </data>
+  <data name="CB_simple1.Size" type="System.Drawing.Size, System.Drawing">
+    <value>74, 17</value>
+  </data>
+  <data name="CB_simple1.Text" xml:space="preserve">
+    <value>簡單模式</value>
+  </data>
+  <data name="label14.Size" type="System.Drawing.Size, System.Drawing">
+    <value>64, 13</value>
+  </data>
+  <data name="label14.Text" xml:space="preserve">
+    <value>當前 PWM:</value>
+  </data>
+  <data name="label13.Size" type="System.Drawing.Size, System.Drawing">
+    <value>58, 13</value>
+  </data>
+  <data name="label13.Text" xml:space="preserve">
+    <value>當前模式:</value>
+  </data>
+  <data name="label6.Size" type="System.Drawing.Size, System.Drawing">
+    <value>64, 13</value>
+  </data>
+  <data name="label6.Text" xml:space="preserve">
+    <value>飛行模式 6</value>
+  </data>
+  <data name="label5.Size" type="System.Drawing.Size, System.Drawing">
+    <value>64, 13</value>
+  </data>
+  <data name="label5.Text" xml:space="preserve">
+    <value>飛行模式 5</value>
+  </data>
+  <data name="label4.Size" type="System.Drawing.Size, System.Drawing">
+    <value>64, 13</value>
+  </data>
+  <data name="label4.Text" xml:space="preserve">
+    <value>飛行模式 4</value>
+  </data>
+  <data name="label3.Size" type="System.Drawing.Size, System.Drawing">
+    <value>64, 13</value>
+  </data>
+  <data name="label3.Text" xml:space="preserve">
+    <value>飛行模式 3</value>
+  </data>
+  <data name="label2.Size" type="System.Drawing.Size, System.Drawing">
+    <value>64, 13</value>
+  </data>
+  <data name="label2.Text" xml:space="preserve">
+    <value>飛行模式 2</value>
+  </data>
+  <data name="label1.Size" type="System.Drawing.Size, System.Drawing">
+    <value>64, 13</value>
+  </data>
+  <data name="label1.Text" xml:space="preserve">
+    <value>飛行模式 1</value>
+  </data>
+  <data name="BUT_SaveModes.Text" xml:space="preserve">
+    <value>保存模式</value>
+  </data>
+  <data name="linkLabelmagdec.Size" type="System.Drawing.Size, System.Drawing">
+    <value>67, 13</value>
+  </data>
+  <data name="linkLabelmagdec.Text" xml:space="preserve">
+    <value>磁偏角網站</value>
+  </data>
+  <data name="label100.Text" xml:space="preserve">
+    <value>磁偏角</value>
+  </data>
+  <data name="CHK_enableairspeed.Text" xml:space="preserve">
+    <value>啟用空速計</value>
+  </data>
+  <data name="CHK_enablesonar.Text" xml:space="preserve">
+    <value>啟用聲納</value>
+  </data>
+  <data name="CHK_enablecompass.Text" xml:space="preserve">
+    <value>啟用羅盤</value>
+  </data>
+  <data name="label35.Size" type="System.Drawing.Size, System.Drawing">
+    <value>63, 13</value>
+  </data>
+  <data name="label35.Text" xml:space="preserve">
+    <value>安培/伏特:</value>
+  </data>
+  <data name="label34.Size" type="System.Drawing.Size, System.Drawing">
+    <value>52, 13</value>
+  </data>
+  <data name="label34.Text" xml:space="preserve">
+    <value>分 壓 比:</value>
+  </data>
+  <data name="label33.Size" type="System.Drawing.Size, System.Drawing">
+    <value>58, 13</value>
+  </data>
+  <data name="label33.Text" xml:space="preserve">
+    <value>電池電壓:</value>
+  </data>
+  <data name="label32.Size" type="System.Drawing.Size, System.Drawing">
+    <value>94, 13</value>
+  </data>
+  <data name="label32.Text" xml:space="preserve">
+    <value>測量的電池電壓:</value>
+  </data>
+  <data name="label31.Size" type="System.Drawing.Size, System.Drawing">
+    <value>58, 13</value>
+  </data>
+  <data name="label31.Text" xml:space="preserve">
+    <value>輸入電壓:</value>
+  </data>
+  <data name="textBox3.Text" xml:space="preserve">
+    <value>電壓傳感器校準:
+1. 測量APM輸入電壓,輸入到下方的文本框中
+2. 測量電池電壓,輸入到下方的文本框中
+3. 從當前的傳感器的數據表中找到安培/伏特,輸入到下方的文本框中</value>
+  </data>
+  <data name="label29.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label29.Text" xml:space="preserve">
+    <value>容量</value>
+  </data>
+  <data name="label30.Size" type="System.Drawing.Size, System.Drawing">
+    <value>48, 13</value>
+  </data>
+  <data name="label30.Text" xml:space="preserve">
+    <value>監控器</value>
+  </data>
+  <data name="label28.Size" type="System.Drawing.Size, System.Drawing">
+    <value>175, 13</value>
+  </data>
+  <data name="label28.Text" xml:space="preserve">
+    <value>設置水平面的默認加速度計偏移</value>
+  </data>
+  <data name="label16.Size" type="System.Drawing.Size, System.Drawing">
+    <value>261, 13</value>
+  </data>
+  <data name="label16.Text" xml:space="preserve">
+    <value>注: 圖片只是用於展示,設置可以用於六軸等機架</value>
+  </data>
+  <data name="label15.Size" type="System.Drawing.Size, System.Drawing">
+    <value>93, 13</value>
+  </data>
+  <data name="label15.Text" xml:space="preserve">
+    <value>機架設置 (+ 或 x)</value>
+  </data>
+  <data name="BUT_levelac2.Text" xml:space="preserve">
+    <value>找平</value>
+  </data>
+  <data name="label46.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label46.Text" xml:space="preserve">
+    <value>感度</value>
+  </data>
+  <data name="label45.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label45.Text" xml:space="preserve">
+    <value>啟用</value>
+  </data>
+  <data name="label44.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label44.Text" xml:space="preserve">
+    <value>微調</value>
+  </data>
+  <data name="label43.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label43.Text" xml:space="preserve">
+    <value>逆轉</value>
+  </data>
+  <data name="label42.Size" type="System.Drawing.Size, System.Drawing">
+    <value>43, 13</value>
+  </data>
+  <data name="label42.Text" xml:space="preserve">
+    <value>方向舵</value>
+  </data>
+  <data name="BUT_HS4save.Text" xml:space="preserve">
+    <value>手動</value>
+  </data>
+  <data name="label24.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label24.Text" xml:space="preserve">
+    <value>最大</value>
+  </data>
+  <data name="label40.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label40.Text" xml:space="preserve">
+    <value>最小</value>
+  </data>
+  <data name="BUT_swash_manual.Text" xml:space="preserve">
+    <value>手動</value>
+  </data>
+  <data name="label41.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label41.Text" xml:space="preserve">
+    <value>最低</value>
+  </data>
+  <data name="label21.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label21.Text" xml:space="preserve">
+    <value>最高</value>
+  </data>
+  <data name="BUT_0collective.Text" xml:space="preserve">
+    <value>0度</value>
+  </data>
+  <data name="label39.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label39.Text" xml:space="preserve">
+    <value>微調</value>
+  </data>
+  <data name="label38.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label38.Text" xml:space="preserve">
+    <value>逆轉</value>
+  </data>
+  <data name="label37.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label37.Text" xml:space="preserve">
+    <value>位置</value>
+  </data>
+  <data name="label36.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label36.Text" xml:space="preserve">
+    <value>舵機</value>
+  </data>
+  <data name="label26.Size" type="System.Drawing.Size, System.Drawing">
+    <value>55, 13</value>
+  </data>
+  <data name="label26.Text" xml:space="preserve">
+    <value>最大俯仰</value>
+  </data>
+  <data name="label25.Size" type="System.Drawing.Size, System.Drawing">
+    <value>55, 13</value>
+  </data>
+  <data name="label25.Text" xml:space="preserve">
+    <value>最大側傾</value>
+  </data>
+  <data name="label23.Size" type="System.Drawing.Size, System.Drawing">
+    <value>55, 13</value>
+  </data>
+  <data name="label23.Text" xml:space="preserve">
+    <value>舵機行程</value>
+  </data>
+  <data name="label22.Size" type="System.Drawing.Size, System.Drawing">
+    <value>79, 13</value>
+  </data>
+  <data name="label22.Text" xml:space="preserve">
+    <value>斜盤水平微調</value>
+  </data>
+  <data name="label17.Size" type="System.Drawing.Size, System.Drawing">
+    <value>79, 13</value>
+  </data>
+  <data name="label17.Text" xml:space="preserve">
+    <value>斜盤舵機位置</value>
+  </data>
+  <data name="$this.Text" xml:space="preserve">
+    <value>APM設置</value>
+  </data>
+</root>
\ No newline at end of file
diff --git a/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/Setup.Designer.cs b/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/Setup.Designer.cs
index b75d5ddcf..f0ca41efc 100644
--- a/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/Setup.Designer.cs
+++ b/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/Setup.Designer.cs
@@ -29,24 +29,40 @@
         private void InitializeComponent()
         {
             System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Setup));
+            this.lbl_pleaseconnect = new System.Windows.Forms.Label();
             this.backstageView = new ArdupilotMega.Controls.BackstageView.BackstageView();
             this.SuspendLayout();
             // 
+            // lbl_pleaseconnect
+            // 
+            this.lbl_pleaseconnect.AutoSize = true;
+            this.lbl_pleaseconnect.Location = new System.Drawing.Point(297, 284);
+            this.lbl_pleaseconnect.Name = "lbl_pleaseconnect";
+            this.lbl_pleaseconnect.Size = new System.Drawing.Size(104, 13);
+            this.lbl_pleaseconnect.TabIndex = 1;
+            this.lbl_pleaseconnect.Text = "Please Connect First";
+            this.lbl_pleaseconnect.Visible = false;
+            // 
             // backstageView
             // 
             this.backstageView.AutoSize = true;
             this.backstageView.Dock = System.Windows.Forms.DockStyle.Fill;
             this.backstageView.Location = new System.Drawing.Point(0, 0);
             this.backstageView.Name = "backstageView";
-            this.backstageView.Size = new System.Drawing.Size(831, 455);
+            this.backstageView.Size = new System.Drawing.Size(823, 468);
             this.backstageView.TabIndex = 0;
             // 
             // Setup
             // 
-            this.ClientSize = new System.Drawing.Size(831, 455);
+            this.ClientSize = new System.Drawing.Size(823, 468);
+            this.Controls.Add(this.lbl_pleaseconnect);
             this.Controls.Add(this.backstageView);
             this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
+            this.MinimumSize = new System.Drawing.Size(839, 506);
             this.Name = "Setup";
+            this.Text = "Setup";
+            this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.Setup_FormClosing);
+            this.Load += new System.EventHandler(this.Setup_Load);
             this.ResumeLayout(false);
             this.PerformLayout();
 
@@ -55,5 +71,6 @@
         #endregion
 
         private Controls.BackstageView.BackstageView backstageView;
+        private System.Windows.Forms.Label lbl_pleaseconnect;
     }
 }
diff --git a/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/Setup.cs b/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/Setup.cs
index c87e0f21b..14d1887d7 100644
--- a/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/Setup.cs
+++ b/Tools/ArdupilotMegaPlanner/GCSViews/ConfigurationView/Setup.cs
@@ -22,6 +22,22 @@ namespace ArdupilotMega.GCSViews.ConfigurationView
             this.backstageView.AddPage(new BackstageView.BackstageViewPage(new ConfigBatteryMonitoring(), "Battery Monitor"));
             this.backstageView.AddPage(new BackstageView.BackstageViewPage(new ConfigAccelerometerCalibration(), "Level Calibration"));
             this.backstageView.AddPage(new BackstageView.BackstageViewPage(new ConfigTradHeli(), "Heli Setup"));
+
+            this.backstageView.AddPage(new BackstageView.BackstageViewPage(new ArdupilotMega._3DRradio(), "3DR Radio"));
+
+            this.backstageView.AddPage(new BackstageView.BackstageViewPage(new ArdupilotMega.Antenna.Tracker(), "Antenna Tracker"));
+
+            this.backstageView.ActivatePage(backstageView.Pages[0]);
+        }
+
+        private void Setup_Load(object sender, EventArgs e)
+        {
+
+        }
+
+        private void Setup_FormClosing(object sender, FormClosingEventArgs e)
+        {
+            backstageView.Close();
         }
     }
-}
+}
\ No newline at end of file
diff --git a/Tools/ArdupilotMegaPlanner/GCSViews/Firmware.cs b/Tools/ArdupilotMegaPlanner/GCSViews/Firmware.cs
index e25765c0d..8971889c8 100644
--- a/Tools/ArdupilotMegaPlanner/GCSViews/Firmware.cs
+++ b/Tools/ArdupilotMegaPlanner/GCSViews/Firmware.cs
@@ -684,7 +684,7 @@ namespace ArdupilotMega.GCSViews
 
         private void BUT_setup_Click(object sender, EventArgs e)
         {
-            Form temp = new Setup.Setup();
+            Form temp = new GCSViews.ConfigurationView.Setup();
             ThemeManager.ApplyThemeTo(temp);
             temp.ShowDialog();
         }
diff --git a/Tools/ArdupilotMegaPlanner/HUD.cs b/Tools/ArdupilotMegaPlanner/HUD.cs
index 4c3795a88..e87062fb4 100644
--- a/Tools/ArdupilotMegaPlanner/HUD.cs
+++ b/Tools/ArdupilotMegaPlanner/HUD.cs
@@ -258,7 +258,6 @@ namespace hud
             {
                 e.Graphics.Clear(this.BackColor);
                 e.Graphics.Flush();
-                //return;
             }
 
             if ((DateTime.Now - starttime).TotalMilliseconds < 30 && (_bgimage == null))
diff --git a/Tools/ArdupilotMegaPlanner/MAVLink.cs b/Tools/ArdupilotMegaPlanner/MAVLink.cs
index b9051e669..0e918f344 100644
--- a/Tools/ArdupilotMegaPlanner/MAVLink.cs
+++ b/Tools/ArdupilotMegaPlanner/MAVLink.cs
@@ -2179,28 +2179,35 @@ namespace ArdupilotMega
 
             try
             {
-
                 if ((temp[0] == 'U' || temp[0] == 254) && temp.Length >= temp[1])
                 {
-                    if (temp[2] != ((recvpacketcount + 1) % 0x100))
+                    if (temp[3] == '3' && temp[4] == 'D')
                     {
-                        synclost++; // actualy sync loss's
 
-                        if (temp[2] < ((recvpacketcount + 1) % 0x100))
-                        {
-                            packetslost += 0x100 - recvpacketcount + temp[2];
-                        }
-                        else
+                    }
+                    else
+                    {
+                        if (temp[2] != ((recvpacketcount + 1) % 0x100))
                         {
-                            packetslost += temp[2] - recvpacketcount;
+                            synclost++; // actualy sync loss's
+
+                            if (temp[2] < ((recvpacketcount + 1) % 0x100))
+                            {
+                                packetslost += 0x100 - recvpacketcount + temp[2];
+                            }
+                            else
+                            {
+                                packetslost += temp[2] - recvpacketcount;
+                            }
+
+                            log.InfoFormat("lost {0} pkts {1}", temp[2], (int)packetslost);
                         }
 
-                        log.InfoFormat("lost {0} pkts {1}", temp[2], (int)packetslost);
-                    }
+                        packetsnotlost++;
 
-                    packetsnotlost++;
+                        recvpacketcount = temp[2];
 
-                    recvpacketcount = temp[2];
+                    }
 
                     //MAVLINK_MSG_ID_GPS_STATUS
                     //if (temp[5] == MAVLINK_MSG_ID_GPS_STATUS)
diff --git a/Tools/ArdupilotMegaPlanner/MainV2.cs b/Tools/ArdupilotMegaPlanner/MainV2.cs
index 76ee48fc3..ab59bc95f 100644
--- a/Tools/ArdupilotMegaPlanner/MainV2.cs
+++ b/Tools/ArdupilotMegaPlanner/MainV2.cs
@@ -785,6 +785,12 @@ namespace ArdupilotMega
 
         private void joysticksend()
         {
+
+            float rate = 50;
+            int count = 0;
+
+            DateTime lastratechange = DateTime.Now;
+
             while (true)
             {
                 try
@@ -817,16 +823,43 @@ namespace ArdupilotMega
                             if (joystick.getJoystickAxis(8) != Joystick.joystickaxis.None)
                                 rc.chan8_raw = cs.rcoverridech8;
 
-                            if (lastjoystick.AddMilliseconds(50) < DateTime.Now)
+                            if (lastjoystick.AddMilliseconds(rate) < DateTime.Now)
                             {
-                                //                                Console.WriteLine(DateTime.Now.Millisecond + " {0} {1} {2} {3} ", rc.chan1_raw, rc.chan2_raw, rc.chan3_raw, rc.chan4_raw);
+                                /*
+                                if (cs.rssi > 0 && cs.remrssi > 0)
+                                {
+                                    if (lastratechange.Second != DateTime.Now.Second)
+                                    {
+                                        if (cs.txbuffer > 90)
+                                        {
+                                            if (rate < 20)
+                                                rate = 21;
+                                            rate--;
+
+                                            if (cs.linkqualitygcs < 70)
+                                                rate = 50;
+                                        }
+                                        else
+                                        {
+                                            if (rate > 100)
+                                                rate = 100;
+                                            rate++;
+                                        }
+
+                                        lastratechange = DateTime.Now;
+                                    }
+                                 
+                                }
+                                 */
+//                                Console.WriteLine(DateTime.Now.Millisecond + " {0} {1} {2} {3} {4}", rc.chan1_raw, rc.chan2_raw, rc.chan3_raw, rc.chan4_raw,rate);
                                 comPort.sendPacket(rc);
+                                count++;
                                 lastjoystick = DateTime.Now;
                             }
 
                         }
                     }
-                    System.Threading.Thread.Sleep(50);
+                    System.Threading.Thread.Sleep(20);
                 }
                 catch { } // cant fall out
             }
@@ -1856,7 +1889,7 @@ namespace ArdupilotMega
             }
             if (keyData == (Keys.Control | Keys.A)) // test
             {
-                Form frm = new _3DRradio();
+                Control frm = new _3DRradio();
                 ThemeManager.ApplyThemeTo(frm);
                 frm.Show();
                 return true;
diff --git a/Tools/ArdupilotMegaPlanner/Msi/wix.pdb b/Tools/ArdupilotMegaPlanner/Msi/wix.pdb
index 8fb53eec78ed739b330092c5331470c195ec9319..f59c64535f3ced7d0ab770ba42bb6f2564d7dca8 100644
GIT binary patch
delta 553
zcmZpe!`Lu~aRUpN#Lwk*{)`L^3{FRuM{knpap=GQ+hyvyeZiY$xZVh|#@uphKew4z
zrj?1&X7XgY<BVOCqvf-K?BgJEv$4W-pv30WO6?%|VAbtR(;_$XsI6mS?Ag3qL!XJU
zd-7|obdZ#GGEm)i?P$Kq@?u<*j5s!{SOu`KOwjKZoLpg-z+wPm+yOEitXbtJJJ_q$
zXXXJN#lQw4z@WGY#$sehEe45;!UPynQejL+hWun{Acq|)z{p?~gOE!}RRVI1;c~@D
za)~9OKyjFTjP(o_i3pAPMbSVG!ce_rgq&V^5|E<?6<}gWEI`PW7k2<Ty>PjFBu_Bt
zivq)a2VAZg$rITnDQAI_RdC75LMW4g5om!s69WS`5Q6{{Lrgk^#Q>DcO9^6OV6cD+
hFfrsI8CsOz1(XAY4hR4pTC(|sgAFsD6yWlN69DO_Vxj;5

delta 533
zcmZpe!`Lu~aRUpN#C_{Je?|rdhNK-ltqJUg{%cHw&U39>d2+K1*Be1r$C!`eeVch@
zTA3J~CQp_-&e%LTT0R@dJ`N%`8!Jo)N^Cx@)DDslR^86DBX~29+Bzo2*3G*$^qCl2
zCcoB72T5rs1J!NUj^<-z+$?OB$igCFnWi+k!Y+Yj!Neq`$#;N^86Xh{do|@qC7^p4
z*gymraQebnK!-Mf#6>4M3fD6-6e>vrIqXnbkR+7J0P+#Y6l16WBLl=x5EmpD3dArA
zK<0qNL4c8g(>EGOBbf;nhsh-Y8EO!bdIl!A6xh&)4j{i5DuyZ-sU!-tbq8Dy*++#+
zXMu86a5+>@xC0I1h8o6%;t4$lh9DLO1`D`GWM4!obpho-p#uU;KwoV>;b6mzC$?Rl
GZ~_45Dp9Wh

diff --git a/Tools/ArdupilotMegaPlanner/Radio/3DRradio.Designer.cs b/Tools/ArdupilotMegaPlanner/Radio/3DRradio.Designer.cs
index cfd1fb933..c0769e807 100644
--- a/Tools/ArdupilotMegaPlanner/Radio/3DRradio.Designer.cs
+++ b/Tools/ArdupilotMegaPlanner/Radio/3DRradio.Designer.cs
@@ -74,8 +74,7 @@
             // 
             // Progressbar
             // 
-            this.Progressbar.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) 
-            | System.Windows.Forms.AnchorStyles.Right)));
+            this.Progressbar.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
             this.Progressbar.Location = new System.Drawing.Point(12, 402);
             this.Progressbar.Name = "Progressbar";
             this.Progressbar.Size = new System.Drawing.Size(294, 36);
@@ -528,8 +527,7 @@
             // 
             // lbl_status
             // 
-            this.lbl_status.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) 
-            | System.Windows.Forms.AnchorStyles.Right)));
+            this.lbl_status.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
             this.lbl_status.BackColor = System.Drawing.Color.Transparent;
             this.lbl_status.Location = new System.Drawing.Point(12, 374);
             this.lbl_status.Name = "lbl_status";
@@ -580,7 +578,6 @@
             // 
             this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
             this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
-            this.ClientSize = new System.Drawing.Size(318, 444);
             this.Controls.Add(this.BUT_syncS5);
             this.Controls.Add(this.BUT_syncS3);
             this.Controls.Add(this.BUT_syncS2);
@@ -620,12 +617,9 @@
             this.Controls.Add(this.lbl_status);
             this.Controls.Add(this.Progressbar);
             this.Controls.Add(this.BUT_upload);
-            this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
-            this.MaximizeBox = false;
-            this.MinimizeBox = false;
             this.MinimumSize = new System.Drawing.Size(334, 482);
             this.Name = "_3DRradio";
-            this.Text = "3DRradio";
+            this.Size = new System.Drawing.Size(334, 482);
             this.ResumeLayout(false);
             this.PerformLayout();
 
diff --git a/Tools/ArdupilotMegaPlanner/Radio/3DRradio.cs b/Tools/ArdupilotMegaPlanner/Radio/3DRradio.cs
index 40901cf4c..15cd23482 100644
--- a/Tools/ArdupilotMegaPlanner/Radio/3DRradio.cs
+++ b/Tools/ArdupilotMegaPlanner/Radio/3DRradio.cs
@@ -8,10 +8,11 @@ using System.Text;
 using System.Windows.Forms;
 using System.Net;
 using System.IO;
+using ArdupilotMega.Controls.BackstageView;
 
 namespace ArdupilotMega
 {
-    public partial class _3DRradio : Form
+    public partial class _3DRradio : BackStageViewContentPanel
     {
         public delegate void LogEventHandler(string message, int level = 0);
 
diff --git a/Tools/ArdupilotMegaPlanner/Radio/3DRradio.resx b/Tools/ArdupilotMegaPlanner/Radio/3DRradio.resx
index 6d793168a..2e8ee646b 100644
--- a/Tools/ArdupilotMegaPlanner/Radio/3DRradio.resx
+++ b/Tools/ArdupilotMegaPlanner/Radio/3DRradio.resx
@@ -120,6 +120,9 @@
   <metadata name="toolTip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
     <value>17, 17</value>
   </metadata>
+  <metadata name="toolTip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>17, 17</value>
+  </metadata>
   <data name="S3.ToolTip" xml:space="preserve">
     <value>NETID is a 16 bit 'network ID'. This is used to seed the frequency hopping sequence and to identify packets as coming from the right radio. Make sure you use a different NETID from anyone else running the same sort of radio in the area. </value>
   </data>
@@ -158,83 +161,6 @@ stx: number of serial transmit overflows
 rrx: number of serial receive overflows 
 ecc: number of 12 bit words successfully corrected by the golay code
 which result in a valid packet CRC 
-</value>
-  </data>
-  <assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
-  <data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
-    <value>
-        AAABAAEAICAAAAEAIACoEAAAFgAAACgAAAAgAAAAQAAAAAEAIAAAAAAAABAAABILAAASCwAAAAAAAAAA
-        AAD///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADOxkjAtnoOAKpJ4vyiK
-        c+8nh3D/J4Zv/yeHcP8oi3PvKpJ4vy6fg4AzsZIwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADjGo2AyspPfLZ+D/yiQ
-        d/8hlXj/G6F9/xeqg/8XqYL/GKqD/xuhfv8ilnn/KZB3/y2fhP8yspPfN8ajYAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADvRrDA1vpzfL6uN/yel
-        hP8XvJD/DMyY/wfQl/8FzJP/A8qS/wPJkf8EypL/BsyU/wnRmP8PzZn/Gb2R/yemhP8tqoz/Mb2a3zbQ
-        qkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8AAAAAAAAAAAAAAAAAAAAAAAAAAAA4y6ZgMbWV/yin
-        iP8WwZP/Btqf/wDPlf8AyI7/A8aP/yfNnv9T2LP/UNax/03XsP8506b/G8ya/wHKkf8F0Zf/CNuf/xLB
-        kv8fpYT/J7KQ/y7IomAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wAAAAAAAAAAAAAAAAAAAAAANcajny+w
-        kf8hqoj/CNSd/wDRlf8Axor/Hcyd/3Lhwf+p7Nj/o+vV/57m0/+X5dD/k+TN/4/jzf+K5Mz/fuHH/0PW
-        rf8HzJT/ANCT/wDRlv8OpX//HayI/yrFn58AAAAAAAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAAADDC
-        nmAtro7/H62J/wPWmv8Ay47/AMaO/3XhxP+e6tT/mObP/5Pjy/+Q4sr/jODJ/4ffx/+C3MT/f9vC/3nb
-        wf9y2r7/adq7/2DauP8ZzZv/Fdae/8T/9/9WxKj/HKuI/y7IomAAAAAAAAAAAAAAAAD///8AAAAAAAAA
-        AAAiuZMwKKyM/x6ohf8C1Zr/AMmL/wHGjv+49OL///////////9+3ML/f9zD/4Dcwv9+28L/e9rA/3bZ
-        vv9w1rr/Z9S4/17Rs/9Qz63/Qcyn/3LewP////////////n///8MpH7/JbKP/zXQqUAAAAAAAAAAAP//
-        /wAAAAAAAAAAABymhN8dnn//BNGa/wDKjP8AxY3/sfHf/////////////////2nXt/9w1rv/c9e8/3TX
-        vP9x17z/a9W5/2TTtf9Y0K//SMyp/zXFoP9i07X/////////////////f/LR/wDQlf8epYT/Mb2a3wAA
-        AAAAAAAA////AAAAAAADlnJgFZR1/wq4iv8AzpH/AMCD/4rmzf//////////////////////WdGv/2PU
-        tf9p1rf/atS4/2nUtv9i0rT/Vc+u/0fKpv8zxZz/Ws+w//////////////////////8GyJL/ANCS/xLB
-        kv8tq4z/OMajYAAAAAD///8AAAAAAACHZt8NkW//ANKV/wDChP9i27r//////////////////////9Dx
-        6P9MzKn/Vc+v/17Rsv9g0rP/XNCx/1XNrv9Fyaf/McSd/1fPr///////////////////////QM2m/ynK
-        oP8JzJX/C9yh/ymmhf80spPfAAAAAP///wAAcUwwAHtc/wCrfP8AyIv/AMKK////////////////////
-        /////////////5Dgyv9Gyqb/TMyq/07Nq/9MzKn/Qcmj/y/Fnf9Wzq3//////////////////////57k
-        0v8av5T/Lceg/yzOo/8M05v/Hr6T/zCghf80spIw////AABoRYAAclT/AL2H/wDBhf9R1rL/////////
-        ////////4vfw//////////////////H8+P9KzKn/Ocah/zTFnv8qwpj/Us2t////////////////////
-        ////////DLqM/yDBlv8wxp//OM6m/xPPm/8Xz53/LZF5/y+fg4////8AAGNAvwB7Wf8Aw4j/ALyC/4bj
-        yP+g5tL/g93E/2HSsv9Pzqz/Us6s//////////////////////9Yzq//Gr2S/0jLp///////////////
-        /////////////yrDm/8SvI//JMGY/zDHn/81zKT/Is2e/xTUnf8nl3v/LJJ5v////wAAXz3vAIlg/wDA
-        hf8AuoD/quzZ/5Hjyv9628D/ada2/1jRsP9Jy6f/a9a4//////////////////////+Y4s7/////////
-        //////////////////+c4tD/AbaH/xW8kf8jwZj/LcWd/y/Jn/8kzJ3/E9Ca/yGjgf8ri3Tv////AABd
-        PP8Ak2b/AL6D/w/Ekv+m6tf/j+HJ/3vawP9p1rf/W9Gx/0rNqf85yJ//Nsaf////////////////////
-        /////////////////////////////wCwe/8AtoT/ELqP/xu+k/8jwZj/KMeb/yHKm/8QzZf/HqyG/ymI
-        cf////8AAF07/wCSZP8AvYL/GMWU/6Dn1P+K38f/ddi+/27Wuf+E3MX/leHN/6fm1f+l5tX/neLQ////
-        ////////////////////////////////////////j9/J/27Vuv9Tzq7/JsKY/xa/kv8aw5T/FcaW/wvL
-        lf8aqoT/J4dw/////wAAXTv/AJFk/wC9gP8GwY3/mObQ/5rkz/+26dv/y/Hl/8Dt3/+06tz/pebV/5bg
-        zP+g5NL//////////////v///f7+//7+/v//////7fn2////////////tOnb/6Ll0v+v6Nj/jeDI/zXK
-        o/8IxJD/BMqS/xaqgv8lh2//////AABeO+8AgVf/AL1//wDBif/R9uv/1PPq/8Tv5P+36t3/rujY/6Lk
-        0v+U4cv/jt7J//j8+///////+/38//f8+//2+/r/+Pz7//3+/v/m9/P/9Pv6//D6+P9/28L/jd7J/5jj
-        z/+h5dL/qOvX/4Hmyf8f1J//E596/yOJcO////8AAGA8vwB3U/8p06P/hufM/8Ty5f/D7+T/s+vb/6bm
-        1P+c4c//j9/K/4vcyP/t+fb///7///j8/P/0+/r/8vr5//P7+f/1+/r/+/39///////i9fL/ZNO1/3HW
-        vP992sH/htzG/4vhyv+S5dD/mO7W/6X74v80noT/Io90v////wAAZkCAAHla/33ny/945cb/nunV/7Xr
-        3v+l5tT/luDN/4ndxv992cL/1vLq//v9/P/1+/n/8vv4//L69//z+/j/9Pv5/7Xo2//x+vn/////////
-        //+y59n/aNS3/3LWvP932r//fNzD/4Ljyf+J7ND/l/bd/yORdf8knH6A////AABuRzAAdlT/Xc6x/23o
-        xv9s4MH/qurZ/5jiz/+I3cb/edjA/8ju5f/3/Pv/8vv4//H6+P/y+/j/6/f0/7np3v/7/fz//v7+/6fk
-        1f+56tz///////////9h0bT/aNW4/23Wu/9v3L//dOLG/37w0f9m1rn/Hpt8/ymujTD///8AAAAAAACD
-        X98po4X/Z+7K/1vgvP+A4sf/jOHK/3rZwv+r59f/9Pv6/+/69//v+vf/8vr4/9fy6/9n0rf/VM6t/6Di
-        0v/N7+f/adO4/1PMrf9t1Lr/i9zI/1/Rs/9h0rX/ZNe4/2bbvf9s5sb/ePfV/z2ylf8lrozfAAAAAP//
-        /wAAAAAAAJNsYAWQbf9U1rP/Vee//0rYsf993sb/pebV//P7+v/s+Pb/6/f1/+749v+s5tj/Vc2u/1jP
-        r/9ZzrD/btW5/1bOr/9Wza//Vs6v/1fOr/9Z0LD/WdCy/1vTtP9d1rX/Xt+8/2btyP9k4L//IaaF/y7D
-        nmAAAAAA////AAAAAAAAAAAAD6J9zyCjgv9S68L/P9+0/2Pevv/5////7/v6/+v59//j9/L/gtvF/1PN
-        r/9Wz7D/Wc+x/1nQsf9Zz7H/WM6w/1fPsP9UzrD/VM+w/1TPrv9U0a//U9Oy/1Tatv9Z5sD/Y/LL/zSx
-        lP8qupbPAAAAAAAAAAD///8AAAAAAAAAAAAYto4wGaeE/y23lP8+5rn/6/////j////w//3/ve/i/2bV
-        uP9Tzq7/Vc+v/1jPsP9Z0LL/WM+w/1fOsf9Wz7D/Us2w/1HOrf9Qzq3/T9Cu/0zSr/9M2LP/TeC5/1bt
-        xP9HxaX/KLKQ/zTPqDAAAAAAAAAAAP///wAAAAAAAAAAAAAAAAAkvpdgG6iF/y++m//e/////P///3rl
-        yf9G0K3/VdKy/1bPsf9Wz7H/Vs6w/1bPsP9Sza//Ucyu/0/Nrf9NzKz/S82s/0fOrP9G0a7/QdWv/0Le
-        tP9I6L7/Q8Ok/yitjP8yyKJgAAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAAAAAAAAAmwJlgG6iF/yK3
-        kP8k3q7/H9el/x7Pn/8tzKT/Q9Cs/1HQsP9Q0K7/TM6u/0nMrf9Hzaz/RMyp/0LNqf8+zqn/ONGo/zTV
-        qf833rD/O+S4/zvCof8orIv/MMSfYAAAAAAAAAAAAAAAAAAAAAD///8AAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAkvpdgG6iE/xukgv8gy53/HNql/xzRn/8czJz/HcmZ/yXJnP8qyp7/Lcqg/yzLn/8nypz/JMqc/yTO
-        n/8l1KT/KN2r/y3Tpv8nq4n/JaqJ/yzAm2AAAAAAAAAAAAAAAAAAAAAAAAAAAP///wAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAAAAAAAato8wFKN/zxCScv8RnHn/DbqM/wjIlP8GyZT/BsaS/wbFkf8GxZH/B8WR/wfH
-        k/8IypX/DMmV/xG3jP8WoX3/Fph2/xqkgs8ft5EwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////AAAA
-        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJVvYACGZM8Aelr/AHlZ/wCFX/8AiWL/AJlr/wCb
-        bP8AlGf/AI5k/wB/W/8AeFj/AHtb/wCHZd8ClXBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAD///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwSzAAaESAAGI/vwBf
-        Pd8AXTz/AF08/wBdPP8AXz3fAGJAvwBoRIAAcUswAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-        AAAAAAAAAAAAAP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
-        /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
-        /wD///8A////AP///wD///8A/+AD//+AAP/+AAA//AAAH/gAAA/wAAAH4AAAA+AAAAPAAAABwAAAAYAA
-        AACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAwAAAAcAAAAHgAAAD4AAAA/AA
-        AAf4AAAP/AAAH/4AAD//gAD//+AD//////8=
 </value>
   </data>
 </root>
\ No newline at end of file
-- 
GitLab