diff --git a/Multiprotocol/Multi.txt b/Multiprotocol/Multi.txt
index bb76f7e..9d499cf 100644
--- a/Multiprotocol/Multi.txt
+++ b/Multiprotocol/Multi.txt
@@ -18,7 +18,7 @@
 18,MJXq,WLH08,X600,X800,H26D,E010,H26WH
 19,Shenqi
 20,FY326,FY326,FY319
-21,SFHSS,XK,T8J,T10J,TM-FH
+21,SFHSS
 22,J6PRO
 23,FQ777
 24,ASSAN
diff --git a/Multiprotocol/Multiprotocol.h b/Multiprotocol/Multiprotocol.h
index c55bb34..30e1a80 100644
--- a/Multiprotocol/Multiprotocol.h
+++ b/Multiprotocol/Multiprotocol.h
@@ -19,7 +19,7 @@
 #define VERSION_MAJOR		1
 #define VERSION_MINOR		1
 #define VERSION_REVISION	6
-#define VERSION_PATCH_LEVEL	24
+#define VERSION_PATCH_LEVEL	25
 //******************
 // Protocols
 //******************
@@ -196,13 +196,6 @@ enum Q303
 	CX10D	= 2,
 	CX10WD	= 3,
 };
-enum SFHSS
-{
-	XK		= 0,
-	T10J	= 1,
-	T8J		= 2,
-	TM_FH	= 3,
-};
 
 #define NONE 		0
 #define P_HIGH		1
@@ -592,11 +585,6 @@ Serial: 100000 Baud 8e2      _ xxxx xxxx p --
 			CX35		1
 			CX10D		2
 			CX10WD		3
-		sub_protocol==SFHSS
-			XK			0
-			T10J		1
-			T8J			2
-			TM_FH		3
 
    Power value => 0x80	0=High/1=Low
   Stream[3]   = option_protocol;
diff --git a/Multiprotocol/NRF24l01_SPI.ino b/Multiprotocol/NRF24l01_SPI.ino
index 32a12fc..bbe2ed0 100644
--- a/Multiprotocol/NRF24l01_SPI.ino
+++ b/Multiprotocol/NRF24l01_SPI.ino
@@ -27,6 +27,7 @@ uint8_t rf_setup;
 void NRF24L01_Initialize()
 {
     rf_setup = 0x09;
+	prev_power = 0x00;	// Make sure prev_power is inline with current power
 	XN297_SetScrambledMode(XN297_SCRAMBLED);
 }  
 
@@ -133,7 +134,8 @@ void NRF24L01_SetBitrate(uint8_t bitrate)
 
     // Bit 0 goes to RF_DR_HIGH, bit 1 - to RF_DR_LOW
     rf_setup = (rf_setup & 0xD7) | ((bitrate & 0x02) << 4) | ((bitrate & 0x01) << 3);
-    NRF24L01_WriteReg(NRF24L01_06_RF_SETUP, rf_setup);
+    prev_power=(rf_setup>>1)&0x03;	// Make sure prev_power is inline with current power
+	NRF24L01_WriteReg(NRF24L01_06_RF_SETUP, rf_setup);
 }
 
 /*
@@ -167,9 +169,9 @@ void NRF24L01_SetPower()
 		#endif
 	if(IS_RANGE_FLAG_on)
 		power=NRF_POWER_0;
-	rf_setup = (rf_setup & 0xF9) | (power << 1);
 	if(prev_power != power)
 	{
+		rf_setup = (rf_setup & 0xF9) | (power << 1);
 		NRF24L01_WriteReg(NRF24L01_06_RF_SETUP, rf_setup);
 		prev_power=power;
 	}
diff --git a/Multiprotocol/SFHSS_cc2500.ino b/Multiprotocol/SFHSS_cc2500.ino
index 960352f..edc6190 100644
--- a/Multiprotocol/SFHSS_cc2500.ino
+++ b/Multiprotocol/SFHSS_cc2500.ino
@@ -23,14 +23,14 @@
 #define SFHSS_PACKET_LEN 13
 #define SFHSS_TX_ID_LEN   2
 
-uint8_t	fhss_code; // 0-27
+uint8_t	fhss_code=0; // 0-27
 
 enum {
     SFHSS_START = 0x00,
     SFHSS_CAL   = 0x01,
-    SFHSS_DATA1 = 0x02,	// do not change this value
-    SFHSS_DATA2 = 0x0B,	// do not change this value
-    SFHSS_TUNE  = 0x0F
+    SFHSS_DATA1 = 0x02,
+    SFHSS_DATA2 = 0x03,
+    SFHSS_TUNE  = 0x04
 };
 
 #define SFHSS_FREQ0_VAL 0xC4
@@ -122,65 +122,48 @@ static void __attribute__((unused)) SFHSS_calc_next_chan()
     }
 }
 
-/*// Channel values are 10-bit values between 86 and 906, 496 is the middle.
-// Values grow down and to the right.
-static void __attribute__((unused)) SFHSS_build_data_packet()
-{
-#define spacer1 0x02
-#define spacer2 (spacer1 << 4)
-    uint8_t ch_offset = phase == SFHSS_DATA1 ? 0 : 4;
-    uint16_t ch1 = convert_channel_16b_nolim(CH_AETR[ch_offset+0],86,906);
-    uint16_t ch2 = convert_channel_16b_nolim(CH_AETR[ch_offset+1],86,906);
-    uint16_t ch3 = convert_channel_16b_nolim(CH_AETR[ch_offset+2],86,906);
-    uint16_t ch4 = convert_channel_16b_nolim(CH_AETR[ch_offset+3],86,906);
-    
-    packet[0]  = 0x81; // can be 80 or 81 for Orange, only 81 for XK
-    packet[1]  = rx_tx_addr[0];
-    packet[2]  = rx_tx_addr[1];
-    packet[3]  = 0;
-    packet[4]  = 0;
-    packet[5]  = (rf_ch_num << 3) | spacer1 | ((ch1 >> 9) & 0x01);
-    packet[6]  = (ch1 >> 1);
-    packet[7]  = (ch1 << 7) | spacer2 | ((ch2 >> 5) & 0x1F);
-    packet[8]  = (ch2 << 3) | spacer1  | ((ch3 >> 9) & 0x01);
-    packet[9]  = (ch3 >> 1);
-    packet[10] = (ch3 << 7) | spacer2  | ((ch4 >> 5) & 0x1F);
-    packet[11] = (ch4 << 3) | ((fhss_code >> 2) & 0x07);
-    packet[12] = (fhss_code << 6) | phase;
-}
-*/
-
 // Channel values are 12-bit values between 1020 and 2020, 1520 is the middle.
 // Futaba @140% is 2070...1520...970
 // Values grow down and to the right.
 static void __attribute__((unused)) SFHSS_build_data_packet()
 {
-	const uint8_t SFHSS_ident[4][3]={
-		{ 0x81, 0x00, 0x00},	//XK
-		{ 0x81, 0x42, 0x07},	//T8J
-		{ 0x81, 0x0F, 0x09},	//T10J
-		{ 0x82, 0x9A, 0x06}		//TM-FH
-	};
-
-	uint8_t ch_offset = phase == SFHSS_DATA1 ? 0 : 4;
+	// command.bit0 is the packet number indicator: =0 -> SFHSS_DATA1, =1 -> SFHSS_DATA2
+	// command.bit1 is unknown but seems to be linked to the payload[0].bit0 but more dumps are needed: payload[0]=0x82 -> =0, payload[0]=0x81 -> =1
+	// command.bit2 is the failsafe transmission indicator: =0 -> normal data, =1->failsafe data
+	// command.bit3 is the channels indicator: =0 -> CH1-4, =1 -> CH5-8
+	uint8_t command= (phase == SFHSS_DATA1) ? 0 : 1;	// Building packet for Data1 or Data2
+	counter+=command;
+	if(counter&1) command|=0x08;						// Transmit lower and upper channels twice in a row
+	if((counter&0x3FE)==0x3FE)
+	{
+		command|=0x04;									// Transmit failsafe data every 7s
+		counter&=0x3FF;									// Reset counter
+	}
+	else
+		command|=0x02;									// Assuming packet[0] == 0x81
+	uint8_t ch_offset = ((command&0x08) >> 1) + ((command&0x04)<<1);	// CH1..CH8 when failsafe is off, CH9..CH16 when failsafe is on
 	uint16_t ch1 = convert_channel_16b_nolim(CH_AETR[ch_offset+0],2020,1020);
 	uint16_t ch2 = convert_channel_16b_nolim(CH_AETR[ch_offset+1],2020,1020);
 	uint16_t ch3 = convert_channel_16b_nolim(CH_AETR[ch_offset+2],2020,1020);
 	uint16_t ch4 = convert_channel_16b_nolim(CH_AETR[ch_offset+3],2020,1020);
 
-	packet[0] = SFHSS_ident[sub_protocol][0]; // can be 80 or 81 for Orange
+	// XK		[0]=0x81 [3]=0x00 [4]=0x00
+	// T8J		[0]=0x81 [3]=0x42 [4]=0x07
+	// T10J		[0]=0x81 [3]=0x0F [4]=0x09
+	// TM-FH	[0]=0x82 [3]=0x9A [4]=0x06
+	packet[0] = 0x81;	// can be 80 or 81 for Orange, only 81 for XK
 	packet[1] = rx_tx_addr[0];
 	packet[2] = rx_tx_addr[1];
-	packet[3] = SFHSS_ident[sub_protocol][1];
-	packet[4] = SFHSS_ident[sub_protocol][2];
+	packet[3] = rx_tx_addr[2];	// ID?
+	packet[4] = rx_tx_addr[3];	// ID?
 	packet[5] = (rf_ch_num << 3) | ((ch1 >> 9) & 0x07);
 	packet[6] = (ch1 >> 1);
 	packet[7] = (ch1 << 7) | ((ch2 >> 5) & 0x7F );
-	packet[8] = (ch2 << 3) | ((ch3 >> 9) & 0x07);
+	packet[8] = (ch2 << 3) | ((ch3 >> 9) & 0x07 );
 	packet[9] = (ch3 >> 1);
 	packet[10] = (ch3 << 7) | ((ch4 >> 5) & 0x7F );
 	packet[11] = (ch4 << 3) | ((fhss_code >> 2) & 0x07 );
-	packet[12] = (fhss_code << 6) | phase;
+	packet[12] = (fhss_code << 6) | command;
 }
 
 static void __attribute__((unused)) SFHSS_send_packet()
@@ -204,28 +187,31 @@ uint16_t ReadSFHSS()
 			else
 			{
 				rf_ch_num = 0;
+				counter = 0;
 				phase = SFHSS_DATA1;
 			}
 			return 2000;
 
-		/* Work cycle, 6.8ms, second packet 1.65ms after first */
+		/* Work cycle: 6.8ms */
+#define SFHSS_PACKET_PERIOD	6800
+#define SFHSS_DATA2_TIMING	1630									// original 1650
 		case SFHSS_DATA1:
 			SFHSS_build_data_packet();
 			SFHSS_send_packet();
 			phase = SFHSS_DATA2;
-			return 1650;
+			return SFHSS_DATA2_TIMING;								// original 1650
 		case SFHSS_DATA2:
 			SFHSS_build_data_packet();
 			SFHSS_send_packet();
 			SFHSS_calc_next_chan();
 			phase = SFHSS_TUNE;
-			return 2000;
+			return (SFHSS_PACKET_PERIOD -2000 -SFHSS_DATA2_TIMING);	// original 2000
 		case SFHSS_TUNE:
 			phase = SFHSS_DATA1;
 			SFHSS_tune_freq();
 			SFHSS_tune_chan_fast();
 			CC2500_SetPower();
-			return 3150;
+			return 2000;											// original 3150
 	}
 	return 0;
 }
@@ -233,13 +219,13 @@ uint16_t ReadSFHSS()
 // Generate internal id
 static void __attribute__((unused)) SFHSS_get_tx_id()
 {
-	uint32_t fixed_id;
 	// Some receivers (Orange) behaves better if they tuned to id that has
 	//  no more than 6 consecutive zeros and ones
+	uint32_t fixed_id;
 	uint8_t run_count = 0;
 	// add guard for bit count
 	fixed_id = 1 ^ (MProtocol_id & 1);
-	for (uint8_t i = 0; i < 16; ++i)
+	for (uint8_t i = 0; i < 32; ++i)
 	{
 		fixed_id = (fixed_id << 1) | (MProtocol_id & 1);
 		MProtocol_id >>= 1;
@@ -256,8 +242,10 @@ static void __attribute__((unused)) SFHSS_get_tx_id()
 			run_count = 0;
 	}
 	//    fixed_id = 0xBC11;
-	rx_tx_addr[0] = fixed_id >> 8;
-	rx_tx_addr[1] = fixed_id;
+	rx_tx_addr[0] = fixed_id >> 24;
+	rx_tx_addr[1] = fixed_id >> 16;
+	rx_tx_addr[2] = fixed_id >> 8;
+	rx_tx_addr[3] = fixed_id >> 0;
 }
 
 uint16_t initSFHSS()
@@ -265,7 +253,7 @@ uint16_t initSFHSS()
 	BIND_DONE;	// Not a TX bind protocol
 	SFHSS_get_tx_id();
 
-	fhss_code=rx_tx_addr[2]%28; // Initialize it to random 0-27 inclusive
+	fhss_code=random(0xfefefefe)%28; // Initialize it to random 0-27 inclusive
 
 	SFHSS_rf_init();
 	phase = SFHSS_START;
diff --git a/Multiprotocol/_Config.h b/Multiprotocol/_Config.h
index e7dd10d..aa2a90d 100644
--- a/Multiprotocol/_Config.h
+++ b/Multiprotocol/_Config.h
@@ -130,15 +130,15 @@
 //#define	V2X2_NRF24L01_INO
 //#define	YD717_NRF24L01_INO
 //#define	MT99XX_NRF24L01_INO
-#define	MJXQ_NRF24L01_INO
+//#define	MJXQ_NRF24L01_INO
 //#define	SHENQI_NRF24L01_INO
 //#define	FY326_NRF24L01_INO
 //#define	FQ777_NRF24L01_INO
 //#define	ASSAN_NRF24L01_INO
 //#define	HONTAI_NRF24L01_INO
-//#define Q303_NRF24L01_INO
-//#define GW008_NRF24L01_INO
-//#define DM002_NRF24L01_INO
+//#define	Q303_NRF24L01_INO
+//#define	GW008_NRF24L01_INO
+//#define	DM002_NRF24L01_INO
 
 /**************************/
 /*** FAILSAFE SETTINGS  ***/
@@ -368,10 +368,7 @@ const PPM_Parameters PPM_prot[15]=	{
 		FY326
 		FY319
 	MODE_SFHSS
-		XK
-		T10J
-		T8J
-		TM_FH
+		NONE
 	MODE_J6PRO
 		NONE
 	MODE_FQ777
diff --git a/Protocols_Details.md b/Protocols_Details.md
index e5eda9c..e3dd1c0 100644
--- a/Protocols_Details.md
+++ b/Protocols_Details.md
@@ -209,17 +209,7 @@ CH1|CH2|CH3|CH4|CH5|CH6|CH7|CH8
 ---|---|---|---|---|---|---|---
 A|E|T|R|CH5|CH6|CH7|CH8
 
-### Sub_protocol XK - *0*
-XK transmitter
-
-### Sub_protocol T8J - *1*
-Futaba T8J transmitter
-
-### Sub_protocol T10J - *2*
-Futaba T10J transmitter
-
-### Sub_protocol TM-FH - *3*
-Futaba TM-FH transmitter
+Channels 9 to 16 are used as failsafe values for the channels 1 to 8.
 
 ***
 # CYRF6936 RF Module
diff --git a/docs/Models.md b/docs/Models.md
index b3d1668..9e24af6 100644
--- a/docs/Models.md
+++ b/docs/Models.md
@@ -7,21 +7,10 @@ The Deviation project (on which this project was based) have a useful list of mo
  ## Channel Map
-<<<<<<< HEAD
-<<<<<<< HEAD
+
 CH1|CH2|CH3|CH4|CH5|CH6|CH7|CH8|CH9
 ---|---|---|---|---|---|---|---|---
 A|E|T|R|FLIP|RATES|PICTURE|VIDEO|HEADLESS
-=======
-CH1|CH2|CH3|CH4|CH5|CH6|CH7|CH8
----|---|---|---|---|---|---|---
-A|E|T|R|FLIP|RATES|PICTURE|VIDEO
->>>>>>> dd3f8b4717c03dc2f86701191dc8b265d4706751
-=======
-CH1|CH2|CH3|CH4|CH5|CH6|CH7|CH8
----|---|---|---|---|---|---|---
-A|E|T|R|FLIP|RATES|PICTURE|VIDEO
->>>>>>> af88abb13fb63cc2cc399b4bd3b72d4747b7a7cf
 
 ## Binding
 There are no special binding instructions.  The model powers up in Autobind mode and expects the bind sequence from the transmitter within the first 4-5 seconds. 
@@ -57,8 +46,6 @@ One of the most annoying functions on the Syma X5C is that the motors stop when
 1. When you want to fly in "idle-up" mode flick the switch and your stabilization will always be active.  
 1. Remeber to switch off idle-up as soon as the quad lands (or crashes - to avoid damage to the motors)
 
-<<<<<<< HEAD
-<<<<<<< HEAD
 ### Additional notes on rates:
 
 The SymaX driver can add full trim to the control output.  Doing so enables
@@ -78,10 +65,6 @@ direction the quadcopter thinks you selected for headless mode may not be
 correct after especially wild flights.
 
 
-=======
->>>>>>> dd3f8b4717c03dc2f86701191dc8b265d4706751
-=======
->>>>>>> af88abb13fb63cc2cc399b4bd3b72d4747b7a7cf
 # Inductrix (Horizon Hobby)
 
 ## Channel Map
-<<<<<<< HEAD
-<<<<<<< HEAD
+
 CH1|CH2|CH3|CH4|CH5|CH6|CH7|CH8|CH9
 ---|---|---|---|---|---|---|---|---
 A|E|T|R|FLIP|RATES|PICTURE|VIDEO|HEADLESS
-=======
-CH1|CH2|CH3|CH4|CH5|CH6|CH7|CH8
----|---|---|---|---|---|---|---
-A|E|T|R|FLIP|RATES|PICTURE|VIDEO
->>>>>>> dd3f8b4717c03dc2f86701191dc8b265d4706751
-=======
-CH1|CH2|CH3|CH4|CH5|CH6|CH7|CH8
----|---|---|---|---|---|---|---
-A|E|T|R|FLIP|RATES|PICTURE|VIDEO
->>>>>>> af88abb13fb63cc2cc399b4bd3b72d4747b7a7cf
 
 ## Binding
 There are no special binding instructions.  The model powers up in Autobind mode and expects the bind sequence from the transmitter within the first 4-5 seconds. 
@@ -57,8 +46,6 @@ One of the most annoying functions on the Syma X5C is that the motors stop when
 1. When you want to fly in "idle-up" mode flick the switch and your stabilization will always be active.  
 1. Remeber to switch off idle-up as soon as the quad lands (or crashes - to avoid damage to the motors)
 
-<<<<<<< HEAD
-<<<<<<< HEAD
 ### Additional notes on rates:
 
 The SymaX driver can add full trim to the control output.  Doing so enables
@@ -78,10 +65,6 @@ direction the quadcopter thinks you selected for headless mode may not be
 correct after especially wild flights.
 
 
-=======
->>>>>>> dd3f8b4717c03dc2f86701191dc8b265d4706751
-=======
->>>>>>> af88abb13fb63cc2cc399b4bd3b72d4747b7a7cf
 # Inductrix (Horizon Hobby)
 
 