diff --git a/devices/devices/apsct.py b/devices/devices/apsct.py
index c8b0cb0ad8843fc44fd6c3e298d3a6cfd15d6f5f..78a0626d8a12985d944c752e544aff93209373be 100644
--- a/devices/devices/apsct.py
+++ b/devices/devices/apsct.py
@@ -46,11 +46,14 @@ class APSCT(opcua_device):
     # Attributes
     # ----------
 
+    APSCTTR_I2C_error_R          = attribute_wrapper(comms_annotation=["APSCTTR_I2C_error_R"       ],datatype=numpy.int64  )
+    APSCTTR_monitor_rate_RW      = attribute_wrapper(comms_annotation=["APSCTTR_monitor_rate_RW"   ],datatype=numpy.int64  , access=AttrWriteType.READ_WRITE)
     APSCTTR_translator_busy_R    = attribute_wrapper(comms_annotation=["APSCTTR_translator_busy_R" ],datatype=numpy.bool_  )
-    APSCT_I2C_error_R            = attribute_wrapper(comms_annotation=["APSCT_I2C_error_R"         ],datatype=numpy.int64  )
-    APSCT_ID_R                   = attribute_wrapper(comms_annotation=["APSCT_ID_R"                ],datatype=numpy.int64  )
     APSCT_INPUT_10MHz_good_R     = attribute_wrapper(comms_annotation=["APSCT_INPUT_10MHz_good_R"  ],datatype=numpy.bool_  )
     APSCT_INPUT_PPS_good_R       = attribute_wrapper(comms_annotation=["APSCT_INPUT_PPS_good_R"    ],datatype=numpy.bool_  )
+    APSCT_PCB_ID_R               = attribute_wrapper(comms_annotation=["APSCT_PCB_ID_R"            ],datatype=numpy.int64  )
+    APSCT_PCB_number_R           = attribute_wrapper(comms_annotation=["APSCT_PCB_number_R"        ],datatype=numpy.str    )
+    APSCT_PCB_version_R          = attribute_wrapper(comms_annotation=["APSCT_PCB_version_R"       ],datatype=numpy.str    )
     APSCT_PLL_160MHz_error_R     = attribute_wrapper(comms_annotation=["APSCT_PLL_160MHz_error_R"  ],datatype=numpy.bool_  )
     APSCT_PLL_160MHz_locked_R    = attribute_wrapper(comms_annotation=["APSCT_PLL_160MHz_locked_R" ],datatype=numpy.bool_  )
     APSCT_PLL_200MHz_error_R     = attribute_wrapper(comms_annotation=["APSCT_PLL_200MHz_error_R"  ],datatype=numpy.bool_  )
@@ -67,8 +70,7 @@ class APSCT(opcua_device):
     APSCT_PWR_PLL_200MHz_3V3_R   = attribute_wrapper(comms_annotation=["APSCT_PWR_PLL_200MHz_3V3_R"],datatype=numpy.float64)
     APSCT_PWR_PLL_200MHz_on_R    = attribute_wrapper(comms_annotation=["APSCT_PWR_PLL_200MHz_on_R" ],datatype=numpy.bool_  )
     APSCT_PWR_PPSDIST_3V3_R      = attribute_wrapper(comms_annotation=["APSCT_PWR_PPSDIST_3V3_R"   ],datatype=numpy.float64)
-    APSCT_temperature_R          = attribute_wrapper(comms_annotation=["APSCT_temperature_R"       ],datatype=numpy.float64)
-    APSCT_version_R              = attribute_wrapper(comms_annotation=["APSCT_version_R"           ],datatype=numpy.str    )
+    APSCT_TEMP_R                 = attribute_wrapper(comms_annotation=["APSCT_TEMP_R"              ],datatype=numpy.float64)
 
     # --------
     # overloaded functions
diff --git a/devices/devices/apspu.py b/devices/devices/apspu.py
index cec9e56364a7c78d8938d0fb9241a840d1e0f95e..3daab9c071a73b75a4d28def984d4794d4aa7aef 100644
--- a/devices/devices/apspu.py
+++ b/devices/devices/apspu.py
@@ -43,22 +43,24 @@ class APSPU(opcua_device):
     # Attributes
     # ----------
 
+    APSPUTR_I2C_error_R          = attribute_wrapper(comms_annotation=["APSPUTR_I2C_error_R"       ],datatype=numpy.int64  )
+    APSPUTR_monitor_rate_RW      = attribute_wrapper(comms_annotation=["APSPUTR_monitor_rate_RW"   ],datatype=numpy.int64  , access=AttrWriteType.READ_WRITE)
     APSPUTR_translator_busy_R    = attribute_wrapper(comms_annotation=["APSPUTR_translator_busy_R" ],datatype=numpy.bool_  )
-    APSPU_FAN1_RMS_R             = attribute_wrapper(comms_annotation=["APSPU_FAN1_RMS_R"          ],datatype=numpy.float64)
-    APSPU_FAN2_RMS_R             = attribute_wrapper(comms_annotation=["APSPU_FAN2_RMS_R"          ],datatype=numpy.float64)
-    APSPU_FAN3_RMS_R             = attribute_wrapper(comms_annotation=["APSPU_FAN3_RMS_R"          ],datatype=numpy.float64)
-    APSPU_I2C_error_R            = attribute_wrapper(comms_annotation=["APSPU_I2C_error_R"         ],datatype=numpy.int64  )
-    APSPU_ID_R                   = attribute_wrapper(comms_annotation=["APSPU_ID_R"                ],datatype=numpy.int64  )
+    APSPU_FAN1_RPM_R             = attribute_wrapper(comms_annotation=["APSPU_FAN1_RPM_R"          ],datatype=numpy.float64)
+    APSPU_FAN2_RPM_R             = attribute_wrapper(comms_annotation=["APSPU_FAN2_RPM_R"          ],datatype=numpy.float64)
+    APSPU_FAN3_RPM_R             = attribute_wrapper(comms_annotation=["APSPU_FAN3_RPM_R"          ],datatype=numpy.float64)
     APSPU_LBA_IOUT_R             = attribute_wrapper(comms_annotation=["APSPU_LBA_IOUT_R"          ],datatype=numpy.float64)
     APSPU_LBA_TEMP_R             = attribute_wrapper(comms_annotation=["APSPU_LBA_TEMP_R"          ],datatype=numpy.float64)
     APSPU_LBA_VOUT_R             = attribute_wrapper(comms_annotation=["APSPU_LBA_VOUT_R"          ],datatype=numpy.float64)
+    APSPU_PCB_ID_R               = attribute_wrapper(comms_annotation=["APSPU_PCB_ID_R"            ],datatype=numpy.int64  )
+    APSPU_PCB_number_R           = attribute_wrapper(comms_annotation=["APSPU_PCB_number_R"        ],datatype=numpy.str    )
+    APSPU_PCB_version_R          = attribute_wrapper(comms_annotation=["APSPU_PCB_version_R"       ],datatype=numpy.str    )
     APSPU_RCU2A_IOUT_R           = attribute_wrapper(comms_annotation=["APSPU_RCU2A_IOUT_R"        ],datatype=numpy.float64)
     APSPU_RCU2A_TEMP_R           = attribute_wrapper(comms_annotation=["APSPU_RCU2A_TEMP_R"        ],datatype=numpy.float64)
     APSPU_RCU2A_VOUT_R           = attribute_wrapper(comms_annotation=["APSPU_RCU2A_VOUT_R"        ],datatype=numpy.float64)
     APSPU_RCU2D_IOUT_R           = attribute_wrapper(comms_annotation=["APSPU_RCU2D_IOUT_R"        ],datatype=numpy.float64)
     APSPU_RCU2D_TEMP_R           = attribute_wrapper(comms_annotation=["APSPU_RCU2D_TEMP_R"        ],datatype=numpy.float64)
     APSPU_RCU2D_VOUT_R           = attribute_wrapper(comms_annotation=["APSPU_RCU2D_VOUT_R"        ],datatype=numpy.float64)
-    APSPU_version_R              = attribute_wrapper(comms_annotation=["APSPU_version_R"           ],datatype=numpy.str    )
 
     # --------
     # overloaded functions
diff --git a/devices/devices/recv.py b/devices/devices/recv.py
index d180e955a56ee583a7a2fbc1a732d933c27acced..f67ea5967541188b90ce0f9973b0567f68921898 100644
--- a/devices/devices/recv.py
+++ b/devices/devices/recv.py
@@ -66,8 +66,8 @@ class RECV(opcua_device):
     Ant_status_R = attribute(dtype=str, max_dim_x=3, max_dim_y=32)
 
     ANT_mask_RW                  = attribute_wrapper(comms_annotation=["ANT_mask_RW"               ],datatype=numpy.bool_  , dims=(3,32), access=AttrWriteType.READ_WRITE)
-    HBAT_beamformer_delays_R     = attribute_wrapper(comms_annotation=["HBAT_beamformer_delays_R"  ],datatype=numpy.int64  , dims=(32,96))
-    HBAT_beamformer_delays_RW    = attribute_wrapper(comms_annotation=["HBAT_beamformer_delays_RW" ],datatype=numpy.int64  , dims=(32,96), access=AttrWriteType.READ_WRITE)
+    HBAT_BF_delays_R             = attribute_wrapper(comms_annotation=["HBAT_BF_delays_R"          ],datatype=numpy.int64  , dims=(32,96))
+    HBAT_BF_delays_RW            = attribute_wrapper(comms_annotation=["HBAT_BF_delays_RW"         ],datatype=numpy.int64  , dims=(32,96), access=AttrWriteType.READ_WRITE)
     HBAT_LED_on_R                = attribute_wrapper(comms_annotation=["HBAT_LED_on_R"             ],datatype=numpy.bool_  , dims=(32,96))
     HBAT_LED_on_RW               = attribute_wrapper(comms_annotation=["HBAT_LED_on_RW"            ],datatype=numpy.bool_  , dims=(32,96), access=AttrWriteType.READ_WRITE)
     HBAT_PWR_LNA_on_R            = attribute_wrapper(comms_annotation=["HBAT_PWR_LNA_on_R"         ],datatype=numpy.bool_  , dims=(32,96))
@@ -82,14 +82,14 @@ class RECV(opcua_device):
     RCU_DTH_freq_R               = attribute_wrapper(comms_annotation=["RCU_DTH_freq_R"            ],datatype=numpy.int64  , dims=(3,32))
     RCU_DTH_freq_RW              = attribute_wrapper(comms_annotation=["RCU_DTH_freq_RW"           ],datatype=numpy.int64  , dims=(3,32), access=AttrWriteType.READ_WRITE)
     RCU_DTH_on_R                 = attribute_wrapper(comms_annotation=["RCU_DTH_on_R"              ],datatype=numpy.bool_  , dims=(3,32))
-    RCU_DTH_shutdown_R           = attribute_wrapper(comms_annotation=["RCU_DTH_shutdown_R"        ],datatype=numpy.bool_  , dims=(3,32))
-    RCU_I2C_error_R              = attribute_wrapper(comms_annotation=["RCU_I2C_error_R"           ],datatype=numpy.int64  , dims=(32,))
-    RCU_ID_R                     = attribute_wrapper(comms_annotation=["RCU_ID_R"                  ],datatype=numpy.int64  , dims=(32,))
-    RCU_LED_green_off_R          = attribute_wrapper(comms_annotation=["RCU_LED_green_off_R"       ],datatype=numpy.bool_  , dims=(32,))
-    RCU_LED_green_off_RW         = attribute_wrapper(comms_annotation=["RCU_LED_green_off_RW"      ],datatype=numpy.bool_  , dims=(32,), access=AttrWriteType.READ_WRITE)
-    RCU_LED_red_off_R            = attribute_wrapper(comms_annotation=["RCU_LED_red_off_R"         ],datatype=numpy.bool_  , dims=(32,))
-    RCU_LED_red_off_RW           = attribute_wrapper(comms_annotation=["RCU_LED_red_off_RW"        ],datatype=numpy.bool_  , dims=(32,), access=AttrWriteType.READ_WRITE)
+    RCU_LED_green_on_R           = attribute_wrapper(comms_annotation=["RCU_LED_green_on_R"        ],datatype=numpy.bool_  , dims=(32,))
+    RCU_LED_green_on_RW          = attribute_wrapper(comms_annotation=["RCU_LED_green_on_RW"       ],datatype=numpy.bool_  , dims=(32,), access=AttrWriteType.READ_WRITE)
+    RCU_LED_red_on_R             = attribute_wrapper(comms_annotation=["RCU_LED_red_on_R"          ],datatype=numpy.bool_  , dims=(32,))
+    RCU_LED_red_on_RW            = attribute_wrapper(comms_annotation=["RCU_LED_red_on_RW"         ],datatype=numpy.bool_  , dims=(32,), access=AttrWriteType.READ_WRITE)
     RCU_mask_RW                  = attribute_wrapper(comms_annotation=["RCU_mask_RW"               ],datatype=numpy.bool_  , dims=(32,), access=AttrWriteType.READ_WRITE)
+    RCU_PCB_ID_R                 = attribute_wrapper(comms_annotation=["RCU_PCB_ID_R"              ],datatype=numpy.int64  , dims=(32,))
+    RCU_PCB_number_R             = attribute_wrapper(comms_annotation=["RCU_PCB_number_R"          ],datatype=numpy.str    , dims=(32,))
+    RCU_PCB_version_R            = attribute_wrapper(comms_annotation=["RCU_PCB_version_R"         ],datatype=numpy.str    , dims=(32,))
     RCU_PWR_1V8_R                = attribute_wrapper(comms_annotation=["RCU_PWR_1V8_R"             ],datatype=numpy.float64, dims=(32,))
     RCU_PWR_2V5_R                = attribute_wrapper(comms_annotation=["RCU_PWR_2V5_R"             ],datatype=numpy.float64, dims=(32,))
     RCU_PWR_3V3_R                = attribute_wrapper(comms_annotation=["RCU_PWR_3V3_R"             ],datatype=numpy.float64, dims=(32,))
@@ -101,8 +101,9 @@ class RECV(opcua_device):
     RCU_PWR_ANT_VOUT_R           = attribute_wrapper(comms_annotation=["RCU_PWR_ANT_VOUT_R"        ],datatype=numpy.float64, dims=(3,32))
     RCU_PWR_DIGITAL_on_R         = attribute_wrapper(comms_annotation=["RCU_PWR_DIGITAL_on_R"      ],datatype=numpy.bool_  , dims=(32,))
     RCU_PWR_good_R               = attribute_wrapper(comms_annotation=["RCU_PWR_good_R"            ],datatype=numpy.bool_  , dims=(32,))
-    RCU_temperature_R            = attribute_wrapper(comms_annotation=["RCU_temperature_R"         ],datatype=numpy.float64, dims=(32,))
-    RCU_version_R                = attribute_wrapper(comms_annotation=["RCU_version_R"             ],datatype=numpy.str    , dims=(32,))
+    RCU_TEMP_R                   = attribute_wrapper(comms_annotation=["RCU_TEMP_R"                ],datatype=numpy.float64, dims=(32,))
+    RECVTR_I2C_error_R           = attribute_wrapper(comms_annotation=["RECVTR_I2C_error_R"        ],datatype=numpy.int64  , dims=(32,))
+    RECVTR_monitor_rate_RW       = attribute_wrapper(comms_annotation=["RECVTR_monitor_rate_RW"    ],datatype=numpy.int64  , access=AttrWriteType.READ_WRITE)
     RECVTR_translator_busy_R     = attribute_wrapper(comms_annotation=["RECVTR_translator_busy_R"  ],datatype=numpy.bool_  )
 
     # --------
diff --git a/devices/devices/unb2.py b/devices/devices/unb2.py
index bad1b1a324c9c838960d07cdfeb804b2789bbac6..131ffd5705daf24a5f2d3799570faaf4d6e9e6de 100644
--- a/devices/devices/unb2.py
+++ b/devices/devices/unb2.py
@@ -64,42 +64,44 @@ class UNB2(opcua_device):
         'UNB2_mask_RW'
     ]
 
+    UNB2TR_I2C_bus_DDR4_error_R  = attribute_wrapper(comms_annotation=["UNB2TR_I2C_bus_DDR4_error_R"],datatype=numpy.int64  , dims=(2,4))
+    UNB2TR_I2C_bus_error_R       = attribute_wrapper(comms_annotation=["UNB2TR_I2C_bus_error_R"    ],datatype=numpy.int64  , dims=(2,))
+    UNB2TR_I2C_bus_FPGA_PS_error_R = attribute_wrapper(comms_annotation=["UNB2TR_I2C_bus_FPGA_PS_error_R"],datatype=numpy.int64  , dims=(2,4))
+    UNB2TR_I2C_bus_PS_error_R    = attribute_wrapper(comms_annotation=["UNB2TR_I2C_bus_PS_error_R" ],datatype=numpy.int64  , dims=(2,))
+    UNB2TR_I2C_bus_QSFP_error_R  = attribute_wrapper(comms_annotation=["UNB2TR_I2C_bus_QSFP_error_R"],datatype=numpy.int64  , dims=(2,24))
+    UNB2TR_monitor_rate_RW       = attribute_wrapper(comms_annotation=["UNB2TR_monitor_rate_RW"    ],datatype=numpy.int64  , access=AttrWriteType.READ_WRITE)
     UNB2TR_translator_busy_R     = attribute_wrapper(comms_annotation=["UNB2TR_translator_busy_R"  ],datatype=numpy.bool_  )
     UNB2_DC_DC_48V_12V_IOUT_R    = attribute_wrapper(comms_annotation=["UNB2_DC_DC_48V_12V_IOUT_R" ],datatype=numpy.float64, dims=(2,))
     UNB2_DC_DC_48V_12V_TEMP_R    = attribute_wrapper(comms_annotation=["UNB2_DC_DC_48V_12V_TEMP_R" ],datatype=numpy.float64, dims=(2,))
     UNB2_DC_DC_48V_12V_VIN_R     = attribute_wrapper(comms_annotation=["UNB2_DC_DC_48V_12V_VIN_R"  ],datatype=numpy.float64, dims=(2,))
     UNB2_DC_DC_48V_12V_VOUT_R    = attribute_wrapper(comms_annotation=["UNB2_DC_DC_48V_12V_VOUT_R" ],datatype=numpy.float64, dims=(2,))
-    UNB2_EEPROM_Serial_Number_R  = attribute_wrapper(comms_annotation=["UNB2_EEPROM_Serial_Number_R"],datatype=numpy.str    , dims=(2,))
-    UNB2_EEPROM_Unique_ID_R      = attribute_wrapper(comms_annotation=["UNB2_EEPROM_Unique_ID_R"   ],datatype=numpy.int64  , dims=(2,))
-    UNB2_FPGA_DDR4_SLOT_TEMP_R   = attribute_wrapper(comms_annotation=["UNB2_FPGA_DDR4_SLOT_TEMP_R"],datatype=numpy.float64, dims=(16,))
-    UNB2_FPGA_POL_CORE_IOUT_R    = attribute_wrapper(comms_annotation=["UNB2_FPGA_POL_CORE_IOUT_R" ],datatype=numpy.float64, dims=(8,))
-    UNB2_FPGA_POL_CORE_TEMP_R    = attribute_wrapper(comms_annotation=["UNB2_FPGA_POL_CORE_TEMP_R" ],datatype=numpy.float64, dims=(8,))
-    UNB2_FPGA_POL_CORE_VOUT_R    = attribute_wrapper(comms_annotation=["UNB2_FPGA_POL_CORE_VOUT_R" ],datatype=numpy.float64, dims=(8,))
-    UNB2_FPGA_POL_ERAM_IOUT_R    = attribute_wrapper(comms_annotation=["UNB2_FPGA_POL_ERAM_IOUT_R" ],datatype=numpy.float64, dims=(8,))
-    UNB2_FPGA_POL_ERAM_TEMP_R    = attribute_wrapper(comms_annotation=["UNB2_FPGA_POL_ERAM_TEMP_R" ],datatype=numpy.float64, dims=(8,))
-    UNB2_FPGA_POL_ERAM_VOUT_R    = attribute_wrapper(comms_annotation=["UNB2_FPGA_POL_ERAM_VOUT_R" ],datatype=numpy.float64, dims=(8,))
-    UNB2_FPGA_POL_HGXB_IOUT_R    = attribute_wrapper(comms_annotation=["UNB2_FPGA_POL_HGXB_IOUT_R" ],datatype=numpy.float64, dims=(8,))
-    UNB2_FPGA_POL_HGXB_TEMP_R    = attribute_wrapper(comms_annotation=["UNB2_FPGA_POL_HGXB_TEMP_R" ],datatype=numpy.float64, dims=(8,))
-    UNB2_FPGA_POL_HGXB_VOUT_R    = attribute_wrapper(comms_annotation=["UNB2_FPGA_POL_HGXB_VOUT_R" ],datatype=numpy.float64, dims=(8,))
-    UNB2_FPGA_POL_PGM_IOUT_R     = attribute_wrapper(comms_annotation=["UNB2_FPGA_POL_PGM_IOUT_R"  ],datatype=numpy.float64, dims=(8,))
-    UNB2_FPGA_POL_PGM_TEMP_R     = attribute_wrapper(comms_annotation=["UNB2_FPGA_POL_PGM_TEMP_R"  ],datatype=numpy.float64, dims=(8,))
-    UNB2_FPGA_POL_PGM_VOUT_R     = attribute_wrapper(comms_annotation=["UNB2_FPGA_POL_PGM_VOUT_R"  ],datatype=numpy.float64, dims=(8,))
-    UNB2_FPGA_POL_RXGXB_IOUT_R   = attribute_wrapper(comms_annotation=["UNB2_FPGA_POL_RXGXB_IOUT_R"],datatype=numpy.float64, dims=(8,))
-    UNB2_FPGA_POL_RXGXB_TEMP_R   = attribute_wrapper(comms_annotation=["UNB2_FPGA_POL_RXGXB_TEMP_R"],datatype=numpy.float64, dims=(8,))
-    UNB2_FPGA_POL_RXGXB_VOUT_R   = attribute_wrapper(comms_annotation=["UNB2_FPGA_POL_RXGXB_VOUT_R"],datatype=numpy.float64, dims=(8,))
-    UNB2_FPGA_POL_TXGXB_IOUT_R   = attribute_wrapper(comms_annotation=["UNB2_FPGA_POL_TXGXB_IOUT_R"],datatype=numpy.float64, dims=(8,))
-    UNB2_FPGA_POL_TXGXB_TEMP_R   = attribute_wrapper(comms_annotation=["UNB2_FPGA_POL_TXGXB_TEMP_R"],datatype=numpy.float64, dims=(8,))
-    UNB2_FPGA_POL_TXGXB_VOUT_R   = attribute_wrapper(comms_annotation=["UNB2_FPGA_POL_TXGXB_VOUT_R"],datatype=numpy.float64, dims=(8,))
-    UNB2_FPGA_QSFP_CAGE_LOS_R    = attribute_wrapper(comms_annotation=["UNB2_FPGA_QSFP_CAGE_LOS_R" ],datatype=numpy.int64  , dims=(48,))
-    UNB2_FPGA_QSFP_CAGE_TEMP_R   = attribute_wrapper(comms_annotation=["UNB2_FPGA_QSFP_CAGE_TEMP_R"],datatype=numpy.float64, dims=(48,))
-    UNB2_Front_Panel_LED_R       = attribute_wrapper(comms_annotation=["UNB2_Front_Panel_LED_R"    ],datatype=numpy.int64  , dims=(2,))
-    UNB2_Front_Panel_LED_RW      = attribute_wrapper(comms_annotation=["UNB2_Front_Panel_LED_RW"   ],datatype=numpy.int64  , dims=(2,), access=AttrWriteType.READ_WRITE)
-    UNB2_I2C_bus_DDR4_error_R    = attribute_wrapper(comms_annotation=["UNB2_I2C_bus_DDR4_error_R" ],datatype=numpy.int64  , dims=(8,))
-    UNB2_I2C_bus_error_R         = attribute_wrapper(comms_annotation=["UNB2_I2C_bus_error_R"      ],datatype=numpy.int64  , dims=(2,))
-    UNB2_I2C_bus_FPGA_PS_error_R = attribute_wrapper(comms_annotation=["UNB2_I2C_bus_FPGA_PS_error_R"],datatype=numpy.int64  , dims=(8,))
-    UNB2_I2C_bus_PS_error_R      = attribute_wrapper(comms_annotation=["UNB2_I2C_bus_PS_error_R"   ],datatype=numpy.int64  , dims=(2,))
-    UNB2_I2C_bus_QSFP_error_R    = attribute_wrapper(comms_annotation=["UNB2_I2C_bus_QSFP_error_R" ],datatype=numpy.int64  , dims=(48,))
+    UNB2_FPGA_DDR4_SLOT_TEMP_R   = attribute_wrapper(comms_annotation=["UNB2_FPGA_DDR4_SLOT_TEMP_R"],datatype=numpy.float64, dims=(2,8))
+    UNB2_FPGA_POL_CORE_IOUT_R    = attribute_wrapper(comms_annotation=["UNB2_FPGA_POL_CORE_IOUT_R" ],datatype=numpy.float64, dims=(2,4))
+    UNB2_FPGA_POL_CORE_TEMP_R    = attribute_wrapper(comms_annotation=["UNB2_FPGA_POL_CORE_TEMP_R" ],datatype=numpy.float64, dims=(2,4))
+    UNB2_FPGA_POL_CORE_VOUT_R    = attribute_wrapper(comms_annotation=["UNB2_FPGA_POL_CORE_VOUT_R" ],datatype=numpy.float64, dims=(2,4))
+    UNB2_FPGA_POL_ERAM_IOUT_R    = attribute_wrapper(comms_annotation=["UNB2_FPGA_POL_ERAM_IOUT_R" ],datatype=numpy.float64, dims=(2,4))
+    UNB2_FPGA_POL_ERAM_TEMP_R    = attribute_wrapper(comms_annotation=["UNB2_FPGA_POL_ERAM_TEMP_R" ],datatype=numpy.float64, dims=(2,4))
+    UNB2_FPGA_POL_ERAM_VOUT_R    = attribute_wrapper(comms_annotation=["UNB2_FPGA_POL_ERAM_VOUT_R" ],datatype=numpy.float64, dims=(2,4))
+    UNB2_FPGA_POL_HGXB_IOUT_R    = attribute_wrapper(comms_annotation=["UNB2_FPGA_POL_HGXB_IOUT_R" ],datatype=numpy.float64, dims=(2,4))
+    UNB2_FPGA_POL_HGXB_TEMP_R    = attribute_wrapper(comms_annotation=["UNB2_FPGA_POL_HGXB_TEMP_R" ],datatype=numpy.float64, dims=(2,4))
+    UNB2_FPGA_POL_HGXB_VOUT_R    = attribute_wrapper(comms_annotation=["UNB2_FPGA_POL_HGXB_VOUT_R" ],datatype=numpy.float64, dims=(2,4))
+    UNB2_FPGA_POL_PGM_IOUT_R     = attribute_wrapper(comms_annotation=["UNB2_FPGA_POL_PGM_IOUT_R"  ],datatype=numpy.float64, dims=(2,4))
+    UNB2_FPGA_POL_PGM_TEMP_R     = attribute_wrapper(comms_annotation=["UNB2_FPGA_POL_PGM_TEMP_R"  ],datatype=numpy.float64, dims=(2,4))
+    UNB2_FPGA_POL_PGM_VOUT_R     = attribute_wrapper(comms_annotation=["UNB2_FPGA_POL_PGM_VOUT_R"  ],datatype=numpy.float64, dims=(2,4))
+    UNB2_FPGA_POL_RXGXB_IOUT_R   = attribute_wrapper(comms_annotation=["UNB2_FPGA_POL_RXGXB_IOUT_R"],datatype=numpy.float64, dims=(2,4))
+    UNB2_FPGA_POL_RXGXB_TEMP_R   = attribute_wrapper(comms_annotation=["UNB2_FPGA_POL_RXGXB_TEMP_R"],datatype=numpy.float64, dims=(2,4))
+    UNB2_FPGA_POL_RXGXB_VOUT_R   = attribute_wrapper(comms_annotation=["UNB2_FPGA_POL_RXGXB_VOUT_R"],datatype=numpy.float64, dims=(2,4))
+    UNB2_FPGA_POL_TXGXB_IOUT_R   = attribute_wrapper(comms_annotation=["UNB2_FPGA_POL_TXGXB_IOUT_R"],datatype=numpy.float64, dims=(2,4))
+    UNB2_FPGA_POL_TXGXB_TEMP_R   = attribute_wrapper(comms_annotation=["UNB2_FPGA_POL_TXGXB_TEMP_R"],datatype=numpy.float64, dims=(2,4))
+    UNB2_FPGA_POL_TXGXB_VOUT_R   = attribute_wrapper(comms_annotation=["UNB2_FPGA_POL_TXGXB_VOUT_R"],datatype=numpy.float64, dims=(2,4))
+    UNB2_FPGA_QSFP_CAGE_LOS_R    = attribute_wrapper(comms_annotation=["UNB2_FPGA_QSFP_CAGE_LOS_R" ],datatype=numpy.int64  , dims=(2,24))
+    UNB2_FPGA_QSFP_CAGE_TEMP_R   = attribute_wrapper(comms_annotation=["UNB2_FPGA_QSFP_CAGE_TEMP_R"],datatype=numpy.float64, dims=(2,24))
+    UNB2_Front_Panel_LED_colour_R = attribute_wrapper(comms_annotation=["UNB2_Front_Panel_LED_colour_R"],datatype=numpy.int64  , dims=(2,))
+    UNB2_Front_Panel_LED_colour_RW = attribute_wrapper(comms_annotation=["UNB2_Front_Panel_LED_colour_RW"],datatype=numpy.int64  , dims=(2,), access=AttrWriteType.READ_WRITE)
     UNB2_mask_RW                 = attribute_wrapper(comms_annotation=["UNB2_mask_RW"              ],datatype=numpy.bool_  , dims=(2,), access=AttrWriteType.READ_WRITE)
+    UNB2_PCB_ID_R                = attribute_wrapper(comms_annotation=["UNB2_PCB_ID_R"             ],datatype=numpy.int64  , dims=(2,))
+    UNB2_PCB_number_R            = attribute_wrapper(comms_annotation=["UNB2_PCB_number_R"         ],datatype=numpy.str    , dims=(2,))
+    UNB2_PCB_version_R           = attribute_wrapper(comms_annotation=["UNB2_PCB_version_R"        ],datatype=numpy.str    , dims=(2,))
     UNB2_POL_CLOCK_IOUT_R        = attribute_wrapper(comms_annotation=["UNB2_POL_CLOCK_IOUT_R"     ],datatype=numpy.float64, dims=(2,))
     UNB2_POL_CLOCK_TEMP_R        = attribute_wrapper(comms_annotation=["UNB2_POL_CLOCK_TEMP_R"     ],datatype=numpy.float64, dims=(2,))
     UNB2_POL_CLOCK_VOUT_R        = attribute_wrapper(comms_annotation=["UNB2_POL_CLOCK_VOUT_R"     ],datatype=numpy.float64, dims=(2,))
@@ -115,8 +117,7 @@ class UNB2(opcua_device):
     UNB2_POL_SWITCH_PHY_IOUT_R   = attribute_wrapper(comms_annotation=["UNB2_POL_SWITCH_PHY_IOUT_R"],datatype=numpy.float64, dims=(2,))
     UNB2_POL_SWITCH_PHY_TEMP_R   = attribute_wrapper(comms_annotation=["UNB2_POL_SWITCH_PHY_TEMP_R"],datatype=numpy.float64, dims=(2,))
     UNB2_POL_SWITCH_PHY_VOUT_R   = attribute_wrapper(comms_annotation=["UNB2_POL_SWITCH_PHY_VOUT_R"],datatype=numpy.float64, dims=(2,))
-    UNB2_PWR_off_R               = attribute_wrapper(comms_annotation=["UNB2_PWR_off_R"            ],datatype=numpy.bool_  , dims=(2,))
-    UNB2_PWR_off_RW              = attribute_wrapper(comms_annotation=["UNB2_PWR_off_RW"           ],datatype=numpy.bool_  , dims=(2,), access=AttrWriteType.READ_WRITE)
+    UNB2_PWR_on_R                = attribute_wrapper(comms_annotation=["UNB2_PWR_on_R"             ],datatype=numpy.bool_  , dims=(2,))
 
     # --------
     # overloaded functions