diff --git a/voltha/adapters/microsemi/ActivationWatcher.py b/voltha/adapters/microsemi/ActivationWatcher.py
index c15d076..8036b1d 100644
--- a/voltha/adapters/microsemi/ActivationWatcher.py
+++ b/voltha/adapters/microsemi/ActivationWatcher.py
@@ -14,7 +14,6 @@
 # limitations under the License.
 #
 from scapy.automaton import ATMT
-from twisted.internet import reactor
 import structlog
 from voltha.adapters.microsemi.BaseOltAutomaton import BaseOltAutomaton
 from voltha.adapters.microsemi.PAS5211 import PAS5211EventOnuActivation, PAS5211MsgGetActivationAuthMode, \
diff --git a/voltha/adapters/microsemi/DeviceManager.py b/voltha/adapters/microsemi/DeviceManager.py
index 1bfa83c..c785c58 100644
--- a/voltha/adapters/microsemi/DeviceManager.py
+++ b/voltha/adapters/microsemi/DeviceManager.py
@@ -36,7 +36,7 @@
         self.adapter_agent = adapter_agent
         self.logical_device = None
 
-    def update_device(self, pkt):
+    def update_device_info_from_pkt(self, pkt):
 
         self.device.root = True
         self.device.vendor = 'Celestica Inc.'
@@ -49,7 +49,7 @@
                                                          pkt.build_firmware_version)
         self.device.software_version = '0.0.1'
         self.device.serial_number = self.device.mac_address
-        self.device.connect_status = ConnectStatus.REACHABLE
+        self.device.oper_status = ConnectStatus.REACHABLE
         self.adapter_agent.update_device(self.device)
 
     def create_logical_device(self):
@@ -102,6 +102,7 @@
                                             logical_port)
 
     def activate(self):
+        self.device = self.adapter_agent.get_device(self.device.id)
         self.device.parent_id = self.logical_device.id
         self.device.oper_status = OperStatus.ACTIVE
         self.adapter_agent.update_device(self.device)
diff --git a/voltha/adapters/microsemi/OltStateMachine.py b/voltha/adapters/microsemi/OltStateMachine.py
index b343e7e..0913247 100644
--- a/voltha/adapters/microsemi/OltStateMachine.py
+++ b/voltha/adapters/microsemi/OltStateMachine.py
@@ -31,6 +31,8 @@
 
 import structlog
 
+from voltha.protos.common_pb2 import ConnectStatus
+
 log = structlog.get_logger()
 
 
@@ -192,7 +194,7 @@
         log.debug("Received proto version {}".format(pkt))
         if PAS5211MsgGetOltVersionResponse in pkt:
             log.info("updating device")
-            self.device.update_device(pkt)
+            self.device.update_device_info_from_pkt(pkt)
             raise self.got_olt_version()
         else:
             log.error("Got garbage packet {}".format(pkt))
@@ -262,7 +264,8 @@
 
     @ATMT.receive_condition(wait_olt_optics)
     def receive_set_optics_response(self, pkt):
-        if pkt.opcode == PAS5211MsgSetOltOpticsResponse.opcode:
+        if PAS5211MsgSetOltOpticsResponse in pkt:
+            print "GOT OPTICS RESP"
             self.send_state[pkt.channel_id] = True
             if self.check_channel_state():
                 raise self.got_olt_optics()
@@ -298,7 +301,7 @@
 
     @ATMT.receive_condition(wait_olt_io_optics)
     def receive_io_optics_response(self, pkt):
-        if pkt.opcode == PAS5211MsgSetOpticsIoControlResponse.opcode:
+        if PAS5211MsgSetOpticsIoControlResponse in pkt:
             self.send_state[pkt.channel_id] = True
             if self.check_channel_state():
                 raise self.got_olt_io_optics()
@@ -351,7 +354,7 @@
 
     @ATMT.receive_condition(wait_olt_add)
     def wait_for_olt_add(self, pkt):
-        if pkt.opcode == PAS5211MsgAddOltChannelResponse.opcode:
+        if PAS5211MsgAddOltChannelResponse in pkt:
             self.send_state[pkt.channel_id] = True
             if self.check_channel_state():
                 raise self.got_olt_add()
@@ -374,7 +377,7 @@
 
     @ATMT.receive_condition(wait_alarm_set)
     def wait_for_alarm_set(self, pkt):
-        if pkt.opcode == PAS5211MsgSetAlarmConfigResponse.opcode:
+        if PAS5211MsgSetAlarmConfigResponse in pkt:
             self.send_state[pkt.channel_id] = True
             if self.check_channel_state():
                 raise self.got_alarm_set()
@@ -430,7 +433,7 @@
 
     @ATMT.receive_condition(wait_dba_start)
     def wait_for_dba_start(self, pkt):
-        if pkt.opcode == PAS5211MsgStartDbaAlgorithmResponse.opcode:
+        if PAS5211MsgStartDbaAlgorithmResponse in pkt:
             self.send_state[pkt.channel_id] = True
             if self.check_channel_state():
                 raise self.got_dba_start()
@@ -453,11 +456,12 @@
 
     @ATMT.receive_condition(wait_activation)
     def wait_for_activation(self, pkt):
-        if pkt.opcode == PAS5211MsgSetOltChannelActivationPeriodResponse.opcode:
+        if PAS5211MsgSetOltChannelActivationPeriodResponse in pkt:
             self.send_state[pkt.channel_id] = True
             if self.check_channel_state():
                 log.info("Ruby OLT at {} initialised".format(self.target))
                 self.device.create_logical_device()
+                self.device.activate()
                 raise self.initialized()
         raise self.wait_activation()
 
diff --git a/voltha/adapters/microsemi/PAS5211.py b/voltha/adapters/microsemi/PAS5211.py
index d0acc70..7939e91 100644
--- a/voltha/adapters/microsemi/PAS5211.py
+++ b/voltha/adapters/microsemi/PAS5211.py
@@ -198,6 +198,13 @@
 PON_OLT_HW_CLASSIFICATION_LAST_RULE                = 108
 
 
+PON_ACTIVATION_AUTH_AUTO 			  				= 0
+PON_ACTIVATION_AUTH_HOST_CONTROLLED_SEPARATE_EVENTS = 1 # Host controlled: Separate events
+PON_ACTIVATION_AUTH_HOST_CONTROLLED_LUMPED_SN   	= 2 # Host controlled: Lumped-SN-Response
+PON_ACTIVATION_AUTH_REGISTRATION_ID_RAW   			= 3 # Registration-ID Raw
+PON_ACTIVATION_AUTH_REGISTRATION_ID_LEARN   		= 4  # Registration-ID Learn
+
+
 class XLESignedIntField(Field):
     def __init__(self, name, default):
         Field.__init__(self, name, default, "<i")
