diff --git a/libraries/APM_RC/APM_RC.h b/libraries/APM_RC/APM_RC.h
index 36a467e302a1e8e934224993d6e7ac13c20eb1f7..9882b8eca68539441e9e667309779cef93e9a460 100644
--- a/libraries/APM_RC/APM_RC.h
+++ b/libraries/APM_RC/APM_RC.h
@@ -36,6 +36,7 @@ class APM_RC_Class
 
 	virtual void Init( Arduino_Mega_ISR_Registry * isr_reg ) = 0;
 	virtual void OutputCh(uint8_t ch, uint16_t pwm) = 0;
+	virtual uint16_t OutputCh_current(uint8_t ch) = 0;
 	virtual uint16_t InputCh(uint8_t ch) = 0;
 	virtual uint8_t GetState() = 0;
 	virtual void clearOverride(void) = 0;
diff --git a/libraries/APM_RC/APM_RC_APM1.cpp b/libraries/APM_RC/APM_RC_APM1.cpp
index 437037817852e1c24fdf6c2be5fed16ed19b8dfc..2bc8a20cf4929850351537f15c4411323a48152b 100644
--- a/libraries/APM_RC/APM_RC_APM1.cpp
+++ b/libraries/APM_RC/APM_RC_APM1.cpp
@@ -157,6 +157,25 @@ void APM_RC_APM1::OutputCh(uint8_t ch, uint16_t pwm)
   }
 }
 
+uint16_t APM_RC_APM1::OutputCh_current(uint8_t ch)
+{
+	uint16_t pwm=0;
+	switch(ch) {
+	case 0:  pwm=OCR5B; break;  //ch1
+	case 1:  pwm=OCR5C; break;  //ch2
+	case 2:  pwm=OCR1B; break;  //ch3
+	case 3:  pwm=OCR1C; break;  //ch4
+	case 4:  pwm=OCR4C; break;  //ch5
+	case 5:  pwm=OCR4B; break;  //ch6
+	case 6:  pwm=OCR3C; break;  //ch7
+	case 7:  pwm=OCR3B; break;  //ch8
+	case 8:  pwm=OCR5A; break;  //ch9,  PL3
+	case 9:  pwm=OCR1A; break;  //ch10, PB5
+	case 10: pwm=OCR3A; break;  //ch11, PE3
+	}
+	return pwm>>1;
+}
+
 void APM_RC_APM1::enable_out(uint8_t ch)
 {
  switch(ch){
diff --git a/libraries/APM_RC/APM_RC_APM1.h b/libraries/APM_RC/APM_RC_APM1.h
index c448a3eddd43cec2b01b3bf18ceca799313b987b..945150f57aeeace671cfe548896a153702ee7799 100644
--- a/libraries/APM_RC/APM_RC_APM1.h
+++ b/libraries/APM_RC/APM_RC_APM1.h
@@ -13,6 +13,7 @@ class APM_RC_APM1 : public APM_RC_Class
 	APM_RC_APM1();
 	void Init( Arduino_Mega_ISR_Registry * isr_reg );
 	void OutputCh(uint8_t ch, uint16_t pwm);
+	uint16_t OutputCh_current(uint8_t ch);
 	uint16_t InputCh(uint8_t ch);
 	uint8_t GetState();
 	bool setHIL(int16_t v[NUM_CHANNELS]);
diff --git a/libraries/APM_RC/APM_RC_APM2.cpp b/libraries/APM_RC/APM_RC_APM2.cpp
index 0a728cf4f4ec2f8c506c86d9efb34b7ceb73a022..62fad722b68a467a8631d8a5d0569dff621afaa3 100644
--- a/libraries/APM_RC/APM_RC_APM2.cpp
+++ b/libraries/APM_RC/APM_RC_APM2.cpp
@@ -161,6 +161,24 @@ void APM_RC_APM2::OutputCh(unsigned char ch, uint16_t pwm)
   }
 }
 
+uint16_t APM_RC_APM2::OutputCh_current(uint8_t ch)
+{
+	uint16_t pwm=0;
+	switch(ch){
+	case 0:  pwm=OCR1B; break;  // out1
+	case 1:  pwm=OCR1A; break;  // out2
+	case 2:  pwm=OCR4C; break;  // out3
+	case 3:  pwm=OCR4B; break;  // out4
+	case 4:  pwm=OCR4A; break;  // out5
+	case 5:  pwm=OCR3C; break;  // out6
+	case 6:  pwm=OCR3B; break;  // out7
+	case 7:  pwm=OCR3A; break;  // out8
+	case 9:  pwm=OCR5B; break;  // out10
+	case 10: pwm=OCR5C; break;  // out11
+	}
+	return pwm>>1;
+}
+
 void APM_RC_APM2::enable_out(uint8_t ch)
 {
   switch(ch) {
diff --git a/libraries/APM_RC/APM_RC_APM2.h b/libraries/APM_RC/APM_RC_APM2.h
index f2a93a1f0784042ba387b14155cac45a0d515cf8..a6743c1a5ab05849d58c012a0e8e71ff4d737b5e 100644
--- a/libraries/APM_RC/APM_RC_APM2.h
+++ b/libraries/APM_RC/APM_RC_APM2.h
@@ -14,7 +14,8 @@ class APM_RC_APM2 : public APM_RC_Class
   public:
 	APM_RC_APM2();
 	void Init( Arduino_Mega_ISR_Registry * isr_reg );
-	void OutputCh(unsigned char ch, uint16_t pwm);
+	void OutputCh(uint8_t ch, uint16_t pwm);
+	uint16_t OutputCh_current(uint8_t ch);
 	uint16_t InputCh(unsigned char ch);
 	unsigned char GetState();
 	bool setHIL(int16_t v[NUM_CHANNELS]);