diff --git a/pypcc/config/RECVTR_HB.yaml b/pypcc/config/RECVTR_HB.yaml
index f74c19da8e85f58ef88db99ae2bd875e2168e93f..3fb4e84a694a652c9061b95e845494715bdd2e62 100644
--- a/pypcc/config/RECVTR_HB.yaml
+++ b/pypcc/config/RECVTR_HB.yaml
@@ -834,6 +834,11 @@ methods:
      - IO4.CONF2: 0xF8 
 #Configure registers on RCU microcontroller
      - HB_UC.waitPPS: 1 #wait for PPS
+     - HBAT1.XY : [0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80]
+     - HBAT2.XY : [0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80]
+     - HBAT3.XY : [0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80]
+     - HBAT_PWR_LNA_on : Update
+     - HBAT_PWR_on : Update
 #     - HB_UC.VREF: 0x0C 
 #     - HB_UC.VREF: 8 #lower for DANTE
 #     - HB_UC.TXdelay : 32 #delay for broken DANTE frontend
@@ -866,17 +871,6 @@ methods:
      - RCU_ADC_sync: Update #disabled for testing
 #     - RCU_ADC_testsignal: Update #disabled for testing
   
-  - name: RCU_on_test
-    description: Initialize RCU and it in the ON state
-    driver: I2C_RCU
-    mask: RCU_mask
-    instructions:
-     - HBAT1.XY : [0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80]
-     - HBAT2.XY : [0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80]
-     - HBAT3.XY : [0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80]
-     - HBAT_PWR_LNA_on : Update
-     - HBAT_PWR_on : Update
-
   - name: RCU_update
     driver: I2C_RCU
     mask: RCU_mask
diff --git a/pypcc/i2cserv/hba1.py b/pypcc/i2cserv/hba1.py
index 85ceb9560326160b78e952fa1bfaa140f76658d3..22be0356ef9b0c8034b0992dbfe4d45099f5513b 100644
--- a/pypcc/i2cserv/hba1.py
+++ b/pypcc/i2cserv/hba1.py
@@ -54,6 +54,14 @@ class hba1(hwdev):
        Data=OPCUAset(varid,InstType.varSet,data.copy(),mask2.copy())
        return [Data]
 
+  def OPCUAReadVariable(self,varid,var1,mask):
+      #Only read from stored register
+      #logging.warn(self.conf['name']+" OPCUAReadVariable Not implemented!")
+      data=self.conf['parentcls'].GetStoredValue(var1)
+      Data=OPCUAset(varid,InstType.varSet,data,mask)
+      return [Data]
+
+
   def i2csetget(self,addr,data,reg=None,read=0):
     if read==0: return self.sethba(addr,reg,data)
     elif read==1: return self.gethba(addr,reg,data)
diff --git a/pypcc/i2cserv/i2c_array.py b/pypcc/i2cserv/i2c_array.py
index dd26f65269ca66a9595bd84adb09075589548417..a8da9d0e7156d7129afe1337edc541e3b2c6672e 100644
--- a/pypcc/i2cserv/i2c_array.py
+++ b/pypcc/i2cserv/i2c_array.py
@@ -234,6 +234,39 @@ class i2c_array(i2c_dev):
             logging.warn(str(("Identify RCUs:",check_val,self.enablemask)))
         return value1,mask
 
+    def GetStoredValue(self,var1):
+        Step,Step2=GetSteps(var1);
+        value1=[0]*Step*Step2;
+        Step2//=self.N
+        for Vari in range(Step):
+          devreg=var1['devreg'][Vari];
+          width=var1.get('width',8)
+          bitoffset=GetField(var1,'bitoffset',Vari,0)
+          if not(devreg.get('store')): continue
+          storearray=self.getstorearray(devreg);
+          for RCUi in self.RCUorder:
+                i0=(RCUi*Step+    Vari)*Step2
+                i1=(RCUi*Step+(Vari+1))*Step2
+                value2=value1[i0:i1]
+#                res=self.GetVarValue(devreg,width,bitoffset,value2,mode=mode)
+                try:
+                  value2[:]=storearray[RCUi]
+                except:
+                  logging.warning("RCU%iWrong size (no data?) in stored array %i-%i"%(RCUi,len(value2),len(storearray[RCUi])))
+# of len(storearray[RCUi]==0)
+#                storearray[self.RCUi]=(value[0] if len(value)==1 else value[:])
+                l1=int(np.floor((width+bitoffset+7)/8))
+                if (width!=l1*8) or (bitoffset>0):
+                  if (width<8):
+                    for i in range(len(value2)):
+                       value2[i]=UnMask(value2[i],width,bitoffset)
+                  else:
+                       value2[0]=UnMask(value2[0],width-(l1-1)*8,bitoffset)
+#        else: value[0]=value2[0]
+                value1[i0:i1]=value2
+        return value1
+
+
     def getstorearray(self,devreg,N=1):
           storearray=devreg.get('storearray')
           if not(storearray):
@@ -256,9 +289,9 @@ class i2c_array(i2c_dev):
                 storearray=self.getstorearray(devreg);
                 for RCUi in range(self.N):
                   if (mask[RCUi]) and (self.I2Cmask[RCUi]<=self.I2Ccut) and (self.enablemask[RCUi]) and not(value[0] is None):   
-                      storearray[RCUi]=value[0]
+                      storearray[RCUi]=value[0] if len(value)==1 else value[:]
                       self.RCUi=RCUi;
-                logging.debug(str(("Stored values:",self.getstorearray(devreg))))
+                logging.info(str(("Stored values:",self.getstorearray(devreg))))
         return True;
         
 
diff --git a/pypcc/i2cserv/i2c_switch.py b/pypcc/i2cserv/i2c_switch.py
index 4180f2ce17243c32ad4b9f4b2dae3a3e2d99ac42..7934f2b6652c57bb2ce8c1f03e27e9c1dd0d5e22 100644
--- a/pypcc/i2cserv/i2c_switch.py
+++ b/pypcc/i2cserv/i2c_switch.py
@@ -25,18 +25,20 @@ class i2c_switch(i2c):
         if self.NoSwitch: return True;
         SWn=channelbit>>3;
         channel=1<<(channelbit & 0x07)
+        result=True
         for x in range(self.SWcnt):
            if x==SWn:
               if (channel)!=self.CurrentChannel[x]:
                  self.CurrentChannel[x]=channel
                  logging.debug("SetChannel addr %i = val %i" % (SWn,channel));
-                 if not(self.i2csetget(self.SWaddrs[x],[channel])): return False;
+                 if not(self.i2csetget(self.SWaddrs[x],[channel])): result=False
            else:
               if self.CurrentChannel[x]!=0:
                  logging.debug("SetChannel addr %i = val %i" % (x,0));
                  self.CurrentChannel[x]=0
-                 if not(self.i2csetget(self.SWaddrs[x],[0])): return False;
-        return True
+                 if not(self.i2csetget(self.SWaddrs[x],[0])): result=False
+        if not(result): logging.info("Switch set error!")
+        return result
 
     def ClearNewChannel(self):
         self.newChannel=[0 for x in self.SWaddrs]+[0];#last one is a dummy
diff --git a/scripts/get_all_debug.py b/scripts/get_all_debug.py
new file mode 100644
index 0000000000000000000000000000000000000000..f43ab74a07511334a280d977e29930bd2e4eb038
--- /dev/null
+++ b/scripts/get_all_debug.py
@@ -0,0 +1,11 @@
+from test_common import *
+from time import sleep
+connect("opc.tcp://localhost:4841/")
+
+
+names=get_all_debug_variables()
+for name in names:
+  att=get_debug_value(name)
+  print(name,'=',att)
+
+disconnect();
diff --git a/scripts/test_common.py b/scripts/test_common.py
index 2492c63d18f7ac995dd5e42b8ab2e2b69656941b..df859d7c3044b7358475706ee8570f34d883cdb4 100644
--- a/scripts/test_common.py
+++ b/scripts/test_common.py
@@ -43,9 +43,12 @@ def set_value(name,value,tp=None):
   else:
     var1.set_value(value,tp)
 
-def get_all_variables():
+def get_all_debug_variables():
+   return get_all_variables(parent_object=["0:Objects","2:DEBUG"])
+
+def get_all_variables(parent_object=["0:Objects"]):
     vars0=[]
-    obj0=root.get_child(["0:Objects"])
+    obj0=root.get_child(parent_object)
     for nodeid in obj0.get_children():
 #            print(nodeid)
             ch = client.get_node(nodeid.nodeid)