diff --git a/I2C_serial_pi.py b/I2C_serial_pi.py
index 64a3f3f5af19d4134e0f9b9f36c58fbe889b98c4..6aaa3f5e84e50025927e29e38035072ea98e9328 100644
--- a/I2C_serial_pi.py
+++ b/I2C_serial_pi.py
@@ -83,6 +83,20 @@ class I2C:
                 print("Write error")
         return ret_ack
 
+    def write_register(self, register):
+        bus = smbus.SMBus(self.bus_nr)
+        try:
+            bus.write_i2c_block_data(self.I2C_Address, register, [])
+            ret_ack = 1
+            if SLOW:
+                sleep(0.3)
+        except IOError, err:
+            ret_ack = 0
+            ret_value = 0
+            if DEBUG:
+                print("Write error")
+        return ret_ack
+
     def write_pointer(self, register):
         bus = smbus.SMBus(self.bus_nr)
         try:
diff --git a/Setserial.sh b/Setserial.sh
new file mode 100644
index 0000000000000000000000000000000000000000..74a73fb92d54dc5a75660d474a0367845269fb87
--- /dev/null
+++ b/Setserial.sh
@@ -0,0 +1,5 @@
+python set_serial.py 5 "APSCT-1.0" 0
+python set_serial.py 5 "467" 32
+
+python set_serial.py 4 "APSPU-1.0" 0
+python set_serial.py 4 "467" 32
diff --git a/set_rcu2_via_PCC_serial.py b/set_rcu2_via_PCC_serial.py
new file mode 100644
index 0000000000000000000000000000000000000000..8f5b8ebadd07252bed7db35190d157d5011ac695
--- /dev/null
+++ b/set_rcu2_via_PCC_serial.py
@@ -0,0 +1,60 @@
+'''
+Set RCU2 version via PCC. RCU number from commandline
+
+'''
+import sys
+import time
+sys.path.insert(0,'.')
+import os
+if os.name == "posix":
+    from I2C_serial_pi import *
+else:
+    from I2C_serial import *
+
+sleep_time=0.05
+
+Nrcu=int(sys.argv[1]) if len(sys.argv)>1 else 0
+version=sys.argv[2] if len(sys.argv)>2 else ""
+
+
+EEPROM_ADDR = 0x50
+SWITCH_ADDR = 0x70
+I2CBUSNR = 1
+LEN=16
+REGISTER=0x20
+
+
+def set_switch(addr_switch, RCU_nr):
+    I2C_device = I2C(addr_switch, BUSNR=I2CBUSNR)
+    I2C_device.write_register(1 << RCU_nr)
+    ret_ack, ret_value = I2C_device.read_last_reg(1)
+    print(ret_value)
+
+
+def rw_eeprom(value):
+    I2C_eeprom = I2C(EEPROM_ADDR, BUSNR=I2CBUSNR)
+    if len(value)>0:
+       for i,v in enumerate(bytearray(value)):
+         print(i,hex(v))
+         I2C_eeprom.write_bytes(i+REGISTER,v)
+         sleep(0.1)
+       for i in range(len(value),LEN):
+         I2C_eeprom.write_bytes(i+REGISTER,0xff)
+         sleep(0.1)
+    v2=[]
+    sleep(0.1)
+    I2C_eeprom.write_register(REGISTER)
+    sleep(0.1)
+    ret_ack, ret_value = I2C_eeprom.read_last_reg(LEN)
+    if ret_ack:
+        stri = "EEPROM readback : {} ".format(ret_value)
+        print(stri)
+    else:
+        print("READBACK failed")
+
+if len(version)>LEN: version=version[:LEN]
+print("Set RCU number %i version to '%s'" % (Nrcu,version));
+
+set_switch(SWITCH_ADDR, Nrcu)
+rw_eeprom(version)
+
diff --git a/set_rcu2_via_PCC_version.py b/set_rcu2_via_PCC_version.py
new file mode 100644
index 0000000000000000000000000000000000000000..7fbdfde46f902e3d853af4bde6a924770b2e1b2a
--- /dev/null
+++ b/set_rcu2_via_PCC_version.py
@@ -0,0 +1,60 @@
+'''
+Set RCU2 version via PCC. RCU number from commandline
+
+'''
+import sys
+import time
+sys.path.insert(0,'.')
+import os
+if os.name == "posix":
+    from I2C_serial_pi import *
+else:
+    from I2C_serial import *
+
+sleep_time=0.05
+
+Nrcu=int(sys.argv[1]) if len(sys.argv)>1 else 0
+version=sys.argv[2] if len(sys.argv)>2 else ""
+
+
+EEPROM_ADDR = 0x50
+SWITCH_ADDR = 0x70
+I2CBUSNR = 1
+LEN=16
+
+
+
+def set_switch(addr_switch, RCU_nr):
+    I2C_device = I2C(addr_switch, BUSNR=I2CBUSNR)
+    I2C_device.write_register(1 << RCU_nr)
+    ret_ack, ret_value = I2C_device.read_last_reg(1)
+    print(ret_value)
+
+
+def rw_eeprom(value):
+    I2C_eeprom = I2C(EEPROM_ADDR, BUSNR=I2CBUSNR)
+    if len(value)>0:
+       for i,v in enumerate(bytearray(value)):
+         print(i,hex(v))
+         I2C_eeprom.write_bytes(i,v)
+         sleep(0.1)
+       for i in range(len(value),LEN):
+         I2C_eeprom.write_bytes(i,0xff)
+         sleep(0.1)
+    v2=[]
+    sleep(0.1)
+    I2C_eeprom.write_register(0)
+    sleep(0.1)
+    ret_ack, ret_value = I2C_eeprom.read_last_reg(LEN)
+    if ret_ack:
+        stri = "EEPROM readback : {} ".format(ret_value)
+        print(stri)
+    else:
+        print("READBACK failed")
+
+if len(version)>LEN: version=version[:LEN]
+print("Set RCU number %i version to '%s'" % (Nrcu,version));
+
+set_switch(SWITCH_ADDR, Nrcu)
+rw_eeprom(version)
+
diff --git a/set_serial.py b/set_serial.py
new file mode 100644
index 0000000000000000000000000000000000000000..c4b96b18935fe15fb2f7fe0429aa2cb7a935d3dd
--- /dev/null
+++ b/set_serial.py
@@ -0,0 +1,53 @@
+'''
+Set RCU2 version via PCC. RCU number from commandline
+
+'''
+import sys
+import time
+sys.path.insert(0,'.')
+import os
+if os.name == "posix":
+    from I2C_serial_pi import *
+else:
+    from I2C_serial import *
+
+sleep_time=0.05
+
+I2CBUSNR=int(sys.argv[1]) if len(sys.argv)>1 else 0
+version=sys.argv[2] if len(sys.argv)>2 else ""
+
+REGISTER=int(sys.argv[3]) if len(sys.argv)>3 else 0
+
+EEPROM_ADDR = 0x50
+#I2CBUSNR = 1
+LEN=16
+#REGISTER=0x20
+
+
+
+def rw_eeprom(value):
+    I2C_eeprom = I2C(EEPROM_ADDR, BUSNR=I2CBUSNR)
+    if len(value)>0:
+       for i,v in enumerate(bytearray(value)):
+         print(i,hex(v))
+         I2C_eeprom.write_bytes(i+REGISTER,v)
+         sleep(0.1)
+       for i in range(len(value),LEN):
+         I2C_eeprom.write_bytes(i+REGISTER,0xff)
+         sleep(0.1)
+    v2=[]
+    sleep(0.1)
+    I2C_eeprom.write_register(REGISTER)
+    sleep(0.1)
+    ret_ack, ret_value = I2C_eeprom.read_last_reg(LEN)
+    if ret_ack:
+        stri = "EEPROM readback : {} ".format(ret_value)
+        print(stri)
+    else:
+        print("READBACK failed")
+
+if len(version)>LEN: version=version[:LEN]
+print("Set I2C bus  %i: version= '%s'" % (I2CBUSNR,version));
+
+rw_eeprom(version)
+