diff --git a/applications/main/subghz/helpers/subghz_txrx_create_protocol_key.c b/applications/main/subghz/helpers/subghz_txrx_create_protocol_key.c
index 0a9d12909..614f3fcf3 100644
--- a/applications/main/subghz/helpers/subghz_txrx_create_protocol_key.c
+++ b/applications/main/subghz/helpers/subghz_txrx_create_protocol_key.c
@@ -229,6 +229,8 @@ bool subghz_txrx_gen_faac_slh_protocol(
         }
 
         flipper_format_write_hex(txrx->fff_data, "Seed", seed_data, sizeof(uint32_t));
+        flipper_format_write_string_cstr(txrx->fff_data, "Valid", "1\n");
+        FURI_LOG_I(TAG, "Flag write to SD is OK");
     }
 
     subghz_transmitter_free(txrx->transmitter);
diff --git a/lib/subghz/protocols/faac_slh.c b/lib/subghz/protocols/faac_slh.c
index ecc1266ee..848a61d9a 100644
--- a/lib/subghz/protocols/faac_slh.c
+++ b/lib/subghz/protocols/faac_slh.c
@@ -10,6 +10,8 @@
 
 #define TAG "SubGhzProtocolFaacSLH"
 
+bool bvalid;
+
 static const SubGhzBlockConst subghz_protocol_faac_slh_const = {
     .te_short = 255,
     .te_long = 595,
@@ -110,7 +112,14 @@ void subghz_protocol_encoder_faac_slh_free(void* context) {
 }
 
 static bool subghz_protocol_faac_slh_gen_data(SubGhzProtocolEncoderFaacSLH* instance) {
-    instance->generic.cnt += furi_hal_subghz_get_rolling_counter_mult();
+    if(bvalid) {
+        instance->generic.cnt += furi_hal_subghz_get_rolling_counter_mult();
+        FURI_LOG_I(TAG, "[gen_data] TRUE : %i", bvalid);
+    } else {
+        // Do not generate new data, send data from buffer
+        FURI_LOG_I(TAG, "[gen_data] FALSE : %i", bvalid);
+        //return true;
+    }
     uint32_t fix = instance->generic.serial << 4 | instance->generic.btn;
     uint32_t hop = 0;
     uint32_t decrypt = 0;
@@ -237,6 +246,14 @@ SubGhzProtocolStatus
             FURI_LOG_E(TAG, "Missing Seed");
             break;
         }
+        FuriString* valid = furi_string_alloc();
+        if(flipper_format_read_string(flipper_format, "Valid", valid)) {
+            bvalid = true;
+            FURI_LOG_I(TAG, "[encoder_des] Valid : %i", bvalid);
+        } else {
+            bvalid = false;
+        }
+        furi_string_free(valid);
         instance->generic.seed = seed_data[0] << 24 | seed_data[1] << 16 | seed_data[2] << 8 |
                                  seed_data[3];
 
@@ -481,6 +498,14 @@ SubGhzProtocolStatus
             FURI_LOG_E(TAG, "Missing Seed");
             break;
         }
+        FuriString* valid = furi_string_alloc();
+        if(flipper_format_read_string(flipper_format, "Valid", valid)) {
+            bvalid = true;
+            FURI_LOG_I(TAG, "[decoder_des] Valid : %i", bvalid);
+        } else {
+            bvalid = false;
+        }
+        furi_string_free(valid);
         instance->generic.seed = seed_data[0] << 24 | seed_data[1] << 16 | seed_data[2] << 8 |
                                  seed_data[3];
 
@@ -502,21 +527,39 @@ void subghz_protocol_decoder_faac_slh_get_string(void* context, FuriString* outp
     uint32_t code_fix = instance->generic.data >> 32;
     uint32_t code_hop = instance->generic.data & 0xFFFFFFFF;
 
-    furi_string_cat_printf(
-        output,
-        "%s %dbit\r\n"
-        "Key:%lX%08lX\r\n"
-        "Fix:%08lX    Cnt:%05lX\r\n"
-        "Hop:%08lX    Btn:%X\r\n"
-        "Sn:%07lX Sd:%08lX",
-        instance->generic.protocol_name,
-        instance->generic.data_count_bit,
-        (uint32_t)(instance->generic.data >> 32),
-        (uint32_t)instance->generic.data,
-        code_fix,
-        instance->generic.cnt,
-        code_hop,
-        instance->generic.btn,
-        instance->generic.serial,
-        instance->generic.seed);
+    if(bvalid == false) {
+        furi_string_cat_printf(
+            output,
+            "%s %dbit\r\n"
+            "Key:%lX%08lX\r\n"
+            "Fix:%08lX\r\n"
+            "Hop:%08lX    Btn:%X\r\n"
+            "Sn:%07lX Sd:Unknown",
+            instance->generic.protocol_name,
+            instance->generic.data_count_bit,
+            (uint32_t)(instance->generic.data >> 32),
+            (uint32_t)instance->generic.data,
+            code_fix,
+            code_hop,
+            instance->generic.btn,
+            instance->generic.serial);
+    } else {
+        furi_string_cat_printf(
+            output,
+            "%s %dbit\r\n"
+            "Key:%lX%08lX\r\n"
+            "Fix:%08lX    Cnt:%05lX\r\n"
+            "Hop:%08lX    Btn:%X\r\n"
+            "Sn:%07lX Sd:%08lX",
+            instance->generic.protocol_name,
+            instance->generic.data_count_bit,
+            (uint32_t)(instance->generic.data >> 32),
+            (uint32_t)instance->generic.data,
+            code_fix,
+            instance->generic.cnt,
+            code_hop,
+            instance->generic.btn,
+            instance->generic.serial,
+            instance->generic.seed);
+    }
 }