diff --git a/rd_unb2c.py b/rd_unb2c.py
index 9dddf8b4634ac05a1f1e3c5985112c354afc91d3..b6441b9f53f328fb71dfbc85fcd7b421c130e25a 100644
--- a/rd_unb2c.py
+++ b/rd_unb2c.py
@@ -4,10 +4,14 @@ Read Hardware info form UNB2C
 
 import sys
 import time
-import os
 sys.path.insert(0,'.')
+import os
+if os.name =="posix":
+    from I2C_serial_pi import *
+else:
+    from I2C_serial import *
+
 from UniBoard2_I2C import *
-from I2C_serial_pi import *
 I2CBUSNR=3
 
 QSFP_PORT=[]
@@ -19,107 +23,127 @@ QSFP_PORT.append(0x40)
 QSFP_PORT.append(0x80)
 
 def rw_eeprom(value=0xAB):
-    I2C_eeprom = I2C(0x53, BUSNR=3)
-    I2C_eeprom.write_bytes(0x00, value)
-    I2C_eeprom.read_bytes(0x00,1)
-#    I2C_eeprom.write_pointer(0x00)
-#    ret_ack, ret_value = I2C_eeprom.read_last_reg(1)
-    if 0: #ret_ack:
-        stri = "EEPROM readback : {0} ".format(ret_value)
-        print(stri)
+    I2C_eeprom = I2C(0x53)
+    I2C_eeprom.bus = I2CBUSNR
+    ret_ack, ret_value = I2C_eeprom.read_bytes(0)
+    if ret_ack < 1:
+        print("no device found")
     else:
-        print("ACK nok")
+        I2C_eeprom.write_bytes(0x00, value)
+        ret_ack, ret_value = I2C_eeprom.read_bytes(0x00, 1)
+        stri = "Wrote to EEPROM: {0}, Read from EEPROM: {1} ".format(value, ret_value)
+        print(stri)
 
 def front_led(value=0xFF, ADDRESS=0x71):
-    main_switch = I2C(ADDRESS, BUSNR=I2CBUSNR)
-#    main_switch.bus = I2CBUSNR
+    main_switch = I2C(ADDRESS)
+    main_switch.bus = I2CBUSNR
     main_switch.write_pointer(0x20) #select LED
-    front = I2C(ADDRESS=0x41, BUSNR=I2CBUSNR)
-#    front.bus = I2CBUSNR
-    front.write_bytes(0x03, 0)
-    front.write_bytes(0x01, value)
-    sleep(0.5)
-    for cnt in range(6):
-        front.write_bytes(0x01, (1 << cnt%3)^0xff)
-        sleep(0.2)
-    front.write_bytes(0x01, 0)
-    sleep(0.2)
-    front.write_bytes(0x01, 0xf)
-
-
+    if ret_ack < 1:
+        print("Main I2C switch not found")
+    else:
+        front = I2C(ADDRESS=0x41)
+        front.bus = I2CBUSNR
+        front.write_bytes(0x03, 0)
+        if ret_ack < 1:
+            print("Front LED driver not found")
+        else:
+            front.write_bytes(0x01, value)
+            sleep(0.5)
+            for cnt in range(6):
+                front.write_bytes(0x01, (1 << cnt%3)^0xff)
+                sleep(0.2)
+            front.write_bytes(0x01, 0)
+            sleep(0.2)
+            front.write_bytes(0x01, 0xf)
 
 def read_pol(i2c_addr):
     LOC_PWR = I2C(i2c_addr)
     LOC_PWR.bus = I2CBUSNR
-    value=[]
-#    ret_ack,vout_mod = LOC_PWR.read_bytes(LP_VOUT_MODE, 1)
-#    ret_ack,ret_value = LOC_PWR.read_bytes(LP_VOUT, 2)
-#    stri = "POL readback {0} : ".format(ret_value)
-#    print(stri)
-#    vout = calc_lin_3bytes(ret_value, vout_mod)
-#    print("vout = ", vout)
-#    ret_ack,ret_value = LOC_PWR.read_bytes(LP_IOUT, 2)
-#    iout = calc_lin_2bytes(ret_value)
-#    print("Output Current :",iout)
-    ret_ack,ret_value = LOC_PWR.read_bytes(LP_temp, 2)
-    temp = calc_lin_2bytes(ret_value)
-    print("temperature :",temp)
+    ret_ack, ret_value = LOC_PWR.read_bytes(0)
+    if ret_ack < 1:
+        print("no device found")
+    else:
+        pr_stri = "Found device at address 0x{:02x}".format(LOC_PWR.I2C_Address)
+        print(pr_stri)
+        ret_ack,ret_value = LOC_PWR.read_bytes(LP_VOUT, 2)
+        vout = calc_lin_3bytes(ret_value, vout_mod)
+        print("read = ", vout_mod)
+        ret_ack,ret_value = LOC_PWR.read_bytes(LP_IOUT, 2)
+        iout = calc_lin_2bytes(ret_value)
+        print("Output Current :",iout)
+        ret_ack,ret_value = LOC_PWR.read_bytes(LP_temp, 2)
+        temp = calc_lin_2bytes(ret_value)
+        print("temperature :",temp)
 
 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
-    node_switch.write_pointer(0x10) #select DDR4
-    if module==0:
-        ddr_module = I2C(MB_I_TEMP_I2C_ADDR)
+    if ret_ack < 1:
+        print("Main I2C switch not found")
     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 len(raw_ret) < 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))
-        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)
+        node_switch = I2C(0x72)
+        node_switch.bus = I2CBUSNR
+        node_switch.write_pointer(0x10) #select DDR4
+        if ret_ack < 1:
+            print("Node I2C switch not found")
+        else:
+            if module==0:
+                ddr_module = I2C(MB_I_TEMP_I2C_ADDR)
+            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):
+                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))
+                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)
 
 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
-    node_switch.write_pointer(QSFP_PORT[module]) #select QSFP cage 1
-    QSFP_cage = I2C(QSFP_I2C_ADDR)
-    QSFP_cage.bus = I2CBUSNR
-    ret_ack, raw_ret = QSFP_cage.read_bytes(QSFP_TEMP, 2)
-    if len(raw_ret) < 1:
-        stri = "No QSFP module in slot {0} node  {1}".format(module, node_nr)
+    if ret_ack < 1:
+        print("Main I2C switch not found")
     else:
-        ret_value=[]
-        ret_value.append(int(raw_ret[0:2],16))
-        ret_value.append(int(raw_ret[2:4],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))
-        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)
-
+        node_switch = I2C(0x72)
+        node_switch.bus = I2CBUSNR
+        node_switch.write_pointer(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:
+                stri = "No QSFP module 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))
+                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))
+                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 0:
     rw_eeprom(0xCD)
 else:
-#    main_switch= I2C(0x71)
-#    main_switch.bus = I2CBUSNR
-#    node_switch = I2C(0x72)
-#    node_switch.bus = I2CBUSNR
-#    main_switch.write_pointer(0x20) #select LED
     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)
+    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)