diff --git a/Makefile b/Makefile
index a7e7477..e23fb7e 100644
--- a/Makefile
+++ b/Makefile
@@ -25,10 +25,10 @@
 # SW-BCM68620_<VER>.zip - Broadcom BAL source and Maple SDK.
 # sdk-all-<SDK_VER>.tar.gz - Broadcom Qumran SDK.
 # ACCTON_BAL_<BAL_VER>-<ACCTON_VER>.patch - Accton/Edgecore's patch.
-BAL_MAJOR_VER = 02.04
-BAL_VER = 2.4.3.6
+BAL_MAJOR_VER = 02.06
+BAL_VER = 2.6.0.1
 SDK_VER = 6.5.7
-ACCTON_VER = 201710131639
+ACCTON_VER = 201804301043
 #
 # Version of Open Network Linux (ONL).
 ONL_KERN_VER_MAJOR = 3.7
@@ -81,6 +81,32 @@
 	sudo make -C $(GRPC_DST)/third_party/protobuf install
 	sudo ldconfig
 
+	rm -rf /tmp/protobuf
+	git clone https://github.com/google/protobuf.git /tmp/protobuf
+	cd /tmp/protobuf && git submodule update --init --recursive && ./autogen.sh && ./configure
+	make -C /tmp/protobuf
+	sudo make -C /tmp/protobuf install
+	sudo ldconfig
+
+	# libunwind (needed by glog)
+	rm -rf /tmp/libunwind-1.2
+	wget http://download.savannah.nongnu.org/releases/libunwind/libunwind-1.2.tar.gz -P /tmp
+	cd /tmp && tar -xzvf libunwind-1.2.tar.gz
+	cd /tmp/libunwind-1.2 && ./configure
+	make -C /tmp/libunwind-1.2
+	sudo make -C /tmp/libunwind-1.2 install
+
+	# cmake (needed by glog)
+	sudo apt-get remove cmake cmake-data
+	sudo -E add-apt-repository -y ppa:george-edison55/cmake-3.x
+	sudo -E apt-get update
+	sudo apt-get install -y cmake
+
+        # glog
+	rm -rf /tmp/glog
+	git clone https://github.com/google/glog.git /tmp/glog
+	cd /tmp/glog && cmake -H. -Bbuild -G "Unix Makefiles" && cmake --build build && sudo cmake --build build --target install
+
 ########################################################################
 ##
 ##
@@ -90,7 +116,6 @@
 ONL_KERN_VER = $(ONL_KERN_VER_MAJOR).$(ONL_KERN_VER_MINOR)
 ONL_REPO = $(DEVICE)-onl
 ONL_DIR = $(BUILD_DIR)/$(ONL_REPO)
-.PHONY: onl
 onl:
 	if [ ! -d "$(ONL_DIR)/OpenNetworkLinux" ]; then \
 		mkdir -p $(ONL_DIR); \
@@ -116,7 +141,7 @@
 ONL_KERNDIR = $(PWD)/$(ONL_DIR)/OpenNetworkLinux/packages/base/amd64/kernels/kernel-$(ONL_KERN_VER_MAJOR)-x86-64-all/builds
 MAPLE_KERNDIR = $(BAL_DIR)/bcm68620_release/$(DEVICE)/kernels
 BCM_SDK = $(BAL_DIR)/bal_release/3rdparty/bcm-sdk
-BALLIBDIR = $(BAL_DIR)/bal_release/build/core/lib
+BALLIBDIR = $(BAL_DIR)/bal_release/build/core/src/apps/bal_api_dist_shared_lib
 BALLIBNAME = bal_api_dist
 BAL_INC = -I$(BAL_DIR)/bal_release/src/common/os_abstraction \
 	-I$(BAL_DIR)/bal_release/src/common/os_abstraction/posix \
@@ -125,30 +150,23 @@
 	-I$(BAL_DIR)/bal_release/src/core/main \
 	-I$(BAL_DIR)/bal_release/src/common/include \
 	-I$(BAL_DIR)/bal_release/src/lib/libbalapi \
-	-I$(BAL_DIR)/bal_release/3rdparty/maple/sdk/host_driver/utils \
 	-I$(BAL_DIR)/bal_release/src/balapiend \
 	-I$(BAL_DIR)/bal_release/src/common/dev_log \
 	-I$(BAL_DIR)/bal_release/src/common/bal_dist_utils  \
 	-I$(BAL_DIR)/bal_release/src/lib/libtopology \
-	-I$(BAL_DIR)/bal_release/3rdparty/maple/sdk/host_driver/model \
-	-I$(BAL_DIR)/bal_release/3rdparty/maple/sdk/host_driver/api \
 	-I$(BAL_DIR)/bal_release/src/lib/libcmdline \
 	-I$(BAL_DIR)/bal_release/src/lib/libutils \
+	-I$(BAL_DIR)/bal_release/3rdparty/maple/sdk/host_driver/utils \
+	-I$(BAL_DIR)/bal_release/3rdparty/maple/sdk/host_driver/model \
+	-I$(BAL_DIR)/bal_release/3rdparty/maple/sdk/host_driver/api \
 	-I$(BAL_DIR)/bal_release/3rdparty/maple/sdk/host_reference/cli
+#       -I$(BAL_DIR)/bal_release/3rdparty/maple/sdk/host_customized/os_abstraction
+#       -I$(BAL_DIR)/bal_release/3rdparty/maple/sdk/host_customized/os_abstraction/posix
+#       -I$(BAL_DIR)/bal_release/3rdparty/maple/sdk/host_driver/config
 CXXFLAGS += $(BAL_INC) -I $(BAL_DIR)/lib/cmdline
-.PHONY: get-$(BAL_DIR)
-get-$(BAL_DIR):
-# if [ ! -e "download/$(BAL_ZIP)" ]; then \
-#   rm -rf /tmp/broadcom-proprietary; \
-#   git clone git@github.com:shadansari/broadcom-proprietary.git /tmp/broadcom-proprietary; \
-#   mv -f /tmp/broadcom-proprietary/$(BAL_VER)/$(BAL_ZIP) ./download; \
-#   mv -f /tmp/broadcom-proprietary/$(BAL_VER)/$(SDK_ZIP) ./download; \
-#   mv -f /tmp/broadcom-proprietary/$(BAL_VER)/$(ACCTON_PATCH) ./download; \
-#   mv -f /tmp/broadcom-proprietary/$(BAL_VER)/$(OPENOLT_BAL_PATCH) ./download; \
-#   rm -rf /tmp/broadcom-proprietary; \
-# fi;
-.PHONY: bal
-bal: onl get-$(BAL_DIR)
+CXXFLAGS += -DBCMOS_MSG_QUEUE_DOMAIN_SOCKET -DBCMOS_MSG_QUEUE_UDP_SOCKET -DBCMOS_MEM_CHECK -DBCMOS_SYS_UNITTEST
+
+sdk: onl
 ifeq ("$(wildcard $(BAL_DIR))","")
 	mkdir $(BAL_DIR)
 	unzip download/$(BAL_ZIP) -d $(BAL_DIR)
@@ -166,29 +184,17 @@
 	make -C $(BAL_DIR)/bal_release BOARD=$(DEVICE) switch_sdk
 	KERNDIR=$(ONL_KERNDIR)/linux-$(ONL_KERN_VER) BOARD=$(DEVICE) ARCH=x86_64 SDKBUILD=build_bcm_user make -C $(BCM_SDK)/build-$(DEVICE)/sdk-all-$(SDK_VER)/systems/linux/user/x86-generic_64-2_6
 	make -C $(BAL_DIR)/bal_release BOARD=$(DEVICE) bal
+	echo 'auto_create_interface_tm=y' >> $(BAL_DIR)/bal_release/3rdparty/maple/cur/$(DEVICE)/board_files/broadcom/bal_config.ini
 	make -C $(BAL_DIR)/bal_release BOARD=$(DEVICE) release_board
-	ln -s -f $(PWD)/$(BAL_DIR)/bcm68620_release/asfvolt16/release/release_$(DEVICE)_V$(BAL_MAJOR_VER).$(ACCTON_VER).tar.gz .
-	ln -s -f $(PWD)/$(BAL_DIR)/bal_release/build/core/lib/libbal_api_dist.so .
-	ln -s -f $(PWD)/$(BAL_DIR)/bal_release/build/core/src/apps/bal_core_dist/bal_core_dist
-	mv -f release_$(DEVICE)_V$(BAL_MAJOR_VER).$(ACCTON_VER).tar.gz $(BUILD_DIR)
-	mv -f libbal_api_dist.so $(BUILD_DIR)
-	mv -f bal_core_dist $(BUILD_DIR)
 endif
-bal-rebuild:
-	make -C $(BAL_DIR)/bal_release BOARD=$(DEVICE) maple_sdk
-	make -C $(BAL_DIR)/bal_release BOARD=$(DEVICE) switch_sdk
-	KERNDIR=$(ONL_KERNDIR)/linux-$(ONL_KERN_VER) BOARD=$(DEVICE) ARCH=x86_64 SDKBUILD=build_bcm_user make -C $(BCM_SDK)/build-$(DEVICE)/sdk-all-$(SDK_VER)/systems/linux/user/x86-generic_64-2_6
+
+bal: sdk
 	make -C $(BAL_DIR)/bal_release BOARD=$(DEVICE) bal
+	echo 'auto_create_interface_tm=y' >> $(BAL_DIR)/bal_release/3rdparty/maple/cur/asfvolt16/board_files/broadcom/bal_config.ini
 	make -C $(BAL_DIR)/bal_release BOARD=$(DEVICE) release_board
-	ln -s -f $(PWD)/$(BAL_DIR)/bcm68620_release/asfvolt16/release/release_$(DEVICE)_V$(BAL_MAJOR_VER).$(ACCTON_VER).tar.gz .
-	ln -s -f $(PWD)/$(BAL_DIR)/bal_release/build/core/lib/libbal_api_dist.so .
-	ln -s -f $(PWD)/$(BAL_DIR)/bal_release/build/core/src/apps/bal_core_dist/bal_core_dist .
-	mv -f release_$(DEVICE)_V$(BAL_MAJOR_VER).$(ACCTON_VER).tar.gz $(BUILD_DIR)
-	mv -f libbal_api_dist.so $(BUILD_DIR)
-	mv -f bal_core_dist $(BUILD_DIR)
-distclean-bal:
-	sudo rm -rf $(BAL_DIR)
-	rm -f build/release_$(DEVICE)_V$(BAL_MAJOR_VER).$(ACCTON_VER).tar.gz
+
+bal-clean:
+	make -C $(BAL_DIR)/bal_release BOARD=$(DEVICE) clean_bal
 
 ########################################################################
 ##
@@ -199,7 +205,6 @@
 OPENOLT_PROTOS_DIR = ./protos
 OPENOLT_API_LIB = $(OPENOLT_PROTOS_DIR)/libopenoltapi.a
 CXXFLAGS += -I./$(OPENOLT_PROTOS_DIR) -I $(OPENOLT_PROTOS_DIR)/googleapis/gens
-.PHONY: protos
 protos:
 	make -C $(OPENOLT_PROTOS_DIR) all
 protos-clean:
@@ -216,41 +221,53 @@
 DEPS = $(SRCS:.cc=.d)
 .DEFAULT_GOAL := all
 all: $(BUILD_DIR)/openolt
-$(BUILD_DIR)/openolt: protos bal $(OBJS)
+$(BUILD_DIR)/openolt: sdk protos $(OBJS)
 	$(CXX) $(OBJS) $(LDFLAGS) $(OPENOLT_API_LIB) -o $@ -L$(BALLIBDIR) -l$(BALLIBNAME)
+	ln -sf $(PWD)/$(BAL_DIR)/bcm68620_release/$(DEVICE)/release/release_$(DEVICE)_V$(BAL_MAJOR_VER).$(ACCTON_VER).tar.gz $(BUILD_DIR)/.
+	ln -sf $(PWD)/$(BAL_DIR)/bcm68620_release/$(DEVICE)/release/broadcom/libbal_api_dist.so $(BUILD_DIR)/.
+	ln -sf $(PWD)/$(BAL_DIR)/bal_release/build/core/src/apps/bal_core_dist/bal_core_dist $(BUILD_DIR)/.
 	ln -sf $(shell ldconfig -p | grep libgrpc.so.6 | tr ' ' '\n' | grep /) $(BUILD_DIR)/libgrpc.so.6
 	ln -sf $(shell ldconfig -p | grep libgrpc++.so.1 | tr ' ' '\n' | grep /) $(BUILD_DIR)/libgrpc++.so.1
 	ln -sf $(shell ldconfig -p | grep libgrpc++_reflection.so.1 | tr ' ' '\n' | grep /) $(BUILD_DIR)/libgrpc++_reflection.so.1
 
 deb:
-	rm -f *.deb
-	cp $(BUILD_DIR)/*.tar.gz mkdebian/debian/release_asfvolt16.tar.gz
+	cp $(BUILD_DIR)/release_$(DEVICE)_V$(BAL_MAJOR_VER).$(ACCTON_VER).tar.gz mkdebian/debian
 	cp $(BUILD_DIR)/openolt mkdebian/debian
 	cp $(BUILD_DIR)/libgrpc.so.6 mkdebian/debian
 	cp $(BUILD_DIR)/libgrpc++.so.1 mkdebian/debian
 	cp $(BUILD_DIR)/libgrpc++_reflection.so.1 mkdebian/debian
-	cd mkdebian && ./build_asfvolt16_deb.sh
+	cd mkdebian && ./build_$(DEVICE)_deb.sh
 	mv *.deb $(BUILD_DIR)/openolt.deb
+	make deb-cleanup
 
 src/%.o: %.cpp
 	$(CXX) -MMD -c $< -o $@
 
-deb-clean:
-	rm -f $(BUILD_DIR)/*.deb
-	rm -f mkdebian/debian/asfvolt16.debhelper.log
-	rm -f mkdebian/debian/asfvolt16.postinst.debhelper
-	rm -f mkdebian/debian/asfvolt16.postrm.debhelper
-	rm -rf mkdebian/debian/asfvolt16/
+deb-cleanup:
+	rm -f mkdebian/debian/$(DEVICE).debhelper.log
+	rm -f mkdebian/debian/$(DEVICE).postinst.debhelper
+	rm -f mkdebian/debian/$(DEVICE).postrm.debhelper
+	rm -f mkdebian/debian/$(DEVICE).substvars
+	rm -rf mkdebian/debian/$(DEVICE)/
 	rm -f mkdebian/debian/libgrpc++.so.1
 	rm -f mkdebian/debian/libgrpc++_reflection.so.1
 	rm -f mkdebian/debian/libgrpc.so.6
 	rm -f mkdebian/debian/openolt
-	rm -f mkdebian/debian/release_asfvolt16.tar.gz
+	rm -f mkdebian/debian/release_$(DEVICE)_V$(BAL_MAJOR_VER).$(ACCTON_VER).tar.gz
 	rm -rf mkdebian/debian/tmp/
+	rm -f $(DEVICE)_$(BAL_VER)+edgecore-V$(ACCTON_VER)_amd64.changes
 
-clean: protos-clean
+clean: protos-clean deb-cleanup
 	rm -f $(OBJS) $(DEPS)
+	rm -rf protos/googleapis
 	rm -f $(BUILD_DIR)/libgrpc.so.6 $(BUILD_DIR)/libgrpc++.so.1 $(BUILD_DIR)/libgrpc++_reflection.so.1
+	rm -f $(BUILD_DIR)/libbal_api_dist.so
+	rm -f $(BUILD_DIR)/openolt
+	rm -f $(BUILD_DIR)/bal_core_dist
+	rm -f $(BUILD_DIR)/release_$(DEVICE)_V$(BAL_MAJOR_VER).$(ACCTON_VER).tar.gz
+	rm -f $(BUILD_DIR)/openolt.deb
 
 distclean:
 	rm -rf $(BUILD_DIR)
+
+.PHONY: onl sdk bal protos prereq
diff --git a/README.md b/README.md
index b60e40c..71511af 100644
--- a/README.md
+++ b/README.md
@@ -131,10 +131,10 @@
 
 The versions currently supported by the OpenOLT driver are:
 
-* SW-BCM68620_2_4_3_6.zip
+* SW-BCM68620_2_6_0_1.zip
 * sdk-all-6.5.7.tar.gz
-* ACCTON_BAL_2.4.3.6-V201710131639.patch
-* OPENOLT_BAL_2.4.3.6.patch
+* ACCTON_BAL_2.6.0.1-V201804301043.patch
+* OPENOLT_BAL_2.6.0.1.patch
 
 > NOTE: the repository does not contain the above four source packages.  These
 > are needed to build the OpenOLT driver executable. Contact
diff --git a/mkdebian/debian/asfvolt16.postinst b/mkdebian/debian/asfvolt16.postinst
index f4a7f56..c19fb79 100644
--- a/mkdebian/debian/asfvolt16.postinst
+++ b/mkdebian/debian/asfvolt16.postinst
@@ -1,21 +1,13 @@
 #!/bin/bash
 
-# Extract BAL driver
-tar zxf /tmp/release_asfvolt16.tar.gz -C / 2>&1 > /dev/null
-
-# Copy OpenOLT folder
+rm -rf /opt/bcm68620
+rm -rf /broadcom
+tar zxf /tmp/release_asfvolt16_V02.06.201804301043.tar.gz -C / 2>&1 > /dev/null
+grep -q '\/opt\/bcm68620\/svk_init.sh' /etc/rc.local || sed -i -e '$i \/opt\/bcm68620\/svk_init.sh' /etc/rc.local
+rm -f /run/bcm68620
 mv /tmp/openolt /broadcom
-
-# Copy libraries
 mv /tmp/libgrpc++_reflection.so.1 /usr/local/lib
 mv /tmp/libgrpc++.so.1 /usr/local/lib
 mv /tmp/libgrpc.so.6 /usr/local/lib
 mv /broadcom/libbal_api_dist.so /usr/local/lib
-
-# Init file
-#mv /tmp/voltha_init.sh /broadcom
-grep -q '\/opt\/bcm68620\/svk_init.sh' /etc/rc.local || sed -i -e '$i \/opt\/bcm68620\/svk_init.sh' /etc/rc.local
-
-source /root/.bashrc
-cd /broadcom && /sbin/ldconfig
-/opt\/bcm68620\/svk_init.sh
+/opt/bcm68620/svk_init.sh
diff --git a/mkdebian/debian/asfvolt16.postrm b/mkdebian/debian/asfvolt16.postrm
index 4c2469f..64bde5b 100644
--- a/mkdebian/debian/asfvolt16.postrm
+++ b/mkdebian/debian/asfvolt16.postrm
@@ -1,15 +1,10 @@
 #!/bin/bash
 
 rm -rf /opt/bcm68620
-rm -rf /run/bcm68620
-
 rm -rf /broadcom
-
+sed -i '\/opt\/bcm68620\/svk_init.sh/d' /etc/rc.local
+rm -rf /run/bcm68620
 rm -rf /usr/local/lib/libgrpc++_reflection.so.1
 rm -rf /usr/local/lib/libgrpc++.so.1
 rm -rf /usr/local/lib/libgrpc.so.6
 rm -rf /usr/local/lib/libbal_api_dist.so
-
-# Remove init scripts
-sed -i '\/opt\/bcm68620\/svk_init.sh/d' /etc/rc.local
-# sed -i '\/broadcom\/voltha_init.sh/d' /etc/rc.local
diff --git a/mkdebian/debian/asfvolt16.preinst b/mkdebian/debian/asfvolt16.preinst
index 3ff3ca5..6660aaa 100644
--- a/mkdebian/debian/asfvolt16.preinst
+++ b/mkdebian/debian/asfvolt16.preinst
@@ -2,7 +2,10 @@
 
 # kill CLI applications
 echo "kill running time application"
+[ -n "`pidof bcm_user_appl`" ] && killall bcm_user_appl
+[ -n "`pidof bcm.user`" ] && killall bcm.user
 [ -n "`pidof bal_core_dist`" ] && killall bal_core_dist 
+[ -n "`pidof voltha_bal_driver`" ] && killall voltha_bal_driver
 [ -n "`pidof openolt`" ] && killall openolt
 
 # unload drivers
@@ -10,6 +13,8 @@
 [ -n "`lsmod | grep bcm_coop_dba_linux`" ] && rmmod bcm_coop_dba_linux && sleep 1
 [ -n "`lsmod | grep bcm_dev_ctrl_linux`" ] &&  rmmod bcm_dev_ctrl_linux && sleep 1
 [ -n "`lsmod | grep i2c_devs`" ] && rmmod i2c_devs && sleep 1
+[ -n "`lsmod | grep trmux`" ] && rmmod trmux && sleep 1
+[ -n "`lsmod | grep fld`" ] && rmmod fld && sleep 1
 [ -n "`lsmod | grep os_linux`" ] && rmmod os_linux && sleep 1
 [ -n "`lsmod | grep ll_pcie`" ] && rmmod ll_pcie && sleep 1
 [ -n "`lsmod | grep linux_user_bde`" ] && rmmod linux-user-bde && sleep 1
diff --git a/mkdebian/debian/changelog b/mkdebian/debian/changelog
index 286153c..3969177 100644
--- a/mkdebian/debian/changelog
+++ b/mkdebian/debian/changelog
@@ -1,8 +1,10 @@
-asfvolt16 (2.4.3.6+accton1.1-0) stable; urgency=high
-
-    * Added Pre-emphasis adjustment on the Qumran
-    * Added Qumran LED function
-    * Patch file name: ACCTON_BAL_2.4.6.10-V201711151812.patch
-
- -- Jason Huang <jasonsc_huang@edge-core.com>  Thu, 15 Nov 2017 18:12:32 +0800
-
+asfvolt16 (2.6.0.1+edgecore-V201804301043) stable; urgency=high
+
+    * Based on code from SW-BCM68620_2_6_0_1.zip.
+    * Merged the Accton's fixed done in ACCTON_BAL_2.4.7.12-V201712061142.patch.
+    * To increase the stack size to 2M to avoid segment fault while init bcm.user code.
+    * To modify the BALAPI_OPER_TIMEOUT from 5 to 10 seconds to avoid timeout warning message.
+    * Patch file name: ACCTON_BAL_2.6.0.1-V201804301043.patch
+
+ -- Jason Huang <jasonsc_huang@edge-core.com>  Thu, 31 May 2018 10:36:32 +0800
+
diff --git a/mkdebian/debian/control b/mkdebian/debian/control
index dd12b49..c68f14e 100644
--- a/mkdebian/debian/control
+++ b/mkdebian/debian/control
@@ -8,6 +8,6 @@
 Package: asfvolt16
 Architecture: amd64
 Depends: ${shlibs:Depends}
-Description: Broadcom OLT drivers and CLI
-  ported from Broadcom SDK-2.4.3.6 package
+Description: Broadcom OLT drivers,CLI
+  ported from Broadcom SDK-2.6.0.1 package
 
diff --git a/mkdebian/debian/files b/mkdebian/debian/files
index 33ff7dc..4061fba 100644
--- a/mkdebian/debian/files
+++ b/mkdebian/debian/files
@@ -1 +1 @@
-asfvolt16_2.4.3.6+accton1.1-0_amd64.deb misc optional
+asfvolt16_2.6.0.1+edgecore-V201804301043_amd64.deb misc optional
diff --git a/mkdebian/debian/rules b/mkdebian/debian/rules
index b2906d4..c785567 100755
--- a/mkdebian/debian/rules
+++ b/mkdebian/debian/rules
@@ -26,14 +26,14 @@
 
 override_dh_auto_install: 
 	mkdir -p $(DEB_DH_INSTALL_SOURCEDIR)/tmp
-	cp -a $(CURDIR)/debian/release_asfvolt16.tar.gz $(DEB_DH_INSTALL_SOURCEDIR)/tmp
+	cp -a $(CURDIR)/debian/release_asfvolt16_V02.06.201804301043.tar.gz $(DEB_DH_INSTALL_SOURCEDIR)/tmp
 	cp -a $(CURDIR)/debian/libgrpc++_reflection.so.1 $(DEB_DH_INSTALL_SOURCEDIR)/tmp
 	cp -a $(CURDIR)/debian/libgrpc++.so.1 $(DEB_DH_INSTALL_SOURCEDIR)/tmp
 	cp -a $(CURDIR)/debian/libgrpc.so.6 $(DEB_DH_INSTALL_SOURCEDIR)/tmp
 	cp -a $(CURDIR)/debian/openolt $(DEB_DH_INSTALL_SOURCEDIR)/tmp
 
-override_dh_shlibdeps:
-	dh_shlibdeps --dpkg-shlibdeps-params=--ignore-missing-info -l$(ONLP_LIB_PATH):$(OFDPA_LIB_PATH)
+#override_dh_shlibdeps:
+#	dh_shlibdeps --dpkg-shlibdeps-params=--ignore-missing-info -l$(ONLP_LIB_PATH):$(OFDPA_LIB_PATH)
 
 # avoid auto strip for debug ofagentapp.dbg
 #
@@ -69,4 +69,3 @@
 	@echo ONLP_LIB_PATH=$(ONLP_LIB_PATH)
 #	@echo OFDPA_LIB_PATH=$(OFDPA_LIB_PATH)
 #	@echo OFDPA_BIN_PATH=$(OFDPA_BIN_PATH)
-
diff --git a/src/core.cc b/src/core.cc
index b5fe90d..c77048c 100644
--- a/src/core.cc
+++ b/src/core.cc
@@ -92,9 +92,14 @@
     memcpy(serial_num.vendor_specific, vendor_specific, 4);
     BCMBAL_CFG_PROP_SET(&sub_term_obj, subscriber_terminal, serial_number, serial_num);
 
+#if 0
+    // Commenting out as this is causing issues with onu activation
+    // with BAL 2.6 (Broadcom CS5248819).
+
     // FIXME - Use a default (all zeros) registration id.
     memset(registration_id.arr, 0, sizeof(registration_id.arr));
     BCMBAL_CFG_PROP_SET(&sub_term_obj, subscriber_terminal, registration_id, registration_id);
+#endif
 
     BCMBAL_CFG_PROP_SET(&sub_term_obj, subscriber_terminal, admin_state, BCMBAL_STATE_UP);
 
diff --git a/src/indications.cc b/src/indications.cc
index 7346772..3f49fcb 100644
--- a/src/indications.cc
+++ b/src/indications.cc
@@ -39,8 +39,8 @@
     openolt::OltIndication* olt_ind = new openolt::OltIndication;
     Status status;
 
-    bcmbal_access_terminal_ind *acc_term_ind = (bcmbal_access_terminal_ind *)obj;
-    if (acc_term_ind->data.oper_status == BCMBAL_STATUS_UP) {
+    bcmbal_access_terminal_oper_status_change *acc_term_ind = (bcmbal_access_terminal_oper_status_change *)obj;
+    if (acc_term_ind->data.new_oper_status == BCMBAL_STATUS_UP) {
         olt_ind->set_oper_state("up");
         start_collecting_statistics();
     } else {
@@ -51,6 +51,7 @@
     std::cout << "olt indication, oper_state:" << ind.olt_ind().oper_state() << std::endl;
     oltIndQ.push(ind);
 
+#define MAX_SUPPORTED_INTF 16
     // Enable all PON interfaces.
     for (int i = 0; i < MAX_SUPPORTED_INTF; i++) {
         status = EnablePonIf_(i);
@@ -87,10 +88,10 @@
     openolt::IntfIndication* intf_ind = new openolt::IntfIndication;
 
     std::cout << "intf indication, intf_id:"
-              << ((bcmbal_interface_ind *)obj)->key.intf_id << std::endl;
+              << ((bcmbal_interface_oper_status_change *)obj)->key.intf_id << std::endl;
 
-    intf_ind->set_intf_id(((bcmbal_interface_ind *)obj)->key.intf_id);
-    if (((bcmbal_interface_ind *)obj)->data.oper_status == BCMBAL_STATUS_UP) {
+    intf_ind->set_intf_id(((bcmbal_interface_oper_status_change *)obj)->key.intf_id);
+    if (((bcmbal_interface_oper_status_change *)obj)->data.new_oper_status == BCMBAL_STATUS_UP) {
         intf_ind->set_oper_state("up");
     } else {
         intf_ind->set_oper_state("down");
@@ -211,29 +212,22 @@
 bcmos_errno OnuIndication(bcmbal_obj *obj) {
     openolt::Indication ind;
     openolt::OnuIndication* onu_ind = new openolt::OnuIndication;
-    openolt::SerialNumber* serial_number = new openolt::SerialNumber;
 
     bcmbal_subscriber_terminal_key *key =
-        &(((bcmbal_subscriber_terminal_ind*)obj)->key);
+        &(((bcmbal_subscriber_terminal_oper_status_change*)obj)->key);
 
-    bcmbal_subscriber_terminal_ind_data *data =
-        &(((bcmbal_subscriber_terminal_ind*)obj)->data);
-
-    bcmbal_serial_number *in_serial_number = &(data->serial_number);
+    bcmbal_subscriber_terminal_oper_status_change_data *data =
+        &(((bcmbal_subscriber_terminal_oper_status_change*)obj)->data);
 
     std::cout << "onu indication, intf_id:"
          << key->intf_id
-         << " serial_number:"
-         << serial_number_to_str(in_serial_number)
-         << " oper_state:" << data->oper_status
-         << " admin_state:" << data->admin_state << std::endl;
+         << " oper_state:" << data->new_oper_status
+         << " admin_state:" << data->admin_state
+         << " onu_id:" << key->sub_term_id << std::endl;
 
     onu_ind->set_intf_id(key->intf_id);
     onu_ind->set_onu_id(key->sub_term_id);
-    serial_number->set_vendor_id(reinterpret_cast<const char *>(in_serial_number->vendor_id), 4);
-    serial_number->set_vendor_specific(reinterpret_cast<const char *>(in_serial_number->vendor_specific), 8);
-    onu_ind->set_allocated_serial_number(serial_number);
-    if (data->oper_status == BCMBAL_STATE_UP) {
+    if (data->new_oper_status == BCMBAL_STATE_UP) {
         onu_ind->set_oper_state("up");
     } else {
         onu_ind->set_oper_state("down");
@@ -378,7 +372,7 @@
 
     /* OLT device indication */
     cb_cfg.obj_type = BCMBAL_OBJ_ID_ACCESS_TERMINAL;
-    ind_subgroup = bcmbal_access_terminal_auto_id_ind;
+    ind_subgroup = bcmbal_access_terminal_auto_id_oper_status_change;
     cb_cfg.p_subgroup = &ind_subgroup;
     cb_cfg.ind_cb_hdlr = (f_bcmbal_ind_handler)OltIndication;
     if (BCM_ERR_OK != bcmbal_subscribe_ind(DEFAULT_ATERM_ID, &cb_cfg)) {
@@ -396,7 +390,7 @@
 
     /* Interface indication */
     cb_cfg.obj_type = BCMBAL_OBJ_ID_INTERFACE;
-    ind_subgroup = bcmbal_interface_auto_id_ind;
+    ind_subgroup = bcmbal_interface_auto_id_oper_status_change;
     cb_cfg.p_subgroup = &ind_subgroup;
     cb_cfg.ind_cb_hdlr = (f_bcmbal_ind_handler)IfIndication;
     if (BCM_ERR_OK != bcmbal_subscribe_ind(DEFAULT_ATERM_ID, &cb_cfg)) {
@@ -441,7 +435,7 @@
 
     /* onu indication */
     cb_cfg.obj_type = BCMBAL_OBJ_ID_SUBSCRIBER_TERMINAL;
-    ind_subgroup = bcmbal_subscriber_terminal_auto_id_ind;
+    ind_subgroup = bcmbal_subscriber_terminal_auto_id_oper_status_change;
     cb_cfg.p_subgroup = &ind_subgroup;
     cb_cfg.ind_cb_hdlr = (f_bcmbal_ind_handler)OnuIndication;
     if (BCM_ERR_OK != bcmbal_subscribe_ind(DEFAULT_ATERM_ID, &cb_cfg)) {
@@ -473,6 +467,7 @@
     if (BCM_ERR_OK != bcmbal_subscribe_ind(DEFAULT_ATERM_ID, &cb_cfg)) {
         return Status(grpc::StatusCode::INTERNAL, "Flow operational state change indication subscribe failed");
     }
+#if 0
     /* Flow Indication */
     cb_cfg.obj_type = BCMBAL_OBJ_ID_FLOW;
     ind_subgroup = bcmbal_flow_auto_id_ind;
@@ -490,16 +485,18 @@
     if (BCM_ERR_OK != bcmbal_subscribe_ind(DEFAULT_ATERM_ID, &cb_cfg)) {
         return Status(grpc::StatusCode::INTERNAL, "Traffic mgmt queue indication subscribe failed");
     }
+#endif
 
     /* TM sched indication */
     cb_cfg.obj_type = BCMBAL_OBJ_ID_TM_SCHED;
-    ind_subgroup = bcmbal_tm_sched_auto_id_ind;
+    ind_subgroup = bcmbal_tm_sched_auto_id_oper_status_change;
     cb_cfg.p_subgroup = &ind_subgroup;
     cb_cfg.ind_cb_hdlr = (f_bcmbal_ind_handler)TmSchedIndication;
     if (BCM_ERR_OK != bcmbal_subscribe_ind(DEFAULT_ATERM_ID, &cb_cfg)) {
         return Status(grpc::StatusCode::INTERNAL, "Traffic mgmt queue indication subscribe failed");
     }
 
+#if 0
     /* Multicast group indication */
     cb_cfg.obj_type = BCMBAL_OBJ_ID_GROUP;
     ind_subgroup = bcmbal_group_auto_id_ind;
@@ -508,6 +505,7 @@
     if (BCM_ERR_OK != bcmbal_subscribe_ind(DEFAULT_ATERM_ID, &cb_cfg)) {
         return Status(grpc::StatusCode::INTERNAL, "Multicast group indication subscribe failed");
     }
+#endif
 
     subscribed = true;
 
diff --git a/src/main.cc b/src/main.cc
index 7d02bbc..3c05489 100644
--- a/src/main.cc
+++ b/src/main.cc
@@ -28,10 +28,12 @@
 
 int main(int argc, char** argv) {
 
+/*
     if (argc < 5) {
         std::cout << "Missing arguments" << std::endl;
         exit(1);
     }
+*/
 
     bcmbal_init(argc, argv, NULL);
 
diff --git a/src/stats_collection.cc b/src/stats_collection.cc
index de11c72..5ec33bc 100644
--- a/src/stats_collection.cc
+++ b/src/stats_collection.cc
@@ -60,6 +60,7 @@
     return port_stats;
 }
 
+#if 0
 openolt::FlowStatistics* get_default_flow_statistics() {
     openolt::FlowStatistics* flow_stats = new openolt::FlowStatistics;
     flow_stats->set_flow_id(-1);
@@ -70,6 +71,7 @@
 
     return flow_stats;
 }
+#endif
 
 openolt::PortStatistics* collectPortStatistics(int intf_id, bcmbal_intf_type intf_type) {
 
@@ -119,6 +121,7 @@
 
 }
 
+#if 0
 openolt::FlowStatistics* collectFlowStatistics(bcmbal_flow_id flow_id, bcmbal_flow_type flow_type) {
 
     bcmos_errno err;
@@ -156,6 +159,7 @@
 
     return flow_stats;
 }
+#endif
 
 
 void* stats_collection(void* x) {
diff --git a/src/stats_collection.h b/src/stats_collection.h
index b76d335..6f892b7 100644
--- a/src/stats_collection.h
+++ b/src/stats_collection.h
@@ -12,8 +12,10 @@
 void stop_collecting_statistics();
 openolt::PortStatistics* get_default_port_statistics();
 openolt::PortStatistics* collectPortStatistics(int intf_id, bcmbal_intf_type intf_type);
+#if 0
 openolt::FlowStatistics* get_default_flow_statistics();
 openolt::FlowStatistics* collectFlowStatistics(bcmbal_flow_id flow_id, bcmbal_flow_type flow_type);
+#endif
 void* stats_collection(void* x);
 void register_new_flow(bcmbal_flow_key key);
 
