diff --git a/config/RECVTR_HB.yaml b/config/RECVTR_HB.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..9e809b5803c5255222aaee297799aa8ecefbe2d1
--- /dev/null
+++ b/config/RECVTR_HB.yaml
@@ -0,0 +1,796 @@
+version: "1.0"
+description: "1234"
+
+drivers:
+ - name: I2C1 #TCA9548
+   type: i2c_switch
+   devreg: [0x70,0x71,0x72,0x73]
+   parameters: [1] #I2C port number
+ - name: I2C_RCU 
+   type: i2c_array #An array of similar devices connected to an I2C switch
+   parent: I2C1
+   parameters: [20,22,0,2,4,6,10,12,14,16,18,24,26,28,30,8,7,5,3,1,23,21,19,13,11,9,15,17,31,29,27,25] #RCU lookup table 
+   I2Ccut: 5 #error count to disable I2C (14 for LTS?)
+   status: RECVTR_I2C_error
+ - name: I2C_HBAT
+   type: hba1 #Special driver to manage HBAT1s.
+   parent: I2C_RCU
+   devreg: [0x40.0x10] #I2C broadcast register
+   parameters: [15] #PPS GPIO pin
+ - name: I2Cbb1 
+   type: i2cbitbang1 #I2C bitbang via GPIO expander
+   devreg: [IO3.GPIO2,IO3.GPIO2,IO3.CONF2]
+   parameters: [5,6,6] #pins
+   parent: I2C_RCU
+ - name: I2Cbb2
+   type: i2cbitbang1
+   devreg: [IO3.GPIO2,IO3.GPIO2,IO3.CONF2]
+   parameters: [4,6,6]
+   parent: I2C_RCU
+ - name: I2Cbb3
+   type: i2cbitbang1
+   devreg: [IO3.GPIO2,IO3.GPIO2,IO3.CONF2]
+   parameters: [3,6,6]
+   parent: I2C_RCU
+ - name: SPIbb1 
+   type: spibitbang1 #SPI bitbang via GPIO expander: CLK, SDIO, SDIOdir,CS
+   devreg: [IO3.GPIO1,IO3.GPIO1,IO3.CONF1,IO3.GPIO2]
+   parameters: [1,0,0,0]
+   parent: I2C_RCU
+ - name: SPIbb2
+   type: spibitbang1
+   devreg: [IO3.GPIO1,IO3.GPIO1,IO3.CONF1,IO3.GPIO2]
+   parameters: [3,2,2,1]
+   parent: I2C_RCU
+ - name: SPIbb3
+   type: spibitbang1
+   devreg: [IO3.GPIO1,IO3.GPIO1,IO3.CONF1,IO3.GPIO2]
+   parameters: [5,4,4,2]
+   parent: I2C_RCU
+# - name: HBA_trigger
+#   type: gpio_hba_trigger
+#   parameters: [15] #PPS GPIO pin
+#   devreg: [0x40.0x10] #I2C broadcast register
+#   parent: I2C_RCU
+
+#This is the I2C devices in the RCU
+device_registers:
+ - name: IO
+   dim: 4
+   description: [IO-Expander for filter selection,IO-Expander for ON/OFF, Band, BUFx2,IO-Expander for ADC control]
+   address: [0x75,0x76,0x20,0x77]
+   device: [TCA9539,TCA9539,TCA6416,TCA9539]
+   driver: I2C1
+   registers:
+   - name: CONF1
+     description: Direction of port1
+     address: 6
+     store: True
+   - name: CONF2
+     description: Direction of port2
+     address: 7
+     store: True
+   - name: GPIO1
+     description: Input/Ouput port 1
+     address: [0,2]  #Read / Write address different
+     store: True
+   - name: GPIO2
+     description: Input/Ouput port 2
+     address: [1,3]
+     store: True
+
+ - name: ROM
+   description: IO-Expander for filter selection
+   address: 0x50
+   driver: I2C1
+   registers:
+   - name: ID
+     description: Random
+     address: 0xfc
+   - name: Version
+     description: Set in production
+     address: 0
+   - name: Serial
+     address: 0x20
+ 
+ - name: AN
+   description: Monitor ADC on RCU
+   address: 0x74 #was 0x14 on RCU2-DIG PCBs
+   device: LTC2495
+   driver: I2C1
+   registers:
+   - name: V_1v8
+     address: 0xB080
+   - name: V_2v5
+     address: 0xB880
+   - name: V_3v3
+     address: 0xB180
+   - name: I_Ant0
+     address: 0xB980
+   - name: I_Ant1
+     address: 0xB280
+   - name: I_Ant2
+     address: 0xBA80
+   - name: V_Ant_I0
+     address: 0xB380
+   - name: V_Ant_O0
+     address: 0xBB80
+   - name: V_Ant_I1
+     address: 0xB480
+   - name: V_Ant_O1
+     address: 0xBC80
+   - name: V_Ant_I2
+     address: 0xB580
+   - name: V_Ant_O2
+     address: 0xBD80
+   - name: Temp
+     address: 0xA0C0
+
+#This 'special' devices that uses I2C
+
+ - name: HB_UC
+   description: RCU microcontroller 
+   address: 0x40
+   driver: I2C1
+   registers:
+   - name: ID
+     description: Device ID
+     address: 0
+
+ - name: HB_UC_update
+   description: RCU microcontroller 
+   address: 0x40
+   driver: HBA_trigger
+   registers:
+   - name: wait_pps
+     address: 10
+
+ - name: HBAT
+   dim: 3
+   address: [0x41,0x42,0x43]
+   description: Virtual HBAT0 interface
+   driver: I2C_HBAT
+   registers:
+   - name: XY
+     address: 0x10
+     description: XY delay register
+     store: True
+   - name: Version
+     address: 127
+     description: HBAT server version
+
+ - name: ADC
+   dim: 3
+   description:  ADC SPI control
+   device: AD9683
+   driver: [SPIbb1,SPIbb2,SPIbb3]
+   registers:
+    - name: PLL_stat
+      description: PLL locked status
+      address: 0x0A
+    - name: JESD_control1
+      description: JESD link control
+      address: 0x5F
+    - name: SYNC_control
+      address: 0x3A
+    - name: CML_level
+      description: CML output adjust
+      address: 0x15
+    - name: Update
+      description: Global device uptate
+      address: 0xFF
+
+ - name: DTH
+   dim: 3
+   description: CW dither source
+   device: SI4012
+   driver: [I2Cbb1,I2Cbb2,I2Cbb3]
+   address: 0x70
+   registers:
+    - name: Freq
+      description: Frequency
+      address: [0x1240,0x1140]
+    - name: Property
+      description: Properties
+      address: [0x12,0x11]
+    - name: State
+      address: [0x61,0x60]
+    - name: Start
+      description: Start CW
+      address: [0x62,0x62]
+    - name: Stop
+      description: Stop CW
+      address: [0x67,0x67]
+    - name: Rev
+      address: 0x10
+    - name: Tune
+      address: [0x1221,0x1121]
+    - name: CONF
+      address: [0x1210,0x1110]
+
+variables:
+   - name: RECVTR_monitor_rate
+     description: Rate at which monitored points are polled (seconds)
+     driver: I2C_RCU
+     rw:  variable 
+     dtype: uint8
+
+   - name: ANT_mask
+     description: Only RF chains with a true mask is set
+     driver: I2C_RCU
+     rw:  variable #server RW variable, not linked to IO
+     dtype: boolean
+     dim: 96
+     dim2: [3,32]
+
+   - name: RCU_mask
+     description: Only RCUs with a true mask is set
+     driver: I2C_RCU
+     rw:  variable #server RW variable, not linked to IO
+     dtype: boolean
+     dim: 32
+
+   - name: RECVTR_I2C_error
+     description: 0=Good, >0 communication error
+     driver: I2C_RCU
+     rw:  ro #server RW variable, not linked to IO
+     dtype: uint8
+     mask: RCU_mask
+     dim: 32
+
+#   - name: RCU_state
+#     description: State of RCUs 0=unknown, 1=ready, 2=busy, 3= wait PPS, 4=error
+#     driver: I2C_RCU
+#     rw:  ro #server variable, not linked to IO
+#     dtype: uint8
+#     dim: 1
+
+   - name: RECVTR_translator_busy
+     description: True when I2C line is busy
+     rw:  ro #server variable, not linked to IO
+     dtype: boolean
+     dim: 1
+
+   - name: RCU_attenuator_dB
+     description: RCU Attenuation (dB)
+     driver: I2C_RCU
+     devreg:  [IO1.GPIO1,IO1.GPIO2,IO2.GPIO1]
+     bitoffset: [0,0,0]
+     width: 6
+     rw:  rw
+     dtype: uint8
+     dim: 96
+     dim2: [3,32]
+     mask: ANT_mask
+
+   - name: RCU_band_select
+     description: Band select ...
+     driver: I2C_RCU
+     devreg:  [IO2.GPIO2,IO2.GPIO2,IO4.GPIO2]
+     bitoffset: [0,3,0]
+     width: 3
+     rw:  rw
+     dtype: uint8
+     dim: 96
+     dim2: [3,32]
+     mask: ANT_mask
+
+   - name: RCU_DAB_select
+     description: Band select ...
+     driver: I2C_RCU
+     devreg:  [IO4.GPIO1,IO4.GPIO1,IO4.GPIO1]
+     bitoffset: [0,2,4]
+     width: 2
+     rw:  rw
+     dtype: uint8
+     dim: 96
+     dim2: [3,32]
+     mask: ANT_mask
+
+   - name: [RCU_IO1_GPIO1,RCU_IO1_GPIO2,RCU_IO2_GPIO1,RCU_IO2_GPIO2,RCU_IO3_GPIO1,RCU_IO3_GPIO2,RCU_IO4_GPIO1,RCU_IO4_GPIO2]
+     driver: I2C_RCU
+     devreg:  [IO1.GPIO1,IO1.GPIO2,IO2.GPIO1,IO2.GPIO2,IO3.GPIO1,IO3.GPIO2,IO4.GPIO1,IO4.GPIO2]
+     width: 8
+     rw:  ro
+     dtype: uint8
+     dim: 32
+     mask: RCU_mask
+     debug: True
+
+   - name: RCU_LED_red_on
+     driver: I2C_RCU
+     description: Red LED on front panel
+     devreg:  IO2.GPIO2
+     bitoffset: 6
+     width: 1
+     rw:  rw
+     dtype: boolean
+     convert_unit: bool_invert
+     dim: 32
+     mask: RCU_mask
+
+   - name: RCU_LED_green_on
+     driver: I2C_RCU
+     description: Green LED on front panel
+     devreg:  IO2.GPIO2
+     bitoffset: 7
+     width: 1
+     rw:  rw
+     dtype: boolean
+     convert_unit: bool_invert
+     dim: 32
+     mask: RCU_mask
+
+   - name: RCU_TEMP
+     description: RCU PCB Temperature (Celsius)
+     driver: I2C_RCU
+     devreg:  AN.Temp
+     width: 23
+     scale: 3.827e-3  #T=DATAOUT * Vref/12.25/32. Vreg=1.5 V
+     convert_unit: Kelvin2Celsius
+     rw:  ro
+     dtype: double
+     dim: 32
+     monitor: true
+     read_parallel: true
+     mask: RECVTR_I2C_error
+
+   - name: RCU_PWR_3V3
+     description: RCU 3.3V voltage (V)
+     driver: I2C_RCU
+     devreg:  AN.V_3v3
+     width: 23
+     scale: 1.463e-6
+     rw:  ro
+     dtype: double
+     dim: 32
+     read_parallel: true
+     monitor: true
+     mask: RECVTR_I2C_error
+
+   - name: RCU_PWR_1V8
+     description: RCU 1.8V voltage (V)
+     driver: I2C_RCU
+     devreg:  AN.V_1v8
+     width: 23
+     scale: 7.1526e-7
+     rw:  ro
+     dtype: double
+     dim: 32
+     read_parallel: true
+     monitor: true
+     mask: RECVTR_I2C_error
+
+   - name: RCU_PWR_2V5
+     description: RCU 2.5V voltage (V)
+     driver: I2C_RCU
+     devreg:  AN.V_2v5
+     width: 23
+     scale: 7.1526e-7
+     rw:  ro
+     dtype: double
+     dim: 32
+     read_parallel: true
+     monitor: true
+     mask: RECVTR_I2C_error
+
+   - name: RCU_PWR_ANT_VOUT
+     description: Voltage on antenna output of RCU (V). Controlled by ANT_PWR_ON.
+     driver: I2C_RCU
+     devreg:  [AN.V_Ant_O0,AN.V_Ant_O1,AN.V_Ant_O2]
+     width: 23
+     scale: 1.43051e-5 #LB: 2.7895e-6
+     rw:  ro
+     dtype: double
+     dim: 96
+     dim2: [3,32]
+     read_parallel: true
+     monitor: true
+     mask: RECVTR_I2C_error
+
+   - name: RCU_PWR_ANT_VIN
+     description: RCU antenna voltage before switch (V)
+     driver: I2C_RCU
+     devreg:  [AN.V_Ant_I0,AN.V_Ant_I1,AN.V_Ant_I2]
+     width: 23
+     scale: 1.43051e-5 #LB: 2.7895e-6
+     rw:  ro
+     dtype: double
+     dim: 96
+     dim2: [3,32]
+     read_parallel: true
+     monitor: true
+     mask: RECVTR_I2C_error
+
+   - name: RCU_PWR_ANT_IOUT
+     description: Current drawn on antenna output of RCU (A)
+     driver: I2C_RCU
+     devreg:  [AN.I_Ant0,AN.I_Ant1,AN.I_Ant2]
+     width: 23
+     scale: 7.1526e-8
+     rw:  ro
+     dtype: double
+     dim: 96
+     dim2: [3,32]
+     read_parallel: true
+     monitor: true
+     mask: RECVTR_I2C_error
+
+   - name: RCU_PWR_DIGITAL_on
+     description: RCU digital power enable. Controlled by calling RCU_on/RCU_off
+     driver: I2C_RCU
+     devreg:  IO2.GPIO1
+     width: 1
+     bitoffset: 6
+     rw:  ro
+     dtype: boolean
+     dim: 32
+     mask: RCU_mask
+
+   - name: RCU_PWR_good
+     description: Status of RCU power given by LDOs.
+     driver: I2C_RCU
+     devreg:  IO2.GPIO1
+     width: 1
+     bitoffset: 7
+     rw:  ro
+     dtype: boolean
+     dim: 32
+     monitor: true
+     mask: RECVTR_I2C_error
+
+   - name: RCU_PWR_ANALOG_on
+     description: RCU analog power enable. Controlled by RCU_on/off
+     driver: I2C_RCU
+     devreg:  IO1.GPIO2
+     width: 1
+     bitoffset: 7
+     rw:  rw #rw for testing
+     dtype: boolean
+     dim: 32
+     mask: RCU_mask
+
+   - name: RCU_DTH_shutdown
+     description: False means dither source powered on. Controlled by TBD
+     driver: I2C_RCU
+     devreg:  [IO3.GPIO1,IO3.GPIO1,IO3.GPIO2]
+     width: 1
+     bitoffset: [7,6,7]
+     rw:  rw
+     dtype: boolean
+     dim: 96
+     dim2: [3,32]
+     mask: ANT_mask
+     debug: True
+
+   - name: RCU_PWR_ANT_on
+     description: Antenna power output ON/OFF control. Monitored by Ant_VOUT.
+     driver: I2C_RCU
+     devreg:  [IO1.GPIO1,IO1.GPIO1,IO1.GPIO2]
+     width: 1
+     bitoffset: [6,7,6]
+     rw:  rw
+     dtype: boolean
+     dim: 96
+     dim2: [3,32]
+     mask: ANT_mask
+
+   - name: HBAT_BF_delays
+     description: HBAT1 frontend delays (0.5ns steps)
+     driver: I2C_HBAT
+     devreg:  [HBAT1.XY,HBAT2.XY,HBAT3.XY]
+     bitoffset: [2,2,2]
+     width: 5
+     rw:  rw
+     dtype: uint8
+     dim: 3072
+     dim2: [32,96]
+     mask: ANT_mask
+     wait: 100 #ms
+
+   - name: [HBAT_LED_on,HBAT_PWR_on,HBAT_PWR_LNA_on]
+     description: HBA frontend control
+     driver: I2C_HBAT
+     devreg:  [HBAT1.XY,HBAT2.XY,HBAT3.XY]
+     bitoffset: [0,7,1]
+     width: 1
+     rw:  rw
+     dtype: boolean
+     dim: 3072
+     dim2: [32,96]
+     mask: ANT_mask
+     wait: 100 #ms
+
+   - name: RCU_PCB_ID
+     description: Unique PCB ID
+     driver: I2C_RCU
+     devreg:  ROM.ID
+     width: 32
+     rw:  ro
+     dtype: uint32
+     dim: 32
+     mask: RCU_mask
+
+   - name: RCU_PCB_version
+     description: RCU version number
+     driver: I2C_RCU
+     devreg:  ROM.Version
+     width: 0x80  #16 characters
+     rw:  ro
+     dtype: string
+     dim: 32
+     mask: RCU_mask
+
+   - name: RCU_PCB_number
+     description: PCB number (astron.nl/webforms/IenS-Boarden/view.php?id=xxx)
+     driver: I2C_RCU
+     devreg:  ROM.Serial
+     width: 0x80  #16 characters
+     rw:  ro
+     dtype: string
+     dim: 32
+     mask: RCU_mask
+     
+   - name: RCU_ADC_locked
+     description: RCU ADC lock status. May generated noise and polling disabled in future
+     driver: I2C_RCU
+     devreg:  [ADC1.PLL_stat,ADC2.PLL_stat,ADC3.PLL_stat]
+     width: 1
+     rw:  ro
+     dtype: boolean
+     dim: 96
+     dim2: [3,32]
+     monitor: true
+
+   - name: RCU_ADC_sync
+     driver: I2C_RCU
+     devreg:  [ADC1.SYNC_control,ADC2.SYNC_control,ADC3.SYNC_control]
+     width: 8
+     rw:  ro
+     dtype: uint8
+     dim: 96
+     dim2: [3,32]
+     debug: true
+
+   - name: RCU_ADC_JESD
+     driver: I2C_RCU
+     devreg:  [ADC1.JESD_control1,ADC2.JESD_control1,ADC3.JESD_control1]
+     width: 8
+     rw:  ro
+     dtype: uint8
+     dim: 96
+     dim2: [3,32]
+     debug: true
+
+   - name: RCU_ADC_CML_level
+     driver: I2C_RCU
+     devreg:  [ADC1.CML_level,ADC2.CML_level,ADC3.CML_level]
+     width: 8
+     rw:  ro
+     dtype: uint8
+     dim: 96
+     dim2: [3,32]
+     debug: true
+
+   - name: RCU_DTH_freq
+     description: RCU Dither source frequency (Hz). Should be around 102MHz.
+     driver: I2C_RCU
+     devreg:  [DTH1.Freq,DTH2.Freq,DTH3.Freq]
+     width: 32
+     rw:  rw
+     dtype: uint32
+     dim: 96
+     dim2: [3,32]
+     mask: ANT_mask
+
+   - name: RCU_DTH_tune
+     driver: I2C_RCU
+     devreg:  [DTH1.Tune,DTH2.Tune,DTH3.Tune]
+     width: 16
+     rw:  rw
+     dtype: uint32
+     dim: 96
+     dim2: [3,32]
+     mask: ANT_mask
+     debug: true
+
+   - name: RCU_DTH_config
+     driver: I2C_RCU
+     devreg:  [DTH1.CONF,DTH2.CONF,DTH3.CONF]
+     width: 8
+     rw:  rw
+     dtype: uint32
+     dim: 96
+     dim2: [3,32]
+     mask: ANT_mask
+     debug: true
+
+   - name: RCU_DTH_on
+     description: RCU Dither on. Controlled by RCU_DTH_on/off
+     driver: I2C_RCU
+     devreg:  [DTH1.State,DTH2.State,DTH3.State]
+     width: 1 #read only first of 2 bytes
+     bitoffset: [1,1,1]
+     rw:  ro
+     dtype: boolean
+     dim: 96
+     dim2: [3,32]
+     mask: ANT_mask
+
+   - name: RCU_DTH_Rev
+     driver: I2C_RCU
+     devreg:  [DTH1.Rev,DTH2.Rev,DTH3.Rev]
+     width: 88
+     rw:  rw
+     dtype: uint32
+     dim: 96
+     dim2: [3,32]
+     mask: ANT_mask
+     debug: true
+
+methods:
+  - name: RECVTR_Init #Called after startup to load. Should have all stored registers  
+    driver: I2C_RCU
+    debug: True
+    instructions:   
+    - RCU_IO1_GPIO1: Update
+    - RCU_IO1_GPIO2: Update
+    - RCU_IO2_GPIO1: Update
+    - RCU_IO2_GPIO2: Update
+    - RCU_IO3_GPIO1: Update
+    - RCU_IO3_GPIO2: Update
+    - RCU_IO4_GPIO1: Update
+    - RCU_IO4_GPIO2: Update
+#    - IO1.GPIO2: Update
+#    - IO2.GPIO1: Update
+#    - IO2.GPIO2: Update
+#    - IO3.GPIO1: Update
+#    - IO3.GPIO2: Update
+    - IO3.CONF1: Update
+    - RCU_update: 0
+
+  - name: RCU_on
+    description: Initialize RCU and it in the ON state
+    driver: I2C_RCU
+    mask: RCU_mask
+    instructions:
+     - RECVTR_I2C_error: 0
+     - IO2.CONF1: 0x80 #Pgood on 0x80
+     - IO2.GPIO1: 0x4A #0x40 Dig on, 0x0a =10dB att
+     - IO2.GPIO2: 0x52 #0x09 #Band0 (or 0x12 or 0x24)  #LED green=on=low 0x40
+     - IO3.GPIO1: 0x15 #ADC_SDIO=high, clk=low, DTH_EN=low
+     - IO3.GPIO2: 0x47 #ADC SC=high, DTH_SDA=high
+     - IO1.GPIO1: 0x0A #0x0a = 10dB att
+     - IO1.GPIO2: 0x8A #0x80 Analog on, 0x0a=10dB att
+     - IO2.CONF2: 0
+     - IO3.CONF1: 0
+     - IO3.CONF2: 0
+     - IO1.CONF1: 0
+     - IO1.CONF2: 0
+     - IO4.CONF1: 0xC0 #pin 0x40, 0x80 not used
+     - IO4.CONF2: 0xF8 
+     - IO4.GPIO1: 0x2A #DAB switch states: 0x2A or 0x51
+     - IO4.GPIO2: 0x02 #Band select
+#     - RCU_GPIO1: Update
+#     - RCU_GPIO2: Update
+#     - RCU_attenuator: [10,10,10]  #Set OPC-UA variable
+     - WAIT: 500         #ms to wait
+     - ADC1_on: 0        #call another opc-ua method
+     - ADC2_on: 0
+     - ADC3_on: 0
+     - WAIT: 500         #ms to wait
+     - RCU_update: 0
+
+  - name: RCU_update
+    driver: I2C_RCU
+    mask: RCU_mask
+    debug: True
+    instructions:
+      - RCU_PWR_DIGITAL_on: Update  #Read value and update the OPC-UA variable
+      - RCU_PWR_ANALOG_on: Update 
+      - RCU_PWR_ANT_on: Update 
+      - RCU_PCB_ID: Update
+      - RCU_PCB_version: Update
+      - RCU_PCB_number: Update
+      - RCU_LED_red_on: Update
+      - RCU_LED_green_on: Update
+      - RCU_attenuator_dB: Update
+      - RCU_band_select: Update
+      - RCU_DAB_select: Update
+      - RCU_ADC_locked: Update
+      - RCU_ADC_sync: Update
+      - RCU_DTH_shutdown: Update
+      - RCU_DTH_freq: Update
+      - RCU_DTH_on: Update
+
+  - name: ADC1_on
+    driver: I2C_RCU
+    debug: True
+#    rw: hidden
+    instructions:
+     - ADC1.JESD_control1 : 0x14
+     - ADC1.SYNC_control: 1  #Setup ADCs
+     - ADC1.CML_level: 0x7
+     - ADC1.Update: 1       #Needed to update ADC registers
+     
+  - name: ADC2_on
+    driver: I2C_RCU
+    debug: True
+#    rw: hidden
+    instructions:
+     - ADC2.JESD_control1 : 0x14
+     - ADC2.SYNC_control: 1  #Setup ADCs
+     - ADC2.CML_level: 0x7
+     - ADC2.Update: 1       #Needed to update ADC registers
+
+  - name: ADC3_on
+    driver: I2C_RCU
+    debug: True
+#    rw: hidden
+    instructions:
+     - ADC3.JESD_control1 : 0x14
+     - ADC3.SYNC_control: 1  #Setup ADCs
+     - ADC3.CML_level: 0x7
+     - ADC3.Update: 1       #Needed to update ADC registers
+
+  - name: RCU_off
+    description: Put RCU in low-power state
+    driver: I2C_RCU
+    mask: RCU_mask
+    instructions:
+     - RECVTR_I2C_error: 0
+     - RCU_PWR_ANALOG_on: 0 #Switch power off
+     - RCU_PWR_DIGITAL_on: 0 #Switch power off
+     - IO2.GPIO1: 0
+     - IO2.GPIO2: 0
+     - IO3.GPIO1: 0
+     - IO3.GPIO2: 0
+     - IO1.GPIO1: 0
+     - IO1.GPIO2: 0
+     - RCU_update: 0
+     #todo, also make all GPIO pins (except power enables) inputs to remove all power from devices.
+
+  - name: RCU_HBAT_WAIT_PPS
+    driver: I2C_RCU
+    mask: RCU_mask
+    debug: True
+    instructions:
+     - RCU_state: 3
+     - HB_UC_update.wait_pps : 1
+     - RCU_state: 1
+
+
+  - name: RCU_DTH_on
+    description: Switch dither source on
+    driver: I2C_RCU
+    mask: RCU_mask
+#    rw: hidden
+    instructions:
+     - RCU_DTH_config : [0,0,0]
+     - RCU_DTH_config: Update #debug
+     - DTH1.Tune :    [0,0] #no tuning
+     - DTH2.Tune :    [0,0] #no tuning
+     - DTH3.Tune :    [0,0] #no tuning
+     - RCU_DTH_tune: Update #debug
+     - DTH1.Start :    [0,1,0,0,1]
+     - DTH2.Start :    [0,1,0,0,1]
+     - DTH3.Start :    [0,1,0,0,1]
+     - RCU_DTH_on : Update
+
+  - name: RCU_DTH_off
+    description: Switch dither source off
+    driver: I2C_RCU
+    mask: RCU_mask
+#    rw: hidden
+    instructions:
+#     - RCU_DTH_SHUTDOWN : [1,1,1]
+#     - WAIT: 100
+#     - RCU_DTH_SHUTDOWN : [0,0,0]
+#     - RCU_DTH_SHUTDOWN : 1
+     - DTH1.Stop :    [0,0]
+     - DTH2.Stop :    [0,0]
+     - DTH3.Stop :    [0,0]
+#     - DTH1.State :    [0,0]
+#     - DTH2.State :    [0,0]
+#     - DTH3.State :    [0,0]
+     - RCU_DTH_on: Update
diff --git a/config/RECVTR_LB.yaml b/config/RECVTR_LB.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..fb9ddd692131c33f76a8ed3a62673ab7a487058f
--- /dev/null
+++ b/config/RECVTR_LB.yaml
@@ -0,0 +1,845 @@
+version: "1.0"
+description: "1234"
+
+drivers:
+ - name: I2C1 #TCA9548
+   type: i2c_switch
+   devreg: [0x70,0x71,0x72,0x73]
+   parameters: [1] #I2C port number
+ - name: I2C_RCU 
+   type: i2c_array #An array of similar devices connected to an I2C switch
+   parent: I2C1
+   parameters: [20,22,0,2,4,6,10,12,14,16,18,24,26,28,30,8,7,5,3,1,23,21,19,13,11,9,15,17,31,29,27,25] #RCU lookup table 
+   I2Ccut: 5 #error count to disable I2C (14 for LTS?)
+   status: RECVTR_I2C_error
+ - name: I2C_HBAT
+   type: hba1 #Special driver to manage HBAT1s.
+   parent: I2C_RCU
+   devreg: [0x40.0x10] #I2C broadcast register
+   parameters: [15] #PPS GPIO pin
+ - name: I2Cbb1 
+   type: i2cbitbang1 #I2C bitbang via GPIO expander
+   devreg: [IO3.GPIO2,IO3.GPIO2,IO3.CONF2]
+   parameters: [5,6,6] #pins
+   parent: I2C_RCU
+ - name: I2Cbb2
+   type: i2cbitbang1
+   devreg: [IO3.GPIO2,IO3.GPIO2,IO3.CONF2]
+   parameters: [4,6,6]
+   parent: I2C_RCU
+ - name: I2Cbb3
+   type: i2cbitbang1
+   devreg: [IO3.GPIO2,IO3.GPIO2,IO3.CONF2]
+   parameters: [3,6,6]
+   parent: I2C_RCU
+ - name: SPIbb1 
+   type: spibitbang1 #SPI bitbang via GPIO expander: CLK, SDIO, SDIOdir,CS
+   devreg: [IO3.GPIO1,IO3.GPIO1,IO3.CONF1,IO3.GPIO2]
+   parameters: [1,0,0,0]
+   parent: I2C_RCU
+ - name: SPIbb2
+   type: spibitbang1
+   devreg: [IO3.GPIO1,IO3.GPIO1,IO3.CONF1,IO3.GPIO2]
+   parameters: [3,2,2,1]
+   parent: I2C_RCU
+ - name: SPIbb3
+   type: spibitbang1
+   devreg: [IO3.GPIO1,IO3.GPIO1,IO3.CONF1,IO3.GPIO2]
+   parameters: [5,4,4,2]
+   parent: I2C_RCU
+# - name: HBA_trigger
+#   type: gpio_hba_trigger
+#   parameters: [15] #PPS GPIO pin
+#   devreg: [0x40.0x10] #I2C broadcast register
+#   parent: I2C_RCU
+
+#This is the I2C devices in the RCU
+device_registers:
+ - name: IO
+   dim: 3
+   description: [IO-Expander for filter selection,IO-Expander for ON/OFF, Band, BUFx2,IO-Expander for ADC control]
+   address: [0x75,0x76,0x20]
+   device: [TCA9539,TCA9539,TCA6416]
+   driver: I2C1
+   registers:
+   - name: CONF1
+     description: Direction of port1
+     address: 6
+     store: True
+   - name: CONF2
+     description: Direction of port2
+     address: 7
+     store: True
+   - name: GPIO1
+     description: Input/Ouput port 1
+     address: [0,2]  #Read / Write address different
+     store: True
+   - name: GPIO2
+     description: Input/Ouput port 2
+     address: [1,3]
+     store: True
+
+ - name: ROM
+   description: IO-Expander for filter selection
+   address: 0x50
+   driver: I2C1
+   registers:
+   - name: ID
+     description: Random
+     address: 0xfc
+   - name: Version
+     description: Set in production
+     address: 0
+   - name: Serial
+     address: 0x20
+ 
+ - name: AN
+   description: Monitor ADC on RCU
+   address: 0x74 #was 0x14 on RCU2-DIG PCBs
+   device: LTC2495
+   driver: I2C1
+   registers:
+   - name: V_1v8
+     address: 0xB080
+   - name: V_2v5
+     address: 0xB880
+   - name: V_3v3
+     address: 0xB180
+   - name: I_Ant0
+     address: 0xB980
+   - name: I_Ant1
+     address: 0xB280
+   - name: I_Ant2
+     address: 0xBA80
+   - name: V_Ant_I0
+     address: 0xB380
+   - name: V_Ant_O0
+     address: 0xBB80
+   - name: V_Ant_I1
+     address: 0xB480
+   - name: V_Ant_O1
+     address: 0xBC80
+   - name: V_Ant_I2
+     address: 0xB580
+   - name: V_Ant_O2
+     address: 0xBD80
+   - name: Temp
+     address: 0xA0C0
+
+#This 'special' devices that uses I2C
+
+ - name: HB_UC
+   description: RCU microcontroller 
+   address: 0x40
+   driver: I2C1
+   registers:
+   - name: ID
+     description: Device ID
+     address: 0
+
+ - name: HB_UC_update
+   description: RCU microcontroller 
+   address: 0x40
+   driver: HBA_trigger
+   registers:
+   - name: wait_pps
+     address: 10
+
+ - name: HBAT
+   dim: 3
+   address: [0x41,0x42,0x43]
+   description: Virtual HBAT0 interface
+   driver: I2C_HBAT
+   registers:
+   - name: XY
+     address: 0x10
+     description: XY delay register
+     store: True
+   - name: Version
+     address: 127
+     description: HBAT server version
+
+ - name: ADC
+   dim: 3
+   description:  ADC SPI control
+   device: AD9683
+   driver: [SPIbb1,SPIbb2,SPIbb3]
+   registers:
+    - name: PLL_stat
+      description: PLL locked status
+      address: 0x0A
+    - name: JESD_control1
+      description: JESD link control
+      address: 0x5F
+    - name: SYNC_control
+      address: 0x3A
+    - name: CML_level
+      description: CML output adjust
+      address: 0x15
+    - name: Update
+      description: Global device uptate
+      address: 0xFF
+    - name: testmode
+      address: 0x0D
+    - name: JESDscramble
+      address: 0x6E
+    - name: PDWNmodes
+      address: 0x08
+
+ - name: DTH
+   dim: 3
+   description: CW dither source
+   device: SI4012
+   driver: [I2Cbb1,I2Cbb2,I2Cbb3]
+   address: 0x70
+   registers:
+    - name: Freq
+      description: Frequency
+      address: [0x1240,0x1140]
+    - name: Property
+      description: Properties
+      address: [0x12,0x11]
+    - name: State
+      address: [0x61,0x60]
+    - name: Start
+      description: Start CW
+      address: [0x62,0x62]
+    - name: Stop
+      description: Stop CW
+      address: [0x67,0x67]
+    - name: Rev
+      address: 0x10
+    - name: Tune
+      address: [0x1221,0x1121]
+    - name: CONF
+      address: [0x1210,0x1110]
+
+variables:
+   - name: RECVTR_monitor_rate
+     description: Rate at which monitored points are polled (seconds)
+     driver: I2C_RCU
+     rw:  variable 
+     dtype: uint8
+
+   - name: ANT_mask
+     description: Only RF chains with a true mask is set
+     driver: I2C_RCU
+     rw:  variable #server RW variable, not linked to IO
+     dtype: boolean
+     dim: 96
+     dim2: [3,32]
+
+   - name: RCU_mask
+     description: Only RCUs with a true mask is set
+     driver: I2C_RCU
+     rw:  variable #server RW variable, not linked to IO
+     dtype: boolean
+     dim: 32
+
+   - name: RECVTR_I2C_error
+     description: 0=Good, >0 communication error
+     driver: I2C_RCU
+     rw:  ro #server RW variable, not linked to IO
+     dtype: uint8
+     mask: RCU_mask
+     dim: 32
+
+#   - name: RCU_state
+#     description: State of RCUs 0=unknown, 1=ready, 2=busy, 3= wait PPS, 4=error
+#     driver: I2C_RCU
+#     rw:  ro #server variable, not linked to IO
+#     dtype: uint8
+#     dim: 1
+
+   - name: RECVTR_translator_busy
+     description: True when I2C line is busy
+     rw:  ro #server variable, not linked to IO
+     dtype: boolean
+     dim: 1
+
+   - name: RCU_attenuator_dB
+     description: RCU Attenuation (dB)
+     driver: I2C_RCU
+     devreg:  [IO1.GPIO1,IO1.GPIO2,IO2.GPIO1]
+     bitoffset: [0,0,0]
+     width: 6
+     rw:  rw
+     dtype: uint8
+     dim: 96
+     dim2: [3,32]
+     mask: ANT_mask
+
+   - name: RCU_band_select
+     description: Band select 1=10MHz,2=30MHz
+     driver: I2C_RCU
+     devreg:  [IO2.GPIO2,IO2.GPIO2,IO2.GPIO2]
+     bitoffset: [0,2,4]
+     width: 2
+     rw:  rw
+     dtype: uint8
+     dim: 96
+     dim2: [3,32]
+     mask: ANT_mask
+
+   - name: [RCU_IO1_GPIO1,RCU_IO1_GPIO2,RCU_IO2_GPIO1,RCU_IO2_GPIO2,RCU_IO3_GPIO1,RCU_IO3_GPIO2]
+     driver: I2C_RCU
+     devreg:  [IO1.GPIO1,IO1.GPIO2,IO2.GPIO1,IO2.GPIO2,IO3.GPIO1,IO3.GPIO2]
+     width: 8
+     rw:  ro
+     dtype: uint8
+     dim: 32
+     mask: RCU_mask
+     debug: True
+
+   - name: RCU_LED_red_on
+     driver: I2C_RCU
+     description: Red LED on front panel
+     devreg:  IO2.GPIO2
+     bitoffset: 6
+     width: 1
+     rw:  rw
+     dtype: boolean
+     convert_unit: bool_invert
+     dim: 32
+     mask: RCU_mask
+
+   - name: RCU_LED_green_on
+     driver: I2C_RCU
+     description: Green LED on front panel
+     devreg:  IO2.GPIO2
+     bitoffset: 7
+     width: 1
+     rw:  rw
+     dtype: boolean
+     convert_unit: bool_invert
+     dim: 32
+     mask: RCU_mask
+
+   - name: RCU_TEMP
+     description: RCU PCB Temperature (Celsius)
+     driver: I2C_RCU
+     devreg:  AN.Temp
+     width: 23
+     scale: 3.827e-3  #T=DATAOUT * Vref/12.25/32. Vreg=1.5 V
+     convert_unit: Kelvin2Celsius
+     rw:  ro
+     dtype: double
+     dim: 32
+     monitor: true
+     read_parallel: true
+     mask: RECVTR_I2C_error
+
+   - name: RCU_PWR_3V3
+     description: RCU 3.3V voltage (V)
+     driver: I2C_RCU
+     devreg:  AN.V_3v3
+     width: 23
+     scale: 1.463e-6
+     rw:  ro
+     dtype: double
+     dim: 32
+     read_parallel: true
+     monitor: true
+     mask: RECVTR_I2C_error
+
+   - name: RCU_PWR_1V8
+     description: RCU 1.8V voltage (V)
+     driver: I2C_RCU
+     devreg:  AN.V_1v8
+     width: 23
+     scale: 7.1526e-7
+     rw:  ro
+     dtype: double
+     dim: 32
+     read_parallel: true
+     monitor: true
+     mask: RECVTR_I2C_error
+
+   - name: RCU_PWR_2V5
+     description: RCU 2.5V voltage (V)
+     driver: I2C_RCU
+     devreg:  AN.V_2v5
+     width: 23
+     scale: 7.1526e-7
+     rw:  ro
+     dtype: double
+     dim: 32
+     read_parallel: true
+     monitor: true
+     mask: RECVTR_I2C_error
+
+   - name: RCU_PWR_ANT_VOUT
+     description: Voltage on antenna output of RCU (V). Controlled by ANT_PWR_ON.
+     driver: I2C_RCU
+     devreg:  [AN.V_Ant_O0,AN.V_Ant_O1,AN.V_Ant_O2]
+     width: 23
+     scale: 2.7895e-6
+     rw:  ro
+     dtype: double
+     dim: 96
+     dim2: [3,32]
+     read_parallel: true
+     monitor: true
+     mask: RECVTR_I2C_error
+
+   - name: RCU_PWR_ANT_VIN
+     description: RCU antenna voltage before switch (V)
+     driver: I2C_RCU
+     devreg:  [AN.V_Ant_I0,AN.V_Ant_I1,AN.V_Ant_I2]
+     width: 23
+     scale: 2.7895e-6
+     rw:  ro
+     dtype: double
+     dim: 96
+     dim2: [3,32]
+     read_parallel: true
+     monitor: true
+     mask: RECVTR_I2C_error
+
+   - name: RCU_PWR_ANT_IOUT
+     description: Current drawn on antenna output of RCU (A)
+     driver: I2C_RCU
+     devreg:  [AN.I_Ant0,AN.I_Ant1,AN.I_Ant2]
+     width: 23
+     scale: 7.1526e-8
+     rw:  ro
+     dtype: double
+     dim: 96
+     dim2: [3,32]
+     read_parallel: true
+     monitor: true
+     mask: RECVTR_I2C_error
+
+   - name: RCU_PWR_DIGITAL_on
+     description: RCU digital power enable. Controlled by calling RCU_on/RCU_off
+     driver: I2C_RCU
+     devreg:  IO2.GPIO1
+     width: 1
+     bitoffset: 6
+     rw:  rw #rw for testing
+     dtype: boolean
+     dim: 32
+     mask: RCU_mask
+
+   - name: RCU_PWR_good
+     description: Status of RCU power given by LDOs.
+     driver: I2C_RCU
+     devreg:  IO2.GPIO1
+     width: 1
+     bitoffset: 7
+     rw:  ro
+     dtype: boolean
+     dim: 32
+     monitor: true
+     mask: RECVTR_I2C_error
+
+   - name: RCU_PWR_ANALOG_on
+     description: RCU analog power enable. Controlled by RCU_on/off
+     driver: I2C_RCU
+     devreg:  IO1.GPIO2
+     width: 1
+     bitoffset: 7
+     rw:  rw #rw for testing
+     dtype: boolean
+     dim: 32
+     mask: RCU_mask
+
+   - name: RCU_DTH_shutdown
+     description: False means dither source powered on. Controlled by TBD
+     driver: I2C_RCU
+     devreg:  [IO3.GPIO1,IO3.GPIO1,IO3.GPIO2]
+     width: 1
+     bitoffset: [7,6,7]
+     rw:  rw
+     dtype: boolean
+     dim: 96
+     dim2: [3,32]
+     mask: ANT_mask
+     debug: True
+
+   - name: RCU_PWR_ANT_on
+     description: Antenna power output ON/OFF control. Monitored by Ant_VOUT.
+     driver: I2C_RCU
+     devreg:  [IO1.GPIO1,IO1.GPIO1,IO1.GPIO2]
+     width: 1
+     bitoffset: [6,7,6]
+     rw:  rw
+     dtype: boolean
+     dim: 96
+     dim2: [3,32]
+     mask: ANT_mask
+
+   - name: HBAT_BF_delays
+     description: HBAT1 frontend delays (0.5ns steps)
+     driver: I2C_HBAT
+     devreg:  [HBAT1.XY,HBAT2.XY,HBAT3.XY]
+     bitoffset: [2,2,2]
+     width: 5
+     rw:  rw
+     dtype: uint8
+     dim: 3072
+     dim2: [32,96]
+     mask: ANT_mask
+     wait: 100 #ms
+
+   - name: [HBAT_LED_on,HBAT_PWR_on,HBAT_PWR_LNA_on]
+     description: HBA frontend control
+     driver: I2C_HBAT
+     devreg:  [HBAT1.XY,HBAT2.XY,HBAT3.XY]
+     bitoffset: [0,7,1]
+     width: 1
+     rw:  rw
+     dtype: boolean
+     dim: 3072
+     dim2: [32,96]
+     mask: ANT_mask
+     wait: 100 #ms
+
+   - name: RCU_PCB_ID
+     description: Unique PCB ID
+     driver: I2C_RCU
+     devreg:  ROM.ID
+     width: 32
+     rw:  ro
+     dtype: uint32
+     dim: 32
+     mask: RCU_mask
+
+   - name: RCU_PCB_version
+     description: RCU version number
+     driver: I2C_RCU
+     devreg:  ROM.Version
+     width: 0x80  #16 characters
+     rw:  ro
+     dtype: string
+     dim: 32
+     mask: RCU_mask
+
+   - name: RCU_PCB_number
+     description: PCB number (astron.nl/webforms/IenS-Boarden/view.php?id=xxx)
+     driver: I2C_RCU
+     devreg:  ROM.Serial
+     width: 0x80  #16 characters
+     rw:  ro
+     dtype: string
+     dim: 32
+     mask: RCU_mask
+     
+   - name: RCU_ADC_locked
+     description: RCU ADC lock status. May generated noise and polling disabled in future
+     driver: I2C_RCU
+     devreg:  [ADC1.PLL_stat,ADC2.PLL_stat,ADC3.PLL_stat]
+     width: 1
+     rw:  ro
+     dtype: boolean
+     dim: 96
+     dim2: [3,32]
+#     monitor: true
+
+   - name: RCU_ADC_sync
+     driver: I2C_RCU
+     devreg:  [ADC1.SYNC_control,ADC2.SYNC_control,ADC3.SYNC_control]
+     width: 8
+     rw:  ro
+     dtype: uint8
+     dim: 96
+     dim2: [3,32]
+     debug: true
+
+   - name: RCU_ADC_JESD
+     driver: I2C_RCU
+     devreg:  [ADC1.JESD_control1,ADC2.JESD_control1,ADC3.JESD_control1]
+     width: 8
+     rw:  ro
+     dtype: uint8
+     dim: 96
+     dim2: [3,32]
+     debug: true
+
+   - name: RCU_ADC_CML_level
+     driver: I2C_RCU
+     devreg:  [ADC1.CML_level,ADC2.CML_level,ADC3.CML_level]
+     width: 8
+     rw:  ro
+     dtype: uint8
+     dim: 96
+     dim2: [3,32]
+     debug: true
+
+   - name: RCU_DTH_freq
+     description: RCU Dither source frequency (Hz). Should be around 102MHz.
+     driver: I2C_RCU
+     devreg:  [DTH1.Freq,DTH2.Freq,DTH3.Freq]
+     width: 32
+     rw:  rw
+     dtype: uint32
+     dim: 96
+     dim2: [3,32]
+     mask: ANT_mask
+
+   - name: RCU_DTH_tune
+     driver: I2C_RCU
+     devreg:  [DTH1.Tune,DTH2.Tune,DTH3.Tune]
+     width: 16
+     rw:  rw
+     dtype: uint32
+     dim: 96
+     dim2: [3,32]
+     mask: ANT_mask
+     debug: true
+
+   - name: RCU_DTH_config
+     driver: I2C_RCU
+     devreg:  [DTH1.CONF,DTH2.CONF,DTH3.CONF]
+     width: 8
+     rw:  rw
+     dtype: uint32
+     dim: 96
+     dim2: [3,32]
+     mask: ANT_mask
+     debug: true
+
+   - name: RCU_DTH_on
+     description: RCU Dither on. Controlled by RCU_DTH_on/off
+     driver: I2C_RCU
+     devreg:  [DTH1.State,DTH2.State,DTH3.State]
+     width: 1 #read only first of 2 bytes
+     bitoffset: [1,1,1]
+     rw:  ro
+     dtype: boolean
+     dim: 96
+     dim2: [3,32]
+     mask: ANT_mask
+
+   - name: RCU_DTH_Rev
+     driver: I2C_RCU
+     devreg:  [DTH1.Rev,DTH2.Rev,DTH3.Rev]
+     width: 88
+     rw:  rw
+     dtype: uint32
+     dim: 96
+     dim2: [3,32]
+     mask: ANT_mask
+     debug: true
+
+methods:
+  - name: RECVTR_Init #Called after startup to load. Should have all stored registers  
+    driver: I2C_RCU
+    debug: True
+    instructions:   
+    - RCU_IO1_GPIO1: Update
+    - RCU_IO1_GPIO2: Update
+    - RCU_IO2_GPIO1: Update
+    - RCU_IO2_GPIO2: Update
+    - RCU_IO3_GPIO1: Update
+    - RCU_IO3_GPIO2: Update
+#    - IO1.GPIO2: Update
+#    - IO2.GPIO1: Update
+#    - IO2.GPIO2: Update
+#    - IO3.GPIO1: Update
+#    - IO3.GPIO2: Update
+    - IO3.CONF1: Update
+    - RCU_update: 0
+
+  - name: RCU_on
+    description: Initialize RCU and it in the ON state
+    driver: I2C_RCU
+    mask: RCU_mask
+    instructions:
+     - RECVTR_I2C_error: 0
+     - IO2.CONF1: 0x80 #Pgood on 0x80
+     - IO2.GPIO1: 0x4A #0x40 Dig on, 0x0a =10dB att
+     - IO2.GPIO2: 0x55 #0x15 #Band0 (or 0x2a band 1)  #LED green=on=low
+     - IO3.GPIO1: 0x15 #ADC_SDIO=high, clk=low, DTH_EN=low
+     - IO3.GPIO2: 0x47 #ADC SC=high, DTH_SDA=high
+     - IO1.GPIO1: 0x0A #0x0a = 10dB att
+     - IO1.GPIO2: 0x8A #0x80 Analog on, 0x0a=10dB att
+     - IO2.CONF2: 0
+     - IO3.CONF1: 0
+     - IO3.CONF2: 0
+     - IO1.CONF1: 0
+     - IO1.CONF2: 0
+#     - RCU_GPIO1: Update
+#     - RCU_GPIO2: Update
+#     - RCU_attenuator: [10,10,10]  #Set OPC-UA variable
+     - WAIT: 500         #ms to wait
+     - ADC1_on: 0        #call another opc-ua method
+     - WAIT: 1000         #ms to wait
+     - ADC2_on: 0
+     - WAIT: 1000         #ms to wait
+     - ADC3_on: 0
+     - WAIT: 500         #ms to wait
+     - RCU_update: 0
+
+  - name: RCU_update
+    driver: I2C_RCU
+    mask: RCU_mask
+    debug: True
+    instructions:
+      - RCU_PWR_DIGITAL_on: Update  #Read value and update the OPC-UA variable
+      - RCU_PWR_ANALOG_on: Update 
+      - RCU_PWR_ANT_on: Update 
+      - RCU_PCB_ID: Update
+      - RCU_PCB_version: Update
+      - RCU_PCB_number: Update
+      - RCU_LED_red_on: Update
+      - RCU_LED_green_on: Update
+      - RCU_attenuator_dB: Update
+      - RCU_band_select: Update
+      - RCU_ADC_locked: Update
+      - RCU_ADC_sync: Update
+      - RCU_DTH_shutdown: Update
+      - RCU_DTH_freq: Update
+      - RCU_DTH_on: Update
+
+  - name: ADC1_on
+    driver: I2C_RCU
+    debug: True
+#    rw: hidden
+    instructions:
+     - ADC1.JESD_control1 : 0x14
+     - ADC1.SYNC_control: 1  #Setup ADCs
+     - ADC1.CML_level: 0x7
+     - ADC1.Update: 1       #Needed to update ADC registers
+     
+  - name: ADC2_on
+    driver: I2C_RCU
+    debug: True
+#    rw: hidden
+    instructions:
+     - ADC2.JESD_control1 : 0x14
+     - ADC2.SYNC_control: 1  #Setup ADCs
+     - ADC2.CML_level: 0x7
+     - ADC2.Update: 1       #Needed to update ADC registers
+
+  - name: ADC3_on
+    driver: I2C_RCU
+    debug: True
+#    rw: hidden
+    instructions:
+     - ADC3.JESD_control1 : 0x14
+     - ADC3.SYNC_control: 1  #Setup ADCs
+     - ADC3.CML_level: 0x7
+     - ADC3.Update: 1       #Needed to update ADC registers
+
+  - name: RCU_off
+    description: Put RCU in low-power state
+    driver: I2C_RCU
+    mask: RCU_mask
+    instructions:
+     - RECVTR_I2C_error: 0
+     - RCU_PWR_ANALOG_on: 0 #Switch power off
+     - RCU_PWR_DIGITAL_on: 0 #Switch power off
+     - IO2.GPIO1: 0
+     - IO2.GPIO2: 0
+     - IO3.GPIO1: 0
+     - IO3.GPIO2: 0
+     - IO1.GPIO1: 0
+     - IO1.GPIO2: 0
+     - RCU_update: 0
+     #todo, also make all GPIO pins (except power enables) inputs to remove all power from devices.
+
+  - name: RCU_HBAT_WAIT_PPS
+    driver: I2C_RCU
+    mask: RCU_mask
+    debug: True
+    instructions:
+     - RCU_state: 3
+     - HB_UC_update.wait_pps : 1
+     - RCU_state: 1
+
+
+  - name: RCU_DTH_on
+    description: Switch dither source on
+    driver: I2C_RCU
+    mask: RCU_mask
+#    rw: hidden
+    instructions:
+     - RCU_DTH_config : [0,0,0]
+     - RCU_DTH_config: Update #debug
+     - DTH1.Tune :    [0,0] #no tuning
+     - DTH2.Tune :    [0,0] #no tuning
+     - DTH3.Tune :    [0,0] #no tuning
+     - RCU_DTH_tune: Update #debug
+     - DTH1.Start :    [0,1,0,0,1]
+     - DTH2.Start :    [0,1,0,0,1]
+     - DTH3.Start :    [0,1,0,0,1]
+     - RCU_DTH_on : Update
+
+  - name: RCU_DTH_off
+    description: Switch dither source off
+    driver: I2C_RCU
+    mask: RCU_mask
+#    rw: hidden
+    instructions:
+#     - RCU_DTH_SHUTDOWN : [1,1,1]
+#     - WAIT: 100
+#     - RCU_DTH_SHUTDOWN : [0,0,0]
+#     - RCU_DTH_SHUTDOWN : 1
+     - DTH1.Stop :    [0,0]
+     - DTH2.Stop :    [0,0]
+     - DTH3.Stop :    [0,0]
+#     - DTH1.State :    [0,0]
+#     - DTH2.State :    [0,0]
+#     - DTH3.State :    [0,0]
+     - RCU_DTH_on: Update
+
+  - name: ADC0_test
+    driver: I2C_RCU
+    debug: True
+    mask: RCU_mask
+    instructions:
+     - ADC1.testmode : 0x05
+     - ADC1.Update: 1       #Needed to update ADC registers
+
+  - name: ADC1_test
+    driver: I2C_RCU
+    debug: True
+    mask: RCU_mask
+    instructions:
+     - ADC2.testmode : 0x05
+     - ADC2.Update: 1       #Needed to update ADC registers
+
+  - name: ADC2_test
+    driver: I2C_RCU
+    debug: True
+    mask: RCU_mask
+    instructions:
+     - ADC3.testmode : 0x05
+     - ADC3.Update: 1       #Needed to update ADC registers
+
+  - name: ADC_test_off
+    driver: I2C_RCU
+    debug: True
+    mask: RCU_mask
+    instructions:
+     - ADC1.testmode : 0x00
+     - ADC1.Update: 1       #Needed to update ADC registers
+     - ADC2.testmode : 0x00
+     - ADC2.Update: 1       #Needed to update ADC registers
+     - ADC3.testmode : 0x00
+     - ADC3.Update: 1       #Needed to update ADC registers
+
+  - name: ADC_scramble_off
+    driver: I2C_RCU
+    debug: True
+    mask: RCU_mask
+    instructions:
+     - ADC1.JESDscramble : 0x00
+     - ADC1.Update: 1       #Needed to update ADC registers
+     - ADC2.JESDscramble : 0x00
+     - ADC2.Update: 1       #Needed to update ADC registers
+     - ADC3.JESDscramble : 0x00
+     - ADC3.Update: 1       #Needed to update ADC registers
+
+  - name: ADC_scramble_on
+    driver: I2C_RCU
+    debug: True
+    mask: RCU_mask
+    instructions:
+     - ADC1.JESDscramble : 0x80
+     - ADC1.Update: 1       #Needed to update ADC registers
+     - ADC2.JESDscramble : 0x80
+     - ADC2.Update: 1       #Needed to update ADC registers
+     - ADC3.JESDscramble : 0x80
+     - ADC3.Update: 1       #Needed to update ADC registers
diff --git a/scripts/ADC_testmode.py b/scripts/ADC_testmode.py
new file mode 100644
index 0000000000000000000000000000000000000000..26b7693e4f1591391c219b2d40a949d21b50d793
--- /dev/null
+++ b/scripts/ADC_testmode.py
@@ -0,0 +1,27 @@
+from test_common import *
+
+#RCUs=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31];
+#RCUs=[4,5];
+#RCUs=[3,5,7,8,11];
+#RCUs=[16,17,18,19];
+RCUs=[0,1,2,3]#,1,2,3];
+
+#RCUs=[6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31];
+
+connect()
+#8,12
+setRCUmask(RCUs)
+
+#def wait(var1="RECVTR_translator_busy_R"):
+#  for x in range(20):#
+#    busy=get_value(var1)
+#    print(busy)
+#    if not(busy): break
+#    time.sleep(0.1)
+ # print("Time=",x*0.1,"s")
+
+#call_debug_method("ADC1_test") 
+#call_debug_method("ADC_scramble_off") 
+call_debug_method("ADC_scramble_on") 
+#call_debug_method("ADC_test_off") 
+disconnect();
diff --git a/scripts/ADCreset.py b/scripts/ADCreset.py
index f6073789e83c99f9af3590ba20de014943c9c488..fb2858900675d2f8409c500f85d141a65c6b3fdf 100644
--- a/scripts/ADCreset.py
+++ b/scripts/ADCreset.py
@@ -1,9 +1,15 @@
 from test_common import *
 
-RCUs=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31];
+#RCUs=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31];
+#RCUs=[4,5];
+#RCUs=[3,5,7,8,11];
+RCUs=[2];
+#RCUs=[0,2];
 
-connect()
+#RCUs=[6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31];
 
+connect()
+#8,12
 setRCUmask(RCUs)
 
 #def wait(var1="RECVTR_translator_busy_R"):
@@ -14,10 +20,10 @@ setRCUmask(RCUs)
 #    time.sleep(0.1)
  # print("Time=",x*0.1,"s")
 
-#callmethod("RCU_off")
+callmethod("RCU_off")
 #wait()
 #exit()
-#time.sleep(2)
+time.sleep(5)
 callmethod("RCU_on")
 #wait()
 #callmethod("RCU_on")
diff --git a/scripts/AnalogPwr.py b/scripts/AnalogPwr.py
new file mode 100644
index 0000000000000000000000000000000000000000..16591d3de43395176a969c1f9a2d5a3042533abd
--- /dev/null
+++ b/scripts/AnalogPwr.py
@@ -0,0 +1,26 @@
+from test_common import *
+
+name="RCU_PWR_ANALOG_on"
+#name="RCU_PWR_DIGITAL_on"
+#RCU=[0,1,2,3,4,5,8,12];
+#RCU=[12];
+RCU=[19];
+RCU=[0,1,2,3];
+
+#RCU=[2]
+LEDvalue=False;
+
+connect()
+setRCUmask(RCU)
+
+led=get_value(name+"_R")
+print("old:",led)
+for r in RCU:
+  led[r]=LEDvalue
+
+set_value(name+"_RW",led)
+time.sleep(0.1)
+
+print("new:",get_value(name+"_R"))
+
+disconnect()
diff --git a/scripts/Att.py b/scripts/Att.py
index 3ca41f91d9f0e2daa5d269adac9fcb50aac4696b..652ed849a9177ea6adefcd691e0b3c0d940255ba 100644
--- a/scripts/Att.py
+++ b/scripts/Att.py
@@ -2,23 +2,24 @@ from test_common import *
 connect()
 
 name="RCU_attenuator_dB"
-RCU=[1];
-Att=[10,10,10]
-#RCU=[1,2,3];
-#Att=[0,0,0]
+RCU=[0];
+#RCU=[4];
+#Att=[15,15,15]
+#RCU=[0,1,2,3,16,17,18,19];
+Att=[0,0,0]
 
 
 setAntmask(RCU)
 
 att=get_value(name+"_R")
-print("Att old:",att[:12])
+print("Att old:",att[:15])
 for r in RCU:
   att[3*r:3*r+3]=Att
-print("Att set:",att[:12])
+print("Att set:",att[:15])
 set_value(name+"_RW",att)
 
 time.sleep(0.5)
 att=get_value(name+"_R")
-print("Att new:",att[:12])
+print("Att new:",att[:15])
 
 disconnect()
\ No newline at end of file
diff --git a/scripts/Band.py b/scripts/Band.py
index 6073f45da384229a8f081288c4a5e151399b2648..f294284a6d96adbe25aaedbf6bd33ce78053c8bd 100644
--- a/scripts/Band.py
+++ b/scripts/Band.py
@@ -1,20 +1,29 @@
 from test_common import *
 
-name="RCU_band"
-RCU=0;
+name="RCU_band_select"
+#RCU=[0,1,2,3,4,5,8,12];
+#RCU=[0,1,2,3,4];
+RCU=[0];
+#Att=[2,2,2]
 Att=[2,2,2]
-
-
-setAntmask([RCU])
+#Att=[4,4,4]
+#Att=[4,4,4]
+#Att=[1+4,2,1]
+#Att=[2,1+4,1]
+#HB 2=110-180
+#   1=170-230
+#   4=210-270
+connect()
+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[3*RCU[0]:3*RCU[-1]+3])
+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[3*RCU[0]:3*RCU[-1]+3])
 
 disconnect()
\ No newline at end of file
diff --git a/scripts/DABselect.py b/scripts/DABselect.py
new file mode 100644
index 0000000000000000000000000000000000000000..9bd214466c7ba58fe6c30edd52f357afe10c6167
--- /dev/null
+++ b/scripts/DABselect.py
@@ -0,0 +1,22 @@
+from test_common import *
+
+name="RCU_DAB_select"
+#RCU=[0,1,2,3,4,5,8,12];
+RCU=[0];
+Att=[2,2,2] #2=DAB off
+#Att=[1,1,1] #1=DAB on
+
+connect()
+setAntmask(RCU)
+
+att=get_value(name+"_R")
+print("Att old:",att[3*RCU[0]:3*RCU[-1]+3])
+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[0]:3*RCU[-1]+3])
+
+disconnect()
\ No newline at end of file
diff --git a/scripts/DTH_shdn.py b/scripts/DTH_shdn.py
new file mode 100644
index 0000000000000000000000000000000000000000..49f501224de0100905f74b729fe2e835eb96b185
--- /dev/null
+++ b/scripts/DTH_shdn.py
@@ -0,0 +1,25 @@
+from test_common import *
+connect()
+
+name="RCU_DTH_shutdown"
+RCU=[0,1,2,3];
+Att=[False,False,False]
+#Att=[True,True,True]
+#RCU=[1,2,3];
+#Att=[0,0,0]
+
+
+setAntmask(RCU)
+
+att=get_debug_value(name+"_R")
+print("Att old:",att[:12])
+for r in RCU:
+  att[3*r:3*r+3]=Att
+print("Att set:",att[:12])
+set_debug_value(name+"_RW",att)
+
+time.sleep(0.5)
+att=get_debug_value(name+"_R")
+print("Att new:",att[:12])
+
+disconnect()
\ No newline at end of file
diff --git a/scripts/DTH_test.py b/scripts/DTH_test.py
index 0af0b3c4243763b21933983f9028267c6bc714f0..0dff341d3e3e8be3ea71fb9cdb96d8d157607142 100644
--- a/scripts/DTH_test.py
+++ b/scripts/DTH_test.py
@@ -1,26 +1,32 @@
 from test_common import *
+import numpy as np
 
-
-RCU=3;
+RCU=[0,1,2,3];
 connect()
-setAntmask([RCU])
-setRCUmask([RCU])
+setAntmask(RCU)
+setRCUmask(RCU)
 #call_debug_method("DTH_off")
+FRCU=0.05;
+FCH=0.425;
+F0=101.0
+name="RCU_DTH_freq"
 
-if True:
- name="RCU_DTH_freq"
- Freq=[102e6,102.101e6,102.2e6]
-# Freq=[102.2e6,102.1e6,102.0e6]
-# Freq=[0,0,0]
+if False:
  att=get_value(name+"_R")
- print("freq old:",att[3*RCU:3*RCU+3])
- att[3*RCU:3*RCU+3]=[int(x) for x in Freq]
- print("freq set:",att[3*RCU:3*RCU+3])
+ print("freq old:",att[3*RCU[0]:3*RCU[-1]+3])
+
+ for r in RCU:
+   Freq=F0+np.array([0,1,2])*FCH+r*FRCU;
+   att[3*r:3*r+3]=[int(np.round(x*1e6)) for x in Freq]
+
+ print("freq set:",att[3*RCU[0]:3*RCU[-1]+3])
  set_value(name+"_RW",att)
- time.sleep(0.5)
+
+ time.sleep(5)
  att=get_value(name+"_R")
- print("freq new :",att[3*RCU:3*RCU+3])
-callmethod("RCU_DTH_on")
-#callmethod("DTH_off")
+ print("freq new :",att[3*RCU[0]:3*RCU[-1]+3])
+
+#callmethod("RCU_DTH_on")
+callmethod("RCU_DTH_off")
 
 disconnect()
\ No newline at end of file
diff --git a/scripts/LED.py b/scripts/LED.py
index c4d882325cf9d3d547e1962b9701541a162cc143..71b6418682711dcab20c99795cc462d3693bdc3a 100644
--- a/scripts/LED.py
+++ b/scripts/LED.py
@@ -1,11 +1,12 @@
 from test_common import *
 
-name="RCU_LED0"
-RCU=0;
-LEDvalue=2;
+name="RCU_LED_green_on"
+#name="RCU_LED_red_on"
+RCU=2;
+LEDvalue=True;
 
+connect()
 setRCUmask([RCU])
-
 led=get_value(name+"_R")
 print("LED old:",led)
 led[RCU]=LEDvalue
diff --git a/scripts/SetMonitor.py b/scripts/SetMonitor.py
index d90e1a494a4fb47443378f936fcb5d5f9c4e54be..b9bc725836b55d98d56cbfea0425773f84065ddf 100644
--- a/scripts/SetMonitor.py
+++ b/scripts/SetMonitor.py
@@ -1,6 +1,6 @@
 from test_common import *
 connect()
-rate= 30 #seconds
+rate= 1 #seconds
 name="RECVTR_monitor_rate_RW"
 
 print("old:",get_value(name))
diff --git a/scripts/setpin.py b/scripts/setpin.py
index 6eae8cf68941545d7df3c46b5df72791bbab15a7..148fc35c55a9b97e7bc6cd8477430ae9d539cda7 100644
--- a/scripts/setpin.py
+++ b/scripts/setpin.py
@@ -8,7 +8,7 @@ PIN=11
 GPIO.setmode(GPIO.BCM)
 
 GPIO.setup(PIN,GPIO.OUT)
-GPIO.output(PIN,1)
+GPIO.output(PIN,0)
 #print("SDA ",GPIO.input(SDA))
 #print("SCL ",GPIO.input(SCL))
 
diff --git a/scripts/test1.py b/scripts/test1.py
index a691a74530fd5645c34f885bb2fcc5b59e8a2355..831552b421926ee4bd8f328e975e231863f96637 100644
--- a/scripts/test1.py
+++ b/scripts/test1.py
@@ -1,23 +1,29 @@
 from test_common import *
+import numpy as np
+from time import sleep
+RCU=[0,1,2,3];
+On=[True,True,True]
+N=12;
 
-name="RCU_LED0_RW"
-#RCU=0;
-#LEDvalue=0;
+name="RCU_PWR_ANT_on"
 
-#setRCUmask([RCU])
+#exit()
+connect()
+setAntmask(RCU,[True,True,True])
+#setRCUmask(RCU):
 
-A=get_value(name)
-print(A)
-#A[0]=1.;
-A[0]='on';
-print(A)
-set_value(name,A)
-#print("LED old:",led)
-#led[RCU]=LEDvalue
+AntPwr=get_value(name+"_R")
+print(AntPwr)
+try:
+  while True:
+    Rnd=np.random.rand(N)
+    for x in range(N):
+      AntPwr[x]=True if Rnd[x]>0.5 else False
+    print(AntPwr)
+    set_value(name+"_RW",AntPwr)
+    sleep(np.random.rand(1)*10)
+finally:
+ disconnect();
+exit()
 
-#set_value(name+"_RW",led)
-#time.sleep(0.1)
-
-#print("LED new:",get_value(name+"_R"))
-
-disconnect()
+disconnect()
\ No newline at end of file
diff --git a/scripts/test2.py b/scripts/test2.py
new file mode 100644
index 0000000000000000000000000000000000000000..e712586b01e1067cc37713c94b095e25d8aaa30f
--- /dev/null
+++ b/scripts/test2.py
@@ -0,0 +1,33 @@
+from test_common import *
+import numpy as np
+from time import sleep
+RCU=[0,1,2,3];
+N=4;
+
+name1="RCU_LED_red_on"
+name2="RCU_LED_green_on"
+
+#exit()
+connect()
+setRCUmask(RCU)
+
+LED1=get_value(name1+"_R")
+LED2=get_value(name2+"_R")
+print(LED1,LED2)
+try:
+  while True:
+    Rnd=np.random.rand(N)
+    for x in range(N):
+      LED1[x]=True if Rnd[x]>0.5 else False
+    Rnd=np.random.rand(N)
+    for x in range(N):
+      LED2[x]=True if Rnd[x]>0.5 else False
+    print(LED1,LED2)
+    set_value(name1+"_RW",LED1)
+    set_value(name2+"_RW",LED2)
+    sleep(np.random.rand(1)*10)
+finally:
+ disconnect();
+exit()
+
+disconnect()
\ No newline at end of file
diff --git a/scripts/testRCUI2C.log b/scripts/testRCUI2C.log
new file mode 100644
index 0000000000000000000000000000000000000000..8f3ae94f1b69020fc0d323e8d812d9f57ece3c1a
--- /dev/null
+++ b/scripts/testRCUI2C.log
@@ -0,0 +1,297 @@
+     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
+00:          -- -- -- -- -- -- -- -- -- -- -- -- -- 
+10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+70: 70 71 72 73 -- -- -- --                         
+     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
+00:          -- -- -- -- -- -- -- -- -- -- -- -- -- 
+10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+70: 70 71 72 73 -- -- -- --                         
+     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
+00:          -- -- -- -- -- -- -- -- -- -- -- -- -- 
+10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+70: 70 71 72 73 -- -- -- --                         
+     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
+00:          -- -- -- -- -- -- -- -- -- -- -- -- -- 
+10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+70: 70 71 72 73 -- -- -- --                         
+     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
+00:          -- -- -- -- -- -- -- -- -- -- -- -- -- 
+10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+70: 70 71 72 73 -- -- -- --                         
+     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
+00:          -- -- -- -- -- -- -- -- -- -- -- -- -- 
+10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+20: 20 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+50: 50 51 52 53 54 55 56 57 -- -- -- -- -- -- -- -- 
+60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+70: 70 71 72 73 74 75 76 --                         
+     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
+00:          -- -- -- -- -- -- -- -- -- -- -- -- -- 
+10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+70: 70 71 72 73 -- -- -- --                         
+     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
+00:          -- -- -- -- -- -- -- -- -- -- -- -- -- 
+10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+20: 20 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+50: 50 51 52 53 54 55 56 57 -- -- -- -- -- -- -- -- 
+60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+70: 70 71 72 73 74 75 76 --                         
+     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
+00:          -- -- -- -- -- -- -- -- -- -- -- -- -- 
+10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+70: 70 71 72 73 -- -- -- --                         
+     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
+00:          -- -- -- -- -- -- -- -- -- -- -- -- -- 
+10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+70: 70 71 72 73 -- -- -- --                         
+     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
+00:          -- -- -- -- -- -- -- -- -- -- -- -- -- 
+10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+70: 70 71 72 73 -- -- -- --                         
+     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
+00:          -- -- -- -- -- -- -- -- -- -- -- -- -- 
+10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+50: 50 51 52 53 54 55 56 57 -- -- -- -- -- -- -- -- 
+60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+70: 70 71 72 73 74 75 76 --                         
+     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
+00:          -- -- -- -- -- -- -- -- -- -- -- -- -- 
+10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+70: 70 71 72 73 -- -- -- --                         
+     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
+00:          -- -- -- -- -- -- -- -- -- -- -- -- -- 
+10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+20: 20 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+50: 50 51 52 53 54 55 56 57 -- -- -- -- -- -- -- -- 
+60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+70: 70 71 72 73 74 75 76 --                         
+     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
+00:          -- -- -- -- -- -- -- -- -- -- -- -- -- 
+10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+70: 70 71 72 73 -- -- -- --                         
+     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
+00:          -- -- -- -- -- -- -- -- -- -- -- -- -- 
+10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+50: 50 51 52 53 54 55 56 57 -- -- -- -- -- -- -- -- 
+60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+70: 70 71 72 73 74 75 76 --                         
+     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
+00:          -- -- -- -- -- -- -- -- -- -- -- -- -- 
+10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+70: 70 71 72 73 -- -- -- --                         
+     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
+00:          -- -- -- -- -- -- -- -- -- -- -- -- -- 
+10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+20: 20 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+50: 50 51 52 53 54 55 56 57 -- -- -- -- -- -- -- -- 
+60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+70: 70 71 72 73 74 75 76 --                         
+     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
+00:          -- -- -- -- -- -- -- -- -- -- -- -- -- 
+10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+70: 70 71 72 73 -- -- -- --                         
+     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
+00:          -- -- -- -- -- -- -- -- -- -- -- -- -- 
+10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+50: 50 51 52 53 54 55 56 57 -- -- -- -- -- -- -- -- 
+60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+70: 70 71 72 73 74 75 76 --                         
+     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
+00:          -- -- -- -- -- -- -- -- -- -- -- -- -- 
+10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+70: 70 71 72 73 -- -- -- --                         
+     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
+00:          -- -- -- -- -- -- -- -- -- -- -- -- -- 
+10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+70: 70 71 72 73 -- -- -- --                         
+     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
+00:          -- -- -- -- -- -- -- -- -- -- -- -- -- 
+10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+70: 70 71 72 73 -- -- -- --                         
+     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
+00:          -- -- -- -- -- -- -- -- -- -- -- -- -- 
+10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+70: 70 71 72 73 -- -- -- --                         
+     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
+00:          -- -- -- -- -- -- -- -- -- -- -- -- -- 
+10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+70: 70 71 72 73 -- -- -- --                         
+     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
+00:          -- -- -- -- -- -- -- -- -- -- -- -- -- 
+10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+50: 50 51 52 53 54 55 56 57 -- -- -- -- -- -- -- -- 
+60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+70: 70 71 72 73 74 75 76 --                         
+     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
+00:          -- -- -- -- -- -- -- -- -- -- -- -- -- 
+10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+70: 70 71 72 73 -- -- -- --                         
+     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
+00:          -- -- -- -- -- -- -- -- -- -- -- -- -- 
+10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+70: 70 71 72 73 -- -- -- --                         
+     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
+00:          -- -- -- -- -- -- -- -- -- -- -- -- -- 
+10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+70: 70 71 72 73 -- -- -- --                         
+     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
+00:          -- -- -- -- -- -- -- -- -- -- -- -- -- 
+10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+70: 70 71 72 73 -- -- -- --                         
+     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
+00:          -- -- -- -- -- -- -- -- -- -- -- -- -- 
+10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+70: 70 71 72 73 -- -- -- --                         
+     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
+00:          -- -- -- -- -- -- -- -- -- -- -- -- -- 
+10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+70: 70 71 72 73 -- -- -- --                         
+     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
+00:          -- -- -- -- -- -- -- -- -- -- -- -- -- 
+10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
+70: 70 71 72 73 -- -- -- --                         
diff --git a/scripts/testRCUI2C.sh b/scripts/testRCUI2C.sh
new file mode 100644
index 0000000000000000000000000000000000000000..b9c3b2802e2ccc3429e04a94f7de2f95defa7903
--- /dev/null
+++ b/scripts/testRCUI2C.sh
@@ -0,0 +1,73 @@
+i2ctransfer -y 1 w1@0x70 0
+i2ctransfer -y 1 w1@0x71 0
+i2ctransfer -y 1 w1@0x72 0
+i2ctransfer -y 1 w1@0x73 0
+i2cdetect -y 1
+i2ctransfer -y 1 w1@0x70 1
+i2cdetect -y 1
+i2ctransfer -y 1 w1@0x70 2
+i2cdetect -y 1
+i2ctransfer -y 1 w1@0x70 4
+i2cdetect -y 1
+i2ctransfer -y 1 w1@0x70 8
+i2cdetect -y 1
+i2ctransfer -y 1 w1@0x70 16
+i2cdetect -y 1
+i2ctransfer -y 1 w1@0x70 32
+i2cdetect -y 1
+i2ctransfer -y 1 w1@0x70 64
+i2cdetect -y 1
+i2ctransfer -y 1 w1@0x70 128
+i2cdetect -y 1
+i2ctransfer -y 1 w1@0x70 0
+i2ctransfer -y 1 w1@0x71 1
+i2cdetect -y 1
+i2ctransfer -y 1 w1@0x71 2
+i2cdetect -y 1
+i2ctransfer -y 1 w1@0x71 4
+i2cdetect -y 1
+i2ctransfer -y 1 w1@0x71 8
+i2cdetect -y 1
+i2ctransfer -y 1 w1@0x71 16
+i2cdetect -y 1
+i2ctransfer -y 1 w1@0x71 32
+i2cdetect -y 1
+i2ctransfer -y 1 w1@0x71 64
+i2cdetect -y 1
+i2ctransfer -y 1 w1@0x71 128
+i2cdetect -y 1
+i2ctransfer -y 1 w1@0x71 0
+i2ctransfer -y 1 w1@0x72 1
+i2cdetect -y 1
+i2ctransfer -y 1 w1@0x72 2
+i2cdetect -y 1
+i2ctransfer -y 1 w1@0x72 4
+i2cdetect -y 1
+i2ctransfer -y 1 w1@0x72 8
+i2cdetect -y 1
+i2ctransfer -y 1 w1@0x72 16
+i2cdetect -y 1
+i2ctransfer -y 1 w1@0x72 32
+i2cdetect -y 1
+i2ctransfer -y 1 w1@0x72 64
+i2cdetect -y 1
+i2ctransfer -y 1 w1@0x72 128
+i2cdetect -y 1
+i2ctransfer -y 1 w1@0x72 0
+i2ctransfer -y 1 w1@0x73 1
+i2cdetect -y 1
+i2ctransfer -y 1 w1@0x73 2
+i2cdetect -y 1
+i2ctransfer -y 1 w1@0x73 4
+i2cdetect -y 1
+i2ctransfer -y 1 w1@0x73 8
+i2cdetect -y 1
+i2ctransfer -y 1 w1@0x73 16
+i2cdetect -y 1
+i2ctransfer -y 1 w1@0x73 32
+i2cdetect -y 1
+i2ctransfer -y 1 w1@0x73 64
+i2cdetect -y 1
+i2ctransfer -y 1 w1@0x73 128
+i2cdetect -y 1
+