diff --git a/common/utils/itti/intertask_interface.c b/common/utils/itti/intertask_interface.c
index adea1fe7996ef355564a226faa27643f57ede25b..d86f7315814bc57301ec95a0751aacbf7aefdd01 100644
--- a/common/utils/itti/intertask_interface.c
+++ b/common/utils/itti/intertask_interface.c
@@ -709,6 +709,9 @@ int itti_create_task(task_id_t task_id, void *(*start_routine)(void *), void *ar
 
     result = pthread_create (&itti_desc.threads[thread_id].task_thread, NULL, start_routine, args_p);
     AssertFatal (result >= 0, "Thread creation for task %d, thread %d failed (%d)!\n", task_id, thread_id, result);
+    char name[16];
+    snprintf( name, sizeof(name), "ITTI %d", thread_id );
+    pthread_setname_np( itti_desc.threads[thread_id].task_thread, name );
 
     itti_desc.created_tasks ++;
 
diff --git a/common/utils/itti/intertask_interface_dump.c b/common/utils/itti/intertask_interface_dump.c
index 4c4905db9fccdafd4f697603d414b684ca937f79..7775cb6fd96907c59b24bb27a6fc2269cd9462bc 100644
--- a/common/utils/itti/intertask_interface_dump.c
+++ b/common/utils/itti/intertask_interface_dump.c
@@ -34,6 +34,7 @@
  * @author Sebastien Roux <sebastien.roux@eurecom.fr>
  */
 
+#define _GNU_SOURCE // required for pthread_setname_np()
 #include <pthread.h>
 #include <stdio.h>
 #include <stdlib.h>
@@ -845,6 +846,7 @@ int itti_dump_init(const char * const messages_definition_xml, const char * cons
     if (ret < 0) {
         AssertFatal (0, "pthread_create failed (%d:%s)!\n", errno, strerror(errno));
     }
+    pthread_setname_np( itti_dump_queue.itti_acceptor_thread, "ITTI acceptor" );
 
     return 0;
 }
diff --git a/openair2/LAYER2/PDCP_v10.1.0/pdcp_netlink.c b/openair2/LAYER2/PDCP_v10.1.0/pdcp_netlink.c
index 2200c953fbb38b8d3aadde9fdb6f766ea20a01a4..7e8360c61b6b8d7cc46578baf77b20c81bdb0da5 100644
--- a/openair2/LAYER2/PDCP_v10.1.0/pdcp_netlink.c
+++ b/openair2/LAYER2/PDCP_v10.1.0/pdcp_netlink.c
@@ -38,6 +38,7 @@
  * @ingroup pdcp
  */
 
+#define _GNU_SOURCE // required for pthread_setname_np()
 #include <pthread.h>
 #include <stdio.h>
 #include <stdlib.h>
@@ -160,6 +161,7 @@ int pdcp_netlink_init(void) {
               errno, strerror(errno));
           exit(EXIT_FAILURE);
       }
+      pthread_setname_np( pdcp_netlink_thread, "PDCP netlink" );
   }
   return 0;
 }
diff --git a/openair2/LAYER2/PDCP_v10.1.0/pdcp_thread.c b/openair2/LAYER2/PDCP_v10.1.0/pdcp_thread.c
index 7248be01eb43905f471646fa99aa7d5aeb4483df..455e0ded4ada93f06f07ce695a3f3007a89cf2ba 100644
--- a/openair2/LAYER2/PDCP_v10.1.0/pdcp_thread.c
+++ b/openair2/LAYER2/PDCP_v10.1.0/pdcp_thread.c
@@ -133,6 +133,7 @@ int init_pdcp_thread(void) {
   }
   else {
       LOG_I(PDCP,"Allocate PDCP thread successful\n");
+      pthread_setname_np( pdcp_thread, "PDCP" );
   }
   return(0);
 }
diff --git a/openair2/RRM_4_RRC_LITE/src/com/rrc/RRCMessageHandler.cpp b/openair2/RRM_4_RRC_LITE/src/com/rrc/RRCMessageHandler.cpp
index 64add3536ff405ee5164fa7b18a4b53a10f22493..60cf352a9a96a2bd7e7b14312680f8a16ae765a5 100755
--- a/openair2/RRM_4_RRC_LITE/src/com/rrc/RRCMessageHandler.cpp
+++ b/openair2/RRM_4_RRC_LITE/src/com/rrc/RRCMessageHandler.cpp
@@ -41,6 +41,8 @@ RRCMessageHandler::RRCMessageHandler()
 
   if (pthread_create(&m_thread, NULL, RRCMessageHandlerThreadLoop, (void *) NULL) != 0) {
   	fprintf(stderr, "\nRRCMessageHandler::RRCMessageHandler() ERROR pthread_create...\n");
+  } else {
+      pthread_setname_np( m_thread, "RRCMsgHandler" );
   }
 }
 //----------------------------------------------------------------------------
diff --git a/openair2/RRM_4_RRC_LITE/src/com/rrm/RRMMessageHandler.cpp b/openair2/RRM_4_RRC_LITE/src/com/rrm/RRMMessageHandler.cpp
index 98b44d50b18a9506b53dfe67530eda8a16489f36..48a3a7732067dc74a71d7001328619f4d6e0b300 100755
--- a/openair2/RRM_4_RRC_LITE/src/com/rrm/RRMMessageHandler.cpp
+++ b/openair2/RRM_4_RRC_LITE/src/com/rrm/RRMMessageHandler.cpp
@@ -41,6 +41,8 @@ RRMMessageHandler::RRMMessageHandler()
 
   if (pthread_create(&m_thread, NULL, RRMMessageHandlerThreadLoop, (void *) NULL) != 0) {
   	fprintf(stderr, "\nRRMMessageHandler::RRMMessageHandler() ERROR pthread_create...\n");
+  } else {
+      pthread_setname_np( m_thread, "RRMMsgHandler" );
   }
 }
 //----------------------------------------------------------------------------
diff --git a/targets/RT/USER/lte-softmodem.c b/targets/RT/USER/lte-softmodem.c
index b6452bc221085c141c3d6f326c5294263c8d3113..b9ea96e43beba2ec6190e8f4d92647d18e3d4c37 100644
--- a/targets/RT/USER/lte-softmodem.c
+++ b/targets/RT/USER/lte-softmodem.c
@@ -1241,6 +1241,11 @@ void init_eNB_proc(void)
       pthread_cond_init( &PHY_vars_eNB_g[0][CC_id]->proc[i].cond_rx, NULL);
       pthread_create( &PHY_vars_eNB_g[0][CC_id]->proc[i].pthread_tx, NULL, eNB_thread_tx, &PHY_vars_eNB_g[0][CC_id]->proc[i] );
       pthread_create( &PHY_vars_eNB_g[0][CC_id]->proc[i].pthread_rx, NULL, eNB_thread_rx, &PHY_vars_eNB_g[0][CC_id]->proc[i] );
+      char name[16];
+      snprintf( name, sizeof(name), "TX %d", i );
+      pthread_setname_np( PHY_vars_eNB_g[0][CC_id]->proc[i].pthread_tx, name );
+      snprintf( name, sizeof(name), "RX %d", i );
+      pthread_setname_np( PHY_vars_eNB_g[0][CC_id]->proc[i].pthread_rx, name );
       PHY_vars_eNB_g[0][CC_id]->proc[i].frame_tx = 0;
       PHY_vars_eNB_g[0][CC_id]->proc[i].frame_rx = 0;
 #ifdef EXMIMO
@@ -2800,6 +2805,8 @@ int main( int argc, char **argv )
     }
 
     ret = pthread_create(&forms_thread, NULL, scope_thread, NULL);
+    if (ret == 0)
+      pthread_setname_np( forms_thread, "xforms" );
     printf("Scope thread created, ret=%d\n",ret);
   }
 #endif
@@ -2850,7 +2857,8 @@ int main( int argc, char **argv )
       return(error_code);
     }
     else {
-      LOG_D(HW,"[lte-softmodem.c] Allocate UE_thread successful\n");
+      LOG_D( HW, "[lte-softmodem.c] Allocate UE_thread successful\n" );
+      pthread_setname_np( main_ue_thread, "main UE" );
     }
 #endif
     printf("UE threads created\n");
@@ -2872,7 +2880,8 @@ int main( int argc, char **argv )
       return(error_code);
     }
     else {
-      LOG_D(HW,"[lte-softmodem.c] Allocate eNB_thread successful\n");
+      LOG_D( HW, "[lte-softmodem.c] Allocate eNB_thread successful\n" );
+      pthread_setname_np( main_eNB_thread, "main eNB" );
     }
 #endif
   }