diff --git a/Core/Inc/sys_conf.h b/Core/Inc/sys_conf.h
index 6059cf0..db49324 100644
--- a/Core/Inc/sys_conf.h
+++ b/Core/Inc/sys_conf.h
@@ -50,7 +50,7 @@ extern "C" {
   * #define VLEVEL_M 2       functional traces
   * #define VLEVEL_H 3       all traces
   */
-#define VERBOSE_LEVEL                        VLEVEL_M
+#define VERBOSE_LEVEL                        VLEVEL_H
 
 /**
   * @brief Enable trace logs
diff --git a/Core/Inc/yunhorn_sts_prd_conf.h b/Core/Inc/yunhorn_sts_prd_conf.h
index 1ff9599..1043fcf 100644
--- a/Core/Inc/yunhorn_sts_prd_conf.h
+++ b/Core/Inc/yunhorn_sts_prd_conf.h
@@ -270,9 +270,6 @@
 #ifdef	STS_O6
 #define sts_mtmcode2								3U		//MTM-03 for O6, MTM-07 for O7
 #endif
-#ifdef	STS_O7
-#define sts_mtmcode2								7U		//MTM-03 for O6, MTM-07 for O7
-#endif
 #ifdef	STS_P2
 #define	sts_mtmcode2								106
 #define sts_senddataport						(YUNHORN_STS_P2_LORA_APP_DATA_PORT)
@@ -287,10 +284,15 @@
 #define sts_senddataport						(YUNHORN_STS_O6_LORA_APP_DATA_PORT)
 #define sts_sendhtbtport						(YUNHORN_STS_O6_LORA_APP_HTBT_PORT)
 #endif
+
 #ifdef	STS_O7
+#define sts_mtmcode1								0U
+#define sts_mtmcode2								7U		//MTM-03 for O6, MTM-07 for O7
+#define	YUNHORN_STS_PRD_STRING						"STS_O7"
 #define sts_senddataport						(YUNHORN_STS_O7_LORA_APP_DATA_PORT)
 #define sts_sendhtbtport						(YUNHORN_STS_O7_LORA_APP_HTBT_PORT)
 #endif
+
 #if	defined(STS_O6)||defined(STS_O7)
 #define sts_appctrlport							(YUNHORN_STS_O7_USER_APP_CTRL_PORT)
 #define sts_appctrl_reply_port					(YUNHORN_STS_O7_USER_APP_CTRL_REPLY_PORT)
diff --git a/Core/Src/main.c b/Core/Src/main.c
index 413e83d..a9a319e 100644
--- a/Core/Src/main.c
+++ b/Core/Src/main.c
@@ -99,8 +99,8 @@ int main(void)
   MX_LoRaWAN_Init();
 
   /* USER CODE BEGIN 2 */
-  APP_LOG(TS_OFF, VLEVEL_M,"\r\n Before TOF ...................\r\n");
-  STS_TOF_VL53LX_PeopleCounting_Process_Init();
+  //APP_LOG(TS_OFF, VLEVEL_M,"\r\n Before TOF ...................\r\n");
+  //STS_TOF_VL53LX_PeopleCounting_Process_Init();
   /* USER CODE END 2 */
 
   /* Infinite loop */
diff --git a/Core/Src/sts_lamp_bar.c b/Core/Src/sts_lamp_bar.c
index ef2269d..b5961c5 100644
--- a/Core/Src/sts_lamp_bar.c
+++ b/Core/Src/sts_lamp_bar.c
@@ -38,7 +38,7 @@
 
 typedef struct ws2812b_e {
 	//uint16_t	head[3];
-	uint16_t	GRB[WS2812B_DATA_LEN];
+	uint16_t	GRB[WS2812B_DATA_LEN+RESET_PULSE];
 	uint16_t	tail;
 } WS2812B_FrameTypeDef;
 
@@ -198,6 +198,7 @@ void STS_Lamp_Bar_Set_STS_RGB_Color(uint8_t sts_lamp_color, uint8_t lum)
 				STS_Lamp_Bar_Set_RGB_Color(lum, lum, lum);
 			break;
 		}
+
 	}
 
 }
diff --git a/Core/Src/yunhorn_sts_distance_rss.c b/Core/Src/yunhorn_sts_distance_rss.c
index 3b26cfd..a553f69 100644
--- a/Core/Src/yunhorn_sts_distance_rss.c
+++ b/Core/Src/yunhorn_sts_distance_rss.c
@@ -58,6 +58,7 @@
 // 2024-08-15 volatile distance_measure_cfg_t distance_cfg={0.8, 3.5, 2, 63, 2, 10, 0.5, 1.3, 0.2};
 //volatile distance_measure_cfg_t distance_cfg={0.8, 3.5, 4, 63, 2, 10, 0.5, 1.3, 0.2};
 volatile distance_measure_cfg_t distance_cfg={0.8, 3.5, 4, 63, 2, 10, 0.4, 1.2, 0.2};
+
 //volatile distance_measure_cfg_t distance_cfg={1.5, 3.3, 2, 63, 4, 10, 0.8182f, 0.4, 0.2};
 extern volatile uint16_t sts_distance_rss_distance, sts_sensor_install_height;
 
@@ -75,7 +76,7 @@ int sts_distance_rss_detector_distance(void)
 
 	if (!acc_rss_activate(hal))
 	{
-		APP_LOG(TS_OFF, VLEVEL_L, "Failed to activate RSS\n");
+		APP_LOG(TS_OFF, VLEVEL_M, "Failed to activate RSS\n");
 		return EXIT_FAILURE;
 	}
 
@@ -90,13 +91,15 @@ int sts_distance_rss_detector_distance(void)
 		return EXIT_FAILURE;
 	}
 
+	APP_LOG(TS_OFF, VLEVEL_M, "\r\n UPDATE CONFIG \r\n");
+
 	sts_distance_rss_update_configuration(distance_configuration);
 
 	acc_detector_distance_handle_t distance_handle = acc_detector_distance_create(distance_configuration);
 
 	if (distance_handle == NULL)
 	{
-		APP_LOG(TS_OFF, VLEVEL_L, "acc_detector_distance_create() failed\n");
+		APP_LOG(TS_OFF, VLEVEL_M, "acc_detector_distance_create() failed\n");
 		acc_detector_distance_configuration_destroy(&distance_configuration);
 		acc_rss_deactivate();
 		return EXIT_FAILURE;
@@ -106,7 +109,7 @@ int sts_distance_rss_detector_distance(void)
 
 	if (!acc_detector_distance_activate(distance_handle))
 	{
-		APP_LOG(TS_OFF, VLEVEL_L, "acc_detector_distance_activate() failed\n");
+		APP_LOG(TS_OFF, VLEVEL_M, "acc_detector_distance_activate() failed\n");
 		acc_detector_distance_destroy(&distance_handle);
 		acc_rss_deactivate();
 		return EXIT_FAILURE;
@@ -115,6 +118,7 @@ int sts_distance_rss_detector_distance(void)
 	bool                                success         = true;
 	const int                           iterations      = 5; //5;
 	uint16_t                            number_of_peaks = 1;   // FSB  first significant Bin
+
 	acc_detector_distance_result_t      result[number_of_peaks];
 	acc_detector_distance_result_info_t result_info;
 	float tmp_distance			= 0.0f;
@@ -125,7 +129,7 @@ int sts_distance_rss_detector_distance(void)
 
 		if (!success)
 		{
-			APP_LOG(TS_OFF, VLEVEL_L, "acc_detector_distance_get_next() failed\n");
+			APP_LOG(TS_OFF, VLEVEL_M, "acc_detector_distance_get_next() failed\n");
 			break;
 		}
 		for(uint8_t j=0; j< result_info.number_of_peaks; j++)
@@ -139,6 +143,7 @@ int sts_distance_rss_detector_distance(void)
 	sts_sensor_install_height = (uint16_t)sts_distance_rss_distance;
 	APP_LOG(TS_OFF, VLEVEL_M, "\r\nAverage Distance =%u mm --- Assume Sensor Install Height = %u mm\r\n", (uint16_t)sts_distance_rss_distance, (uint16_t)sts_sensor_install_height);
 
+
 	bool deactivated = acc_detector_distance_deactivate(distance_handle);
 
 	acc_detector_distance_destroy(&distance_handle);
diff --git a/Core/Src/yunhorn_sts_process.c b/Core/Src/yunhorn_sts_process.c
index d417f4b..cbdaed4 100644
--- a/Core/Src/yunhorn_sts_process.c
+++ b/Core/Src/yunhorn_sts_process.c
@@ -67,7 +67,7 @@ volatile uint16_t sts_sensor_install_height=0;//in mm
 // RSS motion and distance
 #ifdef USE_ACCONEER_A111
 
-volatile uint16_t sts_distance_rss_distance=0, sts_sensor_install_height=0;//in mm
+volatile uint16_t sts_distance_rss_distance=0;//in mm
 extern volatile float sts_presence_rss_distance, sts_presence_rss_score;
 volatile uint8_t sts_rss_config_updated_flag = STS_RSS_CONFIG_NON;
 extern volatile uint8_t sts_occupancy_overtime_state;
@@ -114,6 +114,7 @@ extern volatile uint8_t motion_in_hs_zone[12][10];	//0.4*12=4.8meter high, past
 extern volatile uint8_t detected_hs_zone;
 extern volatile STS_OO_RSS_SensorTuneDataTypeDef sts_presence_rss_config;
 volatile uint32_t cnt=0;
+
 volatile uint8_t sts_rss_result_changed_flag = 0;
 volatile uint8_t sts_rss_result = STS_RESULT_NO_MOTION;
 volatile uint8_t sts_rss_2nd_result = STS_RESULT_NO_MOTION;		//2nd RSS sensor status
@@ -243,6 +244,7 @@ void STS_YunhornSTSEventP1_Process(void)
 		{
 				sts_reed_hall_changed_flag |= 0x02;
 		}
+
 		last_sts_reed_hall_2_result = sts_reed_hall_2_result;
 
 		sts_reed_hall_3_result = sts_hall3_read;//HALL3_STATE;// sts_hall3_read;
@@ -520,6 +522,7 @@ void STS_Combined_Status_Processing(void)
 			{
 				sts_status_color = STS_RED_BLUE;
 			}
+
 			break;
 #ifdef USE_ACCONEER_A111
 		case STS_RSS_MODE:
diff --git a/LoRaWAN/App/lora_app.c b/LoRaWAN/App/lora_app.c
index 83ffdd6..405ccce 100644
--- a/LoRaWAN/App/lora_app.c
+++ b/LoRaWAN/App/lora_app.c
@@ -36,6 +36,7 @@
 #include "sys_sensors.h"
 #include "flash_if.h"
 #include "main.h"
+#include <stdio.h>
 #ifdef	CLOCK_SYNC
 #include "LmhpClockSync.h"
 #endif
@@ -51,6 +52,7 @@
 extern volatile uint8_t sts_service_mask;
 extern volatile uint32_t rfac_timer;
 volatile uint8_t sts_ac_code[YUNHORN_STS_AC_CODE_SIZE]={0x0};
+static void STS_Show_STS_CFG_NVM(uint8_t * nvm_store_value);
 extern hmac_result_t hmac_result;
 extern volatile uint8_t ToF_EventDetected;
 extern volatile uint8_t sts_hall1_read, sts_hall2_read, sts_hall3_read, sts_hall4_read;
@@ -86,21 +88,21 @@ volatile bool p2_work_finished=true;
 extern volatile uint8_t luminance_level;
 uint8_t outbuf[255]={0x0};
 volatile static bool r_b=true;
-volatile sts_cfg_nvm_factory_default[64]={0xF0};
+volatile uint8_t sts_cfg_nvm_factory_default[64]={0xF0};
 volatile sts_cfg_nvm_t sts_cfg_nvm = {
 		sts_mtmcode1,
 		sts_mtmcode2,
 		sts_version,
 		sts_hardware_ver,
-		0x05,		//Regular TxPeriodicity interval
-		'M', 		//Uplink data interval unit,  for heart-beat uplink
-		0x01,		//Heart-beat interval or Sampling interval
-		'S', 		//Sampling sensor interval unit, for real-time sensing of MEMS
-		0x04,		// dual mode=4, uni_mode =5
-		0x00,		// sts service mask
-		0x00, 		//sts_ioc_mask
-		0x20,   	//32 bytes, below start of p[0] 20 BYTES AND 12 BYTES FALL DOWN CFG
-		{			// below 20 bytes
+		0x05,
+		'M', //Uplink data interval          for heart-beat uplink
+		0x03,
+		'S', //Sampling sensor interval      for real-time sensing of MEMS
+		0x03,			// dual mode=4, uni_mode =5, RSS mode =3
+		0x00,			// sts service mask
+		0x00, 			//sts_ioc_mask
+		0x20,   		//32 bytes, below start of p[0] 20 BYTES AND 12 BYTES FALL DOWN CFG
+		{				// below 20 bytes
 		0x08,		//start_m [8]*0.1 meter =0.8
 		0x19,		//lenght_m 0x19=[25]*0.1=2.5f meter
 		0x0F,		//threshold  0X0F=[15]*0.1=1.5f
@@ -960,6 +962,7 @@ static void SendTxData(void)
     	 AppData.Port = (uint8_t)YUNHORN_STS_O7_LORA_APP_DATA_PORT;
     } else if ((sts_work_mode == STS_RSS_MODE)||(sts_work_mode == STS_REEDSWITCH_MODE)||(sts_work_mode == STS_NETWORK_MODE)||(sts_work_mode == STS_WIRED_MODE))
     {
+
     	AppData.Port = (uint8_t)YUNHORN_STS_O2_LORA_APP_DATA_PORT;
     }
 
@@ -974,6 +977,7 @@ static void SendTxData(void)
 		else if (sts_work_mode == STS_UNI_MODE)
 			AppData.Port = (uint8_t)YUNHORN_STS_O7_LORA_APP_HTBT_PORT; //LORAWAN_USER_APP_PORT+1;
 		else if ((sts_work_mode == STS_RSS_MODE)||(sts_work_mode == STS_REEDSWITCH_MODE)||(sts_work_mode == STS_NETWORK_MODE)||(sts_work_mode == STS_WIRED_MODE))
+
 			AppData.Port = (uint8_t)YUNHORN_STS_O2_LORA_APP_HTBT_PORT; //LORAWAN_USER_APP_PORT+1;
 
 		//AppData.Port = (uint8_t)sts_sendhtbtport; //LORAWAN_USER_APP_PORT+1;
@@ -1435,6 +1439,15 @@ static void OnJoinRequest(LmHandlerJoinParams_t *joinParams)
 
       STS_LoRa_WAN_Joined = (uint8_t) joinParams->Mode;
       APP_LOG(TS_OFF, VLEVEL_L,"\r\n STS_LoRa_WAN_Joined = %s \r\n", (STS_LoRa_WAN_Joined == 1)?"ABP":"OTAA");
+
+      AppData.Port = 1;
+      AppData.BufferSize = 16;
+      UTIL_MEM_cpy_8((uint8_t*)AppData.Buffer, (uint8_t *)YUNHORN_STS_PRD_STRING, sizeof(YUNHORN_STS_PRD_STRING));
+      AppData.BufferSize = sizeof(YUNHORN_STS_PRD_STRING);
+      LmHandlerParams.IsTxConfirmed = true;
+      LmHandlerErrorStatus_t status = LmHandlerSend(&AppData, LmHandlerParams.IsTxConfirmed, false);
+      if (status ==LORAMAC_HANDLER_SUCCESS )  LmHandlerParams.IsTxConfirmed = false;
+
     }
     else
     {
@@ -1449,10 +1462,6 @@ static void OnJoinRequest(LmHandlerJoinParams_t *joinParams)
 	  heart_beat_timer = 1;
 	  //SendTxData();
 
-	  UTIL_SEQ_SetTask((1 << CFG_SEQ_Task_LoRaSendOnTxTimerOrButtonEvent), CFG_SEQ_Prio_0);
-
-	  UTIL_SEQ_SetTask((1 << CFG_SEQ_Task_LoRaSendOnTxTimerOrButtonEvent), CFG_SEQ_Prio_0);
-
 	  //UTIL_TIMER_Start(&TxTimer);
 	  UTIL_TIMER_Start(&STSDurationCheckTimer);
 	  OnYunhornSTSHeartBeatPeriodicityChanged(HeartBeatPeriodicity);
@@ -1465,8 +1474,8 @@ static void OnJoinRequest(LmHandlerJoinParams_t *joinParams)
 #elif defined(STS_P2)
 		APP_LOG(TS_OFF, VLEVEL_H, "\r\nTOF Measured Distance=[%u] mm \r\n", (uint16_t)sts_sensor_install_height);
 #endif
-		UTIL_TIMER_Create(&YunhornSTSRSSWakeUpTimer, YUNHORN_STS_RSS_WAKEUP_CHECK_TIME, UTIL_TIMER_ONESHOT, OnYunhornSTSOORSSWakeUpTimerEvent, NULL);
-	  UTIL_TIMER_Start(&YunhornSTSRSSWakeUpTimer);
+	UTIL_TIMER_Create(&YunhornSTSRSSWakeUpTimer, YUNHORN_STS_RSS_WAKEUP_CHECK_TIME, UTIL_TIMER_ONESHOT, OnYunhornSTSOORSSWakeUpTimerEvent, NULL);
+  UTIL_TIMER_Start(&YunhornSTSRSSWakeUpTimer);
 
 
   }
@@ -1793,7 +1802,7 @@ static void OnYunhornSTSHeartBeatPeriodicityChanged(uint32_t periodicity)
 	  UTIL_TIMER_Start(&YunhornSTSHeartBeatTimer);
 
   /* USER CODE BEGIN OnTxPeriodicityChanged_2 */
-  APP_LOG(TS_OFF, VLEVEL_H,"**************** HeartBeatPeriodicity = %u (sec)\r\n", periodicity/1000 );
+  APP_LOG(TS_OFF, VLEVEL_M,"**************** HeartBeatPeriodicity = %u (sec)\r\n", periodicity/1000 );
   /* USER CODE END OnTxPeriodicityChanged_2 */
 }
 
@@ -1940,11 +1949,11 @@ static void OnYunhornSTSSamplingCheckTimerEvent(void *context)
 
 void USER_APP_AUTO_RESPONDER_Parse(uint8_t *parse_buffer, uint8_t parse_buffer_size)
 {
-	uint8_t i=0, mems_ver, invalid_flag=1, tlv_buf[128]={0x0};
+	uint8_t i=0, mems_ver, invalid_flag=1, tlv_buf[128]={0x0}, tlv_buf_size=parse_buffer_size;
 	UTIL_MEM_set_8((void*)outbuf,0x0, sizeof(outbuf));
 	UTIL_MEM_cpy_8((void*)tlv_buf,(void*)parse_buffer, parse_buffer_size&0x7F); /* 127 BYTES MAX */
 
-	if (((char)tlv_buf[CFG_CMD1] == 'Y') && (tlv_buf_size <=5))  // BEGIN OF *** BOARD LEVEL CONTROL OR REPORT
+	if (((char)tlv_buf[CFG_CMD1] == 'Y') && (parse_buffer_size <=5))  // BEGIN OF *** BOARD LEVEL CONTROL OR REPORT
 	{
 		switch ((char)tlv_buf[CFG_CMD2])
 		{
@@ -2166,11 +2175,11 @@ void USER_APP_AUTO_RESPONDER_Parse(uint8_t *parse_buffer, uint8_t parse_buffer_s
 						{
 							//STS_SENSOR_Power_ON((uint8_t)(tlv_buf[CFG_CMD3]-0x30));
 							PME_ON;
-
 							// 2024-07-31
 							UTIL_MEM_set_8((void*)outbuf, 0x0, sizeof(outbuf));
-							UTIL_MEM_cpy_8((void*)outbuf,(void*)tlv_buf,tlv_buf_size);
-							i = tlv_buf_size;
+							UTIL_MEM_cpy_8((void*)outbuf,(void*)tlv_buf,parse_buffer_size);
+
+							i = parse_buffer_size;
 							STS_SENSOR_Upload_Message(LORAWAN_USER_APP_CTRL_REPLY_PORT, i, (uint8_t *)outbuf);
 						} else {
 							STS_SENSOR_Upload_Config_Invalid_Message();
@@ -2184,8 +2193,8 @@ void USER_APP_AUTO_RESPONDER_Parse(uint8_t *parse_buffer, uint8_t parse_buffer_s
 						PME_OFF;
 						// 2024-07-31
 						UTIL_MEM_set_8((void*)outbuf, 0x0, sizeof(outbuf));
-						UTIL_MEM_cpy_8((void*)outbuf,(void*)tlv_buf,tlv_buf_size);
-						i = tlv_buf_size;
+						UTIL_MEM_cpy_8((void*)outbuf,(void*)tlv_buf,parse_buffer_size);
+						i = parse_buffer_size;
 						STS_SENSOR_Upload_Message(LORAWAN_USER_APP_CTRL_REPLY_PORT, i, (uint8_t *)outbuf);
 					} else {
 						STS_SENSOR_Upload_Config_Invalid_Message();
@@ -2383,6 +2392,7 @@ void USER_APP_AUTO_RESPONDER_Parse(uint8_t *parse_buffer, uint8_t parse_buffer_s
 					} else if  (tlv_buf_size == 7 && tlv_buf[CFG_CMD4]=='F')  // Change fall detection
 					{
 						invalid_flag = 0;									// P 1 1 F A B C
+
 						if (((tlv_buf[CFG_CMD5] >='0') && (tlv_buf[CFG_CMD5]<='9')) && ((tlv_buf[CFG_CMD6]<='9') && (tlv_buf[CFG_CMD6]>='0'))
 								&& ((tlv_buf[CFG_CMD7]<='9') && (tlv_buf[CFG_CMD7]>='0'))) //&& ((tlv_buf[CFG_CMD8]<='9') && (tlv_buf[CFG_CMD8]>='0')))
 						{
@@ -2423,14 +2433,14 @@ void USER_APP_AUTO_RESPONDER_Parse(uint8_t *parse_buffer, uint8_t parse_buffer_s
 
 					}else if  (tlv_buf_size == 8 && tlv_buf[CFG_CMD4]=='O')  // Change occupancy/motionless/ unconscious  overtime threshold
 					{
-						invalid_flag = 0;									// P 1 1 O A B C D
+						invalid_flag = 0;									// P 1 1 O M O U A
 						if (((tlv_buf[CFG_CMD5] >='0') && (tlv_buf[CFG_CMD5]<='9')) && ((tlv_buf[CFG_CMD6]<='9') && (tlv_buf[CFG_CMD6]>='0'))
 								&& ((tlv_buf[CFG_CMD7]<='9') && (tlv_buf[CFG_CMD7]>='0'))&& ((tlv_buf[CFG_CMD8]<='9') && (tlv_buf[CFG_CMD8]>='0')))
 						{
-							sts_motionless_duration_threshold_in_min	= (uint8_t)(tlv_buf[CFG_CMD5] - 0x30);			//Motionless duration in min
-							sts_occupancy_overtime_threshold_in_10min	= (uint8_t)(tlv_buf[CFG_CMD6] - 0x30)*10;			//Long occupation in min
-							sts_unconscious_level_threshold				= (uint8_t)(tlv_buf[CFG_CMD7] - 0x30+1)*128;		//motion level threshold less than 1280
-							sts_alarm_mute_reset_timer_in_10sec		 	= (uint8_t)(tlv_buf[CFG_CMD8] - 0x30)*10;			//alarm mute reset timer in 10 sec
+							sts_motionless_duration_threshold_in_min	= (uint8_t)(tlv_buf[CFG_CMD5] - 0x30);				//M: Motionless duration in min
+							sts_occupancy_overtime_threshold_in_10min	= (uint8_t)(tlv_buf[CFG_CMD6] - 0x30)*10;			//O: Long occupation in min
+							sts_unconscious_level_threshold				= (uint8_t)(tlv_buf[CFG_CMD7] - 0x30+1)*128;		//U: motion level threshold less than 1280
+							sts_alarm_mute_reset_timer_in_10sec		 	= (uint8_t)(tlv_buf[CFG_CMD8] - 0x30)*10;			//A: alarm mute reset timer in 10 sec
 
 							sts_cfg_nvm.motionless_duration_threshold_in_min 	= (uint8_t)(tlv_buf[CFG_CMD5] - 0x30);
 							sts_cfg_nvm.occupancy_overtime_threshold_in_10min 	= (uint8_t)(tlv_buf[CFG_CMD6] - 0x30);
@@ -2594,6 +2604,11 @@ void USER_APP_AUTO_RESPONDER_Parse(uint8_t *parse_buffer, uint8_t parse_buffer_s
 							{
 								if ((tlv_buf[CFG_CMD4+j] < '0') || (tlv_buf[CFG_CMD4+j] >'9'))
 								{
+
+									//sts_cfg_nvm.p[j] = (uint8_t)((tlv_buf[CFG_CMD4+j] - 0x30)&0xff);
+									//APP_LOG(TS_OFF,VLEVEL_H,"\r\n tlv_buf %d = %02x cfg->p[%d]=%02x \r\n",j,tlv_buf[CFG_CMD4+j], j, sts_cfg_nvm.p[j]);
+
+								} else {
 									invalid_flag = 1;
 								}
 							}
@@ -2614,6 +2629,7 @@ void USER_APP_AUTO_RESPONDER_Parse(uint8_t *parse_buffer, uint8_t parse_buffer_s
 								i = tlv_buf_size;
 								APP_LOG(TS_OFF, VLEVEL_M, "###### RSS Simple CFG=%s\r\n",(char*)outbuf);
 
+
 								// Step 2: Save valid config to NVM
 								sts_cfg_nvm.mtmcode1 = sts_mtmcode1;
 								sts_cfg_nvm.mtmcode2 = sts_mtmcode2;
@@ -2763,6 +2779,7 @@ void STS_SENSOR_Upload_Message(uint8_t appDataPort, uint8_t appBufferSize, uint8
 
 void OnStoreSTSCFGContextRequest(void)
 {
+
   /* USER CODE BEGIN OnStoreContextRequest_1 */
 	uint8_t i=0,j=0,nvm_store_value[YUNHORN_STS_MAX_NVM_CFG_SIZE]={0x0};
 
@@ -2772,6 +2789,9 @@ void OnStoreSTSCFGContextRequest(void)
 	nvm_store_value[i++] = sts_cfg_nvm.mtmcode2;
 	nvm_store_value[i++] = sts_cfg_nvm.version;
 	nvm_store_value[i++] = sts_cfg_nvm.hardware_ver;
+
+	APP_LOG(TS_OFF, VLEVEL_L, "\r\n\n\n\n\n STS_CFG_NVM periodicity=%02x unit=%02x \r\n",sts_cfg_nvm.periodicity,sts_cfg_nvm.unit);
+
 	nvm_store_value[i++] = sts_cfg_nvm.periodicity;
 	nvm_store_value[i++] = sts_cfg_nvm.unit;
 	nvm_store_value[i++] = sts_cfg_nvm.sampling;
@@ -2867,12 +2887,15 @@ void STS_REBOOT_CONFIG_Init(void)
 
   /* USER CODE END OnRestoreContextRequest_1 */
   //UTIL_MEM_cpy_8(nvm_stored_value, (void *)STS_CONFIG_NVM_BASE_ADDRESS, YUNHORN_STS_MAX_NVM_CFG_SIZE);
+
+	  APP_LOG(TS_OFF, VLEVEL_M, "\r\nfactory default 0=%02x \r\n", sts_cfg_nvm_factory_default[0]);
 	if (sts_cfg_nvm_factory_default[0] != 0x46) 		// for reset to factory default
 	{
 		FLASH_IF_Read(nvm_stored_value, STS_CONFIG_NVM_BASE_ADDRESS, YUNHORN_STS_MAX_NVM_CFG_SIZE);
-
+	  	STS_Show_STS_CFG_NVM((uint8_t*)nvm_stored_value);
 	} else {											// RESET TO FACTORY DEFAULT,CONFIG TO ORIGINAL SETTINGS
 		FLASH_IF_Read(nvm_stored_value, FLASH_MFG_DEFAULT_START_ADDR, YUNHORN_STS_MAX_NVM_CFG_SIZE);
+	  	STS_Show_STS_CFG_NVM((uint8_t*)nvm_stored_value);
 		sts_cfg_nvm_factory_default[0] = 0xF3;
 	}
   /* USER CODE BEGIN OnRestoreContextRequest_Last */
@@ -2923,7 +2946,7 @@ void STS_REBOOT_CONFIG_Init(void)
 			}
 	}
 //#endif
-
+  	STS_Show_STS_CFG_NVM((uint8_t*)nvm_stored_value);
 	OnRestoreSTSCFGContextProcess();
 
 
@@ -3009,6 +3032,7 @@ void OnRestoreSTSCFGContextProcess(void)
 
 
 #if	defined(STS_O7)||defined(STS_O6)
+	APP_LOG(TS_OFF, VLEVEL_M, "\n--------STS_PRESENCE_SENSOR_Init()---------------------------------\n");
 //	if ((sts_version == sts_cfg_nvm.version)&& (NVM_CFG_PARAMETER_SIZE == sts_cfg_nvm.length))
 	{
 		STS_PRESENCE_SENSOR_Init();
@@ -3020,6 +3044,21 @@ void OnRestoreSTSCFGContextProcess(void)
 
 }
 
+
+static void STS_Show_STS_CFG_NVM(uint8_t * store_value)
+{
+	APP_LOG(TS_OFF, VLEVEL_M, "\n-----------------------------------------------\n");
+	APP_LOG(TS_OFF, VLEVEL_M, "\n00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15\n");
+	for (uint8_t i=0; i<YUNHORN_STS_MAX_NVM_CFG_SIZE; i++)
+	{
+		if (i%16==0) APP_LOG(TS_OFF, VLEVEL_M, "\n");
+		APP_LOG(TS_OFF, VLEVEL_M, "%02X ", store_value[i]);
+
+	}
+	APP_LOG(TS_OFF, VLEVEL_M, "\n\r");
+	APP_LOG(TS_OFF, VLEVEL_M, "\n###############################################\n\r");
+}
+
 void STS_SENSOR_Distance_Test_Process(void)
 {
 #if	defined(STS_O6)||defined(STS_O7)
@@ -3102,7 +3141,7 @@ uint32_t STS_Get_Date_Time_Stamp(void)
 	UnixEpoch.Seconds -= 18; /*removing leap seconds*/
 
 	SysTimeLocalTime(UnixEpoch.Seconds,  &localtime);
-	APP_LOG(TS_OFF, VLEVEL_M, "UTC TIME:%02dh%02dm%02ds on %02d/%02d/%04d\r\n",
+	APP_LOG(TS_OFF, VLEVEL_L, "UTC TIME:%02dh%02dm%02ds on %02d/%02d/%04d\r\n",
 						            localtime.tm_hour, localtime.tm_min, localtime.tm_sec,
 						            localtime.tm_mday, localtime.tm_mon + 1, localtime.tm_year + 1900);
 
diff --git a/STM32CubeIDE/.cproject b/STM32CubeIDE/.cproject
index 5542029..9a0d9f7 100644
--- a/STM32CubeIDE/.cproject
+++ b/STM32CubeIDE/.cproject
@@ -154,9 +154,9 @@
 								<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.optimization.level.1119592399" name="Optimization level" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.optimization.level" useByScannerDiscovery="false" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.optimization.level.value.os" valueType="enumerated"/>
 								<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.definedsymbols.2024044405" name="Define symbols (-D)" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.definedsymbols" useByScannerDiscovery="false" valueType="definedSymbols">
 									<listOptionValue builtIn="false" value="CORE_CM4"/>
-									<listOptionValue builtIn="false" value="STS_P2"/>
 									<listOptionValue builtIn="false" value="CLOCK_SYNC"/>
-									<listOptionValue builtIn="false" value="RM2_1"/>
+									<listOptionValue builtIn="false" value="RM2"/>
+									<listOptionValue builtIn="false" value="STS_O7"/>
 									<listOptionValue builtIn="false" value="YUNHORN_STS_RANDOM"/>
 									<listOptionValue builtIn="false" value="STM32WLE5xx"/>
 									<listOptionValue builtIn="false" value="USE_HAL_DRIVER"/>
diff --git a/STM32CubeIDE/Release/STS_O6_DEBUG_RM2_1_pixel_network_20240806a.bin b/STM32CubeIDE/Release/STS_O6_DEBUG_RM2_1_pixel_network_20240806a.bin
new file mode 100644
index 0000000..85dfd75
Binary files /dev/null and b/STM32CubeIDE/Release/STS_O6_DEBUG_RM2_1_pixel_network_20240806a.bin differ
diff --git a/STM32CubeIDE/Release/STS_O6_RTM_PIXEL_NETWORK_20240820.bin b/STM32CubeIDE/Release/STS_O6_RTM_PIXEL_NETWORK_20240820.bin
new file mode 100644
index 0000000..0825b6d
Binary files /dev/null and b/STM32CubeIDE/Release/STS_O6_RTM_PIXEL_NETWORK_20240820.bin differ
diff --git a/STM32CubeIDE/Release/STS_O6_RTM_RM2_1_46cm_pixel_network_20240806b.bin b/STM32CubeIDE/Release/STS_O6_RTM_RM2_1_46cm_pixel_network_20240806b.bin
new file mode 100644
index 0000000..6818931
Binary files /dev/null and b/STM32CubeIDE/Release/STS_O6_RTM_RM2_1_46cm_pixel_network_20240806b.bin differ
diff --git a/STM32CubeIDE/Release/STS_O6_RTM_RM2_1_pixel_network_20240806a.bin b/STM32CubeIDE/Release/STS_O6_RTM_RM2_1_pixel_network_20240806a.bin
new file mode 100644
index 0000000..9fd42dd
Binary files /dev/null and b/STM32CubeIDE/Release/STS_O6_RTM_RM2_1_pixel_network_20240806a.bin differ
diff --git a/STM32CubeIDE/Release/STS_O6_RTM_RM2_46cm_pixel_network_20240806b.bin b/STM32CubeIDE/Release/STS_O6_RTM_RM2_46cm_pixel_network_20240806b.bin
new file mode 100644
index 0000000..9648bfd
Binary files /dev/null and b/STM32CubeIDE/Release/STS_O6_RTM_RM2_46cm_pixel_network_20240806b.bin differ
diff --git a/STM32CubeIDE/Release/STS_O6_RTM_RM2_46cm_pixel_network_20240820.bin b/STM32CubeIDE/Release/STS_O6_RTM_RM2_46cm_pixel_network_20240820.bin
new file mode 100644
index 0000000..1f83805
Binary files /dev/null and b/STM32CubeIDE/Release/STS_O6_RTM_RM2_46cm_pixel_network_20240820.bin differ
diff --git a/STM32CubeIDE/Release/STS_O6_RTM_RM2_pixel_network_20240806A.bin b/STM32CubeIDE/Release/STS_O6_RTM_RM2_pixel_network_20240806A.bin
new file mode 100644
index 0000000..e36f663
Binary files /dev/null and b/STM32CubeIDE/Release/STS_O6_RTM_RM2_pixel_network_20240806A.bin differ
diff --git a/STM32CubeIDE/Release/STS_O7.bin b/STM32CubeIDE/Release/STS_O7.bin
index 7f8cf35..36508d2 100644
Binary files a/STM32CubeIDE/Release/STS_O7.bin and b/STM32CubeIDE/Release/STS_O7.bin differ
diff --git a/STM32CubeIDE/Release/makefile b/STM32CubeIDE/Release/makefile
index 54f7c2a..f768fc6 100644
--- a/STM32CubeIDE/Release/makefile
+++ b/STM32CubeIDE/Release/makefile
@@ -71,7 +71,7 @@ main-build: STS_O7.elf secondary-outputs
 
 # Tool invocations
 STS_O7.elf STS_O7.map: $(OBJS) $(USER_OBJS) D:\ONEDRIVE\STM32WLV13\Projects\NUCLEO-WL55JC\Applications\LoRaWAN\STS_O7\STM32CubeIDE\STM32WLE5CCUX_FLASH.ld makefile objects.list $(OPTIONAL_TOOL_DEPS)
-	arm-none-eabi-gcc -o "STS_O7.elf" @"objects.list" $(USER_OBJS) -Wl,--start-group $(LIBS) -Wl,--end-group -mcpu=cortex-m4 -T"D:\ONEDRIVE\STM32WLV13\Projects\NUCLEO-WL55JC\Applications\LoRaWAN\STS_O7\STM32CubeIDE\STM32WLE5CCUX_FLASH.ld" --specs=nosys.specs -Wl,-Map="STS_O7.map" -Wl,--gc-sections -static -L"D:\ONEDRIVE\STM32WLV13\Projects\NUCLEO-WL55JC\Applications\LoRaWAN\STS_O7\rss\lib" -L../../../../../../../Middlewares/ST/STM32_Cryptographic/lib -Xlinker -no-enum-size-warning -z noexecstack --specs=nano.specs -mfloat-abi=soft -mthumb -Wl,--start-group -lc -lm -Wl,--end-group
+	arm-none-eabi-gcc -o "STS_O7.elf" @"objects.list" $(USER_OBJS) -Wl,--start-group $(LIBS) -Wl,--end-group -mcpu=cortex-m4 -T"D:\ONEDRIVE\STM32WLV13\Projects\NUCLEO-WL55JC\Applications\LoRaWAN\STS_O7\STM32CubeIDE\STM32WLE5CCUX_FLASH.ld" --specs=nosys.specs -Wl,-Map="STS_O7.map" -Wl,--gc-sections -static -L"D:\ONEDRIVE\STM32WLV13\Projects\NUCLEO-WL55JC\Applications\LoRaWAN\STS_O7\STM32CubeIDE\Drivers\rss\lib" -L../../../../../../../Middlewares/ST/STM32_Cryptographic/lib -Xlinker -no-enum-size-warning -z noexecstack --specs=nano.specs -mfloat-abi=soft -mthumb -Wl,--start-group -lc -lm -Wl,--end-group
 	@echo 'Finished building target: $@'
 	@echo ' '
 
diff --git a/STM32CubeIDE/STS_O7.launch b/STM32CubeIDE/STS_O7.launch
index 9dcffc1..8f08898 100644
--- a/STM32CubeIDE/STS_O7.launch
+++ b/STM32CubeIDE/STS_O7.launch
@@ -2,10 +2,12 @@
 <launchConfiguration type="com.st.stm32cube.ide.mcu.debug.launch.launchConfigurationType">
     <stringAttribute key="com.st.stm32cube.ide.mcu.debug.launch.access_port_id" value="0"/>
     <stringAttribute key="com.st.stm32cube.ide.mcu.debug.launch.cubeprog_external_loaders" value="[]"/>
+    <booleanAttribute key="com.st.stm32cube.ide.mcu.debug.launch.debug_auth__pwd_enable" value="false"/>
     <stringAttribute key="com.st.stm32cube.ide.mcu.debug.launch.debug_auth_certif_path" value=""/>
     <booleanAttribute key="com.st.stm32cube.ide.mcu.debug.launch.debug_auth_check_enable" value="false"/>
     <stringAttribute key="com.st.stm32cube.ide.mcu.debug.launch.debug_auth_key_path" value=""/>
     <stringAttribute key="com.st.stm32cube.ide.mcu.debug.launch.debug_auth_permission" value=""/>
+    <stringAttribute key="com.st.stm32cube.ide.mcu.debug.launch.debug_auth_pwd_file" value=""/>
     <booleanAttribute key="com.st.stm32cube.ide.mcu.debug.launch.enable_live_expr" value="true"/>
     <booleanAttribute key="com.st.stm32cube.ide.mcu.debug.launch.enable_swv" value="false"/>
     <intAttribute key="com.st.stm32cube.ide.mcu.debug.launch.formatVersion" value="2"/>
@@ -34,7 +36,7 @@
     <stringAttribute key="com.st.stm32cube.ide.mcu.debug.stlink.frequency" value="0"/>
     <booleanAttribute key="com.st.stm32cube.ide.mcu.debug.stlink.halt_all_on_reset" value="false"/>
     <stringAttribute key="com.st.stm32cube.ide.mcu.debug.stlink.log_file" value="D:\ONEDRIVE\STM32WLV13\Projects\NUCLEO-WL55JC\Applications\LoRaWAN\YUNHORN_STS_E5CC_AS923_POC\STM32CubeIDE\Release\st-link_gdbserver_log.txt"/>
-    <stringAttribute key="com.st.stm32cube.ide.mcu.debug.stlink.low_power_debug" value="enable"/>
+    <stringAttribute key="com.st.stm32cube.ide.mcu.debug.stlink.low_power_debug" value="none"/>
     <stringAttribute key="com.st.stm32cube.ide.mcu.debug.stlink.max_halt_delay" value="2"/>
     <stringAttribute key="com.st.stm32cube.ide.mcu.debug.stlink.reset_strategy" value="connect_under_reset"/>
     <booleanAttribute key="com.st.stm32cube.ide.mcu.debug.stlink.stlink_check_serial_number" value="false"/>
diff --git a/readme.txt b/readme.txt
index b5cca4d..98c0480 100644
--- a/readme.txt
+++ b/readme.txt
@@ -43,10 +43,14 @@ STS_O7 For Occupancy sensors
 2024-06-06  before STS_FALL_DETECTION_MODE change
 2024-06-17  good for sensor 1 and sensor 2 start stop timer freezed for now
 2024-06-26  RTM for pixel-network STS_RSS_MODE = 3 P113 switch
+******************************************************************************
+2024-08-05  PIXEL-NETWORK RM2 
+
+=======
 2024-07-30  revert back ...not good for alarm so far
 2024-08-06  start focus on fall detection
 2024-08-06  fall detection for O7, Motion detection for O6
 2024-08-28  STS-P2
 *****************************************************************************
-
+2025-03-12  PIXEL-NETWORK WITH RESET TO FACTORY DEFAULT CMD
  */