diff --git a/common/utils/itti/intertask_interface.c b/common/utils/itti/intertask_interface.c
index bba8ebd6f6e67a964937f35c1d335637e2a03ab5..2443fabb1f1abc76682718c3b7b970b9363371f4 100644
--- a/common/utils/itti/intertask_interface.c
+++ b/common/utils/itti/intertask_interface.c
@@ -65,6 +65,14 @@
 #include "signals.h"
 #include "timer.h"
 
+#ifdef RTAI
+# include <rtai.h>
+# include <rtai_fifos.h>
+#    define FIFO_PRINTF_MAX_STRING_SIZE 1000
+#    define FIFO_PRINTF_NO              62
+#    define FIFO_PRINTF_SIZE            65536
+#endif
+
 /* ITTI DEBUG groups */
 #define ITTI_DEBUG_POLL             (1<<0)
 #define ITTI_DEBUG_SEND             (1<<1)
@@ -78,14 +86,11 @@ const int itti_debug = ITTI_DEBUG_ISSUES | ITTI_DEBUG_MP_STATISTICS;
 
 /* Don't flush if using RTAI */
 #ifdef RTAI
-# define ITTI_DEBUG(m, x, args...) do { if ((m) & itti_debug) rt_printk("[ITTI][D]"x, ##args); } \
-    while(0)
+# define ITTI_DEBUG(m, x, args...)  do { if ((m) & itti_debug) rt_log_debug (x, ##args); } while(0);
 #else
-# define ITTI_DEBUG(m, x, args...) do { if ((m) & itti_debug) fprintf(stdout, "[ITTI][D]"x, ##args); fflush (stdout); } \
-    while(0)
+# define ITTI_DEBUG(m, x, args...)  do { if ((m) & itti_debug) fprintf(stdout, "[ITTI][D]"x, ##args); fflush (stdout); } while(0);
 #endif
-#define ITTI_ERROR(x, args...) do { fprintf(stdout, "[ITTI][E]"x, ##args); fflush (stdout); } \
-    while(0)
+#define ITTI_ERROR(x, args...) 	    do { fprintf(stdout, "[ITTI][E]"x, ##args); fflush (stdout); } while(0);
 
 /* Global message size */
 #define MESSAGE_SIZE(mESSAGEiD) (sizeof(MessageHeader) + itti_desc.messages_info[mESSAGEiD].size)
@@ -252,7 +257,14 @@ const char *itti_get_message_name(MessagesIds message_id) {
 
 const char *itti_get_task_name(task_id_t task_id)
 {
-    AssertFatal (task_id < itti_desc.task_max, "Task id (%d) is out of range (%d)!\n", task_id, itti_desc.task_max);
+    if (itti_desc.task_max > 0)
+    {
+        AssertFatal (task_id < itti_desc.task_max, "Task id (%d) is out of range (%d)!\n", task_id, itti_desc.task_max);
+    }
+    else
+    {
+        return ("ITTI NOT INITIALIZED !!!");
+    }
 
     return (itti_desc.tasks_info[task_id].name);
 }
@@ -275,6 +287,27 @@ static task_id_t itti_get_current_task_id(void)
     return TASK_UNKNOWN;
 }
 
+#ifdef RTAI
+static void rt_log_debug(char *format, ...)
+{
+    task_id_t   task_id;
+    va_list     args;
+    char        log_buffer[FIFO_PRINTF_MAX_STRING_SIZE];
+    int         len;
+
+    task_id = itti_get_current_task_id ();
+    len = snprintf(log_buffer, FIFO_PRINTF_MAX_STRING_SIZE-1, "[ITTI][D][%s]", itti_get_task_name(task_id));
+    va_start(args, format);
+    len += vsnprintf(&log_buffer[len], FIFO_PRINTF_MAX_STRING_SIZE-1-len, format, args);
+    va_end (args);
+
+    if (task_id != TASK_UNKNOWN)
+        fwrite(log_buffer, len, 1, stdout);
+    else
+        rtf_put (FIFO_PRINTF_NO, log_buffer, len);
+}
+#endif
+
 void itti_update_lte_time(uint32_t frame, uint8_t slot)
 {
     itti_desc.lte_time.frame = frame;