diff --git a/common/utils/T/T_messages.txt b/common/utils/T/T_messages.txt
index 9de5bfeceedbea6b5394e36f939b91d9e71fbe4f..0eef56505a1e8484f24134d8779f0cfe8c96d19a 100644
--- a/common/utils/T/T_messages.txt
+++ b/common/utils/T/T_messages.txt
@@ -16,31 +16,31 @@ ID = ENB_PHY_DL_TICK
 ID = ENB_PHY_DLSCH_UE_DCI
     DESC = eNodeB downlink UE specific DCI as sent by the PHY layer
     GROUP = ALL:PHY:GRAPHIC:ENB
-    FORMAT = int,eNB_ID : int,frame : int,subframe : int,UE_id : int,rnti : int,dci_format : int,harq_pid : int,mcs : int,TBS
+    FORMAT = int,eNB_ID : int,frame : int,subframe : int,rnti : int,dci_format : int,harq_pid : int,mcs : int,TBS
 ID = ENB_PHY_DLSCH_UE_ACK
     DESC = eNodeB downlink UE ACK as seen by the PHY layer in process_HARQ_feedback
     GROUP = ALL:PHY:GRAPHIC:ENB
-    FORMAT = int,eNB_ID : int,frame : int,subframe : int,UE_id : int,rnti : int,harq_pid
+    FORMAT = int,eNB_ID : int,frame : int,subframe : int,rnti : int,harq_pid
 ID = ENB_PHY_DLSCH_UE_NACK
     DESC = eNodeB downlink UE NACK as seen by the PHY layer in process_HARQ_feedback
     GROUP = ALL:PHY:GRAPHIC:ENB
-    FORMAT = int,eNB_ID : int,frame : int,subframe : int,UE_id : int,rnti : int,harq_pid
+    FORMAT = int,eNB_ID : int,frame : int,subframe : int,rnti : int,harq_pid
 ID = ENB_PHY_ULSCH_UE_DCI
     DESC = eNodeB uplink UE specific DCI as sent by the PHY layer
     GROUP = ALL:PHY:GRAPHIC:ENB
-    FORMAT = int,eNB_ID : int,frame : int,subframe : int,UE_id : int,rnti : int,harq_pid : int,mcs : int,round : int,first_rb : int,nb_rb : int,TBS : int,L : int,firstCCE
+    FORMAT = int,eNB_ID : int,frame : int,subframe : int,rnti : int,harq_pid : int,mcs : int,round : int,first_rb : int,nb_rb : int,TBS : int,L : int,firstCCE
 ID = ENB_PHY_ULSCH_UE_NO_DCI_RETRANSMISSION
     DESC = eNodeB uplink UE retransmission due to PHICH NACK (see generate_phich_top)
     GROUP = ALL:PHY:GRAPHIC:ENB
-    FORMAT = int,eNB_ID : int,frame : int,subframe : int,UE_id : int,rnti : int,harq_pid
+    FORMAT = int,eNB_ID : int,frame : int,subframe : int,rnti : int,harq_pid
 ID = ENB_PHY_ULSCH_UE_ACK
     DESC = eNodeB uplink UE ACK as seen by the PHY layer
     GROUP = ALL:PHY:GRAPHIC:ENB
-    FORMAT = int,eNB_ID : int,frame : int,subframe : int,UE_id : int,rnti : int,harq_pid
+    FORMAT = int,eNB_ID : int,frame : int,subframe : int,rnti : int,harq_pid
 ID = ENB_PHY_ULSCH_UE_NACK
     DESC = eNodeB uplink UE NACK as seen by the PHY layer
     GROUP = ALL:PHY:GRAPHIC:ENB
-    FORMAT = int,eNB_ID : int,frame : int,subframe : int,UE_id : int,rnti : int,harq_pid
+    FORMAT = int,eNB_ID : int,frame : int,subframe : int,rnti : int,harq_pid
 ID = ENB_PHY_INPUT_SIGNAL
     DESC = eNodeB received signal in the time domain for a duration of 1ms
     GROUP = ALL:PHY:GRAPHIC:HEAVY:ENB
@@ -52,31 +52,31 @@ ID = ENB_PHY_OUTPUT_SIGNAL
 ID = ENB_PHY_UL_CHANNEL_ESTIMATE
     DESC = eNodeB channel estimation in the time domain
     GROUP = ALL:PHY:GRAPHIC:HEAVY:ENB
-    FORMAT = int,eNB_ID : int,UE_ID : int,frame : int,subframe : int,antenna : buffer,chest_t
+    FORMAT = int,eNB_ID : int,rnti : int,frame : int,subframe : int,antenna : buffer,chest_t
 ID = ENB_PHY_PUSCH_IQ
     DESC = eNodeB PUSCH received IQ data
     GROUP = ALL:PHY:GRAPHIC:HEAVY:ENB
-    FORMAT = int,eNB_ID : int,UE_ID : int,frame : int,subframe : int,nb_rb : int,N_RB_UL : int,symbols_per_tti : buffer,pusch_comp
+    FORMAT = int,eNB_ID : int,rnti : int,frame : int,subframe : int,nb_rb : int,N_RB_UL : int,symbols_per_tti : buffer,pusch_comp
 ID = ENB_PHY_PUCCH_1AB_IQ
     DESC = eNodeB PUCCH received IQ data
     GROUP = ALL:PHY:GRAPHIC:HEAVY:ENB
-    FORMAT = int,eNB_ID : int,UE_ID : int,frame : int,subframe : int,I : int,Q
+    FORMAT = int,eNB_ID : int,rnti : int,frame : int,subframe : int,I : int,Q
 ID = ENB_PHY_PUCCH_1_ENERGY
     DESC = eNodeB PUCCH 1 energy and threshold
     GROUP = ALL:PHY:GRAPHIC:HEAVY:ENB
-    FORMAT = int,eNB_ID : int,UE_ID : int,frame : int,subframe : int,energy : int,threshold
+    FORMAT = int,eNB_ID : int,rnti : int,frame : int,subframe : int,energy : int,threshold
 ID = ENB_PHY_PHICH
     DESC = eNodeB PHICH
     GROUP = ALL:PHY:ENB
-    FORMAT = int,eNB_ID : int,frame : int,subframe : int,UE_id : int,rnti : int,harq_pid : int,NGROUP : int,NSF : int,ngroup : int,nseq : int,ACK : int,first_rb : int,n_DMRS
+    FORMAT = int,eNB_ID : int,frame : int,subframe : int,rnti : int,harq_pid : int,NGROUP : int,NSF : int,ngroup : int,nseq : int,ACK : int,first_rb : int,n_DMRS
 ID = ENB_PHY_MSG3_ALLOCATION
     DESC = eNodeB Msg3 allocation/reallocation
     GROUP = ALL:PHY:ENB
-    FORMAT = int,eNB_ID : int,frame : int,subframe : int,UE_id : int,rnti : int,first_transmission : int,Msg3_frame : int,Msg3_subframe
+    FORMAT = int,eNB_ID : int,frame : int,subframe : int,rnti : int,first_transmission : int,Msg3_frame : int,Msg3_subframe
 ID = ENB_PHY_INITIATE_RA_PROCEDURE
     DESC = eNodeB initiates a random access procedure after detecting enough energy for one of the preambles
     GROUP = ALL:PHY:ENB
-    FORMAT = int,eNB_ID : int,frame : int,subframe : int,UE_id : int,preamble : int,energy : int,delay
+    FORMAT = int,eNB_ID : int,frame : int,subframe : int,preamble : int,energy : int,delay
 
 #MAC logs
 ID = ENB_MAC_UE_DL_SDU
@@ -834,27 +834,27 @@ ID = UE_PHY_DL_TICK
 ID = UE_PHY_DLSCH_UE_DCI
     DESC = UE downlink UE specific DCI as sent by the PHY layer
     GROUP = ALL:PHY:GRAPHIC:UE
-    FORMAT = int,eNB_ID : int,frame : int,subframe : int,UE_id : int,rnti : int,dci_format : int,harq_pid : int,mcs : int,TBS
+    FORMAT = int,eNB_ID : int,frame : int,subframe : int,rnti : int,dci_format : int,harq_pid : int,mcs : int,TBS
 ID = UE_PHY_DLSCH_UE_ACK
     DESC = UE downlink UE ACK as seen by the PHY layer in process_HARQ_feedback
     GROUP = ALL:PHY:GRAPHIC:UE
-    FORMAT = int,eNB_ID : int,frame : int,subframe : int,UE_id : int,rnti : int,harq_pid
+    FORMAT = int,eNB_ID : int,frame : int,subframe : int,rnti : int,harq_pid
 ID = UE_PHY_DLSCH_UE_NACK
     DESC = UE downlink UE NACK as seen by the PHY layer in process_HARQ_feedback
     GROUP = ALL:PHY:GRAPHIC:UE
-    FORMAT = int,eNB_ID : int,frame : int,subframe : int,UE_id : int,rnti : int,harq_pid
+    FORMAT = int,eNB_ID : int,frame : int,subframe : int,rnti : int,harq_pid
 ID = UE_PHY_ULSCH_UE_DCI
     DESC = UE uplink UE specific DCI as sent by the PHY layer
     GROUP = ALL:PHY:GRAPHIC:UE
-    FORMAT = int,eNB_ID : int,frame : int,subframe : int,UE_id : int,rnti : int,harq_pid : int,mcs : int,round : int,first_rb : int,nb_rb : int,TBS
+    FORMAT = int,eNB_ID : int,frame : int,subframe : int,rnti : int,harq_pid : int,mcs : int,round : int,first_rb : int,nb_rb : int,TBS
 ID = UE_PHY_ULSCH_UE_ACK
     DESC = UE uplink UE ACK as seen by the PHY layer
     GROUP = ALL:PHY:GRAPHIC:UE
-    FORMAT = int,eNB_ID : int,frame : int,subframe : int,UE_id : int,rnti : int,harq_pid
+    FORMAT = int,eNB_ID : int,frame : int,subframe : int,rnti : int,harq_pid
 ID = UE_PHY_ULSCH_UE_NACK
     DESC = UE uplink UE NACK as seen by the PHY layer
     GROUP = ALL:PHY:GRAPHIC:UE
-    FORMAT = int,eNB_ID : int,frame : int,subframe : int,UE_id : int,rnti : int,harq_pid
+    FORMAT = int,eNB_ID : int,frame : int,subframe : int,rnti : int,harq_pid
 ID = UE_PHY_INPUT_SIGNAL
     DESC = UE received signal in the time domain for a duration of 1ms
     GROUP = ALL:PHY:GRAPHIC:HEAVY:UE
@@ -862,7 +862,7 @@ ID = UE_PHY_INPUT_SIGNAL
 ID = UE_PHY_DL_CHANNEL_ESTIMATE
     DESC = UE channel estimation in the time domain
     GROUP = ALL:PHY:GRAPHIC:HEAVY:UE
-    FORMAT = int,eNB_ID : int,UE_ID : int,frame : int,subframe : int,antenna : buffer,chest_t
+    FORMAT = int,eNB_ID : int,frame : int,subframe : int,antenna : buffer,chest_t
 ID = UE_PHY_PDCCH_IQ
     DESC = UE PDCCH received IQ data
     GROUP = ALL:PHY:GRAPHIC:HEAVY:UE
@@ -870,27 +870,27 @@ ID = UE_PHY_PDCCH_IQ
 ID = UE_PHY_PDCCH_ENERGY
     DESC = UE PDSCH 1 energy and threshold
     GROUP = ALL:PHY:GRAPHIC:HEAVY:UE
-    FORMAT = int,eNB_ID : int,UE_ID : int,frame : int,subframe : int,pdcch_ch_level00 : int,pdcch_ch_level01 : int,pdcch_ch_level10: int,pdcch_ch_level11
+    FORMAT = int,eNB_ID : int,frame : int,subframe : int,pdcch_ch_level00 : int,pdcch_ch_level01 : int,pdcch_ch_level10: int,pdcch_ch_level11
 ID = UE_PHY_PDSCH_IQ
     DESC = UE PDSCH received IQ data
     GROUP = ALL:PHY:GRAPHIC:HEAVY:UE
-    FORMAT = int,eNB_ID : int,UE_ID : int,frame : int,subframe : int,nb_rb : int,N_RB_UL : int,symbols_per_tti : buffer,pusch_comp
+    FORMAT = int,eNB_ID : int,frame : int,subframe : int,nb_rb : int,N_RB_UL : int,symbols_per_tti : buffer,pusch_comp
 ID = UE_PHY_PDSCH_ENERGY
     DESC = UE PDSCH 1 energy and threshold
     GROUP = ALL:PHY:GRAPHIC:HEAVY:UE
-    FORMAT = int,eNB_ID : int,UE_ID : int,frame : int,subframe : int,pdsch_ch_level00 : int,pdsch_ch_level01 : int,pdsch_ch_level10: int,pdsch_ch_level11
+    FORMAT = int,eNB_ID : int,frame : int,subframe : int,pdsch_ch_level00 : int,pdsch_ch_level01 : int,pdsch_ch_level10: int,pdsch_ch_level11
 ID = UE_PHY_PUSCH_TX_POWER
     DESC = UE PUSCH  tx power
     GROUP = ALL:PHY:GRAPHIC:HEAVY:UE
-    FORMAT = int,eNB_ID : int,UE_id : int,frame : int,subframe : int,p0_pusch : int,ampl: int,g_pusch: int,pl: int,nb_rb
+    FORMAT = int,eNB_ID : int,frame : int,subframe : int,p0_pusch : int,ampl: int,g_pusch: int,pl: int,nb_rb
 ID = UE_PHY_PUCCH_TX_POWER
     DESC = UE PDSCH 1 energy and threshold
     GROUP = ALL:PHY:GRAPHIC:HEAVY:UE
-    FORMAT = int,eNB_ID : int,UE_id : int,frame : int,subframe : int,p0_pucch : int,ampl: int,g_pucch: int,pl
+    FORMAT = int,eNB_ID : int,frame : int,subframe : int,p0_pucch : int,ampl: int,g_pucch: int,pl
 ID = UE_PHY_MEAS
     DESC = UE PHY measurements
     GROUP = ALL:PHY:GRAPHIC:HEAVY:UE
-    FORMAT = int,eNB_ID : int,UE_ID : int,frame : int,subframe : int,rsrp : int,rssi : int,snr: int,rx_power: int,noise_power: int,w_cqi: int,freq_offset
+    FORMAT = int,eNB_ID : int,frame : int,subframe : int,rsrp : int,rssi : int,snr: int,rx_power: int,noise_power: int,w_cqi: int,freq_offset
 
 #for debug/test - not used
 ID = first
diff --git a/common/utils/T/tracer/enb.c b/common/utils/T/tracer/enb.c
index 27d8630fd8d53f8f84f3235fee5cebe36a2c3dc2..74bea1e675b8defd7ce88f1d90ba74a3cbe02ac0 100644
--- a/common/utils/T/tracer/enb.c
+++ b/common/utils/T/tracer/enb.c
@@ -17,6 +17,40 @@
 #include "openair_logo.h"
 #include "config.h"
 
+/****************************************************************************/
+/* conversion from rnti to "ue_id" (which does not really exists)           */
+/* the idea is to assign an ue_id to an rnti as soon as we get an event     */
+/* for the rnti                                                             */
+/****************************************************************************/
+
+int ue_id[65536];
+int next_ue_id;
+
+void reset_ue_ids(void)
+{
+  int i;
+  printf("resetting known UEs\n");
+  for (i = 0; i < 65536; i++) ue_id[i] = -1;
+  next_ue_id = 0;
+}
+
+int ue_id_from_rnti(void *_priv, int rnti)
+{
+rnti = 0; /* HACK, to be removed */
+  if (rnti < 0 || rnti > 65535) { printf("bad rnti %d\n", rnti); exit(1); }
+  /* rnti not seen yet? give it a new ue_id */
+  if (ue_id[rnti] == -1) {
+    ue_id[rnti] = next_ue_id;
+    next_ue_id++;
+  }
+  return ue_id[rnti];
+}
+
+/****************************************************************************/
+/* end of rnti->ue_id conversion                                            */
+/****************************************************************************/
+
+
 typedef struct {
   view *phyview;
   view *macview;
@@ -25,6 +59,7 @@ typedef struct {
   view *rrcview;
   view *legacy;
   widget *current_ue_label;
+  widget *current_ue_button;
   widget *prev_ue_button;
   widget *next_ue_button;
   widget *pusch_iq_ue_xy_plot;
@@ -116,11 +151,15 @@ static void *gui_thread(void *_g)
 static filter *ticktime_filter(void *database, char *event, int i, int ue)
 {
   /* filter is "harq_pid == i && UE_id == 0 && eNB_id == 0" */
+  /* we get the UE_id from the rnti */
   return
     filter_and(
       filter_eq(filter_evarg(database, event, "harq_pid"), filter_int(i)),
       filter_and(
-        filter_eq(filter_evarg(database, event, "UE_id"), filter_int(ue)),
+        filter_eq(
+          filter_evfun(database, ue_id_from_rnti, NULL,
+            filter_evarg(database, event, "rnti")),
+          filter_int(ue)),
         filter_eq(filter_evarg(database, event, "eNB_ID"), filter_int(0))));
 }
 
@@ -148,23 +187,28 @@ static void set_current_ue(gui *g, enb_data *e, int ue)
 
   logger_set_filter(e->e->pusch_iq_ue_logger,
       filter_eq(
-        filter_evarg(e->database, "ENB_PHY_PUSCH_IQ", "UE_ID"),
+        filter_evfun(e->database, ue_id_from_rnti, NULL,
+          filter_evarg(e->database, "ENB_PHY_PUSCH_IQ", "rnti")),
         filter_int(ue)));
   logger_set_filter(e->e->ul_estimate_ue_logger,
       filter_eq(
-        filter_evarg(e->database, "ENB_PHY_UL_CHANNEL_ESTIMATE", "UE_ID"),
+        filter_evfun(e->database, ue_id_from_rnti, NULL,
+          filter_evarg(e->database, "ENB_PHY_UL_CHANNEL_ESTIMATE", "rnti")),
         filter_int(ue)));
   logger_set_filter(e->e->pucch1_energy_ue_threshold_logger,
       filter_eq(
-        filter_evarg(e->database, "ENB_PHY_PUCCH_1_ENERGY", "UE_ID"),
+        filter_evfun(e->database, ue_id_from_rnti, NULL,
+          filter_evarg(e->database, "ENB_PHY_PUCCH_1_ENERGY", "rnti")),
         filter_int(ue)));
   logger_set_filter(e->e->pucch1_energy_ue_energy_logger,
       filter_eq(
-        filter_evarg(e->database, "ENB_PHY_PUCCH_1_ENERGY", "UE_ID"),
+        filter_evfun(e->database, ue_id_from_rnti, NULL,
+          filter_evarg(e->database, "ENB_PHY_PUCCH_1_ENERGY", "rnti")),
         filter_int(ue)));
   logger_set_filter(e->e->pucch_iq_ue_logger,
       filter_eq(
-        filter_evarg(e->database, "ENB_PHY_PUCCH_1AB_IQ", "UE_ID"),
+        filter_evfun(e->database, ue_id_from_rnti, NULL,
+          filter_evarg(e->database, "ENB_PHY_PUCCH_1AB_IQ", "rnti")),
         filter_int(ue)));
   for (i = 0; i < 8; i++) {
     logger_set_filter(e->e->dl_dci_logger[i],
@@ -185,11 +229,13 @@ static void set_current_ue(gui *g, enb_data *e, int ue)
   }
   logger_set_filter(e->e->dl_mcs_logger,
       filter_eq(
-        filter_evarg(e->database, "ENB_PHY_DLSCH_UE_DCI", "UE_id"),
+        filter_evfun(e->database, ue_id_from_rnti, NULL,
+          filter_evarg(e->database, "ENB_PHY_DLSCH_UE_DCI", "rnti")),
         filter_int(ue)));
   logger_set_filter(e->e->ul_mcs_logger,
       filter_eq(
-        filter_evarg(e->database, "ENB_PHY_ULSCH_UE_DCI", "UE_id"),
+        filter_evfun(e->database, ue_id_from_rnti, NULL,
+          filter_evarg(e->database, "ENB_PHY_ULSCH_UE_DCI", "rnti")),
         filter_int(ue)));
 }
 
@@ -205,6 +251,7 @@ static void click(void *private, gui *g,
   if (button != 1) return;
   if (w == e->prev_ue_button) { ue--; if (ue < 0) ue = 0; }
   if (w == e->next_ue_button) ue++;
+  if (w == e->current_ue_button) reset_ue_ids();
 
   if (pthread_mutex_lock(&ed->lock)) abort();
   if (ue != ed->ue) {
@@ -248,10 +295,12 @@ static void enb_main_gui(enb_gui *e, gui *g, event_handler *h, void *database,
   widget_add_child(g, col, logo, -1);
   w = new_container(g, HORIZONTAL);
   widget_add_child(g, col, w, -1);
+  /* TODO: use button widget, not label widget */
   w2 = new_label(g, "");
   widget_add_child(g, w, w2, -1);
+  label_set_clickable(g, w2, 1);
+  e->current_ue_button = w2;
   e->current_ue_label = w2;
-  /* TODO: use button widget, not label widget */
   w2 = new_label(g, "  [prev UE]  ");
   widget_add_child(g, w, w2, -1);
   label_set_clickable(g, w2, 1);
@@ -590,6 +639,7 @@ static void enb_main_gui(enb_gui *e, gui *g, event_handler *h, void *database,
   e->legacy = new_view_textlist(10000, 10, g, text);
 
   set_current_ue(g, ed, 0);
+  register_notifier(g, "click", e->current_ue_button, click, ed);
   register_notifier(g, "click", e->prev_ue_button, click, ed);
   register_notifier(g, "click", e->next_ue_button, click, ed);
 }
@@ -628,6 +678,8 @@ int main(int n, char **v)
   enb_gui eg;
   enb_data enb_data;
 
+  reset_ue_ids();
+
   /* write on a socket fails if the other end is closed and we get SIGPIPE */
   if (signal(SIGPIPE, SIG_IGN) == SIG_ERR) abort();
 
diff --git a/common/utils/T/tracer/filter/filter.c b/common/utils/T/tracer/filter/filter.c
index d26dc2500058a091e9ce1ba49a0739f437db5b86..ddc9e3af3ea6a651ff159c6f206184145fc76ee4 100644
--- a/common/utils/T/tracer/filter/filter.c
+++ b/common/utils/T/tracer/filter/filter.c
@@ -10,6 +10,8 @@ struct filter {
     struct { struct filter *a, *b; } op2;
     int v;
     struct { int event_type; int arg_index; } evarg;
+    struct { int (*fun)(void *priv, int v); void *priv;
+             struct filter *x; } evfun;
   } v;
 
   int (*eval)(struct filter *this, event e);
@@ -52,6 +54,11 @@ int eval_evarg(struct filter *f, event e)
   return e.e[f->v.evarg.arg_index].i;
 }
 
+int eval_evfun(struct filter *f, event e)
+{
+  return f->v.evfun.fun(f->v.evfun.priv, f->v.evfun.x->eval(f->v.evfun.x, e));
+}
+
 /****************************************************************************/
 /*                     free memory functions                                */
 /****************************************************************************/
@@ -63,6 +70,12 @@ void free_op2(struct filter *f)
   free(f);
 }
 
+void free_evfun(struct filter *f)
+{
+  free_filter(f->v.evfun.x);
+  free(f);
+}
+
 void free_noop(struct filter *f)
 {
   free(f);
@@ -135,6 +148,19 @@ filter *filter_evarg(void *database, char *event_name, char *varname)
   return ret;
 }
 
+filter *filter_evfun(void *database, int (*fun)(void *priv, int v),
+    void *priv, filter *x)
+{
+  struct filter *ret = calloc(1, sizeof(struct filter));
+  if (ret == NULL) abort();
+  ret->eval = eval_evfun;
+  ret->free = free_evfun;
+  ret->v.evfun.fun  = fun;
+  ret->v.evfun.priv = priv;
+  ret->v.evfun.x    = x;
+  return ret;
+}
+
 void free_filter(filter *_f)
 {
   struct filter *f;
diff --git a/common/utils/T/tracer/filter/filter.h b/common/utils/T/tracer/filter/filter.h
index d45e0bdd86e8537a23dead4960c54c12e0d0b543..0e48fb6ca3f30680161224304ca2cc258bfaad40 100644
--- a/common/utils/T/tracer/filter/filter.h
+++ b/common/utils/T/tracer/filter/filter.h
@@ -9,6 +9,8 @@ filter *filter_and(filter *a, filter *b);
 filter *filter_eq(filter *a, filter *b);
 filter *filter_int(int v);
 filter *filter_evarg(void *database, char *event_name, char *varname);
+filter *filter_evfun(void *database, int (*fun)(void *priv, int v),
+    void *priv, filter *x);
 
 int filter_eval(filter *f, event e);
 
diff --git a/openair1/PHY/LTE_ESTIMATION/lte_dl_channel_estimation.c b/openair1/PHY/LTE_ESTIMATION/lte_dl_channel_estimation.c
index eea7e44fffca33281e9e3bbb4db61d598c7f25c8..8edb66ab4c66fc20722261e0f6748c0769566472 100644
--- a/openair1/PHY/LTE_ESTIMATION/lte_dl_channel_estimation.c
+++ b/openair1/PHY/LTE_ESTIMATION/lte_dl_channel_estimation.c
@@ -811,11 +811,10 @@ int lte_dl_channel_estimation(PHY_VARS_UE *ue,
               }
           }
   }
-#if T_TRACER
-        T(T_UE_PHY_DL_CHANNEL_ESTIMATE, T_INT(eNB_id), T_INT(ue->Mod_id),
-          T_INT(ue->proc.proc_rxtx[ue->current_thread_id[Ns>>1]].frame_rx%1024), T_INT(ue->proc.proc_rxtx[ue->current_thread_id[Ns>>1]].subframe_rx),
-          T_INT(0), T_BUFFER(&ue->common_vars.common_vars_rx_data_per_thread[ue->current_thread_id[Ns>>1]].dl_ch_estimates_time[eNB_offset][0][0], 512  * 4));
-#endif
+
+  T(T_UE_PHY_DL_CHANNEL_ESTIMATE, T_INT(eNB_id),
+    T_INT(ue->proc.proc_rxtx[ue->current_thread_id[Ns>>1]].frame_rx%1024), T_INT(ue->proc.proc_rxtx[ue->current_thread_id[Ns>>1]].subframe_rx),
+    T_INT(0), T_BUFFER(&ue->common_vars.common_vars_rx_data_per_thread[ue->current_thread_id[Ns>>1]].dl_ch_estimates_time[eNB_offset][0][0], 512  * 4));
 
   return(0);
 }
diff --git a/openair1/PHY/LTE_ESTIMATION/lte_ul_channel_estimation.c b/openair1/PHY/LTE_ESTIMATION/lte_ul_channel_estimation.c
index 17ddd9b5545f9f12707805e4b2d4b4f0f2eb99d8..77fbae1a76659feae5b7ae930b8587f01eb627de 100644
--- a/openair1/PHY/LTE_ESTIMATION/lte_ul_channel_estimation.c
+++ b/openair1/PHY/LTE_ESTIMATION/lte_ul_channel_estimation.c
@@ -302,7 +302,7 @@ int32_t temp_in_ifft_0[2048*2] __attribute__((aligned(32)));
 
 #if T_TRACER
       if (aa == 0)
-        T(T_ENB_PHY_UL_CHANNEL_ESTIMATE, T_INT(0), T_INT(UE_id),
+        T(T_ENB_PHY_UL_CHANNEL_ESTIMATE, T_INT(0), T_INT(-1 /* TODO: rnti */),
           T_INT(proc->frame_rx), T_INT(subframe),
           T_INT(0), T_BUFFER(ul_ch_estimates_time[0], 512  * 4));
 #endif
diff --git a/openair1/PHY/LTE_TRANSPORT/dci.c b/openair1/PHY/LTE_TRANSPORT/dci.c
index a4cfb9d9fc5f6f86282aaae384ea0329058aca3a..d720a0729897e367d6e70755895622d1ae551494 100755
--- a/openair1/PHY/LTE_TRANSPORT/dci.c
+++ b/openair1/PHY/LTE_TRANSPORT/dci.c
@@ -1765,10 +1765,8 @@ int32_t rx_pdcch(PHY_VARS_UE *ue,
   LOG_D(PHY,"subframe %d: pdcch log2_maxh = %d (%d,%d)\n",subframe,log2_maxh,avgP[0],avgs);
 #endif
 
-#if T_TRACER
-  T(T_UE_PHY_PDCCH_ENERGY, T_INT(eNB_id),  T_INT(0), T_INT(frame%1024), T_INT(subframe),
-                           T_INT(avgP[0]), T_INT(avgP[1]),    T_INT(avgP[2]),             T_INT(avgP[3]));
-#endif
+  T(T_UE_PHY_PDCCH_ENERGY, T_INT(eNB_id),  T_INT(frame%1024), T_INT(subframe),
+                           T_INT(avgP[0]), T_INT(avgP[1]),    T_INT(avgP[2]),  T_INT(avgP[3]));
 
   // compute LLRs for ofdm symbol 0 only
   pdcch_channel_compensation(pdcch_vars[eNB_id]->rxdataF_ext,
diff --git a/openair1/PHY/LTE_TRANSPORT/dci_tools.c b/openair1/PHY/LTE_TRANSPORT/dci_tools.c
index 75ce744247e727b5028c530c91b204f9aad2c7d3..53dcaad4089edb2cdb5b0713df6f1e196dc8f07e 100644
--- a/openair1/PHY/LTE_TRANSPORT/dci_tools.c
+++ b/openair1/PHY/LTE_TRANSPORT/dci_tools.c
@@ -881,7 +881,6 @@ void fill_dci_and_dlsch(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,DCI_ALLOC_t *dci
   dci_alloc->harq_pid = rel8->harq_process;
   dci_alloc->ra_flag  = 0;
 
-
   LOG_D(PHY,"NFAPI: DCI format %d, nCCE %d, L %d, rnti %x,harq_pid %d\n",
 	rel8->dci_format,rel8->cce_idx,rel8->aggregation_level,rel8->rnti,rel8->harq_process);
   if ((rel8->rnti_type == 2 ) && (rel8->rnti != SI_RNTI) && (rel8->rnti != P_RNTI)) dci_alloc->ra_flag = 1;
@@ -1987,6 +1986,13 @@ void fill_dci_and_dlsch(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,DCI_ALLOC_t *dci
     }
     
     
+#if T_TRACER
+  if (dlsch0 != NULL)
+    T(T_ENB_PHY_DLSCH_UE_DCI, T_INT(0), T_INT(proc->frame_tx), T_INT(proc->subframe_tx),
+      T_INT(rel8->rnti), T_INT(rel8->dci_format), T_INT(rel8->harq_process),
+      T_INT(rel8->mcs_1), T_INT(dlsch0_harq->TBS));
+#endif
+
 }
 
 void fill_mdci_and_dlsch(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,mDCI_ALLOC_t *dci_alloc,nfapi_dl_config_mpdcch_pdu *pdu) {
@@ -2230,8 +2236,8 @@ void fill_mdci_and_dlsch(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,mDCI_ALLOC_t *d
 }
 
 void fill_dci0(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,DCI_ALLOC_t *dci_alloc,
-	      nfapi_hi_dci0_dci_pdu *pdu) {
-
+               nfapi_hi_dci0_dci_pdu *pdu)
+{
   uint8_t UE_id;
 
   AssertFatal((UE_id=find_ulsch(pdu->dci_pdu_rel8.rnti,eNB,SEARCH_EXIST_OR_FREE))>=0,
@@ -2251,6 +2257,15 @@ void fill_dci0(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,DCI_ALLOC_t *dci_alloc,
 
   uint32_t ndi     = pdu->dci_pdu_rel8.new_data_indication_1;
 
+  T(T_ENB_PHY_ULSCH_UE_DCI, T_INT(eNB->Mod_id), T_INT(proc->frame_tx), T_INT(proc->subframe_tx),
+    T_INT(pdu->dci_pdu_rel8.rnti), T_INT(((proc->frame_tx*10+proc->subframe_tx+4) % 8) /* TODO: correct harq pid */),
+    T_INT(mcs), T_INT(-1 /* TODO: remove round? */),
+    T_INT(pdu->dci_pdu_rel8.resource_block_start),
+    T_INT(pdu->dci_pdu_rel8.number_of_resource_block),
+    T_INT(-1 /* TODO: get TBS */),
+    T_INT(pdu->dci_pdu_rel8.aggregation_level),
+    T_INT(pdu->dci_pdu_rel8.cce_index));
+
   void *dci_pdu = (void*)dci_alloc->dci_pdu;
 
   LOG_I(PHY,"Filling DCI0 with cqi %d, mcs %d, hopping %d, rballoc %x (%d,%d) ndi %d TPC %d cshift %d\n",cqi_req,
@@ -6198,16 +6213,16 @@ int generate_ue_dlsch_params_from_dci(int frame,
     }
 #endif
 
-  #if T_TRACER
+#if T_TRACER
     if( (dlsch[0]->rnti != si_rnti) && (dlsch[0]->rnti != ra_rnti) && (dlsch[0]->rnti != p_rnti))
     {
-    T(T_UE_PHY_DLSCH_UE_DCI, T_INT(0), T_INT(frame%1024), T_INT(subframe), T_INT(0),
-            T_INT(dlsch[0]->rnti), T_INT(dci_format),
-            T_INT(harq_pid),
-            T_INT(dlsch0_harq->mcs),
-            T_INT(dlsch0_harq->TBS));
+      T(T_UE_PHY_DLSCH_UE_DCI, T_INT(0), T_INT(frame%1024), T_INT(subframe),
+        T_INT(dlsch[0]->rnti), T_INT(dci_format),
+        T_INT(harq_pid),
+        T_INT(dlsch0_harq->mcs),
+        T_INT(dlsch0_harq->TBS));
     }
-  #endif
+#endif
 
 
     // compute DL power control parameters
diff --git a/openair1/PHY/LTE_TRANSPORT/dlsch_demodulation.c b/openair1/PHY/LTE_TRANSPORT/dlsch_demodulation.c
index 4949419447e1586c56e8fdc20197f57cbb1078b3..dfd2b2af5f32648c9704a489b2669fc3b74fcdca 100644
--- a/openair1/PHY/LTE_TRANSPORT/dlsch_demodulation.c
+++ b/openair1/PHY/LTE_TRANSPORT/dlsch_demodulation.c
@@ -535,8 +535,8 @@ int rx_pdsch(PHY_VARS_UE *ue,
 #if T_TRACER
     if (type == PDSCH)
     {
-      T(T_UE_PHY_PDSCH_ENERGY, T_INT(eNB_id),  T_INT(0), T_INT(frame%1024), T_INT(subframe),
-                               T_INT(avg[0]), T_INT(avg[1]),    T_INT(avg[2]),             T_INT(avg[3]));
+      T(T_UE_PHY_PDSCH_ENERGY, T_INT(eNB_id), T_INT(frame%1024), T_INT(subframe),
+                               T_INT(avg[0]), T_INT(avg[1]),     T_INT(avg[2]),   T_INT(avg[3]));
     }
 #endif
 
@@ -1232,15 +1232,13 @@ int rx_pdsch(PHY_VARS_UE *ue,
   }
 #endif
 
-#if T_TRACER
-  T(T_UE_PHY_PDSCH_IQ, T_INT(eNB_id), T_INT(ue->Mod_id), T_INT(frame%1024),
+  T(T_UE_PHY_PDSCH_IQ, T_INT(eNB_id), T_INT(frame%1024),
     T_INT(subframe), T_INT(nb_rb),
     T_INT(frame_parms->N_RB_UL), T_INT(frame_parms->symbols_per_tti),
     T_BUFFER(&pdsch_vars[eNB_id]->rxdataF_comp0[eNB_id][0],
              2 * /* ulsch[UE_id]->harq_processes[harq_pid]->nb_rb */ frame_parms->N_RB_UL *12*frame_parms->symbols_per_tti*2));
-#endif
-  return(0);
 
+  return 0;
 }
 
 //==============================================================================================
diff --git a/openair1/PHY/LTE_TRANSPORT/phich.c b/openair1/PHY/LTE_TRANSPORT/phich.c
index 48ba27956e8d3efdff052783dbf6fd4a390efd00..dd04a7d119ae9c9bc4cab88159ed4d46b969ec6e 100644
--- a/openair1/PHY/LTE_TRANSPORT/phich.c
+++ b/openair1/PHY/LTE_TRANSPORT/phich.c
@@ -1452,7 +1452,7 @@ void rx_phich(PHY_VARS_UE *ue,
       }
     }
 #if T_TRACER
-    T(T_UE_PHY_ULSCH_UE_NACK, T_INT(eNB_id), T_INT(proc->frame_rx%1024), T_INT(subframe), T_INT(ue->Mod_id), T_INT(ulsch->rnti),
+    T(T_UE_PHY_ULSCH_UE_NACK, T_INT(eNB_id), T_INT(proc->frame_rx%1024), T_INT(subframe), T_INT(ulsch->rnti),
       T_INT(harq_pid));
 #endif
 
@@ -1491,7 +1491,7 @@ void rx_phich(PHY_VARS_UE *ue,
     ue->ulsch_Msg3_active[eNB_id] = 0;
 
 #if T_TRACER
-    T(T_UE_PHY_ULSCH_UE_ACK, T_INT(eNB_id), T_INT(proc->frame_rx%1024), T_INT(subframe), T_INT(ue->Mod_id), T_INT(ulsch->rnti),
+    T(T_UE_PHY_ULSCH_UE_ACK, T_INT(eNB_id), T_INT(proc->frame_rx%1024), T_INT(subframe), T_INT(ulsch->rnti),
       T_INT(harq_pid));
 #endif
 
@@ -1552,7 +1552,7 @@ void generate_phich_top(PHY_VARS_eNB *eNB,
 	  phich->first_rb);
     
     T(T_ENB_PHY_PHICH, T_INT(eNB->Mod_id), T_INT(proc->frame_tx), T_INT(subframe),
-      T_INT(i), T_INT(0), T_INT(harq_pid),
+      T_INT(-1 /* TODO: rnti */), T_INT(harq_pid),
       T_INT(Ngroup_PHICH), T_INT(NSF_PHICH),
       T_INT(ngroup_PHICH), T_INT(nseq_PHICH),
       T_INT(phich->hi),
diff --git a/openair1/PHY/LTE_TRANSPORT/pucch.c b/openair1/PHY/LTE_TRANSPORT/pucch.c
index 8375a4f82491ecc8d8acc9771229bfa12ecd173d..9ac5a7dff9a90713777743bedfcb9d6ebda305f8 100644
--- a/openair1/PHY/LTE_TRANSPORT/pucch.c
+++ b/openair1/PHY/LTE_TRANSPORT/pucch.c
@@ -2154,7 +2154,7 @@ uint32_t rx_pucch(PHY_VARS_eNB *eNB,
     eNB->pucch1_stats_thres[UE_id][(subframe<<10)+eNB->pucch1_stats_cnt[UE_id][subframe]] = sigma2_dB+pucch1_thres;
     eNB->pucch1_stats_cnt[UE_id][subframe] = (eNB->pucch1_stats_cnt[UE_id][subframe]+1)&1023;
 
-    T(T_ENB_PHY_PUCCH_1_ENERGY, T_INT(eNB->Mod_id), T_INT(UE_id), T_INT(frame), T_INT(subframe),
+    T(T_ENB_PHY_PUCCH_1_ENERGY, T_INT(eNB->Mod_id), T_INT(-1 /* TODO: rnti */), T_INT(frame), T_INT(subframe),
       T_INT(stat_max), T_INT(sigma2_dB+pucch1_thres));
 
     /*
@@ -2399,7 +2399,7 @@ uint32_t rx_pucch(PHY_VARS_eNB *eNB,
       eNB->pucch1ab_stats_cnt[UE_id][subframe] = (eNB->pucch1ab_stats_cnt[UE_id][subframe]+1)&1023;
 
       /* frame not available here - set to -1 for the moment */
-      T(T_ENB_PHY_PUCCH_1AB_IQ, T_INT(eNB->Mod_id), T_INT(UE_id), T_INT(-1), T_INT(subframe), T_INT(stat_re), T_INT(stat_im));
+      T(T_ENB_PHY_PUCCH_1AB_IQ, T_INT(eNB->Mod_id), T_INT(-1 /* TODO: rnti */), T_INT(-1), T_INT(subframe), T_INT(stat_re), T_INT(stat_im));
 
 	  
       *payload = (stat_re<0) ? 1 : 2; // 1 == ACK, 2 == NAK
diff --git a/openair1/PHY/LTE_TRANSPORT/ulsch_demodulation.c b/openair1/PHY/LTE_TRANSPORT/ulsch_demodulation.c
index f31ef624cc70267b92b37459dc5376b0d0072860..3929c7dcd8a40aca5feecf7c9052a3fdaa5ae2c6 100644
--- a/openair1/PHY/LTE_TRANSPORT/ulsch_demodulation.c
+++ b/openair1/PHY/LTE_TRANSPORT/ulsch_demodulation.c
@@ -1266,7 +1266,7 @@ void rx_ulsch(PHY_VARS_eNB *eNB,
 
   llrp = (int16_t*)&pusch_vars->llr[0];
 
-  T(T_ENB_PHY_PUSCH_IQ, T_INT(0), T_INT(UE_id), T_INT(proc->frame_rx),
+  T(T_ENB_PHY_PUSCH_IQ, T_INT(0), T_INT(-1 /* TODO: rnti */), T_INT(proc->frame_rx),
     T_INT(subframe), T_INT(ulsch[UE_id]->harq_processes[harq_pid]->nb_rb),
     T_INT(frame_parms->N_RB_UL), T_INT(frame_parms->symbols_per_tti),
     T_BUFFER(pusch_vars->rxdataF_comp[0],
diff --git a/openair1/SCHED/phy_procedures_lte_eNb.c b/openair1/SCHED/phy_procedures_lte_eNb.c
index 8b2fb967bc66c81393abc40ca000e89d2f6dfa2c..92bbec96d7ba3e389a49dc513036987b8da27e45 100644
--- a/openair1/SCHED/phy_procedures_lte_eNb.c
+++ b/openair1/SCHED/phy_procedures_lte_eNb.c
@@ -409,8 +409,6 @@ void phy_procedures_eNB_TX(PHY_VARS_eNB *eNB,
   VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_ENB_TX+offset,1);
   if (do_meas==1) start_meas(&eNB->phy_proc_tx);
 
-  T(T_ENB_PHY_DL_TICK, T_INT(eNB->Mod_id), T_INT(frame), T_INT(subframe));
-
   // clear the transmit data array for the current subframe
   for (aa=0; aa<fp->nb_antenna_ports_eNB; aa++) {      
     memset(&eNB->common_vars.txdataF[aa][subframe*fp->ofdm_symbol_size*(fp->symbols_per_tti)],
@@ -678,7 +676,7 @@ void prach_procedures(PHY_VARS_eNB *eNB,
 	      max_preamble_energy[0]%10,
 	      max_preamble_delay[0]);
 	
-	    T(T_ENB_PHY_INITIATE_RA_PROCEDURE, T_INT(eNB->Mod_id), T_INT(frame), T_INT(subframe), T_INT(-1),
+	    T(T_ENB_PHY_INITIATE_RA_PROCEDURE, T_INT(eNB->Mod_id), T_INT(frame), T_INT(subframe),
 	      T_INT(max_preamble[0]), T_INT(max_preamble_energy[0]), T_INT(max_preamble_delay[0]));
 	    
 	    prach_vars = &eNB->prach_vars;
@@ -1384,7 +1382,7 @@ void pusch_procedures(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc) {
       }
       
       if (ret == (1+MAX_TURBO_ITERATIONS)) {
-        T(T_ENB_PHY_ULSCH_UE_NACK, T_INT(eNB->Mod_id), T_INT(frame), T_INT(subframe), T_INT(i), T_INT(ulsch->rnti),
+        T(T_ENB_PHY_ULSCH_UE_NACK, T_INT(eNB->Mod_id), T_INT(frame), T_INT(subframe), T_INT(ulsch->rnti),
           T_INT(harq_pid));
 
 	fill_crc_indication(eNB,i,frame,subframe,1); // indicate NAK to MAC
@@ -1419,7 +1417,7 @@ void pusch_procedures(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc) {
 
 	fill_crc_indication(eNB,i,frame,subframe,0); // indicate ACK to MAC
 	fill_rx_indication(eNB,i,frame,subframe);  // indicate SDU to MAC
-        T(T_ENB_PHY_ULSCH_UE_ACK, T_INT(eNB->Mod_id), T_INT(frame), T_INT(subframe), T_INT(i), T_INT(ulsch->rnti),
+        T(T_ENB_PHY_ULSCH_UE_ACK, T_INT(eNB->Mod_id), T_INT(frame), T_INT(subframe), T_INT(ulsch->rnti),
           T_INT(harq_pid));
 	ulsch_harq->status = SCH_IDLE;
 
@@ -1764,6 +1762,15 @@ void fill_uci_harq_indication(PHY_VARS_eNB *eNB,LTE_eNB_UCI *uci,int frame,int s
       pdu->harq_indication_fdd_rel13.harq_tb_n[0] = harq_ack[0];
       // release DLSCH if needed
       if (harq_ack[0] == 1) release_harq(eNB,UE_id,0,frame,subframe,0xffff);
+
+#if T_TRACER
+      if (harq_ack[0] != 1)
+        T(T_ENB_PHY_DLSCH_UE_NACK, T_INT(0), T_INT(frame), T_INT(subframe),
+          T_INT(uci->rnti), T_INT(eNB->dlsch[UE_id][0]->harq_ids[(subframe+6)%10]));
+      else
+        T(T_ENB_PHY_DLSCH_UE_ACK, T_INT(0), T_INT(frame), T_INT(subframe),
+          T_INT(uci->rnti), T_INT(eNB->dlsch[UE_id][0]->harq_ids[(subframe+6)%10]));
+#endif
     }
     else if (uci->pucch_fmt == pucch_format1b) {
       pdu->harq_indication_fdd_rel13.mode = 0;  
diff --git a/openair1/SCHED/phy_procedures_lte_ue.c b/openair1/SCHED/phy_procedures_lte_ue.c
index 64ba2a1b9885393f5c1b259f1a6773f903135d78..ff2287fb1b59a3048f18d3f61e406e933dc57822 100644
--- a/openair1/SCHED/phy_procedures_lte_ue.c
+++ b/openair1/SCHED/phy_procedures_lte_ue.c
@@ -1675,13 +1675,13 @@ void ue_ulsch_uespec_procedures(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB
     if(ue->ulsch[eNB_id]->o_ACK[0])
     {
     	LOG_I(PHY,"PUSCH ACK\n");
-        T(T_UE_PHY_DLSCH_UE_ACK, T_INT(eNB_id), T_INT(frame_tx%1024), T_INT(subframe_tx), T_INT(Mod_id), T_INT(ue->dlsch[ue->current_thread_id[proc->subframe_rx]][eNB_id][0]->rnti),
+        T(T_UE_PHY_DLSCH_UE_ACK, T_INT(eNB_id), T_INT(frame_tx%1024), T_INT(subframe_tx), T_INT(ue->dlsch[ue->current_thread_id[proc->subframe_rx]][eNB_id][0]->rnti),
                       T_INT(ue->dlsch[ue->current_thread_id[proc->subframe_rx]][eNB_id][0]->current_harq_pid));
     }
     else
     {
     	LOG_I(PHY,"PUSCH NACK\n");
-        T(T_UE_PHY_DLSCH_UE_NACK, T_INT(eNB_id), T_INT(frame_tx%1024), T_INT(subframe_tx), T_INT(Mod_id), T_INT(ue->dlsch[ue->current_thread_id[proc->subframe_rx]][eNB_id][0]->rnti),
+        T(T_UE_PHY_DLSCH_UE_NACK, T_INT(eNB_id), T_INT(frame_tx%1024), T_INT(subframe_tx), T_INT(ue->dlsch[ue->current_thread_id[proc->subframe_rx]][eNB_id][0]->rnti),
                       T_INT(ue->dlsch[ue->current_thread_id[proc->subframe_rx]][eNB_id][0]->current_harq_pid));
     }
 #endif
@@ -1862,10 +1862,9 @@ void ue_ulsch_uespec_procedures(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB
 #else
     tx_amp = AMP;
 #endif
-#if T_TRACER
-    T(T_UE_PHY_PUSCH_TX_POWER, T_INT(eNB_id),T_INT(Mod_id), T_INT(frame_tx%1024), T_INT(subframe_tx),T_INT(ue->tx_power_dBm[subframe_tx]),
+
+    T(T_UE_PHY_PUSCH_TX_POWER, T_INT(eNB_id), T_INT(frame_tx%1024), T_INT(subframe_tx),T_INT(ue->tx_power_dBm[subframe_tx]),
       T_INT(tx_amp),T_INT(ue->ulsch[eNB_id]->f_pusch),T_INT(get_PL(Mod_id,0,eNB_id)),T_INT(nb_rb));
-#endif
 
 #ifdef UE_DEBUG_TRACE
     LOG_I(PHY,"[UE  %d][PUSCH %d] AbsSubFrame %d.%d, generating PUSCH, Po_PUSCH: %d dBm (max %d dBm), amp %d\n",
@@ -2223,7 +2222,7 @@ void ue_pucch_procedures(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB_id,uin
       tx_amp = AMP;
 #endif
 #if T_TRACER
-      T(T_UE_PHY_PUCCH_TX_POWER, T_INT(eNB_id),T_INT(Mod_id), T_INT(frame_tx%1024), T_INT(subframe_tx),T_INT(ue->tx_power_dBm[subframe_tx]),
+      T(T_UE_PHY_PUCCH_TX_POWER, T_INT(eNB_id), T_INT(frame_tx%1024), T_INT(subframe_tx),T_INT(ue->tx_power_dBm[subframe_tx]),
               T_INT(tx_amp),T_INT(ue->dlsch[ue->current_thread_id[proc->subframe_rx]][eNB_id][0]->g_pucch),T_INT(get_PL(ue->Mod_id,ue->CC_id,eNB_id)));
 #endif
 
@@ -2273,12 +2272,12 @@ void ue_pucch_procedures(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB_id,uin
 #if T_TRACER
       if(pucch_payload[0])
       {
-          T(T_UE_PHY_DLSCH_UE_ACK, T_INT(eNB_id), T_INT(frame_tx%1024), T_INT(subframe_tx), T_INT(Mod_id), T_INT(ue->dlsch[ue->current_thread_id[proc->subframe_rx]][eNB_id][0]->rnti),
+          T(T_UE_PHY_DLSCH_UE_ACK, T_INT(eNB_id), T_INT(frame_tx%1024), T_INT(subframe_tx), T_INT(ue->dlsch[ue->current_thread_id[proc->subframe_rx]][eNB_id][0]->rnti),
                   T_INT(ue->dlsch[ue->current_thread_id[proc->subframe_rx]][eNB_id][0]->current_harq_pid));
       }
       else
       {
-          T(T_UE_PHY_DLSCH_UE_NACK, T_INT(eNB_id), T_INT(frame_tx%1024), T_INT(subframe_tx), T_INT(Mod_id), T_INT(ue->dlsch[ue->current_thread_id[proc->subframe_rx]][eNB_id][0]->rnti),
+          T(T_UE_PHY_DLSCH_UE_NACK, T_INT(eNB_id), T_INT(frame_tx%1024), T_INT(subframe_tx), T_INT(ue->dlsch[ue->current_thread_id[proc->subframe_rx]][eNB_id][0]->rnti),
                   T_INT(ue->dlsch[ue->current_thread_id[proc->subframe_rx]][eNB_id][0]->current_harq_pid));
       }
 #endif
@@ -2318,7 +2317,7 @@ void ue_pucch_procedures(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB_id,uin
       tx_amp = AMP;
 #endif
 #if T_TRACER
-      T(T_UE_PHY_PUCCH_TX_POWER, T_INT(eNB_id),T_INT(Mod_id), T_INT(frame_tx%1024), T_INT(subframe_tx),T_INT(ue->tx_power_dBm[subframe_tx]),
+      T(T_UE_PHY_PUCCH_TX_POWER, T_INT(eNB_id), T_INT(frame_tx%1024), T_INT(subframe_tx),T_INT(ue->tx_power_dBm[subframe_tx]),
               T_INT(tx_amp),T_INT(ue->dlsch[ue->current_thread_id[proc->subframe_rx]][eNB_id][0]->g_pucch),T_INT(get_PL(ue->Mod_id,ue->CC_id,eNB_id)));
 #endif
 #ifdef UE_DEBUG_TRACE
@@ -2538,7 +2537,7 @@ void ue_measurement_procedures(
       
 #if T_TRACER
       if(slot == 0)
-	T(T_UE_PHY_MEAS, T_INT(eNB_id),  T_INT(ue->Mod_id), T_INT(proc->frame_rx%1024), T_INT(proc->subframe_rx),
+	T(T_UE_PHY_MEAS, T_INT(eNB_id), T_INT(proc->frame_rx%1024), T_INT(proc->subframe_rx),
 	  T_INT((int)(10*log10(ue->measurements.rsrp[0])-ue->rx_total_gain_dB)),
 	  T_INT((int)ue->measurements.rx_rssi_dBm[0]),
 	  T_INT((int)(ue->measurements.rx_power_avg_dB[0] - ue->measurements.n0_power_avg_dB)),
@@ -3073,7 +3072,7 @@ int ue_pdcch_procedures(uint8_t eNB_id,PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint
                                  pdcch_alloc2ul_frame(frame_parms,proc->frame_rx,proc->subframe_rx),
                                  pdcch_alloc2ul_subframe(frame_parms,proc->subframe_rx));
 
-    T(T_UE_PHY_ULSCH_UE_DCI, T_INT(eNB_id), T_INT(proc->frame_rx%1024), T_INT(proc->subframe_rx), T_INT(ue->Mod_id),
+    T(T_UE_PHY_ULSCH_UE_DCI, T_INT(eNB_id), T_INT(proc->frame_rx%1024), T_INT(proc->subframe_rx),
       T_INT(dci_alloc_rx[i].rnti), T_INT(harq_pid),
       T_INT(ue->ulsch[eNB_id]->harq_processes[harq_pid]->mcs),
       T_INT(ue->ulsch[eNB_id]->harq_processes[harq_pid]->round),
diff --git a/openair2/LAYER2/MAC/eNB_scheduler_ulsch.c b/openair2/LAYER2/MAC/eNB_scheduler_ulsch.c
index 10cbce6d19c621cda1758980a10b6bd5230519e0..fafcd574886ba3afa60bf5e0620658f5ef22a26c 100644
--- a/openair2/LAYER2/MAC/eNB_scheduler_ulsch.c
+++ b/openair2/LAYER2/MAC/eNB_scheduler_ulsch.c
@@ -1057,7 +1057,7 @@ abort();
             	    
             T(T_ENB_MAC_UE_UL_SCHEDULE, T_INT(module_idP), T_INT(CC_id), T_INT(rnti), T_INT(frameP),
               T_INT(subframeP), T_INT(harq_pid), T_INT(UE_template->mcs_UL[harq_pid]), T_INT(first_rb[CC_id]), T_INT(rb_table[rb_table_index]),
-              T_INT(TBS), T_INT(ndi));
+              T_INT(UE_template->TBS_UL[harq_pid]), T_INT(ndi));
 	    
 	    if (mac_eNB_get_rrc_status(module_idP,rnti) < RRC_CONNECTED)
 	      LOG_I(MAC,"[eNB %d][PUSCH %d/%x] CC_id %d Frame %d subframeP %d Scheduled UE %d (mcs %d, first rb %d, nb_rb %d, rb_table_index %d, TBS %d, harq_pid %d)\n",
diff --git a/targets/RT/USER/lte-enb.c b/targets/RT/USER/lte-enb.c
index 0673c87be1132d2769628a4942bbe59cf6b761a9..8e476e06b7075aeba59f9dbee11e5b589d51de61 100644
--- a/targets/RT/USER/lte-enb.c
+++ b/targets/RT/USER/lte-enb.c
@@ -158,6 +158,8 @@ static inline int rxtx(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc, char *thread_nam
   // ****************************************
   // Common RX procedures subframe n
 
+  T(T_ENB_PHY_DL_TICK, T_INT(eNB->Mod_id), T_INT(proc->frame_tx), T_INT(proc->subframe_tx));
+
   // if this is IF5 or 3GPP_eNB
   if (eNB->RU_list[0]->function < NGFI_RAU_IF4p5) {
     wakeup_prach_eNB(eNB,NULL,proc->frame_rx,proc->subframe_rx);
@@ -267,25 +269,17 @@ static void wait_system_ready (char *message, volatile int *start_flag) {
 
 
 
-void eNB_top(PHY_VARS_eNB *eNB, int frame_rx, int subframe_rx, char *string) {
-
-
+void eNB_top(PHY_VARS_eNB *eNB, int frame_rx, int subframe_rx, char *string)
+{
   eNB_proc_t *proc           = &eNB->proc;
   eNB_rxtx_proc_t *proc_rxtx = &proc->proc_rxtx[0];
 
-
-
-
   proc->frame_rx    = frame_rx;
   proc->subframe_rx = subframe_rx;
-  
-  if (!oai_exit) {
-
 
+  if (!oai_exit) {
     LOG_D(PHY,"eNB_top in %p (proc %p, CC_id %d), frame %d, subframe %d, instance_cnt_prach %d\n",
 	  (void*)pthread_self(), proc, eNB->CC_id, proc->frame_rx,proc->subframe_rx,proc->instance_cnt_prach);
- 
-
 
     T(T_ENB_MASTER_TICK, T_INT(0), T_INT(proc->frame_rx), T_INT(proc->subframe_rx));
 
@@ -300,7 +294,6 @@ void eNB_top(PHY_VARS_eNB *eNB, int frame_rx, int subframe_rx, char *string) {
     LOG_D(PHY,"eNB_top out %p (proc %p, CC_id %d), frame %d, subframe %d, instance_cnt_prach %d\n",
 	  (void*)pthread_self(), proc, eNB->CC_id, proc->frame_rx,proc->subframe_rx,proc->instance_cnt_prach);
   }
-  
 }
 
 
diff --git a/targets/RT/USER/lte-ru.c b/targets/RT/USER/lte-ru.c
index 5007ffeedd5ed3e6517f345652722e4479acbba8..06d404f21ba2953c08112efe6c778c000f27e30f 100644
--- a/targets/RT/USER/lte-ru.c
+++ b/targets/RT/USER/lte-ru.c
@@ -1435,8 +1435,6 @@ static void* ru_thread( void* param ) {
     if (ru->feprx) ru->feprx(ru);
     if (ru->idx == 0) VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME( VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_RU_FEPRX, 0 ); 
 
-    T(T_ENB_MASTER_TICK, T_INT(0), T_INT(proc->frame_rx), T_INT(proc->subframe_rx));
-
     // At this point, all information for subframe has been received on FH interface
     // If this proc is to provide synchronization, do so
     wakeup_slaves(proc);