diff --git a/openair1/PHY/LTE_ESTIMATION/lte_adjust_sync_eNB.c b/openair1/PHY/LTE_ESTIMATION/lte_adjust_sync_eNB.c
index 8d66b7d53535e37c90a23ba11f5dc4e947595bde..aac8e71828d4499de5e686adfd70292e303fd48a 100644
--- a/openair1/PHY/LTE_ESTIMATION/lte_adjust_sync_eNB.c
+++ b/openair1/PHY/LTE_ESTIMATION/lte_adjust_sync_eNB.c
@@ -121,8 +121,8 @@ int lte_est_timing_advance_pusch(LTE_DL_FRAME_PARMS *frame_parms,
   int sync_pos = 0;//(frame_parms->ofdm_symbol_size-cyclic_shift*frame_parms->ofdm_symbol_size/12)%(frame_parms->ofdm_symbol_size);
   
   AssertFatal(frame_parms->ofdm_symbol_size > 127,"frame_parms->ofdm_symbol_size %d<128\n",frame_parms->ofdm_symbol_size);
-  AssertFatal(frame_parms->nb_antennas_rx >0 && frame_parms->nb_antennas_rx<=NB_ANTENNAS_RX,"frame_parms->nb_antennas_rx %d not in [1...%d]\n",
-	      frame_parms->nb_antennas_rx,NB_ANTENNAS_RX);
+  AssertFatal(frame_parms->nb_antennas_rx >0 && frame_parms->nb_antennas_rx<=4,"frame_parms->nb_antennas_rx %d not in [1...%d]\n",
+	      frame_parms->nb_antennas_rx,4);
   for (i = 0; i < frame_parms->ofdm_symbol_size; i++) {
     temp = 0;
 
diff --git a/openair1/PHY/LTE_ESTIMATION/lte_eNB_measurements.c b/openair1/PHY/LTE_ESTIMATION/lte_eNB_measurements.c
index 1518d42b31a5e331d35af338e5ec21bce8a971f5..7eeeb998bab51f083a207c7e679691b3bb418821 100644
--- a/openair1/PHY/LTE_ESTIMATION/lte_eNB_measurements.c
+++ b/openair1/PHY/LTE_ESTIMATION/lte_eNB_measurements.c
@@ -112,34 +112,33 @@ void lte_eNB_I0_measurements(PHY_VARS_eNB *eNB,
       for (aarx=0; aarx<frame_parms->nb_antennas_rx; aarx++) {
         measurements->n0_subband_power[aarx][rb] = 0;
         for (int s=0;s<(14-(frame_parms->Ncp<<1));s++) {
-      // select the 7th symbol in an uplink subframe
-	  offset = offset0 + (s*frame_parms->ofdm_symbol_size);
-	  ul_ch  = &common_vars->rxdataF[aarx][offset];
-	  len = 12;
+	        offset = offset0 + (s*frame_parms->ofdm_symbol_size);
+	        ul_ch  = &common_vars->rxdataF[aarx][offset];
+	        len = 12;
 	// just do first half of middle PRB for odd number of PRBs
-	  if (((frame_parms->N_RB_UL&1) == 1) && 
-	      (rb==(frame_parms->N_RB_UL>>1))) {
-	    len=6;
-	  }
+	        if (((frame_parms->N_RB_UL&1) == 1) && 
+	            (rb==(frame_parms->N_RB_UL>>1))) {
+	           len=6;
+	        }
 
-	  AssertFatal(ul_ch, "RX signal buffer (freq) problem");
+	        AssertFatal(ul_ch, "RX signal buffer (freq) problem");
 
 
-	  measurements->n0_subband_power[aarx][rb] += signal_energy_nodc(ul_ch,len);
+	        measurements->n0_subband_power[aarx][rb] += signal_energy_nodc(ul_ch,len);
 	  
-        }
+        } // symbol
         measurements->n0_subband_power[aarx][rb]/=(14-(frame_parms->Ncp<<1));
         measurements->n0_subband_power_dB[aarx][rb] = dB_fixed(measurements->n0_subband_power[aarx][rb]);
         n0_power_tot += measurements->n0_subband_power[aarx][rb];
 
-      }
+      } //antenna
       n0_power_tot/=frame_parms->nb_antennas_rx;
       n0_power_tot2 += n0_power_tot;
-      measurements->n0_subband_power_tot_dB[rb] = dB_fixed(n0_power_tot/frame_parms->nb_antennas_rx);
+      measurements->n0_subband_power_tot_dB[rb] = dB_fixed(n0_power_tot);
       measurements->n0_subband_power_tot_dBm[rb] = measurements->n0_subband_power_tot_dB[rb] - eNB->rx_total_gain_dB - dB_fixed(frame_parms->N_RB_UL);
       
-    }
-  }
+    } //rb not used in subframe
+  } //rb
   if (nb_rb>0) measurements->n0_subband_power_avg_dB = dB_fixed(n0_power_tot2/nb_rb);
 }
 
diff --git a/openair1/PHY/LTE_TRANSPORT/pucch.c b/openair1/PHY/LTE_TRANSPORT/pucch.c
index f2fa77ecadc8136e660ff480dc707a1a5e5ada9a..81f668488e2d4139d8dce2e296cdc9841283eca7 100644
--- a/openair1/PHY/LTE_TRANSPORT/pucch.c
+++ b/openair1/PHY/LTE_TRANSPORT/pucch.c
@@ -99,7 +99,7 @@ void dump_uci_stats(FILE *fd,PHY_VARS_eNB *eNB,int frame) {
 /* PUCCH format3 >> */
 /* SubCarrier Demap */
 uint16_t pucchfmt3_subCarrierDeMapping( PHY_VARS_eNB *eNB,
-                                        int16_t SubCarrierDeMapData[NB_ANTENNAS_RX][14][12][2],
+                                        int16_t SubCarrierDeMapData[4][14][12][2],
                                         uint16_t n3_pucch ) {
   LTE_eNB_COMMON *eNB_common_vars  = &eNB->common_vars;
   LTE_DL_FRAME_PARMS  *frame_parms = &eNB->frame_parms;
@@ -149,8 +149,8 @@ uint16_t pucchfmt3_subCarrierDeMapping( PHY_VARS_eNB *eNB,
 }
 
 /* cyclic shift hopping remove */
-uint16_t pucchfmt3_Baseseq_csh_remove( int16_t SubCarrierDeMapData[NB_ANTENNAS_RX][14][12][2],
-                                       int16_t CshData_fmt3[NB_ANTENNAS_RX][14][12][2],
+uint16_t pucchfmt3_Baseseq_csh_remove( int16_t SubCarrierDeMapData[4][14][12][2],
+                                       int16_t CshData_fmt3[4][14][12][2],
                                        LTE_DL_FRAME_PARMS *frame_parms,
                                        uint8_t subframe,
                                        uint8_t ncs_cell[20][7] ) {
@@ -200,9 +200,9 @@ const int16_t TBL_3_SF5_GEN_N_DASH_NS[MAXROW_TBL_SF5_OS_IDX] = {0,3,6,8,10};
 const int16_t TBL_3_SF4_GEN_N_DASH_NS[MAXROW_TBL_SF4_OS_IDX] = {0,3,6,9};
 
 /* Channel estimation */
-uint16_t pucchfmt3_ChannelEstimation( int16_t SubCarrierDeMapData[NB_ANTENNAS_RX][14][12][2],
-                                      double delta_theta[NB_ANTENNAS_RX][12],
-                                      int16_t ChestValue[NB_ANTENNAS_RX][2][12][2],
+uint16_t pucchfmt3_ChannelEstimation( int16_t SubCarrierDeMapData[4][14][12][2],
+                                      double delta_theta[4][12],
+                                      int16_t ChestValue[4][2][12][2],
                                       int16_t *Interpw,
                                       uint8_t subframe,
                                       uint8_t shortened_format,
@@ -214,12 +214,12 @@ uint16_t pucchfmt3_ChannelEstimation( int16_t SubCarrierDeMapData[NB_ANTENNAS_RX
   int16_t         np, np_n, ip_ind=-1;
   //int16_t         npucch_sf;
   int16_t         calctmp[2];
-  int16_t         BsCshData[NB_ANTENNAS_RX][D_NSYM1SF][D_NSC1RB][2];
-  //int16_t         delta_theta_calctmp[NB_ANTENNAS_RX][4][D_NSC1RB][2], delta_theta_comp[NB_ANTENNAS_RX][D_NSC1RB][2];
-  int16_t         delta_theta_comp[NB_ANTENNAS_RX][D_NSC1RB][2];
-  int16_t         CsData_allavg[NB_ANTENNAS_RX][14][2];
-  int16_t         CsData_temp[NB_ANTENNAS_RX][D_NSYM1SF][D_NSC1RB][2];
-  int32_t         IP_CsData_allsfavg[NB_ANTENNAS_RX][14][4][2];
+  int16_t         BsCshData[4][D_NSYM1SF][D_NSC1RB][2];
+  //int16_t         delta_theta_calctmp[4][4][D_NSC1RB][2], delta_theta_comp[4][D_NSC1RB][2];
+  int16_t         delta_theta_comp[4][D_NSC1RB][2];
+  int16_t         CsData_allavg[4][14][2];
+  int16_t         CsData_temp[4][D_NSYM1SF][D_NSC1RB][2];
+  int32_t         IP_CsData_allsfavg[4][14][4][2];
   int32_t         IP_allavg[D_NPUCCH_SF5];
   //int16_t         temp_ch[2];
   int16_t         m[NUMBER_OF_UE_MAX], m_self=0, same_m_number;
@@ -463,9 +463,9 @@ uint16_t pucchfmt3_ChannelEstimation( int16_t SubCarrierDeMapData[NB_ANTENNAS_RX
 }
 
 /* Channel Equalization */
-uint16_t pucchfmt3_Equalization( int16_t CshData_fmt3[NB_ANTENNAS_RX][14][12][2],
-                                 int16_t ChdetAfterValue_fmt3[NB_ANTENNAS_RX][14][12][2],
-                                 int16_t ChestValue[NB_ANTENNAS_RX][2][12][2],
+uint16_t pucchfmt3_Equalization( int16_t CshData_fmt3[4][14][12][2],
+                                 int16_t ChdetAfterValue_fmt3[4][14][12][2],
+                                 int16_t ChestValue[4][2][12][2],
                                  LTE_DL_FRAME_PARMS *frame_parms) {
   int16_t aa, sltNo, symNo, k;
 
@@ -488,9 +488,9 @@ uint16_t pucchfmt3_Equalization( int16_t CshData_fmt3[NB_ANTENNAS_RX][14][12][2]
 }
 
 /* Frequency deviation remove AFC */
-uint16_t pucchfmt3_FrqDevRemove( int16_t ChdetAfterValue_fmt3[NB_ANTENNAS_RX][14][12][2],
-                                 double delta_theta[NB_ANTENNAS_RX][12],
-                                 int16_t RemoveFrqDev_fmt3[NB_ANTENNAS_RX][2][5][12][2],
+uint16_t pucchfmt3_FrqDevRemove( int16_t ChdetAfterValue_fmt3[4][14][12][2],
+                                 double delta_theta[4][12],
+                                 int16_t RemoveFrqDev_fmt3[4][2][5][12][2],
                                  LTE_DL_FRAME_PARMS *frame_parms ) {
   int16_t aa, sltNo, symNo1slt, k, n;
   double calctmp[2];
@@ -540,8 +540,8 @@ const int16_t TBL_3_SF4[MAXROW_TBL_SF4_fmt3][MAXCLM_TBL_SF4][2] = {
 };
 
 /* orthogonal sequence remove */
-uint16_t pucchfmt3_OrthSeqRemove( int16_t RemoveFrqDev_fmt3[NB_ANTENNAS_RX][2][5][12][2],
-                                  int16_t Fmt3xDataRmvOrth[NB_ANTENNAS_RX][2][5][12][2],
+uint16_t pucchfmt3_OrthSeqRemove( int16_t RemoveFrqDev_fmt3[4][2][5][12][2],
+                                  int16_t Fmt3xDataRmvOrth[4][2][5][12][2],
                                   uint8_t shortened_format,
                                   uint16_t n3_pucch,
                                   LTE_DL_FRAME_PARMS *frame_parms ) {
@@ -587,7 +587,7 @@ uint16_t pucchfmt3_OrthSeqRemove( int16_t RemoveFrqDev_fmt3[NB_ANTENNAS_RX][2][5
 }
 
 /* averaging antenna */
-uint16_t pucchfmt3_AvgAnt( int16_t Fmt3xDataRmvOrth[NB_ANTENNAS_RX][2][5][12][2],
+uint16_t pucchfmt3_AvgAnt( int16_t Fmt3xDataRmvOrth[4][2][5][12][2],
                            int16_t Fmt3xDataAvgAnt[2][5][12][2],
                            uint8_t shortened_format,
                            LTE_DL_FRAME_PARMS *frame_parms ) {
@@ -775,7 +775,7 @@ uint32_t rx_pucch(PHY_VARS_eNB *eNB,
   uint32_t u,v,n,aa;
   uint32_t z[12*14];
   int16_t *zptr;
-  int16_t rxcomp[NB_ANTENNAS_RX][2*12*14];
+  int16_t rxcomp[4][2*12*14];
   uint8_t ns,N_UL_symb,nsymb,n_oc,n_oc0,n_oc1;
   uint8_t c = (frame_parms->Ncp==0) ? 3 : 2;
   int16_t nprime,nprime0,nprime1;
@@ -786,12 +786,12 @@ uint32_t rx_pucch(PHY_VARS_eNB *eNB,
   int16_t tmp_re,tmp_im,W_re=0,W_im=0;
   int16_t *rxptr;
   uint32_t symbol_offset;
-  int16_t stat0_ref_re[NB_ANTENNAS_RX],stat0_ref_im[NB_ANTENNAS_RX],stat1_ref_re[NB_ANTENNAS_RX],stat1_ref_im[NB_ANTENNAS_RX],*cfo;
-  int16_t chest0_re[NB_ANTENNAS_RX][12],chest0_im[NB_ANTENNAS_RX][12];
-  int16_t chest1_re[NB_ANTENNAS_RX][12],chest1_im[NB_ANTENNAS_RX][12];
+  int16_t stat0_ref_re[4],stat0_ref_im[4],stat1_ref_re[4],stat1_ref_im[4],*cfo;
+  int16_t chest0_re[4][12],chest0_im[4][12];
+  int16_t chest1_re[4][12],chest1_im[4][12];
   int32_t chest_mag;
-  int32_t stat0_re[NB_ANTENNAS_RX],stat1_re[NB_ANTENNAS_RX],stat0_im[NB_ANTENNAS_RX],stat1_im[NB_ANTENNAS_RX];
-  uint32_t stat0[NB_ANTENNAS_RX],stat1[NB_ANTENNAS_RX],stat_max=0,stat0_max[NB_ANTENNAS_RX],stat1_max[NB_ANTENNAS_RX];
+  int32_t stat0_re[4],stat1_re[4],stat0_im[4],stat1_im[4];
+  uint32_t stat0[4],stat1[4],stat_max=0,stat0_max[4],stat1_max[4]; 
   uint8_t log2_maxh;
   uint8_t deltaPUCCH_Shift          = frame_parms->pucch_config_common.deltaPUCCH_Shift;
   uint8_t NRB2                      = frame_parms->pucch_config_common.nRB_CQI;
@@ -803,13 +803,13 @@ uint32_t rx_pucch(PHY_VARS_eNB *eNB,
   int chL;
   /* PUCCH format3 >> */
   uint16_t Ret = 0;
-  int16_t SubCarrierDeMapData[NB_ANTENNAS_RX][14][12][2];       //[Antenna][Symbol][Subcarrier][Complex]
-  int16_t CshData_fmt3[NB_ANTENNAS_RX][14][12][2];              //[Antenna][Symbol][Subcarrier][Complex]
-  double delta_theta[NB_ANTENNAS_RX][12];                       //[Antenna][Subcarrier][Complex]
-  int16_t ChestValue[NB_ANTENNAS_RX][2][12][2];                 //[Antenna][Slot][Subcarrier][Complex]
-  int16_t ChdetAfterValue_fmt3[NB_ANTENNAS_RX][14][12][2];      //[Antenna][Symbol][Subcarrier][Complex]
-  int16_t RemoveFrqDev_fmt3[NB_ANTENNAS_RX][2][5][12][2];       //[Antenna][Slot][PUCCH_Symbol][Subcarrier][Complex]
-  int16_t Fmt3xDataRmvOrth[NB_ANTENNAS_RX][2][5][12][2];        //[Antenna][Slot][PUCCH_Symbol][Subcarrier][Complex]
+  int16_t SubCarrierDeMapData[4][14][12][2];       //[Antenna][Symbol][Subcarrier][Complex]
+  int16_t CshData_fmt3[4][14][12][2];              //[Antenna][Symbol][Subcarrier][Complex]
+  double delta_theta[4][12];                       //[Antenna][Subcarrier][Complex]
+  int16_t ChestValue[4][2][12][2];                 //[Antenna][Slot][Subcarrier][Complex]
+  int16_t ChdetAfterValue_fmt3[4][14][12][2];      //[Antenna][Symbol][Subcarrier][Complex]
+  int16_t RemoveFrqDev_fmt3[4][2][5][12][2];       //[Antenna][Slot][PUCCH_Symbol][Subcarrier][Complex]
+  int16_t Fmt3xDataRmvOrth[4][2][5][12][2];        //[Antenna][Slot][PUCCH_Symbol][Subcarrier][Complex]
   int16_t Fmt3xDataAvgAnt[2][5][12][2];                         //[Slot][PUCCH_Symbol][Subcarrier][Complex]
   int16_t Fmt3xDataAvgSym[2][12][2];                            //[Slot][Subcarrier][Complex]
   int16_t IFFTOutData_Fmt3[2][12][2];                           //[Slot][Subcarrier][Complex]
diff --git a/targets/ARCH/USRP/USERSPACE/LIB/usrp_lib.cpp b/targets/ARCH/USRP/USERSPACE/LIB/usrp_lib.cpp
index 12d67fa62496869d9215b645abae49617fb0f3d4..091a50861624686861b836a9b9b584b8e2c61fc0 100644
--- a/targets/ARCH/USRP/USERSPACE/LIB/usrp_lib.cpp
+++ b/targets/ARCH/USRP/USERSPACE/LIB/usrp_lib.cpp
@@ -624,14 +624,14 @@ static int trx_usrp_read(openair0_device *device, openair0_timestamp *ptimestamp
 #if defined(__x86_64) || defined(__i386__)
 #ifdef __AVX2__
   nsamps2 = (nsamps+7)>>3;
-  __m256i buff_tmp[2][nsamps2];
+  __m256i buff_tmp[4][nsamps2];
 #else
   nsamps2 = (nsamps+3)>>2;
-  __m128i buff_tmp[2][nsamps2];
+  __m128i buff_tmp[4][nsamps2];
 #endif
 #elif defined(__arm__)
   nsamps2 = (nsamps+3)>>2;
-  int16x8_t buff_tmp[2][nsamps2];
+  int16x8_t buff_tmp[4][nsamps2];
 #endif
 
   int rxshift;
@@ -1301,8 +1301,10 @@ extern "C" {
   LOG_I(HW,"rx_max_num_samps %zu\n",
         s->usrp->get_rx_stream(stream_args_rx)->get_max_num_samps());
   
-  for (int i = 0; i<openair0_cfg[0].rx_num_channels; i++)
+  for (int i = 0; i<openair0_cfg[0].rx_num_channels; i++) {
+    LOG_I(HW,"setting rx channel %d\n",i);
     stream_args_rx.channels.push_back(i);
+  }
   
   s->rx_stream = s->usrp->get_rx_stream(stream_args_rx);
   uhd::stream_args_t stream_args_tx("sc16", "sc16");
diff --git a/targets/RT/USER/lte-enb.c b/targets/RT/USER/lte-enb.c
index 7e8b971e5d12bd9255bb9f6c18f48b11910e0019..29a029e8d8fab24373d9e4d56c3186bcf3c36bfb 100644
--- a/targets/RT/USER/lte-enb.c
+++ b/targets/RT/USER/lte-enb.c
@@ -551,6 +551,8 @@ int wakeup_tx(PHY_VARS_eNB *eNB,
   L1_rxtx_proc_t *L1_proc_tx = &eNB->proc.L1_proc_tx;
   int ret;
   LOG_D(PHY,"ENTERED wakeup_tx (IC %d)\n",L1_proc_tx->instance_cnt);
+  // check if subframe is a has TX else return
+  if (subframe_select(&eNB->frame_parms,subframe_tx) == SF_UL) return 0;  
   AssertFatal((ret = pthread_mutex_lock(&L1_proc_tx->mutex))==0,"mutex_lock returns %d\n",ret);
   LOG_D(PHY,"L1 RX %d.%d Waiting to wake up L1 TX %d.%d (IC L1TX %d)\n",frame_rx,subframe_rx,frame_tx,subframe_tx,L1_proc_tx->instance_cnt);
 
@@ -591,7 +593,10 @@ int wakeup_rxtx(PHY_VARS_eNB *eNB,
   if (L1_proc->instance_cnt == 0) { // L1_thread is busy so abort the subframe
     AssertFatal((ret=pthread_mutex_unlock( &L1_proc->mutex))==0,"mutex_unlock return %d\n",ret);
     LOG_W(PHY,"L1_thread isn't ready in %d.%d, aborting RX processing\n",ru_proc->frame_rx,ru_proc->tti_rx);
+    AssertFatal(1==0,"L1_thread isn't ready in %d.%d (L1RX %d.%d), aborting RX, exiting\n",
+      ru_proc->frame_rx,ru_proc->tti_rx,L1_proc->frame_rx,L1_proc->subframe_rx);
     return(0);
+   
   }
 
   ++L1_proc->instance_cnt;