diff --git a/dap_client.c b/dap_client.c
index 2406aebd8a9bf1a24b530753bbcd1d5d133a6999..787142ce933dba87bd3b70b742104595d3408057 100755
--- a/dap_client.c
+++ b/dap_client.c
@@ -3,6 +3,7 @@
 #include <unistd.h>
 
 #include "dap_common.h"
+#include "dap_strfuncs.h"
 #include "dap_http_client.h"
 #include "dap_client.h"
 #include "dap_client_pvt.h"
@@ -109,6 +110,19 @@ const char* dap_client_get_uplink_addr(dap_client_t * a_client)
     return DAP_CLIENT_PVT(a_client)->uplink_addr;
 }
 
+/**
+ * @brief dap_client_set_active_channels
+ * @param a_client
+ * @param a_active_channels
+ */
+void dap_client_set_active_channels (dap_client_t * a_client, const char * a_active_channels)
+{
+    if ( DAP_CLIENT_PVT(a_client)->active_channels )
+        DAP_DELETE(DAP_CLIENT_PVT(a_client)->active_channels );
+    DAP_CLIENT_PVT(a_client)->active_channels = dap_strdup( a_active_channels);
+}
+
+
 /**
  * @brief dap_client_get_uplink_port
  * @param a_client
diff --git a/dap_client.h b/dap_client.h
index 2d8093a518088cef049ec433d4bc49e9292464b7..c9555590ec9f457f3785600eb030a79c2747a606 100755
--- a/dap_client.h
+++ b/dap_client.h
@@ -128,6 +128,7 @@ const char * dap_client_get_auth_cookie(dap_client_t * a_client);
 dap_stream_t * dap_client_get_stream(dap_client_t * a_client);
 dap_stream_ch_t * dap_client_get_stream_ch(dap_client_t * a_client, uint8_t a_ch_id);
 const char * dap_client_get_stream_id(dap_client_t * a_client);
+void dap_client_set_active_channels (dap_client_t * a_client, const char * a_active_channels);
 
 dap_client_stage_t dap_client_get_stage(dap_client_t * a_client);
 dap_client_stage_status_t dap_client_get_stage_status(dap_client_t * a_client);
diff --git a/dap_client_pvt.c b/dap_client_pvt.c
index 953ecf36c68871db7388c83ef0f4149dafb104ba..1cf377f3efc1b53113153e1abbd172a1df2e89dc 100755
--- a/dap_client_pvt.c
+++ b/dap_client_pvt.c
@@ -114,6 +114,8 @@ void dap_client_pvt_delete(dap_client_pvt_t * a_client_pvt)
 {
     if(a_client_pvt->session_key_id)
         DAP_DELETE(a_client_pvt->session_key_id);
+    if ( a_client_pvt->active_channels )
+        DAP_DELETE(a_client_pvt->active_channels );
     if (a_client_pvt->session_key)
         dap_enc_key_delete(a_client_pvt->session_key);
     if (a_client_pvt->session_key_open)
@@ -247,7 +249,11 @@ static void s_stage_status_after(dap_client_pvt_t * a_client_pvt)
             break;
         case STAGE_STREAM_CONNECTED: {
             log_it(L_INFO, "Go to stage STAGE_STREAM_CONNECTED");
-            dap_stream_ch_new(a_client_pvt->stream, 'N');
+            size_t count_channels = strlen( a_client_pvt->active_channels ) ;
+            for(size_t i = 0; i < count_channels; i++) {
+                dap_stream_ch_new(a_client_pvt->stream,(uint8_t) a_client_pvt->active_channels[i]);
+                //sid->channel[i]->ready_to_write = true;
+            }
 
             char* l_full_path = NULL;
             const char * l_path = "stream";
diff --git a/dap_client_pvt.h b/dap_client_pvt.h
index 58d2f0b7a3e015515f022bb4b0d64a59e2aa3890..a9785f9cb553b9a9ceeb36d635fb65db709767a3 100755
--- a/dap_client_pvt.h
+++ b/dap_client_pvt.h
@@ -54,6 +54,7 @@ typedef struct dap_client_internal
 
     char * last_parsed_node;
     char  * uplink_addr;
+    char * active_channels;
     uint16_t uplink_port;
     uint32_t uplink_protocol_version;