    f_burn2    = bitFlag(register=_FLAG, bit=4)

    # Define NVM counters
    c_boot       = multiBitFlag(register=_BOOTCNT, lowest_bit=0, num_bits=8)
    c_state_err  = multiBitFlag(register=_RSTERRS, lowest_bit=4, num_bits=4)
    c_vbus_rst   = multiBitFlag(register=_RSTERRS, lowest_bit=0, num_bits=4)
    c_deploy     = multiBitFlag(register=_DCOUNT,  lowest_bit=0, num_bits=8)
    c_downlink   = multiBitFlag(register=_DWNLINK, lowest_bit=0, num_bits=8)
    c_gs_resp    = multiBitFlag(register=_GSRSP,   lowest_bit=0, num_bits=8)

    UHF_FREQ = 433.0

    def __init__(self):
        """
        Big init routine as the whole board is brought up.
        """
        self._stat = {}
        self.BOOTTIME = const(self.timeon)
        self.hardware = {
            'IMU':    False,
            'Radio':  False,
            'SDcard': False,
            'GPS':    False,
            'WDT':    False,
            'Sun':    False,
            'Coils':  False
        }
        self.micro = microcontroller

        self.data_cache = {}
        self.filenumbers = {}
        self.vlowbatt = 3.5
        self.debug = True

        # Define battery voltage
        self._vbatt = analogio.AnalogIn(board.BATTERY)

        # Define SPI,I2C,UART
        self.i2c1  = busio.I2C(board.SCL1, board.SDA1)
        self.i2c2  = busio.I2C(board.SCL2, board.SDA2)
        self.i2c3  = busio.I2C(board.SCL3, board.SDA3)
        # self.spi   = busio.SPI(board.SCK,MOSI=board.MOSI,MISO=board.MISO)
        self.spi   = board.SPI()

        # Define sdcard
        self.filename = "/sd/default.txt"
        self.logfile = "/sd/logs/log000.txt"

        # Define radio
        self._rf_cs = digitalio.DigitalInOut(board.RF_CS)
        self._rf_rst = digitalio.DigitalInOut(board.RF_RST)
        self.radio_DIO0 = digitalio.DigitalInOut(board.RF_IO0)
        self.radio_DIO0.switch_to_input()
        self.radio_DIO1 = digitalio.DigitalInOut(board.RF_IO1)
        self.radio_DIO1.switch_to_input()
        self._rf_cs.switch_to_output(value=True)
        self._rf_rst.switch_to_output(value=True)

        # Initialize Neopixel
        try:
            self.neopixel = neopixel.NeoPixel(board.NEOPIXEL, 1, brightness=0.2, pixel_order=neopixel.GRB)
            self.neopixel[0] = (0, 0, 0)
            self.hardware['Neopixel'] = True
        except Exception as e:
            print('[WARNING][Neopixel]', e)

        # Initialize sdcard
        try:
            self._sd   = sdcardio.SDCard(self.spi, board.CS_SD, baudrate=4000000)
            self._vfs = storage.VfsFat(self._sd)
            storage.mount(self._vfs, "/sd")
            sys.path.append("/sd")
            self.hardware['SDcard'] = True
            # self.new_Log() # create new log file
        except Exception as e:
            print('[ERROR][SD Card]', e)

        # Initialize radio #1 - UHF
        try:
            self.radio = pycubed_rfm9x.RFM9x(self.spi, self._rf_cs, self._rf_rst, self.UHF_FREQ, rfm95pw=True)
            self.radio.dio0 = self.radio_DIO0
            self.radio.sleep()
            self.hardware['Radio'] = True
        except Exception as e:
            print('[ERROR][RADIO]', e)

        # Initialize IMU
        try:
            self.IMU = bmx160.BMX160_I2C(self.i2c1, address=0x68)
            self.hardware['IMU'] = True
        except Exception as e:
            print(f'[ERROR][IMU] {e}\n\tMaybe try address=0x68?')

        # Initialize Sun Sensors
        try:
            sun_yn = adafruit_tsl2561.TSL2561(self.i2c2, address=0x29)  # -Y
            sun_zn = adafruit_tsl2561.TSL2561(self.i2c2, address=0x39)  # -Z
            sun_xn = adafruit_tsl2561.TSL2561(self.i2c1, address=0x49)  # -X

            sun_yp = adafruit_tsl2561.TSL2561(self.i2c1, address=0x29)  # +Y
            sun_zp = adafruit_tsl2561.TSL2561(self.i2c1, address=0x39)  # +Z
            sun_xp = adafruit_tsl2561.TSL2561(self.i2c2, address=0x49)  # +X
            sun_sensors = [sun_zn, sun_yn, sun_xn, sun_yp, sun_xp]
            for i in sun_sensors:
                i.enabled = False
            self.hardware['Sun'] = True
        except Exception as e:
            print('[ERROR][Sun Sensors]', e)

        # Initialize H-Bridges
        try:
            drv_x = drv8830.DRV8830(self.i2c3, 0x68)  # U6
            drv_y = drv8830.DRV8830(self.i2c3, 0x60)  # U8
            drv_z = drv8830.DRV8830(self.i2c3, 0x62)  # U4
            coils = [drv_x, drv_y, drv_z]
            for driver in coils:
                driver.mode = drv8830.COAST
                driver.vout = 0
            self.hardware['Coils'] = True
        except Exception as e:
            print('[ERROR][H-Bridges]', e)

    def reinit(self, dev):
        dev = dev.lower()
        if dev == 'radio':
            self.radio2.__init__(self.spi, self._rf_cs, self._rf_rst, self.UHF_FREQ)
        elif dev =='sd':
            self._sd.__init__(self.spi, self._sdcs, baudrate=1000000)
        elif dev == 'imu':
            self.IMU.__init__(self.i2c1)
        else:
            print('Invalid Device? ->', dev)

    @property
    def acceleration(self):
        return self.IMU.accel

    @property
    def magnetic(self):
        return self.IMU.mag

    @property
    def gyro(self):
        return self.IMU.gyro

    @property
    def temperature(self):
        return self.IMU.temperature  # Celsius

    @property
    def temperature_cpu(self):
        return microcontroller.cpu.temperature  # Celsius

    @property
    def RGB(self):
        return self.neopixel[0]

    @RGB.setter
    def RGB(self, value):
        if self.hardware['Neopixel']:
            try:
                self.neopixel[0] = value
            except Exception as e:
                print('[WARNING]', e)

    @property
    def battery_voltage(self):
        vbat