diff --git a/I2C_serial_pi.py b/I2C_serial_pi.py
index 422b64689920c9860c0b4bdd7e6feed130d637b0..d3f72171b070478ba5ce2fa709d0dcf58c5d7140 100644
--- a/I2C_serial_pi.py
+++ b/I2C_serial_pi.py
@@ -35,7 +35,9 @@ class I2C:
         bus = smbus.SMBus(self.bus_nr)
         try:
             rd_value = bus.read_i2c_block_data(self.I2C_Address, register, bytes_to_read)
-            ret_value = hex(rd_value[0])[2:] 
+            ret_value = []
+            for cnt in range(bytes_to_read):
+                ret_value.append(hex(rd_value[cnt])[2:]) 
             ret_ack = 1
         except IOError, err:
             ret_ack = 0
@@ -64,11 +66,12 @@ class I2C:
         try:
             bus.write_i2c_block_data(self.I2C_Address, register, [data])
             ret_ack = 1
+            sleep(0.2)
         except IOError, err:
             ret_ack = 0
             ret_value = 0
             if DEBUG:
-                print("Reading error")
+                print("Write error")
         return ret_ack
 
     def write_pointer(self, register):
@@ -76,11 +79,12 @@ class I2C:
         try:
             ret_value = bus.read_i2c_block_data(self.I2C_Address, register, 1)
             ret_ack = 1
+            sleep(0.2)
         except IOError, err:
             ret_ack = 0
             ret_value = 0
             if DEBUG:
-                print("Reading error")
+                print("Write error")
         return ret_ack
 
 if __name__ == "__main__":
diff --git a/rd_unb2c.py b/rd_unb2c.py
index a1099b783cdd139a2dbb2f8f466da7f2b01f37d4..114cc1d1f4672f98c77ec3d8d14d4d189cf2000a 100644
--- a/rd_unb2c.py
+++ b/rd_unb2c.py
@@ -32,21 +32,20 @@ def rw_eeprom(value=0xAB):
     else:
         pr_stri = "Found device at address 0x{:02x}".format(I2C_eeprom.I2C_Address)
         print(pr_stri)
-#       ret_ack = I2C_eeprom.write_bytes(0x00, value)
-        value = []
+        ret_ack = I2C_eeprom.write_bytes(0x00, value)
+#        sleep(0.25)
         ret_ack, ret_value = I2C_eeprom.read_bytes(0x00, 1)
-        print("read = ", ret_value)
         stri = "Wrote to EEPROM: {0}, Read from EEPROM: {1} ".format(value, ret_value)
         print(stri)
 
 def front_led(value=0xFF):
     main_switch = I2C(0x71)
     main_switch.bus = I2CBUSNR
-    ret_ack = main_switch.write_pointer(0x20) #select LED
+    ret_ack = main_switch.write_bytes(0x20,0x20) #select LED
     if ret_ack < 1:
         print("Main I2C switch not found")
     else:
-        front = I2C(ADDRESS=0x41)
+        front = I2C(0x41)
         front.bus = I2CBUSNR
         ret_ack = front.write_bytes(0x03, 0)
         if ret_ack < 1:
@@ -83,13 +82,13 @@ def read_pol(i2c_addr):
 def read_ddr(node_nr = 0, module=0):
     main_switch = I2C(0x71)
     main_switch.bus = I2CBUSNR
-    main_switch.write_pointer(0x01<<node_nr) #select Node
+    ret_ack = main_switch.write_bytes(0x0, 0x01<<node_nr) #select Node
     if ret_ack < 1:
         print("Main I2C switch not found")
     else:
         node_switch = I2C(0x72)
         node_switch.bus = I2CBUSNR
-        node_switch.write_pointer(0x10) #select DDR4
+        ret_ack = node_switch.write_bytes(0x0, 0x10) #select DDR4
         if ret_ack < 1:
             print("Node I2C switch not found")
         else:
@@ -98,13 +97,13 @@ def read_ddr(node_nr = 0, module=0):
             else:
                 ddr_module = I2C(MB_II_TEMP_I2C_ADDR)
             ddr_module.bus = I2CBUSNR
-            ret_ack,raw_ret = ddr_module.read_bytes(MB_TEMP_REG, 2)
-            if (ret_ack < 1) | (len(raw_ret) < 1):
+            ret_ack, raw_ret = ddr_module.read_bytes(MB_TEMP_REG, 2)
+            if ret_ack < 1:
                 stri = "No DDR moduel in slot {0} node  {1}".format(module, node_nr)
             else:
                 ret_value=[]
-                ret_value.append(int(raw_ret[0:2],16))
-                ret_value.append(int(raw_ret[2:4],16))
+                ret_value.append(int(raw_ret[0],16))
+                ret_value.append(int(raw_ret[1],16))
                 temp = (((ret_value[0] & 0x1F) * 0x100) + (ret_value[1] & 0xFC)) * 0.0625
                 stri = "Temperature DDR4 in slot {0} node  {1} is {2:3.2f} C".format(module, node_nr, temp)
             print(stri)
@@ -112,43 +111,43 @@ def read_ddr(node_nr = 0, module=0):
 def read_qsfp(node_nr = 0, module=0):
     main_switch = I2C(0x71)
     main_switch.bus = I2CBUSNR
-    main_switch.write_pointer(0x01<<node_nr) #select Node
+    ret_ack = main_switch.write_bytes(0x00, 0x01<<node_nr) #select Node
     if ret_ack < 1:
         print("Main I2C switch not found")
     else:
         node_switch = I2C(0x72)
         node_switch.bus = I2CBUSNR
-        node_switch.write_pointer(QSFP_PORT[module]) #select QSFP cage 1
+        ret_ack = node_switch.write_bytes(0x0, QSFP_PORT[module]) #select QSFP cage 1
         if ret_ack < 1:
             print("Node I2C switch not found")
         else:
             QSFP_cage = I2C(QSFP_I2C_ADDR)
             QSFP_cage.bus = I2CBUSNR
             ret_ack, raw_ret = QSFP_cage.read_bytes(QSFP_TEMP, 2)
-            if ret_ack < 1:
+            if (ret_ack < 1) | (raw_ret[0]=='ff'):
                 stri = "No QSFP module in slot {0} node  {1}".format(module, node_nr)
+                print(stri)
             else:
                 ret_value=[]
-                ret_value.append(int(raw_ret[0:2],16))
-                ret_value.append(int(raw_ret[2:4],16))
+                ret_value.append(int(raw_ret[0],16))
+                ret_value.append(int(raw_ret[1],16))
                 temp_in_mod = (ret_value[0] * 256 + ret_value[1]) / 256
                 stri =  "Temperature QSFP in slot {0} node  {1} is {2:3.2f} gr. C".format(module, node_nr, temp_in_mod)
                 print(stri)
                 ret_ack, raw_ret = QSFP_cage.read_bytes(QSFP_VOLT, 2)
-                ret_value.append(int(raw_ret[0:2],16))
-                ret_value.append(int(raw_ret[2:4],16))
+                ret_value.append(int(raw_ret[0],16))
+                ret_value.append(int(raw_ret[1],16))
                 Power_in_mod = (ret_value[0] * 256 + ret_value[1]) * 0.0001
                 stri =  "Voltage QSFP in slot {0} node  {1} is {2:3.2f} V".format(module, node_nr, Power_in_mod)
                 print(stri)
 
-if 1:
+if 0:
     rw_eeprom(0xCD)
-else:
     front_led()
-    if 0:
-        for node_cnt in range(4):
-            for module_cnt in range(2):
-                read_ddr(node_nr=node_cnt,module=module_cnt)
-            for qsfp_cnt in range(6):
-                read_qsfp(node_nr = node_cnt, module=qsfp_cnt)
+else:
+    for node_cnt in range(4):
+        for module_cnt in range(2):
+            read_ddr(node_nr=node_cnt,module=module_cnt)
+        for qsfp_cnt in range(6):
+            read_qsfp(node_nr = node_cnt, module=qsfp_cnt)