diff --git a/Pcie40Applications/regconfig.cpp b/Pcie40Applications/regconfig.cpp
index 882860ee456bc610dc82f8eabe4b4486472935aa..be502191ca5a48e9136b542ca9b5f567a97e6695 100644
--- a/Pcie40Applications/regconfig.cpp
+++ b/Pcie40Applications/regconfig.cpp
@@ -337,44 +337,47 @@ int main(int argc, char** argv){
 
   // open pcie40 device driver for current process
   ecs_open( dev_slot , SLC_BAR );
-
+  pcie40reg_t pcie40;
   int result = -1;
 
-  if(USE_FEE8 && READ_ONLY){
-    result = pcie40_readfee8( dev_slot , ch , addr );
-    printf("reg%04x = %08x\n", addr, result);
-  }else if(USE_FEE8 && WRITE){
-    result = pcie40_writefee8( dev_slot , ch , addr, data );
-    if(result == 0)
-      printf("Write 0x%04x to register 0x%04x\n", data, addr);
-    else
-      printf("ERROR: Failed to write 0x%04x to register 0x%04x\n", data, addr);
-  }else if(USE_FEE32 && READ_ONLY){
-    result = pcie40_readfee32( dev_slot , ch , addr );
-    printf("reg%04x = %08x\n", addr, result);
-  }else if(USE_FEE32 && WRITE){
-    result = pcie40_writefee32( dev_slot , ch , addr, data );
-    if(result == 0)
-      printf("Write 0x%08x to register 0x%04x\n", data, addr);
-    else
-      printf("ERROR: Failed to write 0x%08x to register %04x\n", data, addr);
-  }else if(STREAM){
-    if(STREAM_ARICH)
-      result = pcie40_writestream_arich( dev_slot , ch , filename ) ;
-    else
-      result = pcie40_writestream_klm( dev_slot , ch , filename ) ;
-    if(result == 0)
-      std::cerr<<"Succeed streaming file: " << filename << std::endl;
-    else
-      std::cerr<<"ERROR: Failed streaming file: " << filename << std::endl;
-  } 
-
-  //This is only frame for register operation in the furture
-  if(OP_FLAG){
-    unsigned int op_addr = hsreg( operation );
+  if(pcie40_b2l_status(dev_slot, ch) && pcie40_b2l_rxready(dev_slot, ch) && pcie40_b2l_txready(dev_slot, ch)){
+    if(USE_FEE8 && READ_ONLY){
+      result = pcie40_readfee8( dev_slot , ch , addr );
+      printf("reg%04x = %08x\n", addr, result);
+    }else if(USE_FEE8 && WRITE){
+      result = pcie40_writefee8( dev_slot , ch , addr, data );
+      if(result == 0)
+	printf("Write 0x%04x to register 0x%04x\n", data, addr);
+      else
+	printf("ERROR: Failed to write 0x%04x to register 0x%04x\n", data, addr);
+    }else if(USE_FEE32 && READ_ONLY){
+      result = pcie40_readfee32( dev_slot , ch , addr );
+      printf("reg%04x = %08x\n", addr, result);
+    }else if(USE_FEE32 && WRITE){
+      result = pcie40_writefee32( dev_slot , ch , addr, data );
+      if(result == 0)
+	printf("Write 0x%08x to register 0x%04x\n", data, addr);
+      else
+	printf("ERROR: Failed to write 0x%08x to register %04x\n", data, addr);
+    }else if(STREAM){
+      if(STREAM_ARICH)
+	result = pcie40_writestream_arich( dev_slot , ch , filename ) ;
+      else
+	result = pcie40_writestream_klm( dev_slot , ch , filename ) ;
+      if(result == 0)
+	std::cerr<<"Succeed streaming file: " << filename << std::endl;
+      else
+	std::cerr<<"ERROR: Failed streaming file: " << filename << std::endl;
+    } 
+
+    //This is only frame for register operation in the furture
+    if(OP_FLAG){
+      unsigned int op_addr = hsreg( operation );
       pcie40_op(dev_slot, ch, op_addr, addr, data);
+    }
+  }else{
+    printf("ERROR: b2link-%02d is down or not ready\n", ch);
   }
-
   // close pcie40 device driver for current process
   ecs_close( dev_slot , SLC_BAR) ;
 
diff --git a/Pcie40Applications/statlink.cpp b/Pcie40Applications/statlink.cpp
index 2c60e53cc37f0b8c5a6be53e2940a8519afd48e5..17109f21f349b8c27d7613775691822a61cf8840 100644
--- a/Pcie40Applications/statlink.cpp
+++ b/Pcie40Applications/statlink.cpp
@@ -21,7 +21,7 @@
 
 extern "C" int  ecs_open(int dev, int bar);
 extern "C" void ecs_close(int dev, int bar);
-//#define PCIE_DEV     0
+
 #define MAX_NUM_CH   48
 #define MAX_SLOT     3
 #define SLC_BAR      2
@@ -151,32 +151,35 @@ readregs(std::bitset<48> link_mask, pcie40reg_t pcie40reg[])
   int o_readonly = 1;
   int notfound = 1;
 
-  // for (i=0; i<48; i++) {
+  for (i=0; i<48; i++) {
     pcie40reg_t *pcie = &pcie40reg[i];
     memset(pcie, 0, sizeof(*pcie));
-  //   if (!link_mask[i]) continue;
+    if (!link_mask[i]) continue;
     
-      pcie->xbusy   = pcie40_readfee32(dev_slot, ch, PCIE40REG_CCLK);
-      pcie->conf    = pcie40_readfee32(dev_slot, ch, PCIE40REG_CONF);
-
-      pcie->pcie40ver  = pcie40_readfee32(dev_slot, ch, PCIE40REGL_VER);      /* 81 */
-      pcie->rxdata     = pcie40_readfee32(dev_slot, ch, PCIE40REGL_RXDATA);   /* 84 */
-      pcie->eventsz    = pcie40_readfee32(dev_slot, ch, PCIE40REGL_EVENTSZ);  /* 85 */
-      pcie->nevent     = pcie40_readfee32(dev_slot, ch, PCIE40REGL_NEVENT);   /* 86 */
-      pcie->nkbyte     = pcie40_readfee32(dev_slot, ch, PCIE40REGL_NKBYTE);   /* 87 */
-      pcie->nword      = pcie40_readfee32(dev_slot, ch, PCIE40REGL_NWORD);    /* 88 */
-      pcie->vetoset    = pcie40_readfee32(dev_slot, ch, PCIE40REGL_VETOSET);  /* 89 */
-      pcie->vetocnt    = pcie40_readfee32(dev_slot, ch, PCIE40REGL_VETOCNT);  /* 8a */
-      pcie->vetobuf[0] = pcie40_readfee32(dev_slot, ch, PCIE40REGL_VETOBUF0); /* 8b */
-      pcie->vetobuf[1] = pcie40_readfee32(dev_slot, ch, PCIE40REGL_VETOBUF1); /* 8c */
-      
-      pcie->feeser = 0xffff;
-      pcie->feever = 0xffff;
-      if ( pcie40_b2l_status(dev_slot, i) ) {
-	getfee(pcie);
-      }
-            
-  // }
+    if ( !pcie40_b2l_status(dev_slot, i) ) {
+      printf("b2link-%02d is down\n", i);
+      continue;
+    }
+    pcie->xbusy   = pcie40_readfee32(dev_slot, ch, PCIE40REG_CCLK);
+    pcie->conf    = pcie40_readfee32(dev_slot, ch, PCIE40REG_CONF);
+    
+    pcie->pcie40ver  = pcie40_readfee32(dev_slot, ch, PCIE40REGL_VER);      /* 81 */
+    pcie->rxdata     = pcie40_readfee32(dev_slot, ch, PCIE40REGL_RXDATA);   /* 84 */
+    pcie->eventsz    = pcie40_readfee32(dev_slot, ch, PCIE40REGL_EVENTSZ);  /* 85 */
+    pcie->nevent     = pcie40_readfee32(dev_slot, ch, PCIE40REGL_NEVENT);   /* 86 */
+    pcie->nkbyte     = pcie40_readfee32(dev_slot, ch, PCIE40REGL_NKBYTE);   /* 87 */
+    pcie->nword      = pcie40_readfee32(dev_slot, ch, PCIE40REGL_NWORD);    /* 88 */
+    pcie->vetoset    = pcie40_readfee32(dev_slot, ch, PCIE40REGL_VETOSET);  /* 89 */
+    pcie->vetocnt    = pcie40_readfee32(dev_slot, ch, PCIE40REGL_VETOCNT);  /* 8a */
+    pcie->vetobuf[0] = pcie40_readfee32(dev_slot, ch, PCIE40REGL_VETOBUF0); /* 8b */
+    pcie->vetobuf[1] = pcie40_readfee32(dev_slot, ch, PCIE40REGL_VETOBUF1); /* 8c */
+    
+    pcie->feeser = 0xffff;
+    pcie->feever = 0xffff;
+    if ( pcie40_b2l_status(dev_slot, i) ) {
+      getfee(pcie);
+    }            
+  }
   return notfound;
 }
 
@@ -196,22 +199,22 @@ statlink(std::bitset<48> link_mask, pcie40reg_t pcie40reg[])
     char prompt[128];
     
     if (!link_mask[i]) continue;
-
+    
     quiet = 0;
     if (! first) printf("\n");
     first =0;
     
     sprintf(prompt, "(%02d)    ", i);
     
-    if ( !pcie40_b2l_status(dev_slot, i) ) {
-      printf("b2link is down\n");
-    } else if (pcie->feeser & 0x8000) {
-      printf("fee info is not available\n");
-    } else {
-      printf("%s serial %d version %d\n",
-	     feename(pcie->feehw, pcie->feefw), pcie->feeser, pcie->feever);
+    if ( pcie40_b2l_status(dev_slot, i) ) {
+
+      if (pcie->feeser & 0x8000) {
+	printf("fee info is not available\n");
+      } else {
+	printf("%s serial %d version %d\n",
+	       feename(pcie->feehw, pcie->feefw), pcie->feeser, pcie->feever);
+      }
     }
-    
     printf("%s", prompt);
     printf("b2l=%s (rx=%s tx=%s rxsta=%s txsta=%s mask=%s)\n",
 	   pcie40_b2l_status(dev_slot, i)?"UP":"DOWN",
@@ -223,10 +226,9 @@ statlink(std::bitset<48> link_mask, pcie40reg_t pcie40reg[])
 
     printf("%s", prompt);
            
-    printf("%s", prompt);
     printf("rxdata=%04x rxlinkdown=%d rxcrcerr=%d feecrcerr=%d\n",
-           D(pcie->rxdata,15,0), D(pcie->rxdata,31,24), D(pcie->rxdata,23,16),
-           pcie->feecrce);
+	   D(pcie->rxdata,15,0), D(pcie->rxdata,31,24), D(pcie->rxdata,23,16),
+	   pcie->feecrce);
     printf("%s", prompt);
     total = (pcie->nkbyte * 256.0 + (pcie->nword & 0xff)) * 4.0;
     printf("event=%d total=%1.0fkB", pcie->nevent, total / 1000);
@@ -234,14 +236,14 @@ statlink(std::bitset<48> link_mask, pcie40reg_t pcie40reg[])
       double avg = total / pcie->nevent;
       printf(" (avg=%1.0fB", avg);
       if (D(pcie->eventsz,31,16) == 0xffff) {
-        printf(" last=oflow");
+	printf(" last=oflow");
       } else {
-        printf(" last=%dB", D(pcie->eventsz,31,16)*4);
+	printf(" last=%dB", D(pcie->eventsz,31,16)*4);
       }
       if (D(pcie->eventsz,15,0) == 0xffff) {
-        printf(" max=oflow)");
+	printf(" max=oflow)");
       } else {
-        printf(" max=%dB)", D(pcie->eventsz,15,0)*4);
+	printf(" max=%dB)", D(pcie->eventsz,15,0)*4);
       }
     }
     printf("\n");
@@ -253,19 +255,20 @@ statlink(std::bitset<48> link_mask, pcie40reg_t pcie40reg[])
       printf("no b2link error");
     } else {
       printf("b2link error %d(%c) %d(%c) %c%02x %c%02x %c%02x %c%02x %c%02x %c%02x",
-             D(pcie->vetocnt,31,16),
-             B(pcie->vetoset,1) ? 'i' : '-',
-             D(pcie->vetocnt,15,0),
-             B(pcie->vetoset,0) ? 'd' : '-',
-             B(pcie->vetobuf[0],25)?'K':'D', D(pcie->vetobuf[0],15,8),
-             B(pcie->vetobuf[0],24)?'K':'D', D(pcie->vetobuf[0],7,0),
-             B(pcie->vetobuf[0],21)?'K':'D', D(pcie->vetobuf[1],31,24),
-             B(pcie->vetobuf[0],20)?'K':'D', D(pcie->vetobuf[1],23,16),
-             B(pcie->vetobuf[0],17)?'K':'D', D(pcie->vetobuf[1],15,8),
-             B(pcie->vetobuf[0],16)?'K':'D', D(pcie->vetobuf[1],7,0));
+	     D(pcie->vetocnt,31,16),
+	     B(pcie->vetoset,1) ? 'i' : '-',
+	     D(pcie->vetocnt,15,0),
+	     B(pcie->vetoset,0) ? 'd' : '-',
+	     B(pcie->vetobuf[0],25)?'K':'D', D(pcie->vetobuf[0],15,8),
+	     B(pcie->vetobuf[0],24)?'K':'D', D(pcie->vetobuf[0],7,0),
+	     B(pcie->vetobuf[0],21)?'K':'D', D(pcie->vetobuf[1],31,24),
+	     B(pcie->vetobuf[0],20)?'K':'D', D(pcie->vetobuf[1],23,16),
+	     B(pcie->vetobuf[0],17)?'K':'D', D(pcie->vetobuf[1],15,8),
+	     B(pcie->vetobuf[0],16)?'K':'D', D(pcie->vetobuf[1],7,0));
     }
     printf("\n");
   }
+    
 
   if (quiet) {
     printf("no PCIE40 was found.\n");
@@ -285,7 +288,8 @@ int main(int argc, char** argv){
   ecs_open( dev_slot , SLC_BAR );
 
   printf("statlink version %d (%d) / ", VERSION, MOD_DATE);
-  statpice40(pcie40);	
+  statpice40(pcie40);
+  
   readregs(link_mask, pcie40reg);
   statlink(link_mask, pcie40reg);