DS90UB960-Q1: DS90UB960-Q1: Using with Raspberry Pi or Rockchip RK3566

Part Number: DS90UB960-Q1
Other Parts Discussed in Thread: DS90UB953-Q1

Tool/software:

Hello,

Could you please help me understand how to stream 4 cameras through DS90UB960 (FPD-Link III) and display them using v3link on Raspberry Pi 5 (or 4) or Rockchip RK3566?

  • Hardware: DS90UB960-Q1 deserializer, DS90UB953-Q1 serializers, Sony IMX219 image sensors.

  • Goal: Connect 4 cameras over FPD-Link III, aggregate on DS90UB960, and output via MIPI CSI-2 to the SoC (Raspberry Pi 5/4 or Rockchip RK3566).

  • Software: Using Linux kernel (v6.x), need proper device tree configuration for DS90UB960 and camera endpoints.

  • Challenge: I can access the I²C registers (read/write works), but I am not sure how to configure the CSI-2 output and virtual channel mapping for 4 cameras.

Questions:

  1. What is the correct initialization sequence for DS90UB960 + DS90UB953 to stream IMX219?

  2. How should I configure the CSI-2 lane mapping and virtual channels to output 4 cameras simultaneously?

  3. Are there existing Linux drivers or example device tree bindings for DS90UB960 with Raspberry Pi or Rockchip platforms?

Thank you for your support.

  • Hi Tuan, 

    The DS90UB960 is capable of aggregating four video streams into a single CSI-2 port. To ensure the input bandwidth does not exceed the total output bandwidth, we have the following resource available to go over aggregation scenarios. The following video from the FPD-Link Training Center will cover this behavior: https://www.ti.com/video/6247583604001

    The linked E2E thread will also provide a calculator and general explanation of how to use the tool: https://e2e.ti.com/support/interface-group/interface/f/interface-forum/1132331/ds90ub960-q1-csi2-aggregation-bandwidth-calculator?tisearch=e2e-sitesearch&keymatch=aggregation%2520AND%2520ds90ub960#

    VC-ID is recommended to be remapped prior to enabling forwarding. VC-ID remapping is done on a per RX port basis by configuring register 0x72. 

    An example configuration can be seen as follows: 

    # "*** RX0 VC=0 ***"
    WriteI2C(0x4C,0x01) # RX0
    WriteI2C(0x72,0xE4) # RX0 VC
    # "*** RX1 VC=1 ***"
    WriteI2C(0x4C,0x12) # RX1
    WriteI2C(0x72,0xE4) # RX1 VC
    # "*** RX2 VC=2 ***"
    WriteI2C(0x4C,0x24) # RX2
    WriteI2C(0x72,0x9F) # RX2 VC
    # "*** RX3 VC=3 ***"
    WriteI2C(0x4C,0x38) # RX3
    WriteI2C(0x72,0xDF) # RX3 VC
    # "CSI_TX_SPEED"
    WriteI2C(0x1F,0x00) # CSI rate select
    # "CSI_PORT_SEL"
    WriteI2C(0x32,0x01) # CSI0 select
    # "CSI_EN"
    WriteI2C(0x33,0x01) # CSI_EN & CSI0 4L
    # "***Basic_FWD"
    WriteI2C(0x21,0x14) # Synchronized Basic_FWD
    # "***FWD_PORT all RX to CSI0"
    WriteI2C(0x20,0x00) # forwarding of all RX to CSI0
    

    Registers 0x72 , 0x1F-0x21, and 0x33 should be adjusted based on the desired system level behavior. By default 0x72 is set so that the original VC-ID that passes through the link is maintained. 

    We do not build Linux drivers for these devices however, these may be available through outside parties. In order to configure the UB960 and UB953, this can be done entirely through register reads and writes. 

    Best,

    Zoe

  • For a beginner, can you provide a step-by-step guide from initialization to streaming? Specifically:

    1. Initialize the DS90UB960 and configure the I²C alias addresses.

    2. Initialize the DS90UB953 serializer.

    3. Forward the CSI data from the camera through the serializer/deserializer to the SoC.

  • Hi Tuan, 

    Various example scripts for this initialization process are provided upon downloading Analog LaunchPAD GUI in the PreDefScripts DS90UB954 folder. We suggest downloading this resource if not already done so as it will cover various different application examples. 

    The key difference between DS90UB954 and DS90UB960 will be the number of RX ports and CSI ports. The predefined scripts are all set up as single RX port applications. To initialize all four ports of the DS90UB960, you will want to repeat the same process for all ports and select the applicable ports in register 0x4C. To initialize the CSI port, ensure the CSI port is selected in register 0x32. The below table from the DS90UB960 datasheet will help in these configurations: 

    The initialization process will differ depending on the HW level implementation, primarily devices straps. Attached to this response is an example bring-up script we have for using the OVT10640 sensor with our DS90UB953EVM and DS90UB960 or DS90UB954 EVMs. 

    """
      Copyright 2018 Texas Instruments Incorporated. All rights reserved.
    
      IMPORTANT: Your use of this Software is limited to those specific rights
      granted under the terms of a software license agreement between the user who
      downloaded the software, his/her employer (which must be your employer) and
      Texas Instruments Incorporated (the "License"). You may not use this Software
      unless you agree to abide by the terms of the License. The License limits your
      use, and you acknowledge, that the Software may not be modified, copied or
      distributed unless embedded on a Texas Instruments microcontroller which is
      integrated into your product. Other than for the foregoing purpose, you may
      not use, reproduce, copy, prepare derivative works of, modify, distribute,
      perform, display or sell this Software and/or its documentation for any
      purpose.
    
      YOU FURTHER ACKNOWLEDGE AND AGREE THAT THE SOFTWARE AND DOCUMENTATION ARE
      PROVIDED AS IS WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED,
      INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY, TITLE,
      NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL TEXAS
      INSTRUMENTS OR ITS LICENSORS BE LIABLE OR OBLIGATED UNDER CONTRACT,
      NEGLIGENCE, STRICT LIABILITY, CONTRIBUTION, BREACH OF WARRANTY, OR OTHER LEGAL
      EQUITABLE THEORY ANY DIRECT OR INDIRECT DAMAGES OR EXPENSES INCLUDING BUT NOT
      LIMITED TO ANY INCIDENTAL, SPECIAL, INDIRECT, PUNITIVE OR CONSEQUENTIAL
      DAMAGES, LOST PROFITS OR LOST DATA, COST OF PROCUREMENT OF SUBSTITUTE GOODS,
      TECHNOLOGY, SERVICES, OR ANY CLAIMS BY THIRD PARTIES (INCLUDING BUT NOT
      LIMITED TO ANY DEFENSE THEREOF), OR OTHER SIMILAR COSTS.
    
      Should you have any questions regarding your right to use this Software,
      contact Texas Instruments Incorporated at www.TI.com.
    
    """
    # OVT10640 reset and initialization
    # Run from UB954
    # Version 0.91
    
    import time
    #reset and initialize OVT10640 
    
    # Set up IDs
    UB954 = 0x7a
    UB953ID = 0x30
    UB953 = 0x18
    OVTID = 0x60
    OVT = 0xC4
    
    # Set up Port0
    board.WriteI2C(UB954, 0x4C, 0x38)
    
    # Set up Back Channel Config (0x58)
    #board.WriteI2C(UB954,0x58,0x5E)
    
    # Set up SER ID
    #board.WriteI2C(UB954,0x5B,UB953ID)
    # Set up SER Alias ID
    board.WriteI2C(UB954,0x5C,UB953)
    # Set up Slave/Camera ID
    board.WriteI2C(UB954,0x5D,OVTID)
    # Set up Slave/Camera Alias ID
    board.WriteI2C(UB954,0x65,OVT)
    
    board.WriteI2C(UB954,0x7C,0x00) #PORT SELECT 
    
    board.WriteI2C(UB954,0x6E,0x99) #BC GPIO
    
    board.WriteI2C(UB954,0x70,0x1F) #RAW ID
    
    board.WriteI2C(UB954,0x71,0x1F) #RAW ID
    
    board.WriteI2C(UB954,0x7C,0xC0) #RAW 10 8BIT
    
    board.WriteI2C(UB954,0x32,0x01) #CSI TX PORT1
    
    board.WriteI2C(UB954,0x33,0x03) #CSI OUT ENABLE
    
    board.WriteI2C(UB954,0x20,0x0) #CSI FORWARDING
    
    time.sleep(1)
    # Set GPIO2 and GPIO3 to outputs, where GPIO2 = RESET and GPIO3 = PWDN
    board.WriteI2C(UB953,0x0E,0xC0)
    time.sleep(1)
    # Set GPIO2 and GPIO3 to High - bring OVT10640 out of power down mode
    board.WriteI2C(UB953,0x0D,0x0C)
    time.sleep(1)
    # Bring GPIO3 low to place 10640 in reset
    board.WriteI2C(UB953,0x0D,0x08)
    time.sleep(1)
    # Bring GPIO3 high again to prepare 10640 for initialization
    board.WriteI2C(UB953,0x0D,0x0C)
    time.sleep(1)
    board.WriteI2C(UB953,0x1C,0x3F)
    board.WriteI2C(UB953,0x1E,0x03)
    board.WriteI2C(UB953,0x49,0x28)
    board.WriteI2C(UB954,0x1F,0x03)
    
    
    
    
    print "OVT10640 Reset"
    
    #Initialize OVT10640
    board.WriteI2C(OVT,0x30, [0x13,0x01])
    time.sleep(0.1)
    
    board.WriteI2C(OVT,0x32, [0x8a,0x01])
    board.WriteI2C(OVT,0x31, [0x3f,0x80])
    board.WriteI2C(OVT,0x31, [0x32,0x24])
    board.WriteI2C(OVT,0x30, [0x00,0x03])
    board.WriteI2C(OVT,0x30, [0x01,0x34])
    board.WriteI2C(OVT,0x30, [0x02,0x07])
    board.WriteI2C(OVT,0x30, [0x04,0x03])
    board.WriteI2C(OVT,0x30, [0x05,0x34])
    board.WriteI2C(OVT,0x30, [0x06,0x07])
    board.WriteI2C(OVT,0x30, [0x07,0x01])
    board.WriteI2C(OVT,0x30, [0x14,0x03])
    board.WriteI2C(OVT,0x30, [0x23,0x05])
    board.WriteI2C(OVT,0x30, [0x32,0x34])
    board.WriteI2C(OVT,0x30, [0x33,0xfb])
    board.WriteI2C(OVT,0x30, [0x54,0x00])
    board.WriteI2C(OVT,0x30, [0x55,0x0F])
    board.WriteI2C(OVT,0x30, [0x56,0x01])
    board.WriteI2C(OVT,0x30, [0x57,0xFF])
    board.WriteI2C(OVT,0x30, [0x58,0xbf])
    board.WriteI2C(OVT,0x30, [0x59,0x44])
    board.WriteI2C(OVT,0x30, [0x5a,0x02])
    board.WriteI2C(OVT,0x30, [0x5b,0x00])
    board.WriteI2C(OVT,0x30, [0x5c,0x30])
    board.WriteI2C(OVT,0x30, [0x5d,0x1d])
    board.WriteI2C(OVT,0x30, [0x5e,0x16])
    board.WriteI2C(OVT,0x30, [0x5f,0x18])
    board.WriteI2C(OVT,0x30, [0x60,0xf9])
    board.WriteI2C(OVT,0x30, [0x61,0xf0])
    board.WriteI2C(OVT,0x30, [0x8c,0x03])
    board.WriteI2C(OVT,0x30, [0x8f,0x10])
    board.WriteI2C(OVT,0x30, [0x90,0x00])
    board.WriteI2C(OVT,0x30, [0x91,0x0C])
    board.WriteI2C(OVT,0x30, [0xeb,0x00])
    board.WriteI2C(OVT,0x30, [0xa3,0x08])
    board.WriteI2C(OVT,0x30, [0xad,0x03])
    board.WriteI2C(OVT,0x30, [0xae,0x80])
    board.WriteI2C(OVT,0x30, [0xaf,0x80])
    board.WriteI2C(OVT,0x30, [0xb0,0xff])
    board.WriteI2C(OVT,0x30, [0xb1,0x3f])
    board.WriteI2C(OVT,0x30, [0xb2,0x22])
    board.WriteI2C(OVT,0x30, [0xb9,0x22])
    board.WriteI2C(OVT,0x30, [0xbb,0x00])
    board.WriteI2C(OVT,0x30, [0xbc,0x00])
    board.WriteI2C(OVT,0x30, [0xbd,0x00])
    board.WriteI2C(OVT,0x30, [0xbe,0x00])
    board.WriteI2C(OVT,0x30, [0xbf,0x00])
    board.WriteI2C(OVT,0x30, [0xc0,0x00])
    board.WriteI2C(OVT,0x30, [0xc1,0x00])
    board.WriteI2C(OVT,0x30, [0xc2,0x00])
    board.WriteI2C(OVT,0x30, [0xc3,0x00])
    board.WriteI2C(OVT,0x30, [0xc4,0x80])
    board.WriteI2C(OVT,0x30, [0xc5,0x00])
    board.WriteI2C(OVT,0x30, [0xc6,0x80])
    board.WriteI2C(OVT,0x30, [0xc7,0x00])
    board.WriteI2C(OVT,0x30, [0xc8,0x80])
    board.WriteI2C(OVT,0x31, [0x19,0x45])
    board.WriteI2C(OVT,0x31, [0x1a,0x01])
    board.WriteI2C(OVT,0x31, [0x1b,0x4a])
    board.WriteI2C(OVT,0x30, [0x74,0x00])
    board.WriteI2C(OVT,0x30, [0x75,0x00])
    board.WriteI2C(OVT,0x30, [0x76,0x00])
    board.WriteI2C(OVT,0x30, [0x77,0x40])
    board.WriteI2C(OVT,0x30, [0x78,0x05])
    board.WriteI2C(OVT,0x30, [0x79,0x07])
    board.WriteI2C(OVT,0x30, [0x7a,0x03])
    board.WriteI2C(OVT,0x30, [0x7b,0xff])
    board.WriteI2C(OVT,0x30, [0x7c,0x05])
    board.WriteI2C(OVT,0x30, [0x7d,0x08])
    board.WriteI2C(OVT,0x30, [0x7e,0x03])
    board.WriteI2C(OVT,0x30, [0x7f,0xc0])
    board.WriteI2C(OVT,0x30, [0x80,0x05])
    board.WriteI2C(OVT,0x30, [0x81,0xc8])
    board.WriteI2C(OVT,0x30, [0x82,0x03])
    board.WriteI2C(OVT,0x30, [0x83,0xd0])
    board.WriteI2C(OVT,0x30, [0x84,0x00])
    board.WriteI2C(OVT,0x30, [0x85,0x00])
    board.WriteI2C(OVT,0x30, [0x86,0x00])
    board.WriteI2C(OVT,0x30, [0x87,0x00])
    board.WriteI2C(OVT,0x30, [0x88,0x00])
    board.WriteI2C(OVT,0x30, [0x89,0x40])
    board.WriteI2C(OVT,0x30, [0x8d,0x92])
    board.WriteI2C(OVT,0x30, [0x94,0xa5])
    board.WriteI2C(OVT,0x30, [0xe6,0x04])
    board.WriteI2C(OVT,0x30, [0xe7,0x4c])
    board.WriteI2C(OVT,0x30, [0xe8,0x04])
    board.WriteI2C(OVT,0x30, [0xe9,0x4c])
    board.WriteI2C(OVT,0x30, [0xe9,0x05])
    board.WriteI2C(OVT,0x30, [0xec,0x01])
    board.WriteI2C(OVT,0x30, [0xfa,0x06])
    board.WriteI2C(OVT,0x31, [0x20,0x00])
    board.WriteI2C(OVT,0x31, [0x21,0x01])
    board.WriteI2C(OVT,0x31, [0x22,0x00])
    board.WriteI2C(OVT,0x31, [0x27,0x63])
    board.WriteI2C(OVT,0x31, [0x28,0xc0])
    board.WriteI2C(OVT,0x31, [0x29,0x00])
    board.WriteI2C(OVT,0x31, [0xbe,0x00])
    board.WriteI2C(OVT,0x30, [0xa5,0x78])
    board.WriteI2C(OVT,0x30, [0xa6,0x40])
    board.WriteI2C(OVT,0x30, [0xa7,0x78])
    board.WriteI2C(OVT,0x30, [0xa8,0x80])
    board.WriteI2C(OVT,0x30, [0xa9,0x78])
    board.WriteI2C(OVT,0x30, [0xaa,0xe0])
    board.WriteI2C(OVT,0x30, [0xab,0x79])
    board.WriteI2C(OVT,0x30, [0xac,0xc0])
    board.WriteI2C(OVT,0x34, [0x40,0x04])
    board.WriteI2C(OVT,0x34, [0x44,0x28])
    board.WriteI2C(OVT,0x34, [0x4e,0x2c])
    board.WriteI2C(OVT,0x34, [0x57,0x33])
    board.WriteI2C(OVT,0x34, [0x5e,0x38])
    board.WriteI2C(OVT,0x34, [0x61,0xa8])
    board.WriteI2C(OVT,0x70, [0x02,0xaa])
    board.WriteI2C(OVT,0x70, [0x01,0xdf])
    board.WriteI2C(OVT,0x70, [0x48,0x00])
    board.WriteI2C(OVT,0x70, [0x49,0x02])
    board.WriteI2C(OVT,0x70, [0x4a,0x02])
    board.WriteI2C(OVT,0x70, [0x4b,0x00])
    board.WriteI2C(OVT,0x70, [0x4c,0x01])
    board.WriteI2C(OVT,0x70, [0x4d,0x00])
    board.WriteI2C(OVT,0x70, [0x43,0x04])
    board.WriteI2C(OVT,0x70, [0x40,0x3c])
    board.WriteI2C(OVT,0x70, [0x47,0x00])
    board.WriteI2C(OVT,0x70, [0x44,0x01])
    board.WriteI2C(OVT,0x70, [0x00,0x1f])
    board.WriteI2C(OVT,0x70, [0x84,0x01])
    board.WriteI2C(OVT,0x70, [0x85,0x03])
    board.WriteI2C(OVT,0x70, [0x86,0x02])
    board.WriteI2C(OVT,0x70, [0x87,0x40])
    board.WriteI2C(OVT,0x70, [0x88,0x01])
    board.WriteI2C(OVT,0x70, [0x89,0x20])
    board.WriteI2C(OVT,0x70, [0x7f,0x04])
    board.WriteI2C(OVT,0x70, [0x7c,0x3c])
    board.WriteI2C(OVT,0x70, [0x83,0x00])
    board.WriteI2C(OVT,0x70, [0x80,0x01])
    board.WriteI2C(OVT,0x70, [0x03,0xdf])
    board.WriteI2C(OVT,0x70, [0xc0,0x00])
    board.WriteI2C(OVT,0x70, [0xc1,0x02])
    board.WriteI2C(OVT,0x70, [0xc2,0x02])
    board.WriteI2C(OVT,0x70, [0xc3,0x00])
    board.WriteI2C(OVT,0x70, [0xc4,0x01])
    board.WriteI2C(OVT,0x70, [0xc5,0x00])
    board.WriteI2C(OVT,0x70, [0xb8,0x03])
    board.WriteI2C(OVT,0x70, [0xb9,0x98])
    board.WriteI2C(OVT,0x70, [0xbc,0x00])
    board.WriteI2C(OVT,0x70, [0xbd,0x80])
    board.WriteI2C(OVT,0x70, [0x04,0x02])
    board.WriteI2C(OVT,0x70, [0x05,0x00])
    board.WriteI2C(OVT,0x70, [0x06,0x01])
    board.WriteI2C(OVT,0x70, [0x07,0x80])
    board.WriteI2C(OVT,0x70, [0x08,0x02])
    board.WriteI2C(OVT,0x70, [0x09,0x00])
    board.WriteI2C(OVT,0x70, [0x0a,0x04])
    board.WriteI2C(OVT,0x70, [0x0b,0x00])
    board.WriteI2C(OVT,0x70, [0x0e,0x00])
    board.WriteI2C(OVT,0x70, [0x0f,0x60])
    board.WriteI2C(OVT,0x70, [0x1a,0x02])
    board.WriteI2C(OVT,0x70, [0x1b,0x00])
    board.WriteI2C(OVT,0x70, [0x1c,0x01])
    board.WriteI2C(OVT,0x70, [0x1d,0x80])
    board.WriteI2C(OVT,0x70, [0x1e,0x02])
    board.WriteI2C(OVT,0x70, [0x1f,0x00])
    board.WriteI2C(OVT,0x70, [0x20,0x04])
    board.WriteI2C(OVT,0x70, [0x21,0x00])
    board.WriteI2C(OVT,0x70, [0x24,0x00])
    board.WriteI2C(OVT,0x70, [0x25,0x60])
    board.WriteI2C(OVT,0x70, [0xe7,0x00])
    board.WriteI2C(OVT,0x70, [0xe4,0x10])
    board.WriteI2C(OVT,0x70, [0xe5,0x00])
    board.WriteI2C(OVT,0x70, [0xe6,0x00])
    board.WriteI2C(OVT,0x70, [0xeb,0x00])
    board.WriteI2C(OVT,0x70, [0xe8,0x10])
    board.WriteI2C(OVT,0x70, [0xe9,0x00])
    board.WriteI2C(OVT,0x70, [0xea,0x00])
    board.WriteI2C(OVT,0x70, [0xef,0x00])
    board.WriteI2C(OVT,0x70, [0xec,0xfd])
    board.WriteI2C(OVT,0x70, [0xed,0x00])
    board.WriteI2C(OVT,0x70, [0xee,0x00])
    board.WriteI2C(OVT,0x70, [0xeb,0x00])
    board.WriteI2C(OVT,0x70, [0xf0,0xfd])
    board.WriteI2C(OVT,0x70, [0xf1,0x00])
    board.WriteI2C(OVT,0x70, [0xf2,0x00])
    board.WriteI2C(OVT,0x30, [0xfb,0x06])
    board.WriteI2C(OVT,0x30, [0xfc,0x80])
    board.WriteI2C(OVT,0x30, [0xfd,0x02])
    board.WriteI2C(OVT,0x30, [0xfe,0x93])
    board.WriteI2C(OVT,0x60, [0x00,0xc1])
    board.WriteI2C(OVT,0x60, [0x01,0xb9])
    board.WriteI2C(OVT,0x60, [0x02,0xba])
    board.WriteI2C(OVT,0x60, [0x03,0xa4])
    board.WriteI2C(OVT,0x60, [0x04,0xb5])
    board.WriteI2C(OVT,0x60, [0x05,0xa0])
    board.WriteI2C(OVT,0x60, [0x06,0x82])
    board.WriteI2C(OVT,0x60, [0x07,0xa7])
    board.WriteI2C(OVT,0x60, [0x08,0xb7])
    board.WriteI2C(OVT,0x60, [0x09,0x5c])
    board.WriteI2C(OVT,0x60, [0x0a,0x9e])
    board.WriteI2C(OVT,0x60, [0x0b,0xc0])
    board.WriteI2C(OVT,0x60, [0x0c,0xd2])
    board.WriteI2C(OVT,0x60, [0x0d,0x33])
    board.WriteI2C(OVT,0x60, [0x0e,0xcc])
    board.WriteI2C(OVT,0x60, [0x0f,0xde])
    board.WriteI2C(OVT,0x60, [0x10,0xc1])
    board.WriteI2C(OVT,0x60, [0x11,0xab])
    board.WriteI2C(OVT,0x60, [0x12,0xb7])
    board.WriteI2C(OVT,0x60, [0x13,0x00])
    board.WriteI2C(OVT,0x60, [0x14,0x00])
    board.WriteI2C(OVT,0x60, [0x15,0x00])
    board.WriteI2C(OVT,0x60, [0x16,0x00])
    board.WriteI2C(OVT,0x60, [0x17,0x00])
    board.WriteI2C(OVT,0x60, [0x18,0x00])
    board.WriteI2C(OVT,0x60, [0x19,0x00])
    board.WriteI2C(OVT,0x60, [0x1a,0x00])
    board.WriteI2C(OVT,0x60, [0x1b,0x00])
    board.WriteI2C(OVT,0x60, [0x1c,0x00])
    board.WriteI2C(OVT,0x60, [0x1d,0xc5])
    board.WriteI2C(OVT,0x60, [0x1e,0x54])
    board.WriteI2C(OVT,0x60, [0x1f,0x9c])
    board.WriteI2C(OVT,0x60, [0x20,0x94])
    board.WriteI2C(OVT,0x60, [0x21,0x90])
    board.WriteI2C(OVT,0x60, [0x22,0x2a])
    board.WriteI2C(OVT,0x60, [0x23,0x61])
    board.WriteI2C(OVT,0x60, [0x24,0xd2])
    board.WriteI2C(OVT,0x60, [0x25,0xcc])
    board.WriteI2C(OVT,0x60, [0x26,0x02])
    board.WriteI2C(OVT,0x60, [0x27,0x35])
    board.WriteI2C(OVT,0x60, [0x28,0xb1])
    board.WriteI2C(OVT,0x60, [0x29,0xb2])
    board.WriteI2C(OVT,0x60, [0x2a,0xb3])
    board.WriteI2C(OVT,0x60, [0x2b,0xd2])
    board.WriteI2C(OVT,0x60, [0x2c,0xd3])
    board.WriteI2C(OVT,0x60, [0x2d,0x0A])
    board.WriteI2C(OVT,0x60, [0x2e,0x31])
    board.WriteI2C(OVT,0x60, [0x2f,0xcc])
    board.WriteI2C(OVT,0x60, [0x30,0x05])
    board.WriteI2C(OVT,0x60, [0x31,0xc4])
    board.WriteI2C(OVT,0x60, [0x32,0xd2])
    board.WriteI2C(OVT,0x60, [0x33,0xce])
    board.WriteI2C(OVT,0x60, [0x34,0x17])
    board.WriteI2C(OVT,0x60, [0x35,0xcf])
    board.WriteI2C(OVT,0x60, [0x36,0x1d])
    board.WriteI2C(OVT,0x60, [0x37,0xd0])
    board.WriteI2C(OVT,0x60, [0x38,0x23])
    board.WriteI2C(OVT,0x60, [0x39,0xd2])
    board.WriteI2C(OVT,0x60, [0x3a,0xbc])
    board.WriteI2C(OVT,0x60, [0x3b,0xcc])
    board.WriteI2C(OVT,0x60, [0x3c,0x51])
    board.WriteI2C(OVT,0x60, [0x3d,0xc5])
    board.WriteI2C(OVT,0x60, [0x3e,0xd2])
    board.WriteI2C(OVT,0x60, [0x3f,0x00])
    board.WriteI2C(OVT,0x60, [0x40,0x2b])
    board.WriteI2C(OVT,0x60, [0x41,0xcc])
    board.WriteI2C(OVT,0x60, [0x42,0x09])
    board.WriteI2C(OVT,0x60, [0x43,0xd2])
    board.WriteI2C(OVT,0x60, [0x44,0x1a])
    board.WriteI2C(OVT,0x60, [0x45,0xcc])
    board.WriteI2C(OVT,0x60, [0x46,0xeb])
    board.WriteI2C(OVT,0x60, [0x47,0x12])
    board.WriteI2C(OVT,0x60, [0x48,0x2a])
    board.WriteI2C(OVT,0x60, [0x49,0xba])
    board.WriteI2C(OVT,0x60, [0x4a,0x56])
    board.WriteI2C(OVT,0x60, [0x4b,0xd3])
    board.WriteI2C(OVT,0x60, [0x4c,0x27])
    board.WriteI2C(OVT,0x60, [0x4d,0x54])
    board.WriteI2C(OVT,0x60, [0x4e,0xd4])
    board.WriteI2C(OVT,0x60, [0x4f,0xc1])
    board.WriteI2C(OVT,0x60, [0x50,0x26])
    board.WriteI2C(OVT,0x60, [0x51,0xd2])
    board.WriteI2C(OVT,0x60, [0x52,0x01])
    board.WriteI2C(OVT,0x60, [0x53,0xd3])
    board.WriteI2C(OVT,0x60, [0x54,0x2f])
    board.WriteI2C(OVT,0x60, [0x55,0x27])
    board.WriteI2C(OVT,0x60, [0x56,0x08])
    board.WriteI2C(OVT,0x60, [0x57,0x1a])
    board.WriteI2C(OVT,0x60, [0x58,0xcc])
    board.WriteI2C(OVT,0x60, [0x59,0xd9])
    board.WriteI2C(OVT,0x60, [0x5a,0x12])
    board.WriteI2C(OVT,0x60, [0x5b,0x2c])
    board.WriteI2C(OVT,0x60, [0x5c,0x11])
    board.WriteI2C(OVT,0x60, [0x5d,0x60])
    board.WriteI2C(OVT,0x60, [0x5e,0x50])
    board.WriteI2C(OVT,0x60, [0x5f,0xc2])
    board.WriteI2C(OVT,0x60, [0x60,0xb9])
    board.WriteI2C(OVT,0x60, [0x61,0xa5])
    board.WriteI2C(OVT,0x60, [0x62,0xb5])
    board.WriteI2C(OVT,0x60, [0x63,0xa0])
    board.WriteI2C(OVT,0x60, [0x64,0x82])
    board.WriteI2C(OVT,0x60, [0x65,0x5c])
    board.WriteI2C(OVT,0x60, [0x66,0xd4])
    board.WriteI2C(OVT,0x60, [0x67,0xc1])
    board.WriteI2C(OVT,0x60, [0x68,0xd4])
    board.WriteI2C(OVT,0x60, [0x69,0xc1])
    board.WriteI2C(OVT,0x60, [0x6a,0xd3])
    board.WriteI2C(OVT,0x60, [0x6b,0x01])
    board.WriteI2C(OVT,0x60, [0x6c,0x7c])
    board.WriteI2C(OVT,0x60, [0x6d,0x74])
    board.WriteI2C(OVT,0x60, [0x6e,0x00])
    board.WriteI2C(OVT,0x60, [0x6f,0x2a])
    board.WriteI2C(OVT,0x60, [0x70,0x61])
    board.WriteI2C(OVT,0x60, [0x71,0xd2])
    board.WriteI2C(OVT,0x60, [0x72,0xcc])
    board.WriteI2C(OVT,0x60, [0x73,0xde])
    board.WriteI2C(OVT,0x60, [0x74,0xc6])
    board.WriteI2C(OVT,0x60, [0x75,0xd2])
    board.WriteI2C(OVT,0x60, [0x76,0xcc])
    board.WriteI2C(OVT,0x60, [0x77,0x02])
    board.WriteI2C(OVT,0x60, [0x78,0x35])
    board.WriteI2C(OVT,0x60, [0x79,0xd3])
    board.WriteI2C(OVT,0x60, [0x7a,0x0F])
    board.WriteI2C(OVT,0x60, [0x7b,0x31])
    board.WriteI2C(OVT,0x60, [0x7c,0xcc])
    board.WriteI2C(OVT,0x60, [0x7d,0x05])
    board.WriteI2C(OVT,0x60, [0x7e,0xc5])
    board.WriteI2C(OVT,0x60, [0x7f,0xd2])
    board.WriteI2C(OVT,0x60, [0x80,0xbb])
    board.WriteI2C(OVT,0x60, [0x81,0xcc])
    board.WriteI2C(OVT,0x60, [0x82,0x17])
    board.WriteI2C(OVT,0x60, [0x83,0xd2])
    board.WriteI2C(OVT,0x60, [0x84,0xbd])
    board.WriteI2C(OVT,0x60, [0x85,0xcc])
    board.WriteI2C(OVT,0x60, [0x86,0x51])
    board.WriteI2C(OVT,0x60, [0x87,0xc6])
    board.WriteI2C(OVT,0x60, [0x88,0xd2])
    board.WriteI2C(OVT,0x60, [0x89,0x2b])
    board.WriteI2C(OVT,0x60, [0x8a,0xcc])
    board.WriteI2C(OVT,0x60, [0x8b,0x09])
    board.WriteI2C(OVT,0x60, [0x8c,0xd2])
    board.WriteI2C(OVT,0x60, [0x8d,0x1a])
    board.WriteI2C(OVT,0x60, [0x8e,0xcc])
    board.WriteI2C(OVT,0x60, [0x8f,0xeb])
    board.WriteI2C(OVT,0x60, [0x90,0x71])
    board.WriteI2C(OVT,0x60, [0x91,0x12])
    board.WriteI2C(OVT,0x60, [0x92,0x2a])
    board.WriteI2C(OVT,0x60, [0x93,0xd3])
    board.WriteI2C(OVT,0x60, [0x94,0x24])
    board.WriteI2C(OVT,0x60, [0x95,0x00])
    board.WriteI2C(OVT,0x60, [0x96,0x00])
    board.WriteI2C(OVT,0x60, [0x97,0x70])
    board.WriteI2C(OVT,0x60, [0x98,0xca])
    board.WriteI2C(OVT,0x60, [0x99,0x26])
    board.WriteI2C(OVT,0x60, [0x9a,0xd2])
    board.WriteI2C(OVT,0x60, [0x9b,0x01])
    board.WriteI2C(OVT,0x60, [0x9c,0xd3])
    board.WriteI2C(OVT,0x60, [0x9d,0x2f])
    board.WriteI2C(OVT,0x60, [0x9e,0x27])
    board.WriteI2C(OVT,0x60, [0x9f,0x08])
    board.WriteI2C(OVT,0x60, [0xa0,0x1a])
    board.WriteI2C(OVT,0x60, [0xa1,0x12])
    board.WriteI2C(OVT,0x60, [0xa2,0xcc])
    board.WriteI2C(OVT,0x60, [0xa3,0xd9])
    board.WriteI2C(OVT,0x60, [0xa4,0x60])
    board.WriteI2C(OVT,0x60, [0xa5,0x2c])
    board.WriteI2C(OVT,0x60, [0xa6,0x11])
    board.WriteI2C(OVT,0x60, [0xa7,0x50])
    board.WriteI2C(OVT,0x60, [0xa8,0x00])
    board.WriteI2C(OVT,0x60, [0xa9,0x00])
    board.WriteI2C(OVT,0x60, [0xaa,0xc0])
    board.WriteI2C(OVT,0x60, [0xab,0xb9])
    board.WriteI2C(OVT,0x60, [0xac,0xa3])
    board.WriteI2C(OVT,0x60, [0xad,0xb5])
    board.WriteI2C(OVT,0x60, [0xae,0xb5])
    board.WriteI2C(OVT,0x60, [0xaf,0x00])
    board.WriteI2C(OVT,0x60, [0xb0,0xa0])
    board.WriteI2C(OVT,0x60, [0xb1,0x82])
    board.WriteI2C(OVT,0x60, [0xb2,0x5c])
    board.WriteI2C(OVT,0x60, [0xb3,0xd4])
    board.WriteI2C(OVT,0x60, [0xb4,0xa6])
    board.WriteI2C(OVT,0x60, [0xb5,0x9d])
    board.WriteI2C(OVT,0x60, [0xb6,0xd3])
    board.WriteI2C(OVT,0x60, [0xb7,0x34])
    board.WriteI2C(OVT,0x60, [0xb8,0xb0])
    board.WriteI2C(OVT,0x60, [0xb9,0xb7])
    board.WriteI2C(OVT,0x60, [0xba,0x00])
    board.WriteI2C(OVT,0x60, [0xbb,0xd3])
    board.WriteI2C(OVT,0x60, [0xbc,0x0A])
    board.WriteI2C(OVT,0x60, [0xbd,0xd3])
    board.WriteI2C(OVT,0x60, [0xbe,0x10])
    board.WriteI2C(OVT,0x60, [0xbf,0x9c])
    board.WriteI2C(OVT,0x60, [0xc0,0x94])
    board.WriteI2C(OVT,0x60, [0xc1,0x90])
    board.WriteI2C(OVT,0x60, [0xc2,0xc8])
    board.WriteI2C(OVT,0x60, [0xc3,0xba])
    board.WriteI2C(OVT,0x60, [0xc4,0x7c])
    board.WriteI2C(OVT,0x60, [0xc5,0x74])
    board.WriteI2C(OVT,0x60, [0xc6,0x00])
    board.WriteI2C(OVT,0x60, [0xc7,0x2a])
    board.WriteI2C(OVT,0x60, [0xc8,0x61])
    board.WriteI2C(OVT,0x60, [0xc9,0x00])
    board.WriteI2C(OVT,0x60, [0xca,0xd2])
    board.WriteI2C(OVT,0x60, [0xcb,0xcc])
    board.WriteI2C(OVT,0x60, [0xcc,0xde])
    board.WriteI2C(OVT,0x60, [0xcd,0xc4])
    board.WriteI2C(OVT,0x60, [0xce,0xd2])
    board.WriteI2C(OVT,0x60, [0xcf,0xcc])
    board.WriteI2C(OVT,0x60, [0xd0,0x02])
    board.WriteI2C(OVT,0x60, [0xd1,0x35])
    board.WriteI2C(OVT,0x60, [0xd2,0xd2])
    board.WriteI2C(OVT,0x60, [0xd3,0xcc])
    board.WriteI2C(OVT,0x60, [0xd4,0x14])
    board.WriteI2C(OVT,0x60, [0xd5,0xd3])
    board.WriteI2C(OVT,0x60, [0xd6,0x09])
    board.WriteI2C(OVT,0x60, [0xd7,0x31])
    board.WriteI2C(OVT,0x60, [0xd8,0xd2])
    board.WriteI2C(OVT,0x60, [0xd9,0xcc])
    board.WriteI2C(OVT,0x60, [0xda,0x05])
    board.WriteI2C(OVT,0x60, [0xdb,0xd2])
    board.WriteI2C(OVT,0x60, [0xdc,0xbb])
    board.WriteI2C(OVT,0x60, [0xdd,0xcc])
    board.WriteI2C(OVT,0x60, [0xde,0x19])
    board.WriteI2C(OVT,0x60, [0xdf,0xd2])
    board.WriteI2C(OVT,0x60, [0xe0,0xbe])
    board.WriteI2C(OVT,0x60, [0xe1,0xce])
    board.WriteI2C(OVT,0x60, [0xe2,0x51])
    board.WriteI2C(OVT,0x60, [0xe3,0xcf])
    board.WriteI2C(OVT,0x60, [0xe4,0x54])
    board.WriteI2C(OVT,0x60, [0xe5,0xd0])
    board.WriteI2C(OVT,0x60, [0xe6,0x58])
    board.WriteI2C(OVT,0x60, [0xe7,0xd3])
    board.WriteI2C(OVT,0x60, [0xe8,0x01])
    board.WriteI2C(OVT,0x60, [0xe9,0x2b])
    board.WriteI2C(OVT,0x60, [0xea,0xcc])
    board.WriteI2C(OVT,0x60, [0xeb,0x09])
    board.WriteI2C(OVT,0x60, [0xec,0xd2])
    board.WriteI2C(OVT,0x60, [0xed,0xd9])
    board.WriteI2C(OVT,0x60, [0xee,0xd3])
    board.WriteI2C(OVT,0x60, [0xef,0xda])
    board.WriteI2C(OVT,0x60, [0xf0,0xd7])
    board.WriteI2C(OVT,0x60, [0xf1,0x1a])
    board.WriteI2C(OVT,0x60, [0xf2,0xcc])
    board.WriteI2C(OVT,0x60, [0xf3,0xeb])
    board.WriteI2C(OVT,0x60, [0xf4,0x12])
    board.WriteI2C(OVT,0x60, [0xf5,0xd4])
    board.WriteI2C(OVT,0x60, [0xf6,0xaf])
    board.WriteI2C(OVT,0x60, [0xf7,0x27])
    board.WriteI2C(OVT,0x60, [0xf8,0x00])
    board.WriteI2C(OVT,0x60, [0xf9,0xd2])
    board.WriteI2C(OVT,0x60, [0xfa,0xd3])
    board.WriteI2C(OVT,0x60, [0xfb,0x3b])
    board.WriteI2C(OVT,0x60, [0xfc,0xd9])
    board.WriteI2C(OVT,0x60, [0xfd,0xe0])
    board.WriteI2C(OVT,0x60, [0xfe,0xda])
    board.WriteI2C(OVT,0x60, [0xff,0xe4])
    board.WriteI2C(OVT,0x61, [0x00,0x1a])
    board.WriteI2C(OVT,0x61, [0x01,0x12])
    board.WriteI2C(OVT,0x61, [0x02,0xcc])
    board.WriteI2C(OVT,0x61, [0x03,0xd9])
    board.WriteI2C(OVT,0x61, [0x04,0x60])
    board.WriteI2C(OVT,0x61, [0x05,0x10])
    board.WriteI2C(OVT,0x61, [0x06,0x2c])
    board.WriteI2C(OVT,0x61, [0x07,0x5d])
    board.WriteI2C(OVT,0x61, [0x08,0xd3])
    board.WriteI2C(OVT,0x61, [0x09,0x0A])
    board.WriteI2C(OVT,0x61, [0x0a,0x5c])
    board.WriteI2C(OVT,0x61, [0x0b,0x01])
    board.WriteI2C(OVT,0x61, [0x0c,0x50])
    board.WriteI2C(OVT,0x61, [0x0d,0x11])
    board.WriteI2C(OVT,0x61, [0x0e,0xd6])
    board.WriteI2C(OVT,0x61, [0x0f,0xb7])
    board.WriteI2C(OVT,0x61, [0x10,0xb9])
    board.WriteI2C(OVT,0x61, [0x11,0xba])
    board.WriteI2C(OVT,0x61, [0x12,0xaf])
    board.WriteI2C(OVT,0x61, [0x13,0xdc])
    board.WriteI2C(OVT,0x61, [0x14,0xcb])
    board.WriteI2C(OVT,0x61, [0x15,0xc3])
    board.WriteI2C(OVT,0x61, [0x16,0xb9])
    board.WriteI2C(OVT,0x61, [0x17,0xa4])
    board.WriteI2C(OVT,0x61, [0x18,0xb5])
    board.WriteI2C(OVT,0x61, [0x19,0x5c])
    board.WriteI2C(OVT,0x61, [0x1a,0x12])
    board.WriteI2C(OVT,0x61, [0x1b,0x2a])
    board.WriteI2C(OVT,0x61, [0x1c,0x61])
    board.WriteI2C(OVT,0x61, [0x1d,0xd2])
    board.WriteI2C(OVT,0x61, [0x1e,0xcc])
    board.WriteI2C(OVT,0x61, [0x1f,0xe2])
    board.WriteI2C(OVT,0x61, [0x20,0x35])
    board.WriteI2C(OVT,0x61, [0x21,0xc7])
    board.WriteI2C(OVT,0x61, [0x22,0xd2])
    board.WriteI2C(OVT,0x61, [0x23,0x31])
    board.WriteI2C(OVT,0x61, [0x24,0xcc])
    board.WriteI2C(OVT,0x61, [0x25,0x05])
    board.WriteI2C(OVT,0x61, [0x26,0xc6])
    board.WriteI2C(OVT,0x61, [0x27,0xbb])
    board.WriteI2C(OVT,0x61, [0x28,0xd2])
    board.WriteI2C(OVT,0x61, [0x29,0xcc])
    board.WriteI2C(OVT,0x61, [0x2a,0x17])
    board.WriteI2C(OVT,0x61, [0x2b,0xd2])
    board.WriteI2C(OVT,0x61, [0x2c,0xbe])
    board.WriteI2C(OVT,0x61, [0x2d,0xcc])
    board.WriteI2C(OVT,0x61, [0x2e,0x51])
    board.WriteI2C(OVT,0x61, [0x2f,0xc7])
    board.WriteI2C(OVT,0x61, [0x30,0xd2])
    board.WriteI2C(OVT,0x61, [0x31,0xcc])
    board.WriteI2C(OVT,0x61, [0x32,0x09])
    board.WriteI2C(OVT,0x61, [0x33,0xb4])
    board.WriteI2C(OVT,0x61, [0x34,0xb7])
    board.WriteI2C(OVT,0x61, [0x35,0x94])
    board.WriteI2C(OVT,0x61, [0x36,0xd2])
    board.WriteI2C(OVT,0x61, [0x37,0x12])
    board.WriteI2C(OVT,0x61, [0x38,0x26])
    board.WriteI2C(OVT,0x61, [0x39,0x42])
    board.WriteI2C(OVT,0x61, [0x3a,0x46])
    board.WriteI2C(OVT,0x61, [0x3b,0x42])
    board.WriteI2C(OVT,0x61, [0x3c,0xd3])
    board.WriteI2C(OVT,0x61, [0x3d,0x20])
    board.WriteI2C(OVT,0x61, [0x3e,0x27])
    board.WriteI2C(OVT,0x61, [0x3f,0x00])
    board.WriteI2C(OVT,0x61, [0x40,0x1a])
    board.WriteI2C(OVT,0x61, [0x41,0xcc])
    board.WriteI2C(OVT,0x61, [0x42,0xd9])
    board.WriteI2C(OVT,0x61, [0x43,0x60])
    board.WriteI2C(OVT,0x61, [0x44,0x2c])
    board.WriteI2C(OVT,0x61, [0x45,0x11])
    board.WriteI2C(OVT,0x61, [0x46,0x40])
    board.WriteI2C(OVT,0x61, [0x47,0x50])
    board.WriteI2C(OVT,0x61, [0x48,0xb8])
    board.WriteI2C(OVT,0x61, [0x49,0x90])
    board.WriteI2C(OVT,0x61, [0x4a,0xd5])
    board.WriteI2C(OVT,0x61, [0x4b,0x00])
    board.WriteI2C(OVT,0x61, [0x4c,0xba])
    board.WriteI2C(OVT,0x61, [0x4d,0x00])
    board.WriteI2C(OVT,0x61, [0x4e,0x00])
    board.WriteI2C(OVT,0x61, [0x4f,0x00])
    board.WriteI2C(OVT,0x61, [0x50,0x00])
    board.WriteI2C(OVT,0x61, [0x51,0x00])
    board.WriteI2C(OVT,0x61, [0x52,0x00])
    board.WriteI2C(OVT,0x61, [0x53,0xaa])
    board.WriteI2C(OVT,0x61, [0x54,0xb7])
    board.WriteI2C(OVT,0x61, [0x55,0x00])
    board.WriteI2C(OVT,0x61, [0x56,0x00])
    board.WriteI2C(OVT,0x61, [0x57,0x00])
    board.WriteI2C(OVT,0x61, [0x58,0x00])
    board.WriteI2C(OVT,0x61, [0x59,0xa6])
    board.WriteI2C(OVT,0x61, [0x5a,0xb7])
    board.WriteI2C(OVT,0x61, [0x5b,0x00])
    board.WriteI2C(OVT,0x61, [0x5c,0xd5])
    board.WriteI2C(OVT,0x61, [0x5d,0x00])
    board.WriteI2C(OVT,0x61, [0x5e,0x71])
    board.WriteI2C(OVT,0x61, [0x5f,0xd3])
    board.WriteI2C(OVT,0x61, [0x60,0x3e])
    board.WriteI2C(OVT,0x61, [0x61,0xba])
    board.WriteI2C(OVT,0x61, [0x62,0x00])
    board.WriteI2C(OVT,0x61, [0x63,0x00])
    board.WriteI2C(OVT,0x61, [0x64,0x00])
    board.WriteI2C(OVT,0x61, [0x65,0x00])
    board.WriteI2C(OVT,0x61, [0x66,0xd3])
    board.WriteI2C(OVT,0x61, [0x67,0x10])
    board.WriteI2C(OVT,0x61, [0x68,0x70])
    board.WriteI2C(OVT,0x61, [0x69,0x00])
    board.WriteI2C(OVT,0x61, [0x6a,0x00])
    board.WriteI2C(OVT,0x61, [0x6b,0x00])
    board.WriteI2C(OVT,0x61, [0x6c,0x00])
    board.WriteI2C(OVT,0x61, [0x6d,0xd5])
    board.WriteI2C(OVT,0x61, [0x6e,0xba])
    board.WriteI2C(OVT,0x61, [0x6f,0xb0])
    board.WriteI2C(OVT,0x61, [0x70,0xb7])
    board.WriteI2C(OVT,0x61, [0x71,0x00])
    board.WriteI2C(OVT,0x61, [0x72,0x9d])
    board.WriteI2C(OVT,0x61, [0x73,0xd3])
    board.WriteI2C(OVT,0x61, [0x74,0x0A])
    board.WriteI2C(OVT,0x61, [0x75,0x9d])
    board.WriteI2C(OVT,0x61, [0x76,0x9d])
    board.WriteI2C(OVT,0x61, [0x77,0xd3])
    board.WriteI2C(OVT,0x61, [0x78,0x10])
    board.WriteI2C(OVT,0x61, [0x79,0x9c])
    board.WriteI2C(OVT,0x61, [0x7a,0x94])
    board.WriteI2C(OVT,0x61, [0x7b,0x90])
    board.WriteI2C(OVT,0x61, [0x7c,0xc8])
    board.WriteI2C(OVT,0x61, [0x7d,0xba])
    board.WriteI2C(OVT,0x61, [0x7e,0xd2])
    board.WriteI2C(OVT,0x61, [0x7f,0x30])
    board.WriteI2C(OVT,0x61, [0x80,0xd5])
    board.WriteI2C(OVT,0x61, [0x81,0x00])
    board.WriteI2C(OVT,0x61, [0x82,0xba])
    board.WriteI2C(OVT,0x61, [0x83,0xb0])
    board.WriteI2C(OVT,0x61, [0x84,0xb7])
    board.WriteI2C(OVT,0x61, [0x85,0x00])
    board.WriteI2C(OVT,0x61, [0x86,0x9d])
    board.WriteI2C(OVT,0x61, [0x87,0xd3])
    board.WriteI2C(OVT,0x61, [0x88,0x0A])
    board.WriteI2C(OVT,0x61, [0x89,0x9d])
    board.WriteI2C(OVT,0x61, [0x8a,0x9d])
    board.WriteI2C(OVT,0x61, [0x8b,0xd3])
    board.WriteI2C(OVT,0x61, [0x8c,0x10])
    board.WriteI2C(OVT,0x61, [0x8d,0x9c])
    board.WriteI2C(OVT,0x61, [0x8e,0x94])
    board.WriteI2C(OVT,0x61, [0x8f,0x90])
    board.WriteI2C(OVT,0x61, [0x90,0xc8])
    board.WriteI2C(OVT,0x61, [0x91,0xba])
    board.WriteI2C(OVT,0x61, [0x92,0xd5])
    board.WriteI2C(OVT,0x61, [0x93,0x00])
    board.WriteI2C(OVT,0x61, [0x94,0xba])
    board.WriteI2C(OVT,0x61, [0x95,0xb0])
    board.WriteI2C(OVT,0x61, [0x96,0xb7])
    board.WriteI2C(OVT,0x61, [0x97,0x00])
    board.WriteI2C(OVT,0x61, [0x98,0x9d])
    board.WriteI2C(OVT,0x61, [0x99,0xd3])
    board.WriteI2C(OVT,0x61, [0x9a,0x0A])
    board.WriteI2C(OVT,0x61, [0x9b,0x9d])
    board.WriteI2C(OVT,0x61, [0x9c,0x9d])
    board.WriteI2C(OVT,0x61, [0x9d,0xd3])
    board.WriteI2C(OVT,0x61, [0x9e,0x10])
    board.WriteI2C(OVT,0x61, [0x9f,0x9c])
    board.WriteI2C(OVT,0x61, [0xa0,0x94])
    board.WriteI2C(OVT,0x61, [0xa1,0x90])
    board.WriteI2C(OVT,0x61, [0xa2,0xc9])
    board.WriteI2C(OVT,0x61, [0xa3,0xba])
    board.WriteI2C(OVT,0x61, [0xa4,0xd5])
    board.WriteI2C(OVT,0x61, [0xa5,0x00])
    board.WriteI2C(OVT,0x61, [0xa6,0x00])
    board.WriteI2C(OVT,0x61, [0xa7,0x1a])
    board.WriteI2C(OVT,0x61, [0xa8,0x12])
    board.WriteI2C(OVT,0x61, [0xa9,0xcc])
    board.WriteI2C(OVT,0x61, [0xaa,0xeb])
    board.WriteI2C(OVT,0x61, [0xab,0xd2])
    board.WriteI2C(OVT,0x61, [0xac,0xd5])
    board.WriteI2C(OVT,0x61, [0xad,0x00])
    board.WriteI2C(OVT,0x61, [0xae,0x00])
    board.WriteI2C(OVT,0x61, [0xaf,0x1a])
    board.WriteI2C(OVT,0x61, [0xb0,0x12])
    board.WriteI2C(OVT,0x61, [0xb1,0xcc])
    board.WriteI2C(OVT,0x61, [0xb2,0xeb])
    board.WriteI2C(OVT,0x61, [0xb3,0xd2])
    board.WriteI2C(OVT,0x61, [0xb4,0x1a])
    board.WriteI2C(OVT,0x61, [0xb5,0x12])
    board.WriteI2C(OVT,0x61, [0xb6,0xcc])
    board.WriteI2C(OVT,0x61, [0xb7,0xeb])
    board.WriteI2C(OVT,0x61, [0xb8,0xd2])
    board.WriteI2C(OVT,0x61, [0xb9,0x1a])
    board.WriteI2C(OVT,0x61, [0xba,0x12])
    board.WriteI2C(OVT,0x61, [0xbb,0xcc])
    board.WriteI2C(OVT,0x61, [0xbc,0xeb])
    board.WriteI2C(OVT,0x61, [0xbd,0xd2])
    board.WriteI2C(OVT,0x61, [0xbe,0xd5])
    board.WriteI2C(OVT,0x61, [0xbf,0x00])
    board.WriteI2C(OVT,0x61, [0xc0,0x00])
    board.WriteI2C(OVT,0x61, [0xc1,0x1a])
    board.WriteI2C(OVT,0x61, [0xc2,0xcc])
    board.WriteI2C(OVT,0x61, [0xc3,0xf0])
    board.WriteI2C(OVT,0x61, [0xc4,0x12])
    board.WriteI2C(OVT,0x61, [0xc5,0xd2])
    board.WriteI2C(OVT,0x61, [0xc6,0xd5])
    board.WriteI2C(OVT,0x61, [0xc7,0x00])
    board.WriteI2C(OVT,0x61, [0xc8,0x00])
    board.WriteI2C(OVT,0x61, [0xc9,0x1a])
    board.WriteI2C(OVT,0x61, [0xca,0xcc])
    board.WriteI2C(OVT,0x61, [0xcb,0xf0])
    board.WriteI2C(OVT,0x61, [0xcc,0x12])
    board.WriteI2C(OVT,0x61, [0xcd,0xd2])
    board.WriteI2C(OVT,0x61, [0xce,0x1a])
    board.WriteI2C(OVT,0x61, [0xcf,0xcc])
    board.WriteI2C(OVT,0x61, [0xd0,0xf0])
    board.WriteI2C(OVT,0x61, [0xd1,0x12])
    board.WriteI2C(OVT,0x61, [0xd2,0xd2])
    board.WriteI2C(OVT,0x61, [0xd3,0x1a])
    board.WriteI2C(OVT,0x61, [0xd4,0xcc])
    board.WriteI2C(OVT,0x61, [0xd5,0xf0])
    board.WriteI2C(OVT,0x61, [0xd6,0x12])
    board.WriteI2C(OVT,0x61, [0xd7,0xd2])
    board.WriteI2C(OVT,0x61, [0xd8,0xd5])
    board.WriteI2C(OVT,0x64, [0x00,0x00])
    board.WriteI2C(OVT,0x64, [0x01,0x08])
    board.WriteI2C(OVT,0x64, [0x02,0x00])
    board.WriteI2C(OVT,0x64, [0x03,0xff])
    board.WriteI2C(OVT,0x64, [0x04,0x04])
    board.WriteI2C(OVT,0x64, [0x05,0x61])
    board.WriteI2C(OVT,0x64, [0x06,0x04])
    board.WriteI2C(OVT,0x64, [0x07,0x70])
    board.WriteI2C(OVT,0x64, [0x08,0x00])
    board.WriteI2C(OVT,0x64, [0x09,0xff])
    board.WriteI2C(OVT,0x64, [0x0a,0x05])
    board.WriteI2C(OVT,0x64, [0x0b,0x14])
    board.WriteI2C(OVT,0x64, [0x0c,0x04])
    board.WriteI2C(OVT,0x64, [0x0d,0x70])
    board.WriteI2C(OVT,0x64, [0x0e,0x05])
    board.WriteI2C(OVT,0x64, [0x0f,0x74])
    board.WriteI2C(OVT,0x64, [0x10,0x00])
    board.WriteI2C(OVT,0x64, [0x11,0xff])
    board.WriteI2C(OVT,0x64, [0x12,0x05])
    board.WriteI2C(OVT,0x64, [0x13,0x54])
    board.WriteI2C(OVT,0x64, [0x14,0x04])
    board.WriteI2C(OVT,0x64, [0x15,0x30])
    board.WriteI2C(OVT,0x64, [0x16,0x05])
    board.WriteI2C(OVT,0x64, [0x17,0x44])
    board.WriteI2C(OVT,0x64, [0x18,0x05])
    board.WriteI2C(OVT,0x64, [0x19,0x47])
    board.WriteI2C(OVT,0x64, [0x1a,0x00])
    board.WriteI2C(OVT,0x64, [0x1b,0xff])
    board.WriteI2C(OVT,0x64, [0x1c,0x04])
    board.WriteI2C(OVT,0x64, [0x1d,0x31])
    board.WriteI2C(OVT,0x64, [0x1e,0x04])
    board.WriteI2C(OVT,0x64, [0x1f,0x30])
    board.WriteI2C(OVT,0x64, [0x20,0x00])
    board.WriteI2C(OVT,0x64, [0x21,0xff])
    board.WriteI2C(OVT,0x64, [0x22,0x04])
    board.WriteI2C(OVT,0x64, [0x23,0x20])
    board.WriteI2C(OVT,0x64, [0x24,0x05])
    board.WriteI2C(OVT,0x64, [0x25,0x06])
    board.WriteI2C(OVT,0x64, [0x26,0x00])
    board.WriteI2C(OVT,0x64, [0x27,0xff])
    board.WriteI2C(OVT,0x64, [0x28,0x08])
    board.WriteI2C(OVT,0x64, [0x29,0x29])
    board.WriteI2C(OVT,0x64, [0x2a,0x08])
    board.WriteI2C(OVT,0x64, [0x2b,0x30])
    board.WriteI2C(OVT,0x64, [0x2c,0x00])
    board.WriteI2C(OVT,0x64, [0x2d,0xff])
    board.WriteI2C(OVT,0x64, [0x2e,0x08])
    board.WriteI2C(OVT,0x64, [0x2f,0x29])
    board.WriteI2C(OVT,0x64, [0x30,0x08])
    board.WriteI2C(OVT,0x64, [0x31,0x30])
    board.WriteI2C(OVT,0x64, [0x32,0x06])
    board.WriteI2C(OVT,0x64, [0x33,0x20])
    board.WriteI2C(OVT,0x64, [0x34,0x07])
    board.WriteI2C(OVT,0x64, [0x35,0x00])
    board.WriteI2C(OVT,0x64, [0x36,0x08])
    board.WriteI2C(OVT,0x64, [0x37,0x3f])
    board.WriteI2C(OVT,0x64, [0x38,0x00])
    board.WriteI2C(OVT,0x64, [0x39,0xff])
    board.WriteI2C(OVT,0x64, [0x3a,0x08])
    board.WriteI2C(OVT,0x64, [0x3b,0x29])
    board.WriteI2C(OVT,0x64, [0x3c,0x08])
    board.WriteI2C(OVT,0x64, [0x3d,0x35])
    board.WriteI2C(OVT,0x64, [0x3e,0x06])
    board.WriteI2C(OVT,0x64, [0x3f,0x10])
    board.WriteI2C(OVT,0x64, [0x40,0x07])
    board.WriteI2C(OVT,0x64, [0x41,0x00])
    board.WriteI2C(OVT,0x64, [0x42,0x08])
    board.WriteI2C(OVT,0x64, [0x43,0x3f])
    board.WriteI2C(OVT,0x64, [0x44,0x00])
    board.WriteI2C(OVT,0x64, [0x45,0xff])
    board.WriteI2C(OVT,0x64, [0x46,0x08])
    board.WriteI2C(OVT,0x64, [0x47,0x29])
    board.WriteI2C(OVT,0x64, [0x48,0x08])
    board.WriteI2C(OVT,0x64, [0x49,0x3a])
    board.WriteI2C(OVT,0x64, [0x4a,0x06])
    board.WriteI2C(OVT,0x64, [0x4b,0x00])
    board.WriteI2C(OVT,0x64, [0x4c,0x07])
    board.WriteI2C(OVT,0x64, [0x4d,0x00])
    board.WriteI2C(OVT,0x64, [0x4e,0x08])
    board.WriteI2C(OVT,0x64, [0x4f,0x3f])
    board.WriteI2C(OVT,0x64, [0x50,0x00])
    board.WriteI2C(OVT,0x64, [0x51,0xff])
    board.WriteI2C(OVT,0x64, [0x52,0x06])
    board.WriteI2C(OVT,0x64, [0x53,0x00])
    board.WriteI2C(OVT,0x64, [0x54,0x07])
    board.WriteI2C(OVT,0x64, [0x55,0x05])
    board.WriteI2C(OVT,0x64, [0x56,0x01])
    board.WriteI2C(OVT,0x64, [0x57,0xaf])
    board.WriteI2C(OVT,0x64, [0x58,0x01])
    board.WriteI2C(OVT,0x64, [0x59,0x0F])
    board.WriteI2C(OVT,0x64, [0x5a,0x01])
    board.WriteI2C(OVT,0x64, [0x5b,0x90])
    board.WriteI2C(OVT,0x64, [0x5c,0x01])
    board.WriteI2C(OVT,0x64, [0x5d,0xc8])
    board.WriteI2C(OVT,0x64, [0x5e,0x00])
    board.WriteI2C(OVT,0x64, [0x5f,0xff])
    board.WriteI2C(OVT,0x64, [0x60,0x01])
    board.WriteI2C(OVT,0x64, [0x61,0xac])
    board.WriteI2C(OVT,0x64, [0x62,0x01])
    board.WriteI2C(OVT,0x64, [0x63,0x0C])
    board.WriteI2C(OVT,0x64, [0x64,0x01])
    board.WriteI2C(OVT,0x64, [0x65,0x90])
    board.WriteI2C(OVT,0x64, [0x66,0x01])
    board.WriteI2C(OVT,0x64, [0x67,0xe8])
    board.WriteI2C(OVT,0x64, [0x68,0x00])
    board.WriteI2C(OVT,0x64, [0x69,0xff])
    board.WriteI2C(OVT,0x64, [0x6a,0x01])
    board.WriteI2C(OVT,0x64, [0x6b,0xad])
    board.WriteI2C(OVT,0x64, [0x6c,0x01])
    board.WriteI2C(OVT,0x64, [0x6d,0x0D])
    board.WriteI2C(OVT,0x64, [0x6e,0x01])
    board.WriteI2C(OVT,0x64, [0x6f,0x90])
    board.WriteI2C(OVT,0x64, [0x70,0x01])
    board.WriteI2C(OVT,0x64, [0x71,0xe8])
    board.WriteI2C(OVT,0x64, [0x72,0x00])
    board.WriteI2C(OVT,0x64, [0x73,0xff])
    board.WriteI2C(OVT,0x64, [0x74,0x01])
    board.WriteI2C(OVT,0x64, [0x75,0xae])
    board.WriteI2C(OVT,0x64, [0x76,0x01])
    board.WriteI2C(OVT,0x64, [0x77,0x0E])
    board.WriteI2C(OVT,0x64, [0x78,0x01])
    board.WriteI2C(OVT,0x64, [0x79,0x90])
    board.WriteI2C(OVT,0x64, [0x7a,0x01])
    board.WriteI2C(OVT,0x64, [0x7b,0xe8])
    board.WriteI2C(OVT,0x64, [0x7c,0x00])
    board.WriteI2C(OVT,0x64, [0x7d,0xff])
    board.WriteI2C(OVT,0x64, [0x7e,0x01])
    board.WriteI2C(OVT,0x64, [0x7f,0xb0])
    board.WriteI2C(OVT,0x64, [0x80,0x01])
    board.WriteI2C(OVT,0x64, [0x81,0xb1])
    board.WriteI2C(OVT,0x64, [0x82,0x01])
    board.WriteI2C(OVT,0x64, [0x83,0xb2])
    board.WriteI2C(OVT,0x64, [0x84,0x01])
    board.WriteI2C(OVT,0x64, [0x85,0xb3])
    board.WriteI2C(OVT,0x64, [0x86,0x01])
    board.WriteI2C(OVT,0x64, [0x87,0xb4])
    board.WriteI2C(OVT,0x64, [0x88,0x01])
    board.WriteI2C(OVT,0x64, [0x89,0xb5])
    board.WriteI2C(OVT,0x64, [0x8a,0x01])
    board.WriteI2C(OVT,0x64, [0x8b,0xb6])
    board.WriteI2C(OVT,0x64, [0x8c,0x01])
    board.WriteI2C(OVT,0x64, [0x8d,0xb7])
    board.WriteI2C(OVT,0x64, [0x8e,0x01])
    board.WriteI2C(OVT,0x64, [0x8f,0xb8])
    board.WriteI2C(OVT,0x64, [0x90,0x01])
    board.WriteI2C(OVT,0x64, [0x91,0xb9])
    board.WriteI2C(OVT,0x64, [0x92,0x01])
    board.WriteI2C(OVT,0x64, [0x93,0xba])
    board.WriteI2C(OVT,0x64, [0x94,0x01])
    board.WriteI2C(OVT,0x64, [0x95,0xbb])
    board.WriteI2C(OVT,0x64, [0x96,0x01])
    board.WriteI2C(OVT,0x64, [0x97,0xbc])
    board.WriteI2C(OVT,0x64, [0x98,0x01])
    board.WriteI2C(OVT,0x64, [0x99,0xbd])
    board.WriteI2C(OVT,0x64, [0x9a,0x01])
    board.WriteI2C(OVT,0x64, [0x9b,0xbe])
    board.WriteI2C(OVT,0x64, [0x9c,0x01])
    board.WriteI2C(OVT,0x64, [0x9d,0xbf])
    board.WriteI2C(OVT,0x64, [0x9e,0x01])
    board.WriteI2C(OVT,0x64, [0x9f,0xc0])
    board.WriteI2C(OVT,0x64, [0xa0,0x00])
    board.WriteI2C(OVT,0x64, [0xa1,0xff])
    board.WriteI2C(OVT,0x64, [0xa2,0x06])
    board.WriteI2C(OVT,0x64, [0xa3,0x00])
    board.WriteI2C(OVT,0x64, [0xa4,0x01])
    board.WriteI2C(OVT,0x64, [0xa5,0xf6])
    board.WriteI2C(OVT,0x64, [0xa6,0x00])
    board.WriteI2C(OVT,0x64, [0xa7,0xff])
    board.WriteI2C(OVT,0x64, [0xa8,0x06])
    board.WriteI2C(OVT,0x64, [0xa9,0x10])
    board.WriteI2C(OVT,0x64, [0xaa,0x01])
    board.WriteI2C(OVT,0x64, [0xab,0xf6])
    board.WriteI2C(OVT,0x64, [0xac,0x06])
    board.WriteI2C(OVT,0x64, [0xad,0x00])
    board.WriteI2C(OVT,0x64, [0xae,0x00])
    board.WriteI2C(OVT,0x64, [0xaf,0xff])
    board.WriteI2C(OVT,0x64, [0xb0,0x06])
    board.WriteI2C(OVT,0x64, [0xb1,0x20])
    board.WriteI2C(OVT,0x64, [0xb2,0x01])
    board.WriteI2C(OVT,0x64, [0xb3,0xf6])
    board.WriteI2C(OVT,0x64, [0xb4,0x06])
    board.WriteI2C(OVT,0x64, [0xb5,0x00])
    board.WriteI2C(OVT,0x64, [0xb6,0x00])
    board.WriteI2C(OVT,0x64, [0xb7,0xff])
    board.WriteI2C(OVT,0x64, [0xb8,0x04])
    board.WriteI2C(OVT,0x64, [0xb9,0x31])
    board.WriteI2C(OVT,0x64, [0xba,0x04])
    board.WriteI2C(OVT,0x64, [0xbb,0x30])
    board.WriteI2C(OVT,0x64, [0xbc,0x01])
    board.WriteI2C(OVT,0x64, [0xbd,0x20])
    board.WriteI2C(OVT,0x64, [0xbe,0x01])
    board.WriteI2C(OVT,0x64, [0xbf,0x31])
    board.WriteI2C(OVT,0x64, [0xc0,0x01])
    board.WriteI2C(OVT,0x64, [0xc1,0x32])
    board.WriteI2C(OVT,0x64, [0xc2,0x01])
    board.WriteI2C(OVT,0x64, [0xc3,0x33])
    board.WriteI2C(OVT,0x64, [0xc4,0x01])
    board.WriteI2C(OVT,0x64, [0xc5,0x34])
    board.WriteI2C(OVT,0x64, [0xc6,0x01])
    board.WriteI2C(OVT,0x64, [0xc7,0x35])
    board.WriteI2C(OVT,0x64, [0xc8,0x01])
    board.WriteI2C(OVT,0x64, [0xc9,0x36])
    board.WriteI2C(OVT,0x64, [0xca,0x01])
    board.WriteI2C(OVT,0x64, [0xcb,0x37])
    board.WriteI2C(OVT,0x64, [0xcc,0x01])
    board.WriteI2C(OVT,0x64, [0xcd,0x38])
    board.WriteI2C(OVT,0x64, [0xce,0x01])
    board.WriteI2C(OVT,0x64, [0xcf,0x39])
    board.WriteI2C(OVT,0x64, [0xd0,0x01])
    board.WriteI2C(OVT,0x64, [0xd1,0x3a])
    board.WriteI2C(OVT,0x64, [0xd2,0x01])
    board.WriteI2C(OVT,0x64, [0xd3,0x3b])
    board.WriteI2C(OVT,0x64, [0xd4,0x01])
    board.WriteI2C(OVT,0x64, [0xd5,0x3c])
    board.WriteI2C(OVT,0x64, [0xd6,0x01])
    board.WriteI2C(OVT,0x64, [0xd7,0x3d])
    board.WriteI2C(OVT,0x64, [0xd8,0x01])
    board.WriteI2C(OVT,0x64, [0xd9,0x3e])
    board.WriteI2C(OVT,0x64, [0xda,0x01])
    board.WriteI2C(OVT,0x64, [0xdb,0x3f])
    board.WriteI2C(OVT,0x64, [0xdc,0x02])
    board.WriteI2C(OVT,0x64, [0xdd,0xa0])
    board.WriteI2C(OVT,0x64, [0xde,0x00])
    board.WriteI2C(OVT,0x64, [0xdf,0xff])
    board.WriteI2C(OVT,0x64, [0xe0,0x04])
    board.WriteI2C(OVT,0x64, [0xe1,0x31])
    board.WriteI2C(OVT,0x64, [0xe2,0x04])
    board.WriteI2C(OVT,0x64, [0xe3,0x30])
    board.WriteI2C(OVT,0x64, [0xe4,0x01])
    board.WriteI2C(OVT,0x64, [0xe5,0x00])
    board.WriteI2C(OVT,0x64, [0xe6,0x01])
    board.WriteI2C(OVT,0x64, [0xe7,0x11])
    board.WriteI2C(OVT,0x64, [0xe8,0x01])
    board.WriteI2C(OVT,0x64, [0xe9,0x12])
    board.WriteI2C(OVT,0x64, [0xea,0x01])
    board.WriteI2C(OVT,0x64, [0xeb,0x13])
    board.WriteI2C(OVT,0x64, [0xec,0x01])
    board.WriteI2C(OVT,0x64, [0xed,0x14])
    board.WriteI2C(OVT,0x64, [0xee,0x01])
    board.WriteI2C(OVT,0x64, [0xef,0x15])
    board.WriteI2C(OVT,0x64, [0xf0,0x01])
    board.WriteI2C(OVT,0x64, [0xf1,0x16])
    board.WriteI2C(OVT,0x64, [0xf2,0x01])
    board.WriteI2C(OVT,0x64, [0xf3,0x17])
    board.WriteI2C(OVT,0x64, [0xf4,0x01])
    board.WriteI2C(OVT,0x64, [0xf5,0x18])
    board.WriteI2C(OVT,0x64, [0xf6,0x01])
    board.WriteI2C(OVT,0x64, [0xf7,0x19])
    board.WriteI2C(OVT,0x64, [0xf8,0x01])
    board.WriteI2C(OVT,0x64, [0xf9,0x1a])
    board.WriteI2C(OVT,0x64, [0xfa,0x01])
    board.WriteI2C(OVT,0x64, [0xfb,0x1b])
    board.WriteI2C(OVT,0x64, [0xfc,0x01])
    board.WriteI2C(OVT,0x64, [0xfd,0x1c])
    board.WriteI2C(OVT,0x64, [0xfe,0x01])
    board.WriteI2C(OVT,0x64, [0xff,0x1d])
    board.WriteI2C(OVT,0x65, [0x00,0x01])
    board.WriteI2C(OVT,0x65, [0x01,0x1e])
    board.WriteI2C(OVT,0x65, [0x02,0x01])
    board.WriteI2C(OVT,0x65, [0x03,0x1f])
    board.WriteI2C(OVT,0x65, [0x04,0x02])
    board.WriteI2C(OVT,0x65, [0x05,0xa0])
    board.WriteI2C(OVT,0x65, [0x06,0x00])
    board.WriteI2C(OVT,0x65, [0x07,0xff])
    board.WriteI2C(OVT,0x65, [0x08,0x03])
    board.WriteI2C(OVT,0x65, [0x09,0x0b])
    board.WriteI2C(OVT,0x65, [0x0a,0x05])
    board.WriteI2C(OVT,0x65, [0x0b,0x86])
    board.WriteI2C(OVT,0x65, [0x0c,0x00])
    board.WriteI2C(OVT,0x65, [0x0d,0x00])
    board.WriteI2C(OVT,0x65, [0x0e,0x05])
    board.WriteI2C(OVT,0x65, [0x0f,0x06])
    board.WriteI2C(OVT,0x65, [0x10,0x00])
    board.WriteI2C(OVT,0x65, [0x11,0x04])
    board.WriteI2C(OVT,0x65, [0x12,0x05])
    board.WriteI2C(OVT,0x65, [0x13,0x04])
    board.WriteI2C(OVT,0x65, [0x14,0x00])
    board.WriteI2C(OVT,0x65, [0x15,0x04])
    board.WriteI2C(OVT,0x65, [0x16,0x05])
    board.WriteI2C(OVT,0x65, [0x17,0x00])
    board.WriteI2C(OVT,0x65, [0x18,0x05])
    board.WriteI2C(OVT,0x65, [0x19,0x08])
    board.WriteI2C(OVT,0x65, [0x1a,0x03])
    board.WriteI2C(OVT,0x65, [0x1b,0x9a])
    board.WriteI2C(OVT,0x65, [0x1c,0x05])
    board.WriteI2C(OVT,0x65, [0x1d,0x86])
    board.WriteI2C(OVT,0x65, [0x1e,0x00])
    board.WriteI2C(OVT,0x65, [0x1f,0x00])
    board.WriteI2C(OVT,0x65, [0x20,0x05])
    board.WriteI2C(OVT,0x65, [0x21,0x06])
    board.WriteI2C(OVT,0x65, [0x22,0x00])
    board.WriteI2C(OVT,0x65, [0x23,0x01])
    board.WriteI2C(OVT,0x65, [0x24,0x05])
    board.WriteI2C(OVT,0x65, [0x25,0x04])
    board.WriteI2C(OVT,0x65, [0x26,0x00])
    board.WriteI2C(OVT,0x65, [0x27,0x04])
    board.WriteI2C(OVT,0x65, [0x28,0x05])
    board.WriteI2C(OVT,0x65, [0x29,0x00])
    board.WriteI2C(OVT,0x65, [0x2a,0x05])
    board.WriteI2C(OVT,0x65, [0x2b,0x08])
    board.WriteI2C(OVT,0x65, [0x2c,0x03])
    board.WriteI2C(OVT,0x65, [0x2d,0x99])
    board.WriteI2C(OVT,0x65, [0x2e,0x05])
    board.WriteI2C(OVT,0x65, [0x2f,0x06])
    board.WriteI2C(OVT,0x65, [0x30,0x00])
    board.WriteI2C(OVT,0x65, [0x31,0x00])
    board.WriteI2C(OVT,0x65, [0x32,0x05])
    board.WriteI2C(OVT,0x65, [0x33,0x04])
    board.WriteI2C(OVT,0x65, [0x34,0x00])
    board.WriteI2C(OVT,0x65, [0x35,0x04])
    board.WriteI2C(OVT,0x65, [0x36,0x05])
    board.WriteI2C(OVT,0x65, [0x37,0x00])
    board.WriteI2C(OVT,0x65, [0x38,0x05])
    board.WriteI2C(OVT,0x65, [0x39,0x08])
    board.WriteI2C(OVT,0x65, [0x3a,0x03])
    board.WriteI2C(OVT,0x65, [0x3b,0x98])
    board.WriteI2C(OVT,0x65, [0x3c,0x05])
    board.WriteI2C(OVT,0x65, [0x3d,0x06])
    board.WriteI2C(OVT,0x65, [0x3e,0x00])
    board.WriteI2C(OVT,0x65, [0x3f,0x00])
    board.WriteI2C(OVT,0x65, [0x40,0x05])
    board.WriteI2C(OVT,0x65, [0x41,0x04])
    board.WriteI2C(OVT,0x65, [0x42,0x00])
    board.WriteI2C(OVT,0x65, [0x43,0x04])
    board.WriteI2C(OVT,0x65, [0x44,0x05])
    board.WriteI2C(OVT,0x65, [0x45,0x00])
    board.WriteI2C(OVT,0x65, [0x46,0x05])
    board.WriteI2C(OVT,0x65, [0x47,0x08])
    board.WriteI2C(OVT,0x65, [0x48,0x03])
    board.WriteI2C(OVT,0x65, [0x49,0x97])
    board.WriteI2C(OVT,0x65, [0x4a,0x05])
    board.WriteI2C(OVT,0x65, [0x4b,0x06])
    board.WriteI2C(OVT,0x65, [0x4c,0x05])
    board.WriteI2C(OVT,0x65, [0x4d,0x04])
    board.WriteI2C(OVT,0x65, [0x4e,0x00])
    board.WriteI2C(OVT,0x65, [0x4f,0x04])
    board.WriteI2C(OVT,0x65, [0x50,0x05])
    board.WriteI2C(OVT,0x65, [0x51,0x00])
    board.WriteI2C(OVT,0x65, [0x52,0x05])
    board.WriteI2C(OVT,0x65, [0x53,0x08])
    board.WriteI2C(OVT,0x65, [0x54,0x03])
    board.WriteI2C(OVT,0x65, [0x55,0x96])
    board.WriteI2C(OVT,0x65, [0x56,0x05])
    board.WriteI2C(OVT,0x65, [0x57,0x06])
    board.WriteI2C(OVT,0x65, [0x58,0x05])
    board.WriteI2C(OVT,0x65, [0x59,0x04])
    board.WriteI2C(OVT,0x65, [0x5a,0x00])
    board.WriteI2C(OVT,0x65, [0x5b,0x04])
    board.WriteI2C(OVT,0x65, [0x5c,0x05])
    board.WriteI2C(OVT,0x65, [0x5d,0x00])
    board.WriteI2C(OVT,0x65, [0x5e,0x05])
    board.WriteI2C(OVT,0x65, [0x5f,0x08])
    board.WriteI2C(OVT,0x65, [0x60,0x03])
    board.WriteI2C(OVT,0x65, [0x61,0x95])
    board.WriteI2C(OVT,0x65, [0x62,0x05])
    board.WriteI2C(OVT,0x65, [0x63,0x06])
    board.WriteI2C(OVT,0x65, [0x64,0x05])
    board.WriteI2C(OVT,0x65, [0x65,0x04])
    board.WriteI2C(OVT,0x65, [0x66,0x00])
    board.WriteI2C(OVT,0x65, [0x67,0x04])
    board.WriteI2C(OVT,0x65, [0x68,0x05])
    board.WriteI2C(OVT,0x65, [0x69,0x00])
    board.WriteI2C(OVT,0x65, [0x6a,0x05])
    board.WriteI2C(OVT,0x65, [0x6b,0x08])
    board.WriteI2C(OVT,0x65, [0x6c,0x03])
    board.WriteI2C(OVT,0x65, [0x6d,0x94])
    board.WriteI2C(OVT,0x65, [0x6e,0x05])
    board.WriteI2C(OVT,0x65, [0x6f,0x06])
    board.WriteI2C(OVT,0x65, [0x70,0x00])
    board.WriteI2C(OVT,0x65, [0x71,0x00])
    board.WriteI2C(OVT,0x65, [0x72,0x05])
    board.WriteI2C(OVT,0x65, [0x73,0x04])
    board.WriteI2C(OVT,0x65, [0x74,0x00])
    board.WriteI2C(OVT,0x65, [0x75,0x04])
    board.WriteI2C(OVT,0x65, [0x76,0x05])
    board.WriteI2C(OVT,0x65, [0x77,0x00])
    board.WriteI2C(OVT,0x65, [0x78,0x05])
    board.WriteI2C(OVT,0x65, [0x79,0x08])
    board.WriteI2C(OVT,0x65, [0x7a,0x03])
    board.WriteI2C(OVT,0x65, [0x7b,0x93])
    board.WriteI2C(OVT,0x65, [0x7c,0x05])
    board.WriteI2C(OVT,0x65, [0x7d,0x06])
    board.WriteI2C(OVT,0x65, [0x7e,0x00])
    board.WriteI2C(OVT,0x65, [0x7f,0x00])
    board.WriteI2C(OVT,0x65, [0x80,0x05])
    board.WriteI2C(OVT,0x65, [0x81,0x04])
    board.WriteI2C(OVT,0x65, [0x82,0x00])
    board.WriteI2C(OVT,0x65, [0x83,0x04])
    board.WriteI2C(OVT,0x65, [0x84,0x05])
    board.WriteI2C(OVT,0x65, [0x85,0x00])
    board.WriteI2C(OVT,0x65, [0x86,0x05])
    board.WriteI2C(OVT,0x65, [0x87,0x08])
    board.WriteI2C(OVT,0x65, [0x88,0x03])
    board.WriteI2C(OVT,0x65, [0x89,0x92])
    board.WriteI2C(OVT,0x65, [0x8a,0x05])
    board.WriteI2C(OVT,0x65, [0x8b,0x06])
    board.WriteI2C(OVT,0x65, [0x8c,0x05])
    board.WriteI2C(OVT,0x65, [0x8d,0x04])
    board.WriteI2C(OVT,0x65, [0x8e,0x00])
    board.WriteI2C(OVT,0x65, [0x8f,0x04])
    board.WriteI2C(OVT,0x65, [0x90,0x05])
    board.WriteI2C(OVT,0x65, [0x91,0x00])
    board.WriteI2C(OVT,0x65, [0x92,0x05])
    board.WriteI2C(OVT,0x65, [0x93,0x08])
    board.WriteI2C(OVT,0x65, [0x94,0x03])
    board.WriteI2C(OVT,0x65, [0x95,0x91])
    board.WriteI2C(OVT,0x65, [0x96,0x05])
    board.WriteI2C(OVT,0x65, [0x97,0x06])
    board.WriteI2C(OVT,0x65, [0x98,0x05])
    board.WriteI2C(OVT,0x65, [0x99,0x04])
    board.WriteI2C(OVT,0x65, [0x9a,0x00])
    board.WriteI2C(OVT,0x65, [0x9b,0x04])
    board.WriteI2C(OVT,0x65, [0x9c,0x05])
    board.WriteI2C(OVT,0x65, [0x9d,0x00])
    board.WriteI2C(OVT,0x65, [0x9e,0x05])
    board.WriteI2C(OVT,0x65, [0x9f,0x08])
    board.WriteI2C(OVT,0x65, [0xa0,0x03])
    board.WriteI2C(OVT,0x65, [0xa1,0x90])
    board.WriteI2C(OVT,0x65, [0xa2,0x05])
    board.WriteI2C(OVT,0x65, [0xa3,0x06])
    board.WriteI2C(OVT,0x65, [0xa4,0x05])
    board.WriteI2C(OVT,0x65, [0xa5,0x04])
    board.WriteI2C(OVT,0x65, [0xa6,0x00])
    board.WriteI2C(OVT,0x65, [0xa7,0x04])
    board.WriteI2C(OVT,0x65, [0xa8,0x05])
    board.WriteI2C(OVT,0x65, [0xa9,0x00])
    board.WriteI2C(OVT,0x65, [0xaa,0x05])
    board.WriteI2C(OVT,0x65, [0xab,0x08])
    board.WriteI2C(OVT,0x65, [0xac,0x02])
    board.WriteI2C(OVT,0x65, [0xad,0x90])
    board.WriteI2C(OVT,0x65, [0xae,0x05])
    board.WriteI2C(OVT,0x65, [0xaf,0x06])
    board.WriteI2C(OVT,0x65, [0xb0,0x00])
    board.WriteI2C(OVT,0x65, [0xb1,0xff])
    board.WriteI2C(OVT,0x65, [0xb2,0x04])
    board.WriteI2C(OVT,0x65, [0xb3,0x20])
    board.WriteI2C(OVT,0x65, [0xb4,0x05])
    board.WriteI2C(OVT,0x65, [0xb5,0x06])
    board.WriteI2C(OVT,0x65, [0xb6,0x08])
    board.WriteI2C(OVT,0x65, [0xb7,0x84])
    board.WriteI2C(OVT,0x65, [0xb8,0x04])
    board.WriteI2C(OVT,0x65, [0xb9,0x04])
    board.WriteI2C(OVT,0x65, [0xba,0x00])
    board.WriteI2C(OVT,0x65, [0xbb,0xff])
    board.WriteI2C(OVT,0x65, [0xbc,0x08])
    board.WriteI2C(OVT,0x65, [0xbd,0x72])
    board.WriteI2C(OVT,0x65, [0xbe,0x04])
    board.WriteI2C(OVT,0x65, [0xbf,0x0C])
    board.WriteI2C(OVT,0x65, [0xc0,0x04])
    board.WriteI2C(OVT,0x65, [0xc1,0x04])
    board.WriteI2C(OVT,0x65, [0xc2,0x00])
    board.WriteI2C(OVT,0x65, [0xc3,0xff])
    board.WriteI2C(OVT,0x65, [0xc4,0x04])
    board.WriteI2C(OVT,0x65, [0xc5,0x45])
    board.WriteI2C(OVT,0x65, [0xc6,0x04])
    board.WriteI2C(OVT,0x65, [0xc7,0x54])
    board.WriteI2C(OVT,0x65, [0xc8,0x08])
    board.WriteI2C(OVT,0x65, [0xc9,0x72])
    board.WriteI2C(OVT,0x65, [0xca,0x00])
    board.WriteI2C(OVT,0x65, [0xcb,0xff])
    board.WriteI2C(OVT,0x65, [0xcc,0x04])
    board.WriteI2C(OVT,0x65, [0xcd,0x20])
    board.WriteI2C(OVT,0x65, [0xce,0x05])
    board.WriteI2C(OVT,0x65, [0xcf,0x06])
    board.WriteI2C(OVT,0x65, [0xd0,0x08])
    board.WriteI2C(OVT,0x65, [0xd1,0x96])
    board.WriteI2C(OVT,0x65, [0xd2,0x08])
    board.WriteI2C(OVT,0x65, [0xd3,0x5e])
    board.WriteI2C(OVT,0x65, [0xd4,0x00])
    board.WriteI2C(OVT,0x65, [0xd5,0xff])
    board.WriteI2C(OVT,0x65, [0xd6,0x04])
    board.WriteI2C(OVT,0x65, [0xd7,0x20])
    board.WriteI2C(OVT,0x65, [0xd8,0x05])
    board.WriteI2C(OVT,0x65, [0xd9,0x06])
    board.WriteI2C(OVT,0x65, [0xda,0x08])
    board.WriteI2C(OVT,0x65, [0xdb,0x96])
    board.WriteI2C(OVT,0x65, [0xdc,0x08])
    board.WriteI2C(OVT,0x65, [0xdd,0x5c])
    board.WriteI2C(OVT,0x65, [0xde,0x00])
    board.WriteI2C(OVT,0x65, [0xdf,0xff])
    board.WriteI2C(OVT,0x65, [0xe0,0x04])
    board.WriteI2C(OVT,0x65, [0xe1,0x20])
    board.WriteI2C(OVT,0x65, [0xe2,0x05])
    board.WriteI2C(OVT,0x65, [0xe3,0x06])
    board.WriteI2C(OVT,0x65, [0xe4,0x08])
    board.WriteI2C(OVT,0x65, [0xe5,0x84])
    board.WriteI2C(OVT,0x65, [0xe6,0x08])
    board.WriteI2C(OVT,0x65, [0xe7,0x70])
    board.WriteI2C(OVT,0x65, [0xe8,0x00])
    board.WriteI2C(OVT,0x65, [0xe9,0xff])
    board.WriteI2C(OVT,0x65, [0xea,0x00])
    board.WriteI2C(OVT,0x65, [0xeb,0xff])
    board.WriteI2C(OVT,0x65, [0xec,0x00])
    board.WriteI2C(OVT,0x65, [0xed,0xff])
    board.WriteI2C(OVT,0x30, [0xeb,0x04])
    board.WriteI2C(OVT,0x30, [0xed,0x5a])
    board.WriteI2C(OVT,0x30, [0xee,0x01])
    board.WriteI2C(OVT,0x30, [0xef,0x80])
    board.WriteI2C(OVT,0x30, [0xf1,0x5a])
    board.WriteI2C(OVT,0x30, [0x3a,0x04])
    board.WriteI2C(OVT,0x30, [0x3b,0x7f])
    board.WriteI2C(OVT,0x30, [0x3c,0xfe])
    board.WriteI2C(OVT,0x30, [0x3d,0x19])
    board.WriteI2C(OVT,0x30, [0x3e,0xd7])
    board.WriteI2C(OVT,0x30, [0x3f,0x09])
    board.WriteI2C(OVT,0x30, [0x40,0x78])
    board.WriteI2C(OVT,0x30, [0x42,0x05])
    board.WriteI2C(OVT,0x32, [0x8a,0x00])
    board.WriteI2C(OVT,0x31, [0xbf,0x9f])
    board.WriteI2C(OVT,0x31, [0xc0,0xff])
    board.WriteI2C(OVT,0x30, [0x12,0x01])
    board.WriteI2C(OVT,0x30, [0x12,0x00])
    board.WriteI2C(OVT,0x30, [0x00,0x03])
    board.WriteI2C(OVT,0x30, [0x01,0x30])
    board.WriteI2C(OVT,0x30, [0x02,0x07])
    board.WriteI2C(OVT,0x30, [0x04,0x03])
    board.WriteI2C(OVT,0x30, [0x05,0x30])
    board.WriteI2C(OVT,0x30, [0x06,0x07])
    board.WriteI2C(OVT,0x30, [0x8f,0x10])
    board.WriteI2C(OVT,0x31, [0x27,0x63])
    board.WriteI2C(OVT,0x30, [0x74,0x00])
    board.WriteI2C(OVT,0x30, [0x75,0x00])
    board.WriteI2C(OVT,0x30, [0x76,0x00])
    board.WriteI2C(OVT,0x30, [0x77,0x02])
    board.WriteI2C(OVT,0x30, [0x78,0x05])
    board.WriteI2C(OVT,0x30, [0x79,0x07])
    board.WriteI2C(OVT,0x30, [0x7a,0x04])
    board.WriteI2C(OVT,0x30, [0x7b,0x41])
    board.WriteI2C(OVT,0x30, [0x7c,0x05])
    board.WriteI2C(OVT,0x30, [0x7d,0x00])
    board.WriteI2C(OVT,0x30, [0x7e,0x04])
    board.WriteI2C(OVT,0x30, [0x7f,0x38])
    board.WriteI2C(OVT,0x30, [0x80,0x05])
    board.WriteI2C(OVT,0x30, [0x81,0xa9])
    board.WriteI2C(OVT,0x30, [0x82,0x04])
    board.WriteI2C(OVT,0x30, [0x83,0x50])
    board.WriteI2C(OVT,0x30, [0x84,0x00])
    board.WriteI2C(OVT,0x30, [0x85,0x04])
    board.WriteI2C(OVT,0x30, [0x86,0x00])
    board.WriteI2C(OVT,0x30, [0x87,0x04])
    board.WriteI2C(OVT,0x34, [0x44,0x28])
    board.WriteI2C(OVT,0x30, [0x91,0x00])
    board.WriteI2C(OVT,0x31, [0x19,0x55])
    board.WriteI2C(OVT,0x30, [0x12,0x01])
    board.WriteI2C(OVT,0x30, [0x12,0x00])
    board.WriteI2C(OVT,0x30, [0x00,0x03])
    board.WriteI2C(OVT,0x30, [0x01,0x30])
    board.WriteI2C(OVT,0x30, [0x02,0x07])
    board.WriteI2C(OVT,0x30, [0x04,0x03])
    board.WriteI2C(OVT,0x30, [0x05,0x30])
    board.WriteI2C(OVT,0x30, [0x06,0x07])
    board.WriteI2C(OVT,0x30, [0x8f,0x10])
    board.WriteI2C(OVT,0x31, [0x27,0x63])
    board.WriteI2C(OVT,0x30, [0x74,0x00])
    board.WriteI2C(OVT,0x30, [0x75,0x00])
    board.WriteI2C(OVT,0x30, [0x76,0x00])
    board.WriteI2C(OVT,0x30, [0x77,0x02])
    board.WriteI2C(OVT,0x30, [0x78,0x05])
    board.WriteI2C(OVT,0x30, [0x79,0x07])
    board.WriteI2C(OVT,0x30, [0x7a,0x04])
    board.WriteI2C(OVT,0x30, [0x7b,0x41])
    board.WriteI2C(OVT,0x30, [0x7c,0x05])
    board.WriteI2C(OVT,0x30, [0x7d,0x00])
    board.WriteI2C(OVT,0x30, [0x7e,0x04])
    board.WriteI2C(OVT,0x30, [0x7f,0x38])
    board.WriteI2C(OVT,0x30, [0x80,0x05])
    board.WriteI2C(OVT,0x30, [0x81,0xB2])
    board.WriteI2C(OVT,0x30, [0x82,0x04])
    board.WriteI2C(OVT,0x30, [0x83,0x74])
    board.WriteI2C(OVT,0x30, [0x84,0x00])
    board.WriteI2C(OVT,0x30, [0x85,0x04])
    board.WriteI2C(OVT,0x30, [0x86,0x00])
    board.WriteI2C(OVT,0x30, [0x87,0x04])
    board.WriteI2C(OVT,0x34, [0x6d,0x28])
    board.WriteI2C(OVT,0x34, [0x44,0x48])
    board.WriteI2C(OVT,0x30, [0x91,0x0C])
    board.WriteI2C(OVT,0x31, [0x19,0x55])
    board.WriteI2C(OVT,0x30, [0x12,0x01])
    
    board.WriteI2C(OVT,0x31, [0x29,0x80]) # patgen
    
    time.sleep(1)
    
    # Seeing if CSI data is transmitting
    print "CSI Error = ",hex(board.ReadI2C(UB953, 0x5C, 1))
    print "SENSOR Error = ",hex(board.ReadI2C(UB954, 0x51, 1))
    print "Packet Header data = ", hex(board.ReadI2C(UB953, 0x61, 1))
    print "Packer Header Word Count 0 = ", hex(board.ReadI2C(UB953, 0x62, 1))
    print "Packer Header Word Count 1 = ", hex(board.ReadI2C(UB953, 0x63, 1))

    Initialize the DS90UB960 and configure the I²C alias addresses.

    Please refer to lines 46-59 of the attached script for reference. 

    Initialize the DS90UB953 serializer.

    Please refer to lines 78-92. In this script, it is assumed the UB953 is strapped to CSI synchronous mode and the imager outputs over 4 lanes with a non-continuous clock. To change this setting write to register 0x02 on the serializer. 

    These configurations on the UB953 are primarily related to the image sensor bring up process, this is not specific to the serializer operation. 

    Forward the CSI data from the camera through the serializer/deserializer to the SoC.

    Please see below from prior response for convenience: 

    # "*** RX0 VC=0 ***"
    WriteI2C(0x4C,0x01) # RX0
    WriteI2C(0x72,0xE4) # RX0 VC
    # "*** RX1 VC=1 ***"
    WriteI2C(0x4C,0x12) # RX1
    WriteI2C(0x72,0xE4) # RX1 VC
    # "*** RX2 VC=2 ***"
    WriteI2C(0x4C,0x24) # RX2
    WriteI2C(0x72,0x9F) # RX2 VC
    # "*** RX3 VC=3 ***"
    WriteI2C(0x4C,0x38) # RX3
    WriteI2C(0x72,0xDF) # RX3 VC
    # "CSI_TX_SPEED"
    WriteI2C(0x1F,0x00) # CSI rate select
    # "CSI_PORT_SEL"
    WriteI2C(0x32,0x01) # CSI0 select
    # "CSI_EN"
    WriteI2C(0x33,0x01) # CSI_EN & CSI0 4L
    # "***Basic_FWD"
    WriteI2C(0x21,0x14) # Synchronized Basic_FWD
    # "***FWD_PORT all RX to CSI0"
    WriteI2C(0x20,0x00) # forwarding of all RX to CSI0

    For bring-up purposes, the CSI transmitter can either be enabled first or as the last step of the sequence. 

    Best,

    Zoe