diff --git a/i2c/I2C.py.old b/i2c/I2C.py.old
new file mode 100644
index 0000000000000000000000000000000000000000..1982b43c9c0e13bf33d61d4bf48e8c2b940b5d06
--- /dev/null
+++ b/i2c/I2C.py.old
@@ -0,0 +1,70 @@
+import pylibi2c;
+import time
+import logging
+#bus = pylibi2c.I2CDevice('/dev/i2c-1'
+#read=0: write to register
+#read=1: read from register
+#read=2: write to register (common in group)
+#read=3: wait ms second
+I2Ccounter=0;
+
+def I2C1server(addr,data,reg=None,read=0):
+#  print("I2C",addr,reg,data,read)
+  try:
+       if read==3:
+           time.sleep(data[0]/1000.)
+           return True
+       logging.debug(str(("I2C",addr,reg,data,read)))
+
+#       return True;
+       bus=pylibi2c.I2CDevice('/dev/i2c-1',addr)
+       if read==1:
+         length=len(data)
+         bus.iaddr_bytes=0
+         if not(reg is None):
+             bus.ioctl_write(0,str(bytearray([reg])))
+         data[:]=[int(x) for x in bus.ioctl_read(0,length)]
+#         print("I2C read",addr,reg,data,read)
+       else:
+            if reg is None: 
+               bus.iaddr_bytes=0
+               reg=0;
+            bus.ioctl_write(reg,str(bytearray(data)))
+       bus.close()
+       return True;
+  except:
+       if bus: bus.close()
+#       data[0]=0xff
+       return False;
+
+def I2C4server(addr,data,reg=None,read=0):
+#  print("I2C4",addr,reg,data,read)
+  try:
+       if read==3:
+           time.sleep(data[0]/1000.)
+           return True
+       logging.debug(str(("I2C",addr,reg,data,read)))
+
+#       print("I2C",addr,reg,data,read)
+#       return True;
+       bus=pylibi2c.I2CDevice('/dev/i2c-4',addr)
+       if read==1:
+         length=len(data)
+         bus.iaddr_bytes=0
+         if not(reg is None):
+             bus.ioctl_write(0,str(bytearray([reg])))
+         data[:]=[int(x) for x in bus.ioctl_read(0,length)]
+#         print(data)
+       else:
+            if reg is None: 
+               bus.iaddr_bytes=0
+               reg=0;
+            bus.ioctl_write(reg,str(bytearray(data)))
+       bus.close()
+       return True;
+  except:
+       if bus: bus.close()
+       print("I2C4 error")
+#       data[0]=0xff
+       return False;
+
diff --git a/i2c/I2Cv2.py b/i2c/I2Cv2.py
index 81cbb131c73ba619ce00bb5802339feecf27160f..1627b362488d3a250654c41856f4ecfe1baa41ad 100644
--- a/i2c/I2Cv2.py
+++ b/i2c/I2Cv2.py
@@ -21,9 +21,8 @@ def I2C1server(addr,data,reg=None,read=0):
            time.sleep(data[0]/1000.)
            return True
        logging.debug(str(("I2C",addr,reg,data,read)))
-
        if read==1:
-          if not(reg is None):  i2c1.transfer(addr,[I2C.Message(reg)])
+          if not(reg is None):  i2c1.transfer(addr,[I2C.Message([reg])])
           msgs=[I2C.Message(data,read=True)]
           i2c1.transfer(addr,msgs)
           data[:]=msgs[0].data
@@ -31,15 +30,15 @@ def I2C1server(addr,data,reg=None,read=0):
             if reg is None: 
                msgs=[I2C.Message(data)]
             else:
-               msgs=[I2C.Message(reg),I2C.Message(data)]
+               msgs=[I2C.Message([reg]+data)]
             i2c1.transfer(addr,msgs)
        return True;
   except:
        return False;
 
-i2c4=I2C("/dev/i2c-1")
+i2c4=I2C("/dev/i2c-4")
 
-def I2C1server(addr,data,reg=None,read=0):
+def I2C4server(addr,data,reg=None,read=0):
 #  print("I2C",addr,reg,data,read)
   try:
        if read==3:
@@ -48,7 +47,7 @@ def I2C1server(addr,data,reg=None,read=0):
        logging.debug(str(("I2C",addr,reg,data,read)))
 
        if read==1:
-          if not(reg is None):  i2c4.transfer(addr,[I2C.Message(reg)])
+          if not(reg is None):  i2c4.transfer(addr,[I2C.Message([reg])])
           msgs=[I2C.Message(data,read=True)]
           i2c4.transfer(addr,msgs)
           data[:]=msgs[0].data
@@ -56,7 +55,7 @@ def I2C1server(addr,data,reg=None,read=0):
             if reg is None: 
                msgs=[I2C.Message(data)]
             else:
-               msgs=[I2C.Message(reg),I2C.Message(data)]
+               msgs=[I2C.Message([reg]+data)]
             i2c4.transfer(addr,msgs)
        return True;
   except:
diff --git a/i2c/setswitch.py b/i2c/setswitch.py
index 8871663c5df1f560207b16a3f8c5451e8ffb5c06..45f43942a9b3dc1fc7cde1b4efa5a06b674bde92 100644
--- a/i2c/setswitch.py
+++ b/i2c/setswitch.py
@@ -1,13 +1,15 @@
 from I2C import *
 import time
-RCU=2
+RCU=3
 Ver="RCU2H v0.2"
 R1=0
 ROM=0x50
 
 #Set switch
 print("Set switch")
-if not(I2C1server(0x70,[1<<RCU],reg=None,read=0)): exit() #select RCU
+if not(I2C1server(0x70,[1<<RCU],reg=None,read=0)):
+   print("Error setting switch!")
+   exit() #select RCU
 exit()
 #Get ID
 print("Get ID")
diff --git a/pypcc2.py b/pypcc2.py
index 13ddf412889d0084a022019093a358d5c738ed68..4c873a2909dcd12b887880178b0738adfef8aec3 100644
--- a/pypcc2.py
+++ b/pypcc2.py
@@ -33,6 +33,7 @@ if args.simulator:
     from i2c import I2C_dummy as I2C
 else:
     from i2c import I2C
+#   from i2c import I2Cv2 as I2C
 
 #Queue used to pass instructions from opc-ua server to RCU
 Q1=queue.Queue() #RCUs
diff --git a/rcu/RCU.py b/rcu/RCU.py
index 901a1581f24b2dd9c192f6eb5a9c6971328a894e..98978660f16f68fa5f3d0a07de694fb1305b2e2d 100644
--- a/rcu/RCU.py
+++ b/rcu/RCU.py
@@ -198,6 +198,9 @@ class RCU1():
                 for RCUi in range(self.N):
                     self.SWcallback(1<<Vars.RCU_MPaddr.Switch[RCUi])
 #                    print(Step,Step2,len(value1),V1.size)
+                    WX=[0]
+                    self.I2Ccallback(0x40,WX,reg=0,read=1)#wakeup, do nothing
+                    self.I2Ccallback(0x40,[10],read=3)
                     i0=(RCUi*Step+    Vari)*Step2
                     i1=(RCUi*Step+(Vari+1))*Step2
                     value2=value1[i0:i1]
@@ -271,6 +274,7 @@ class RCU1():
           value[i]=ApplyMask(value[i],width,bitoffset,previous[i]);
         self.previousHBA[RCUi,dev.store-1]=value
 #        if buffer: return True;
+        print("HBA set:",value);
         XX=[0]
         self.I2Ccallback(0x40,XX,reg=0,read=1)#wakeup, do nothing
         self.I2Ccallback(dev.Addr,[10],read=3)
@@ -278,7 +282,7 @@ class RCU1():
         if L>16: 
               self.I2Ccallback(dev.Addr,[10],read=3)
               self.I2Ccallback(dev.Addr,value[16:],reg=dev.Register_W+16)
-        self.I2Ccallback(dev.Addr,[600],reg=dev.Register_W,read=3) #Wait 500ms
+        self.I2Ccallback(dev.Addr,[600],read=3) #Wait 500ms
         return True
 #        return self.I2Ccallback(dev.Addr,value,reg=dev.Register_W)
 
@@ -357,11 +361,13 @@ class RCU1():
         #print(width,len(value))
         value2=value
         reg=dev.Register_R
+#        if not(self.I2Ccallback(dev.Addr,[],reg=0x0)): return False;
         if not(self.I2Ccallback(dev.Addr,value2,read=1)): return False;
         if value2[0] is None:  return False
         value[:]=value2[:];
-        if dev.store>0:
-            self.previousHBA[RCUi,dev.store-1]=value
+        print("HBA ",RCUi,dev.Addr," received:",value);
+#        if dev.store>0: #This is disabled due to noise on readback
+#            self.previousHBA[RCUi,dev.store-1]=value[:]
         for i in range(len(value)): 
               value[i]=UnMask(value[i],width,bitoffset)      
         return True;
@@ -383,11 +389,11 @@ class RCU1():
       return RCUthread1 
  
     def Queue_Monitor(self,Q1,NRCU):
-          Inst1=Vars.Instr(Vars.DevType.VarUpdate,Vars.RCU_temp,NRCU,[0]*NRCU)
-          Q1.put(Inst1)
-          Inst1=Vars.Instr(Vars.DevType.VarUpdate,Vars.RCU_ADC_lock,96,[0]*96)
-          Q1.put(Inst1)
-          return 
+	Inst1=Vars.Instr(Vars.DevType.VarUpdate,Vars.RCU_temp,NRCU,[0]*NRCU)
+	Q1.put(Inst1)
+	Inst1=Vars.Instr(Vars.DevType.VarUpdate,Vars.RCU_ADC_lock,96,[0]*96)
+	Q1.put(Inst1)
+	return 
     def AddVars(self,Q1,AddVarR,AddVarW,AddVar):
      self.statevar=AddVar("RCU_state_R","busy")
      for v in Vars.OPC_devvars:
diff --git a/rcu/Vars.py b/rcu/Vars.py
index b16db9e85c324f56cca37b79efaaab888f4b84da..7a14380585d0fab79f5dbe035b7eb8bd5d88e29d 100644
--- a/rcu/Vars.py
+++ b/rcu/Vars.py
@@ -44,9 +44,13 @@ HBA3_led  =Var2dev("",RCUmod,DevType.HBA1,RCU_HBA3,1,0,1)
 HBA1_pwr  =Var2dev("",RCUmod,DevType.HBA1,RCU_HBA1,1,7,1)
 HBA2_pwr  =Var2dev("",RCUmod,DevType.HBA1,RCU_HBA2,1,7,1)
 HBA3_pwr  =Var2dev("",RCUmod,DevType.HBA1,RCU_HBA3,1,7,1)
+HBA1_pwr2  =Var2dev("",RCUmod,DevType.HBA1,RCU_HBA1,1,1,1)
+HBA2_pwr2  =Var2dev("",RCUmod,DevType.HBA1,RCU_HBA2,1,1,1)
+HBA3_pwr2  =Var2dev("",RCUmod,DevType.HBA1,RCU_HBA3,1,1,1)
 HBA_Delay=VarArray("HBA_element_beamformer_delays",3,[HBA1_Delay,HBA2_Delay,HBA3_Delay],RW.ReadWrite,datatype.dInt,96,None,None)
 HBA_led  =VarArray("HBA_element_led"  ,3,[HBA1_led  ,HBA2_led  ,HBA3_led  ],RW.ReadWrite,datatype.dInt,96,None,None)
 HBA_pwr  =VarArray("HBA_element_pwr"  ,3,[HBA1_pwr  ,HBA2_pwr  ,HBA3_pwr  ],RW.ReadWrite,datatype.dInt,96,None,None)
+HBA_pwr2 =VarArray("HBA_element_pwr2"  ,3,[HBA1_pwr2  ,HBA2_pwr2  ,HBA3_pwr2  ],RW.ReadWrite,datatype.dInt,96,None,None)
 
 #RCU_ID0=Var2dev("",RCUmod,DevType.I2C,RCU_ROM,8,0,1)
 #RCU_ID=VarArray("RCU_ID",1,[RCU_ID0],RW.ReadOnly,datatype.dInt,4,None,None)
@@ -109,7 +113,7 @@ RCU_OUT2=VarArray("RCU_OUT2",3,[RCU_IO1_2,RCU_IO2_2,RCU_IO3_2],RW.ReadOnly,datat
 
 #OPC_devvars=[RCU_mask,Ant_mask,RCU_att,RCU_band,RCU_temp,RCU_pwrd,RCU_LED,RCU_ID,RCU_VER,HBA_Delay,HBA_led]
 #OPC_devvars=[RCU_mask,Ant_mask,RCU_att,RCU_band,RCU_temp,RCU_pwrd,RCU_LED,RCU_ID,RCU_VER,HBA_Delay,HBA_led,RCU_uCV_ID]
-OPC_devvars=[RCU_mask,Ant_mask,RCU_att,RCU_band,RCU_temp,RCU_pwrd,RCU_LED,RCU_ADC_lock,RCU_ADC_SYNC,RCU_ADC_JESD,RCU_ADC_CML,RCU_OUT1,RCU_OUT2,RCU_ID,RCU_VER,HBA_Delay,HBA_led,HBA_pwr,RCU_uCV_ID]
+OPC_devvars=[RCU_mask,Ant_mask,RCU_att,RCU_band,RCU_temp,RCU_pwrd,RCU_LED,RCU_ADC_lock,RCU_ADC_SYNC,RCU_ADC_JESD,RCU_ADC_CML,RCU_OUT1,RCU_OUT2,RCU_ID,RCU_VER,HBA_Delay,HBA_led,HBA_pwr,HBA_pwr2,RCU_uCV_ID]
 #OPC_devvars=[RCU_mask,Ant_mask,RCU_att,RCU_band,RCU_temp,RCU_pwrd,RCU_LED,RCU_uCV_ID,RCU_uCV_spd0,RCU_uCV_RXspd1,RCU_uCV_RXspd2,RCU_uCV_TXspd1,RCU_uCV_debug ]#,HBA1_Pwr]#,RCU_CNF1,RCU_CNF2]
 #Instr=namedtuple("DevInstr","type dev nvalue value")
 #Instrs=namedtuple("Instr","name ninstr instr")
diff --git a/scripts/ADCreset.py b/scripts/ADCreset.py
index 1fe427c61fdbae25fe8bddd15fcb3a93d97cc717..e42c94acc4acadf705c19747f1f63955e81d6814 100644
--- a/scripts/ADCreset.py
+++ b/scripts/ADCreset.py
@@ -1,11 +1,11 @@
 from test_common import *
 
-RCUs=[2,3];
+RCUs=[0,1,2,3];
 setRCUmask(RCUs)
 
-callmethod("RCU_off")
+#callmethod("RCU_off")
 #exit()
-time.sleep(1)
+#time.sleep(2)
 callmethod("RCU_on")
 #callmethod("RCU_on")
 #time.sleep(1)
diff --git a/scripts/Att.py b/scripts/Att.py
index 91fcf28ab3a8269a88ac5a6f0b60de8f3a0282f5..65ca66bb1801a2ea14de4937014a258053f663e4 100644
--- a/scripts/Att.py
+++ b/scripts/Att.py
@@ -1,20 +1,20 @@
 from test_common import *
 
 name="RCU_attenuator"
-RCU=0;
-Att=[5,5,5]
+RCU=[0];
+Att=[1,1,1]
 
 
-setAntmask([RCU])
+setAntmask(RCU)
 
 att=get_value(name+"_R")
-print("Att old:",att[3*RCU:3*RCU+3])
-
-att[3*RCU:3*RCU+3]=Att
+print("Att old:",att[:12])
+for r in RCU:
+  att[3*r:3*r+3]=Att
 set_value(name+"_RW",att)
 
 time.sleep(0.5)
 att=get_value(name+"_R")
-print("Att new:",att[3*RCU:3*RCU+3])
+print("Att new:",att[:12])
 
 disconnect()
\ No newline at end of file
diff --git a/scripts/Band.py b/scripts/Band.py
new file mode 100644
index 0000000000000000000000000000000000000000..c4502783269cb5937749a4016a63878b301e6216
--- /dev/null
+++ b/scripts/Band.py
@@ -0,0 +1,20 @@
+from test_common import *
+
+name="RCU_band"
+RCU=3;
+Att=[3,3,3]
+
+
+setAntmask([RCU])
+
+att=get_value(name+"_R")
+print("Att old:",att[3*RCU:3*RCU+3])
+
+att[3*RCU:3*RCU+3]=Att
+set_value(name+"_RW",att)
+
+time.sleep(0.5)
+att=get_value(name+"_R")
+print("Att new:",att[3*RCU:3*RCU+3])
+
+disconnect()
\ No newline at end of file
diff --git a/scripts/LED.py b/scripts/LED.py
index acb861c3261c8feb0defd1dfbc1d3c399fc589b0..c4d882325cf9d3d547e1962b9701541a162cc143 100644
--- a/scripts/LED.py
+++ b/scripts/LED.py
@@ -2,7 +2,7 @@ from test_common import *
 
 name="RCU_LED0"
 RCU=0;
-LEDvalue=0;
+LEDvalue=2;
 
 setRCUmask([RCU])
 
diff --git a/scripts/RCUupdate.py b/scripts/RCUupdate.py
index bf9b5efa40220b1c820b93754aef7d18e5367c2c..3d9d5857a37a76a1f32c3853d5732dcc1456518a 100644
--- a/scripts/RCUupdate.py
+++ b/scripts/RCUupdate.py
@@ -1,6 +1,6 @@
 from test_common import *
 
-RCUs=[0,1,2,3];
+RCUs=[3];
 setRCUmask(RCUs)
 #for RCU in RCUs: 
 setAntmask(RCUs,[True,True,True])
diff --git a/scripts/SetHBAT_BF.py b/scripts/SetHBAT_BF.py
index 8c934f5c29931894c9de78a6c5a1c94ee3d8627b..9147882137cc238a7db4626624d62b243f1d10ff 100644
--- a/scripts/SetHBAT_BF.py
+++ b/scripts/SetHBAT_BF.py
@@ -16,7 +16,7 @@ i=(RCU*3+HBAT)*32
 val=get_value(name+"_R")
 print("old:",val[i:i+32])
 
-val[i:i+32]=np.array(range(32))[::]*0
+val[i:i+32]=np.array(range(32))[::]*0+1
 
 set_value(name+"_RW",val)
 time.sleep(1)
diff --git a/scripts/SetHBAT_pwr.py b/scripts/SetHBAT_pwr.py
index 3b5a105ccfdd86c8468b6cf37f8bc0f53207022e..f20d4cee1d054b52e32f39f34c4ac177fe227a65 100644
--- a/scripts/SetHBAT_pwr.py
+++ b/scripts/SetHBAT_pwr.py
@@ -26,15 +26,16 @@ set_value(name+"_RW",val)
 #print(busy)
 for x in range(10):
   busy=get_value("RCU_state_R")
-  print(busy)
+#  print(busy)
   if (busy=='busy'): break;
   time.sleep(0.05)
 while not(busy=='ready'):
   busy=get_value("RCU_state_R")
-  print(busy)
+#  print(busy)
   time.sleep(0.05)
 
 val=get_value(name+"_R")
 print("new:",val[i:i+32])
 
+
 disconnect()
diff --git a/scripts/SetHBAT_pwr_loop.py b/scripts/SetHBAT_pwr_loop.py
new file mode 100644
index 0000000000000000000000000000000000000000..6bae64c4a9fe3d204cf4dabdc87d87f1a0640c1b
--- /dev/null
+++ b/scripts/SetHBAT_pwr_loop.py
@@ -0,0 +1,62 @@
+RCU=3
+HBAT=1 #HBAT on RCU 0..2
+#HBA=5; #HBA Element in HBAT
+#BFX=11 #delay in 0.5ns
+#BFY=BFX+1
+name="HBA_element_pwr"
+
+from test_common import *
+import numpy as np
+
+AntMask=[(x==HBAT) for x in range(3)]
+setAntmask([RCU],AntMask)
+
+i=(RCU*3+HBAT)*32
+
+val=get_value(name+"_R")
+print("old:",val[i:i+32])
+
+for ii in range(10):
+ val[i:i+32]=np.ones([32])
+#val[i:i+32]=np.zeros([32])
+
+ set_value(name+"_RW",val)
+
+#time.sleep(0.5)
+#busy=get_value("RCU_state_R")
+#print(busy)
+ for x in range(10):
+  busy=get_value("RCU_state_R")
+#  print(busy)
+  if (busy=='busy'): break;
+  time.sleep(0.05)
+ while not(busy=='ready'):
+  busy=get_value("RCU_state_R")
+#  print(busy)
+  time.sleep(0.05)
+
+ val=get_value(name+"_R")
+ print("new:",val[i:i+32])
+
+#val[i:i+32]=np.ones([32])
+ val[i:i+32]=np.zeros([32])
+
+ set_value(name+"_RW",val)
+
+#time.sleep(0.5)
+#busy=get_value("RCU_state_R")
+#print(busy)
+ for x in range(10):
+  busy=get_value("RCU_state_R")
+#  print(busy)
+  if (busy=='busy'): break;
+  time.sleep(0.05)
+ while not(busy=='ready'):
+  busy=get_value("RCU_state_R")
+#  print(busy)
+  time.sleep(0.05)
+
+ val=get_value(name+"_R")
+ print("new:",val[i:i+32])
+
+disconnect()
diff --git a/scripts/SetMonitor.py b/scripts/SetMonitor.py
index fa97710d7db14ece16520288bb451e8a60d83b89..b303a5a94743d6c6e1a22c443214b6323133c37a 100644
--- a/scripts/SetMonitor.py
+++ b/scripts/SetMonitor.py
@@ -1,6 +1,6 @@
 from test_common import *
 
-rate= 60 #seconds
+rate= 10 #seconds
 name="RCU_monitor_rate_RW"
 
 print("old:",get_value(name))
diff --git a/scripts/i2clinetest.py b/scripts/i2clinetest.py
new file mode 100644
index 0000000000000000000000000000000000000000..eebbb0324564c823e275e0be738c45fc07fa6448
--- /dev/null
+++ b/scripts/i2clinetest.py
@@ -0,0 +1,17 @@
+#from gpiozero import LED,Button
+import RPi.GPIO as GPIO
+#SCL=3
+#SDA=2
+
+SCL=24
+SDA=23
+
+GPIO.setmode(GPIO.BCM)
+
+GPIO.setup(SDA,GPIO.IN)
+GPIO.setup(SCL,GPIO.IN)
+print("SDA ",GPIO.input(SDA))
+print("SCL ",GPIO.input(SCL))
+
+GPIO.cleanup()
+
diff --git a/scripts/i2creset.py b/scripts/i2creset.py
new file mode 100644
index 0000000000000000000000000000000000000000..2e992b0ff5d25b3c3538f4048f6b097689a95a9f
--- /dev/null
+++ b/scripts/i2creset.py
@@ -0,0 +1,43 @@
+#from gpiozero import LED,Button
+import RPi.GPIO as GPIO
+SCL=3
+SDA=2
+
+GPIO.setmode(GPIO.BCM)
+GPIO.setup(SDA,GPIO.IN)
+GPIO.setup(SCL,GPIO.IN)
+print("SDA=",GPIO.input(SDA))
+print("SCL=",GPIO.input(SCL))
+GPIO.cleanup()
+
+exit()
+GPIO.setmode(GPIO.BCM)
+print("Clock")
+GPIO.setup(SDA,GPIO.IN)
+GPIO.setup(SCL,GPIO.OUT)
+for x in range(10):
+  GPIO.output(SCL,0)
+  print("SDA=",GPIO.input(SDA))
+  GPIO.output(SCL,1)
+  print("SDA=",GPIO.input(SDA))
+
+print("STOP")
+#GPIO.setup(SCL,GPIO.OUT)
+GPIO.output(SCL,0)
+GPIO.setup(SDA,GPIO.OUT)
+GPIO.output(SDA,0)
+GPIO.output(SCL,1)
+GPIO.output(SDA,1)
+GPIO.setup(SDA,GPIO.IN)
+print("SDA=",GPIO.input(SDA))
+
+GPIO.cleanup()
+
+#SCL=LED(9)
+#SDA=Button(8)
+
+#if Button.is_pressed: print("High")
+#SCL.on()
+#SCL.off()
+
+
diff --git a/scripts/i2creset2.py b/scripts/i2creset2.py
new file mode 100644
index 0000000000000000000000000000000000000000..2ff714e32cb493d6beb6099a615cd86d9b8303e7
--- /dev/null
+++ b/scripts/i2creset2.py
@@ -0,0 +1,71 @@
+#from gpiozero import LED,Button
+import RPi.GPIO as GPIO
+SCL=3
+SDA=2
+Addr=0x70 #SWITCH
+#Addr=0x20 #io expander
+Value=0
+data=[(Addr<<1)+0,Value] #Write
+#data=[Addr<<1+1] #Read
+
+GPIO.setmode(GPIO.BCM)
+
+GPIO.setup(SDA,GPIO.IN)
+GPIO.setup(SCL,GPIO.IN)
+print("SDA high",GPIO.input(SDA)==1)
+print("SCL high",GPIO.input(SCL)==1)
+
+#GPIO.setup(SDA,GPIO.OUT)
+GPIO.setup(SCL,GPIO.OUT)
+
+#GPIO.output(SDA,1)
+GPIO.output(SCL,1)
+
+#Start
+#GPIO.output(SDA,0)
+GPIO.setup(SDA,GPIO.OUT)
+GPIO.output(SDA,0)
+GPIO.output(SCL,0)
+
+for b in data:
+ ba="{0:{fill}8b}".format(b,fill='0')
+ print("Sending",ba)
+ for bit in ba:
+   if int(bit)==0: 
+      GPIO.setup(SDA,GPIO.OUT)
+      GPIO.output(SDA,0)
+   else:
+      GPIO.setup(SDA,GPIO.IN)
+#   GPIO.output(SDA,int(bit))
+   GPIO.output(SCL,1)
+   GPIO.output(SCL,0)
+
+
+ GPIO.setup(SDA,GPIO.IN)
+# GPIO.output(SDA,0)
+# print("Ack",GPIO.input(SDA)==0)
+# GPIO.setup(SDA,GPIO.OUT)
+
+ #ack clock
+ GPIO.output(SCL,1)
+# GPIO.setup(SDA,GPIO.IN)
+ print("Ack",GPIO.input(SDA)==0)
+# GPIO.setup(SDA,GPIO.OUT)
+ GPIO.output(SCL,0)
+ print("Ack released",GPIO.input(SDA)==1)
+
+
+#Stop
+#GPIO.output(SDA,0)
+GPIO.setup(SDA,GPIO.OUT)
+GPIO.output(SDA,0)
+GPIO.output(SCL,1)
+GPIO.output(SDA,1)
+#GPIO.setup(SDA,GPIO.IN)
+
+GPIO.setup(SDA,GPIO.IN)
+GPIO.setup(SCL,GPIO.IN)
+print("SDA high",GPIO.input(SDA)==1)
+print("SCL high",GPIO.input(SCL)==1)
+GPIO.cleanup()
+
diff --git a/scripts/i2creset2b.py b/scripts/i2creset2b.py
new file mode 100644
index 0000000000000000000000000000000000000000..a41c4c209f05533f9af90e080a65e96befd94d70
--- /dev/null
+++ b/scripts/i2creset2b.py
@@ -0,0 +1,70 @@
+#from gpiozero import LED,Button
+import RPi.GPIO as GPIO
+SCL=3
+SDA=2
+Addr=0x70 #SWITCH
+#Addr=0x20 #io expander
+Value=0
+data=[(Addr<<1)+0,Value] #Write
+#data=[Addr<<1+1] #Read
+
+GPIO.setmode(GPIO.BCM)
+
+GPIO.setup(SDA,GPIO.IN)
+GPIO.setup(SCL,GPIO.IN)
+print("SDA high",GPIO.input(SDA)==1)
+print("SCL high",GPIO.input(SCL)==1)
+
+GPIO.setup(SDA,GPIO.OUT)
+GPIO.setup(SCL,GPIO.OUT)
+
+GPIO.output(SDA,1)
+GPIO.output(SCL,1)
+
+#Start
+#GPIO.output(SDA,0)
+#GPIO.setup(SDA,GPIO.OUT)
+GPIO.output(SDA,0)
+GPIO.output(SCL,0)
+
+for b in data:
+ ba="{0:{fill}8b}".format(b,fill='0')
+ print("Sending",ba)
+ for bit in ba:
+#   if int(bit)==0: 
+#      GPIO.setup(SDA,GPIO.OUT)
+#      GPIO.output(SDA,0)
+#   else:
+#      GPIO.setup(SDA,GPIO.IN)
+   GPIO.output(SDA,int(bit))
+   GPIO.output(SCL,1)
+   GPIO.output(SCL,0)
+
+
+ GPIO.setup(SDA,GPIO.IN)
+# GPIO.output(SDA,0)
+# print("Ack",GPIO.input(SDA)==0)
+# GPIO.setup(SDA,GPIO.OUT)
+
+ #ack clock
+ GPIO.output(SCL,1)
+# GPIO.setup(SDA,GPIO.IN)
+ print("Ack",GPIO.input(SDA)==0)
+ GPIO.output(SCL,0)
+ print("Ack released",GPIO.input(SDA)==1)
+ GPIO.setup(SDA,GPIO.OUT)
+
+#Stop
+#GPIO.output(SDA,0)
+#GPIO.setup(SDA,GPIO.OUT)
+GPIO.output(SDA,0)
+GPIO.output(SCL,1)
+GPIO.output(SDA,1)
+#GPIO.setup(SDA,GPIO.IN)
+
+GPIO.setup(SDA,GPIO.IN)
+GPIO.setup(SCL,GPIO.IN)
+print("SDA high",GPIO.input(SDA)==1)
+print("SCL high",GPIO.input(SCL)==1)
+GPIO.cleanup()
+
diff --git a/scripts/i2cresetCLK.py b/scripts/i2cresetCLK.py
new file mode 100644
index 0000000000000000000000000000000000000000..aa09dbbf67dbb500cc983044b0d7d5ff05721f5c
--- /dev/null
+++ b/scripts/i2cresetCLK.py
@@ -0,0 +1,70 @@
+#from gpiozero import LED,Button
+import RPi.GPIO as GPIO
+SCL=24
+SDA=23
+Addr=0x20 #SWITCH
+#Addr=0x20 #io expander
+Value=0
+data=[(Addr<<1)+0,Value] #Write
+#data=[Addr<<1+1] #Read
+
+GPIO.setmode(GPIO.BCM)
+
+GPIO.setup(SDA,GPIO.IN)
+GPIO.setup(SCL,GPIO.IN)
+print("SDA high",GPIO.input(SDA)==1)
+print("SCL high",GPIO.input(SCL)==1)
+
+GPIO.setup(SDA,GPIO.OUT)
+GPIO.setup(SCL,GPIO.OUT)
+
+GPIO.output(SDA,1)
+GPIO.output(SCL,1)
+
+#Start
+#GPIO.output(SDA,0)
+#GPIO.setup(SDA,GPIO.OUT)
+GPIO.output(SDA,0)
+GPIO.output(SCL,0)
+
+for b in data:
+ ba="{0:{fill}8b}".format(b,fill='0')
+ print("Sending",ba)
+ for bit in ba:
+#   if int(bit)==0: 
+#      GPIO.setup(SDA,GPIO.OUT)
+#      GPIO.output(SDA,0)
+#   else:
+#      GPIO.setup(SDA,GPIO.IN)
+   GPIO.output(SDA,int(bit))
+   GPIO.output(SCL,1)
+   GPIO.output(SCL,0)
+
+
+ GPIO.setup(SDA,GPIO.IN)
+# GPIO.output(SDA,0)
+# print("Ack",GPIO.input(SDA)==0)
+# GPIO.setup(SDA,GPIO.OUT)
+
+ #ack clock
+ GPIO.output(SCL,1)
+# GPIO.setup(SDA,GPIO.IN)
+ print("Ack",GPIO.input(SDA)==0)
+ GPIO.output(SCL,0)
+ print("Ack released",GPIO.input(SDA)==1)
+ GPIO.setup(SDA,GPIO.OUT)
+
+#Stop
+#GPIO.output(SDA,0)
+#GPIO.setup(SDA,GPIO.OUT)
+GPIO.output(SDA,0)
+GPIO.output(SCL,1)
+GPIO.output(SDA,1)
+#GPIO.setup(SDA,GPIO.IN)
+
+GPIO.setup(SDA,GPIO.IN)
+GPIO.setup(SCL,GPIO.IN)
+print("SDA high",GPIO.input(SDA)==1)
+print("SCL high",GPIO.input(SCL)==1)
+GPIO.cleanup()
+