diff --git a/LCU/checkhardware/lib/data_lib.py b/LCU/checkhardware/lib/data_lib.py
index e70e3f7ee07f8ce9945bd1b20836fe550e26341a..9a802045a634b0576165b8d6e62e31bc3cc744e1 100644
--- a/LCU/checkhardware/lib/data_lib.py
+++ b/LCU/checkhardware/lib/data_lib.py
@@ -173,11 +173,15 @@ class cRCUdata:
     def getSubbands(self, rcu):
         return (self.getMaskedData()[int(rcu),:,:].mean(axis=0))
     
-    def getSubbandX(self):
-        return (self.getMaskedData()[0::2,:,self.testSubband_Y].mean(axis=1))
+    def getSubbandX(self, subband=None):
+        if subband is None:
+            return (self.getMaskedData()[0::2,:,self.testSubband_Y].mean(axis=1))
+        return (self.getMaskedData()[0::2,:,subband].mean(axis=1))
     
-    def getSubbandY(self):
-        return (self.getMaskedData()[1::2,:,self.testSubband_Y].mean(axis=1))
+    def getSubbandY(self, subband=None):
+        if subband is None:
+            return (self.getMaskedData()[1::2,:,self.testSubband_Y].mean(axis=1))
+        return (self.getMaskedData()[1::2,:,subband].mean(axis=1))
                        
     def getAll(self, pol='XY'):
         if pol in ('XY', 'xy'):
diff --git a/LCU/checkhardware/lib/lofar_lib.py b/LCU/checkhardware/lib/lofar_lib.py
index 23c2061d11e2e2c565c1c9096333a90dd3f98e67..28f503c8cc933bb091b9ca6e5ee2ae137dc2e60e 100644
--- a/LCU/checkhardware/lib/lofar_lib.py
+++ b/LCU/checkhardware/lib/lofar_lib.py
@@ -26,7 +26,7 @@ StationType = dict( CS=1, RS=2, IS=3 )
 
 logger           = None
 rcumode          = -1
-active_delay_str = ('2,'*16)[:-1]
+active_delay_str = ('555,'*16)[:-1]
 
 
 def init_lofar_lib():
diff --git a/LCU/checkhardware/lib/test_db.py b/LCU/checkhardware/lib/test_db.py
index 50b50b87a182baaec1c461d00d87e63abb59cb10..ec2ee679766728e2701ba7fd0e72e44253261b56 100644
--- a/LCU/checkhardware/lib/test_db.py
+++ b/LCU/checkhardware/lib/test_db.py
@@ -210,7 +210,7 @@ class cDB:
                     log.addLine("%s,SPU,%03d,VOLTAGE%s" %(date, spu.nr, valstr))
                 
             if not spu.temp_ok:
-                log.addLine("%s,SPU,%03d,TEMPERATURE,PCB=%3.1f" %\
+                log.addLine("%s,SPU,%03d,TEMPERATURE,PCB=%2.0f" %\
                            (date, spu.nr, spu.temp))
 
         for rsp in self.rsp:
@@ -219,10 +219,10 @@ class cDB:
                 log.addLine("%s,RSP,%03d,VERSION,BP=%s,AP=%s" %\
                            (date, rsp.nr, rsp.bp_version, rsp.ap_version))
             if not rsp.voltage_ok:
-                log.addLine("%s,RSP,%03d,VOLTAGE,1.2V=%3.1f,2.5V=%3.1f,3.3V=%3.1f" %\
+                log.addLine("%s,RSP,%03d,VOLTAGE,1.2V=%3.2f,2.5V=%3.2f,3.3V=%3.2f" %\
                            (date,rsp.nr, rsp.voltage1_2, rsp.voltage2_5, rsp.voltage3_3))
             if not rsp.temp_ok:
-                log.addLine("%s,RSP,%03d,TEMPERATURE,PCB=%3.1f,BP=%3.1f,AP0=%3.1f,AP1=%3.1f,AP2=%3.1f,AP3=%3.1f" %\
+                log.addLine("%s,RSP,%03d,TEMPERATURE,PCB=%2.0f,BP=%2.0f,AP0=%2.0f,AP1=%2.0f,AP2=%2.0f,AP3=%2.0f" %\
                            (date,rsp.nr, rsp.pcb_temp, rsp.bp_temp, rsp.ap0_temp, rsp.ap1_temp, rsp.ap2_temp, rsp.ap3_temp))
 
         if self.tbbdriver_version != "ok" or self.tbbctl_version != "ok":
diff --git a/LCU/checkhardware/lib/test_lib.py b/LCU/checkhardware/lib/test_lib.py
index ded5dc03e044bf1bc8cf6ae70d4917f9c1cedd86..6bb2266b8f33d9cfe1aa1dfa5fc259dea701a822 100644
--- a/LCU/checkhardware/lib/test_lib.py
+++ b/LCU/checkhardware/lib/test_lib.py
@@ -25,6 +25,33 @@ def init_test_lib():
 class cSPU:
     def __init__(self, db):
         self.db = db
+        self.board_info_str = []
+        self.board_info_val = [-1, 0.0, 0.0, 0.0, 0.0, 0]
+    
+    def extract_board_info(self, line):
+        li = line.split("|")
+        if not li[0].strip().isdigit():
+            return False
+            
+        self.board_info_str = [i.strip() for i in li]
+                
+        if li[0].strip().isdigit():
+            self.board_info_val[0] = int(li[0].strip())
+        else:
+            self.board_info_val[0] = -1
+            
+        for i in xrange(1, 5, 1):
+            if li[i].strip().replace('.','').isdigit():
+                self.board_info_val[i] = float(li[i].strip())
+            else:
+                self.board_info_val[i] = 0.0
+                                
+        if li[5].strip().isdigit():
+            self.board_info_val[5] = int(li[5].strip())
+        else:
+            self.board_info_val[5] = 0
+        return True
+        
         
     def checkStatus(self):
         """
@@ -49,13 +76,13 @@ class cSPU:
         else:
             infolines = answer.splitlines()
             for line in infolines:
-                li = line.split("|")
-                if li[0].strip().isdigit():
-                    sr = int(li[0].strip())
-                    noload.append([sr, float(li[1]), float(li[2]), float(li[3]), float(li[4])])
-                    self.db.spu[sr].temp = float(li[5])
-                    logger.debug("Subrack %d voltages: rcu=%3.1f  lba=%3.1f  hba=%3.1f  spu=%3.1f  temp: %3.1f" %\
-                                (sr, float(li[1]), float(li[2]), float(li[3]), float(li[4]), self.db.spu[sr].temp))
+                if self.extract_board_info(line):
+                    bi = self.board_info_val
+                    noload.append([bi[0], bi[1], bi[2], bi[3], bi[4]])
+                    self.db.spu[bi[0]].temp = bi[5]
+                    bi = self.board_info_str
+                    logger.debug("Subrack %s voltages: rcu=%s  lba=%s  hba=%s  spu=%s  temp: %s" % (
+                                 bi[0], bi[1], bi[2], bi[3], bi[4], bi[5]))
 
             # turn on all hbas
             logger.debug("check spu full load mode 3")
@@ -63,12 +90,12 @@ class cSPU:
             answer = rspctl('--spustatus')
             infolines = answer.splitlines()
             for line in infolines:
-                li = line.split("|")
-                if li[0].strip().isdigit():
-                    sr = int(li[0].strip())
-                    fullload_3.append([sr, float(li[1]), float(li[2]), float(li[3]), float(li[4])])
-                    logger.debug("Subrack %d voltages: rcu=%3.1f  lba=%3.1f  hba=%3.1f  spu=%3.1f  temp: %3.1f" %\
-                                (sr, float(li[1]), float(li[2]), float(li[3]), float(li[4]), self.db.spu[sr].temp))
+                if self.extract_board_info(line):
+                    bi = self.board_info_val
+                    fullload_3.append([bi[0], bi[1], bi[2], bi[3], bi[4]])
+                    bi = self.board_info_str
+                    logger.debug("Subrack %s voltages: rcu=%s  lba=%s  hba=%s  spu=%s  temp: %s" % (
+                                 bi[0], bi[1], bi[2], bi[3], bi[4], bi[5]))
 
             # turn on all hbas
             logger.debug("check spu full load mode 5")
@@ -76,31 +103,44 @@ class cSPU:
             answer = rspctl('--spustatus')
             infolines = answer.splitlines()
             for line in infolines:
-                li = line.split("|")
-                if li[0].strip().isdigit():
-                    sr = int(li[0].strip())
-                    fullload_5.append([sr, float(li[1]), float(li[2]), float(li[3]), float(li[4])])
-                    logger.debug("Subrack %d voltages: rcu=%3.1f  lba=%3.1f  hba=%3.1f  spu=%3.1f  temp: %3.1f" %\
-                                (sr, float(li[1]), float(li[2]), float(li[3]), float(li[4]), self.db.spu[sr].temp))
+                if self.extract_board_info(line):
+                    bi = self.board_info_val
+                    fullload_5.append([bi[0], bi[1], bi[2], bi[3], bi[4]])
+                    bi = self.board_info_str
+                    logger.debug("Subrack %s voltages: rcu=%s  lba=%s  hba=%s  spu=%s  temp: %s" % (
+                                 bi[0], bi[1], bi[2], bi[3], bi[4], bi[5]))
                                 
             for sr in range(self.db.nr_spu):
                 # calculate mean of noload, fullload_3, fullload_5
                 self.db.spu[sr].rcu_5_0V = (noload[sr][1] + fullload_3[sr][1] + fullload_5[sr][1]) / 3.0
-                self.db.spu[sr].lba_8_0V = (noload[sr][2] + fullload_3[sr][2] + fullload_5[sr][2]) / 3.0
-                self.db.spu[sr].hba_48V  = (noload[sr][3] + fullload_3[sr][3] + fullload_5[sr][3]) / 3.0
+                self.db.spu[sr].lba_8_0V = fullload_3[sr][2]
+                self.db.spu[sr].hba_48V  = fullload_5[sr][3]
                 self.db.spu[sr].spu_3_3V = (noload[sr][4] + fullload_3[sr][4] + fullload_5[sr][4]) / 3.0
                 
-                if (abs(4.7 - self.db.spu[sr].rcu_5_0V) > 0.2) or ((noload[sr][1] - fullload_3[sr][1]) > 0.3):
-                    self.db.spu[sr].rcu_ok = 0
+                if (self.db.spu[sr].temp > 35.0):
+                    self.db.spu[sr].temp_ok = 0
+                
+                if(abs(4.75 - noload[sr][1]) > 0.2 
+                or abs(4.75 - fullload_3[sr][1]) > 0.2 
+                or abs(4.75 - fullload_5[sr][1]) > 0.2 
+                or (noload[sr][1] - fullload_3[sr][1]) > 0.3):
+                    self.db.spu[sr].rcu_ok = 0   
                 
-                if (abs(7.6 - self.db.spu[sr].lba_8_0V) > 0.2) or ((noload[sr][2] - fullload_3[sr][2]) > 0.3):
-                    self.db.spu[sr].lba_ok = 0
-                # if voltage drop is too high
-                if (abs(45.75 - self.db.spu[sr].hba_48V) > 0.75) or ((noload[sr][3] - fullload_5[sr][3]) > 1.0):
+                if(abs(7.6 - noload[sr][1]) > 0.2 
+                or abs(7.6 - fullload_3[sr][1]) > 0.2 
+                or (noload[sr][1] - fullload_3[sr][1]) > 0.3):
+                    self.db.spu[sr].lba_ok = 0      
+                
+                if(abs(45.0 - noload[sr][1]) > 2.0  
+                or abs(45.0 - fullload_5[sr][1]) > 2.0 
+                or (noload[sr][1] - fullload_5[sr][1]) > 2.0):
                     self.db.spu[sr].hba_ok = 0
                 
-                if (abs(3.3 - self.db.spu[sr].spu_3_3V) > 0.2) or ((noload[sr][3] - fullload_3[sr][3]) > 0.3):
-                    self.db.spu[sr].spu_ok = 0            
+                if(abs(3.3 - noload[sr][1]) > 0.2 
+                or abs(3.3 - fullload_3[sr][1]) > 0.2 
+                or abs(3.3 - fullload_5[sr][1]) > 0.2 
+                or (noload[sr][1] - fullload_5[sr][1]) > 0.3):
+                    self.db.spu[sr].spu_ok = 0
                 
         logger.info("=== Done SPU check ===")
         self.db.addTestDone('SPU')
@@ -247,19 +287,19 @@ class cRSP:
             p2 = answer.find("\n", p1)
             d = [float(i.split(":")[1].strip()) for i in answer[p1+7:p2].split(',')]
             if len(d) == 3:
-                logger.debug("RSP board %d: [1.2V]=%3.1fV, [2.5V]=%3.1fV, [3.3V]=%3.1fV" %(rsp.nr, d[0],  d[1],  d[2]))
+                logger.debug("RSP board %d: [1.2V]=%3.2fV, [2.5V]=%3.2fV, [3.3V]=%3.2fV" %(rsp.nr, d[0],  d[1],  d[2]))
                 rsp.voltage1_2 = d[0]
                 if d[0] < 1.1 or d[0] > 1.3:
                     rsp.voltage_ok = 0
-                    logger.info("RSP board %d [1.2V]=%3.1fV" %(rsp.nr, d[0]))
+                    logger.info("RSP board %d [1.2V]=%3.2fV" %(rsp.nr, d[0]))
                 rsp.voltage2_5 = d[1]
                 if d[1] < 2.4 or d[1] > 2.6:
                     rsp.voltage_ok = 0
-                    logger.info("RSP board %d [2.5V]=%3.1fV" %(rsp.nr, d[1]))
+                    logger.info("RSP board %d [2.5V]=%3.2fV" %(rsp.nr, d[1]))
                 rsp.voltage3_3 = d[2]
-                if d[2] < 3.2 or d[2] > 3.4:
+                if d[2] < 3.1 or d[2] > 3.4:
                     rsp.voltage_ok = 0
-                    logger.info("RSP board %d [3.3V]=%3.1fV" %(rsp.nr, d[2]))
+                    logger.info("RSP board %d [3.3V]=%3.2fV" %(rsp.nr, d[2]))
 
         for rsp in self.db.rsp:
             p1 = answer.find("RSP[%2d]" %(rsp.nr), p2)
@@ -272,29 +312,29 @@ class cRSP:
                 rsp.pcb_temp   = d[0]
                 if d[0] > 45.0:
                     rsp.temp_ok = 0
-                    logger.info("RSP board %d [pcb_temp]=%3.1f" %(rsp.nr, d[0]))
+                    logger.info("RSP board %d [pcb_temp]=%2.0f" %(rsp.nr, d[0]))
                 rsp.bp_temp    = d[1]
                 if d[1] > 75.0:
                     rsp.temp_ok = 0
-                    logger.info("RSP board %d [bp_temp]=%3.1f" %(rsp.nr, d[1]))
+                    logger.info("RSP board %d [bp_temp]=%2.0f" %(rsp.nr, d[1]))
                 rsp.ap0_temp   = d[2]
                 if d[2] > 75.0:
                     rsp.temp_ok = 0
-                    logger.info("RSP board %d [ap0_temp]=%3.1f" %(rsp.nr, d[2]))
+                    logger.info("RSP board %d [ap0_temp]=%2.0f" %(rsp.nr, d[2]))
                 rsp.ap1_temp   = d[3]
                 if d[3] > 75.0:
                     rsp.temp_ok = 0
-                    logger.info("RSP board %d [ap1_temp]=%3.1f" %(rsp.nr, d[3]))
+                    logger.info("RSP board %d [ap1_temp]=%2.0f" %(rsp.nr, d[3]))
                 rsp.ap2_temp   = d[4]
                 if d[4] > 75.0:
                     rsp.temp_ok = 0
-                    logger.info("RSP board %d [ap2_temp]=%3.1f" %(rsp.nr, d[4]))
+                    logger.info("RSP board %d [ap2_temp]=%2.0f" %(rsp.nr, d[4]))
                 rsp.ap3_temp   = d[5]
                 if d[5] > 75.0:
                     rsp.temp_ok = 0
-                    logger.info("RSP board %d [ap3_temp]=%3.1f" %(rsp.nr, d[5]))
+                    logger.info("RSP board %d [ap3_temp]=%2.0f" %(rsp.nr, d[5]))
         logger.info("=== Done RSP Board check ===")
-        self.db.addTestDone('RBV')
+        self.db.addTestDone('RBC')
         return (ok)
 
 #### end of cRSP class ####
@@ -896,7 +936,7 @@ class cHBA:
         if n_tile_err < (self.db.nr_hba / 2):
             for tile_nr in range(self.db.nr_hba):
                 for elem_nr in range(n_elements):
-                    if no_modem[tile_nr][elem_nr] > 3: # more than 3 ctrl values went wrong
+                    if no_modem[tile_nr][elem_nr] >= 2: # 2 or more ctrl values went wrong
                         self.db.hba.tile[tile_nr].element[elem_nr].no_modem = 1
 
         n_tile_err = 0
@@ -911,7 +951,7 @@ class cHBA:
         if n_tile_err < (self.db.nr_hba / 2):
             for tile_nr in range(self.db.nr_hba):
                 for elem_nr in range(n_elements):
-                    if no_modem[tile_nr][elem_nr] > 3: # more than 3 ctrl values went wrong
+                    if no_modem[tile_nr][elem_nr] >= 2: # 2 or more ctrl values went wrong
                         self.db.hba.tile[tile_nr].element[elem_nr].modem_error = 1
 
         self.hba.modem_check_done = 1
@@ -1173,6 +1213,7 @@ class cHBA:
         self.set_mode(mode)
 
         # check twice
+        # 2   ... check if all elements are turned off, normal value between 60.0 and 62.0
         # 128 ...
         # 253 ...
         for tile in self.hba.tile:
@@ -1180,7 +1221,7 @@ class cHBA:
                 logger.info("skip signal test for tile %d, RCUs turned off" %(tile.nr))
 
         logger.info("start test")
-        for ctrl in ('128,', '253,'):
+        for ctrl in ('2,', '128,', '253,'):
             if self.db.checkEndTime(duration=20.0) == False:
                 logger.warn("check stopped, end time reached")
                 return
@@ -1197,16 +1238,29 @@ class cHBA:
             self.rcudata.searchTestSignal(subband=subband, minsignal=min_signal, maxsignal=150.0)
             logger.info("HBA, X used test subband=%d  avg_signal=%3.1f" %(self.rcudata.testSubband_X, self.rcudata.testSignal_X))
             logger.info("HBA, Y used test subband=%d  avg_signal=%3.1f" %(self.rcudata.testSubband_Y, self.rcudata.testSignal_Y))
-
+            
+            if ctrl == '2,':
+                ssdataX = self.rcudata.getSubbandX(subband=subband)
+                ssdataY = self.rcudata.getSubbandY(subband=subband)
+            else:
+                ssdataX = self.rcudata.getSubbandX()
+                ssdataY = self.rcudata.getSubbandY()
+                
+            for tile in self.hba.tile:
+                if tile.x.rcu_off or tile.y.rcu_off:
+                    continue
+                logger.debug("HBA Tile=%d :  X=%3.1fdB  Y=%3.1fdB" %\
+                            (tile.nr, ssdataX[tile.nr], ssdataY[tile.nr]))
+            if ctrl == '2,':
+                continue
+            
             if (self.rcudata.testSignal_X != -1) and (self.rcudata.testSignal_Y != -1):
 
                 self.hba.ref_signal_x[ctrl_nr]   = self.rcudata.testSignal_X
                 self.hba.ref_signal_y[ctrl_nr]   = self.rcudata.testSignal_Y
                 self.hba.test_subband_x[ctrl_nr] = self.rcudata.testSubband_X
                 self.hba.test_subband_y[ctrl_nr] = self.rcudata.testSubband_Y
-
-                ssdataX = self.rcudata.getSubbandX()
-                ssdataY = self.rcudata.getSubbandY()
+                
                 avgX = self.rcudata.testSignal_X
                 avgY = self.rcudata.testSignal_Y
                 minX = ssdataX.min()
@@ -1223,9 +1277,6 @@ class cHBA:
                     if tile.x.rcu_off or tile.y.rcu_off:
                         continue
 
-                    logger.debug("HBA Tile=%d :  X=%3.1fdB  Y=%3.1fdB" %\
-                                (tile.nr, ssdataX[tile.nr], ssdataY[tile.nr]))
-
                     tile.x.test_signal[ctrl_nr] = ssdataX[tile.nr]
                     tile.y.test_signal[ctrl_nr] = ssdataY[tile.nr]
 
diff --git a/LCU/checkhardware/showTestResult.py b/LCU/checkhardware/showTestResult.py
index 02430b131a111f08864e8e5b373a8a849e80a11b..5687e12fe428379adde6efe56defa67a0fc1aaed 100755
--- a/LCU/checkhardware/showTestResult.py
+++ b/LCU/checkhardware/showTestResult.py
@@ -327,10 +327,10 @@ def print_rsp(partnumber, msg, keyvalue):
             print "    Board %2d wrong firmware version: AP=%s BP=%s" % (
                 partnumber, keyvalue.get('AP'), keyvalue.get('BP'))
     if msg == 'VOLTAGE':
-        print "    Board %2d wrong voltage: 1.2V=%3.1f 2.5V=%3.1f 3.3V=%3.1f" % (
+        print "    Board %2d wrong voltage: 1.2V=%s 2.5V=%s 3.3V=%s" % (
               partnumber, keyvalue.get('1.2V'), keyvalue.get('2.5V'), keyvalue.get('3.3V'))
     if msg == 'TEMPERATURE':
-        print "    Board %2d high temperature: PCB=%3.1f BP=%3.1f AP0=%3.1f AP1=%3.1f AP2=%3.1f AP3=%3.1f" % (
+        print "    Board %2d high temperature: PCB=%s BP=%s AP0=%s AP1=%s AP2=%s AP3=%s" % (
               partnumber, keyvalue.get('PCB'), keyvalue.get('BP'), keyvalue.get('AP0'), keyvalue.get('AP1'),
               keyvalue.get('AP2'), keyvalue.get('AP3'))
     return