diff --git a/device_simulator/Makefile.am b/device_simulator/Makefile.am
index e1fa850..5bd2c54 100644
--- a/device_simulator/Makefile.am
+++ b/device_simulator/Makefile.am
@@ -12,16 +12,17 @@
     grpc-c.h \
     bal_errno.grpc-c.h bal_indications.grpc-c.h bal_model_types.grpc-c.h \
     bal_obj.grpc-c.h bal.grpc-c.h bal_model_ids.grpc-c.h \
-    bal_msg_type.grpc-c.h bal_osmsg.grpc-c.h asfvolt16_driver.h \
+    bal_msg_type.grpc-c.h bal_osmsg.grpc-c.h asfvolt.grpc-c.h asfvolt16_driver.h \
     bal.grpc-c.service.c \
     bal_errno.grpc-c.c bal_indications.grpc-c.c \
-    bal_model_types.grpc-c.c bal_obj.grpc-c.c \
+    bal_model_types.grpc-c.c bal_obj.grpc-c.c asfvolt.grpc-c.c \
     bal_errno.grpc-c.service.c bal_indications.grpc-c.service.c \
     bal_model_types.grpc-c.service.c bal_obj.grpc-c.service.c \
     bal.grpc-c.c bal_model_ids.grpc-c.c \
     bal_msg_type.grpc-c.c bal_osmsg.grpc-c.c \
     bal_model_ids.grpc-c.service.c \
-    bal_msg_type.grpc-c.service.c bal_osmsg.grpc-c.service.c
+    bal_msg_type.grpc-c.service.c bal_osmsg.grpc-c.service.c \
+    asfvolt.grpc-c.service.c
 
 replace:
 $(shell find . -type f \( -name '*.h' -o -name '*.c' \) -a -exec sed -i -e 's/bal_obj.proto.h/bal_obj.grpc-c.h/g' {} + )
@@ -32,9 +33,10 @@
 $(shell find . -type f \( -name '*.h' -o -name '*.c' \) -a -exec sed -i -e 's/bal_model_ids.proto.h/bal_model_ids.grpc-c.h/g' {} + )
 $(shell find . -type f \( -name '*.h' -o -name '*.c' \) -a -exec sed -i -e 's/bal.proto.h/bal.grpc-c.h/g' {} + )
 $(shell find . -type f \( -name '*.h' -o -name '*.c' \) -a -exec sed -i -e 's/bal_indications.proto.h/bal_indications.grpc-c.h/g' {} + )
+$(shell find . -type f \( -name '*.h' -o -name '*.c' \) -a -exec sed -i -e 's/asfvolt.proto.h/asfvolt.grpc-c.h/g' {} + )
 
 autogen:
-	protoc -I ${srcdir} --grpc-c_out=. --plugin=protoc-gen-grpc-c=../compiler/protoc-gen-grpc-c ${srcdir}/bal_errno.proto ${srcdir}/bal_model_ids.proto ${srcdir}/bal_msg_type.proto ${srcdir}/bal_osmsg.proto ${srcdir}/bal_indications.proto ${srcdir}/bal_model_types.proto ${srcdir}/bal_obj.proto ${srcdir}/bal.proto $(replace)
+	protoc -I ${srcdir} --grpc-c_out=. --plugin=protoc-gen-grpc-c=../compiler/protoc-gen-grpc-c ${srcdir}/bal_errno.proto ${srcdir}/bal_model_ids.proto ${srcdir}/bal_msg_type.proto ${srcdir}/bal_osmsg.proto ${srcdir}/bal_indications.proto ${srcdir}/bal_model_types.proto ${srcdir}/bal_obj.proto ${srcdir}/bal.proto ${srcdir}/asfvolt.proto $(replace)
 
 LDADD = \
     ../lib/libgrpc-c.la \
diff --git a/device_simulator/voltha_bal_driver.c b/device_simulator/voltha_bal_driver.c
index 60e3981..05fe932 100755
--- a/device_simulator/voltha_bal_driver.c
+++ b/device_simulator/voltha_bal_driver.c
@@ -16,6 +16,8 @@
 #include <signal.h>
 #include <stdio.h>
 #include <unistd.h>
+#include <string.h>
+#include <stdlib.h>
 #include <sys/time.h>
 #include "bal_msg_type.grpc-c.h"
 #include "bal_osmsg.grpc-c.h"
@@ -24,6 +26,7 @@
 #include "bal_model_types.grpc-c.h"
 #include "bal_errno.grpc-c.h"
 #include "bal.grpc-c.h"
+#include "asfvolt.grpc-c.h"
 
 #ifdef BAL_STUB
 #include "bal_stub.h"
@@ -31,7 +34,6 @@
 #include "asfvolt16_driver.h"
 #endif
 
-#include <unistd.h>
 #include <sys/reboot.h>
 #include "bal_indications_queue.h"
 
@@ -51,6 +53,9 @@
    exit(0);
 }
 
+/*MACRO Definitions*/
+#define ASFVOLT_FIELD_LEN 100
+
 void is_grpc_write_pending(int return_value)
 {
    if (return_value != GRPC_C_WRITE_OK)
@@ -162,6 +167,94 @@
 }
 
 /*
+This function reads the specified field from the 'onldump -o' command.
+If the field was successfully read, it returns the field value.
+If it failed to read the field, then null charecter is returned
+*/
+char* asfvolt_read_sysinfo(char* field_name, char* field_val)
+{
+   FILE *fp;
+   /* Prepare the command*/
+   char command[150];
+
+   snprintf(command, sizeof command, "onlpdump -o | perl -ne 'print $1 if /%s: (\\S+)/'", field_name);
+   /* Open the command for reading. */
+   fp = popen(command, "r");
+   if (fp == NULL) {
+       /*The client has to check for a Null mac address in this case*/
+       ASFVOLT_LOG(ASFVOLT_ERROR, "Failed to query the mac address");
+       return field_val;
+   }
+
+   /*Read the field value*/
+   if (fp) {
+       fread(field_val, ASFVOLT_FIELD_LEN, 1, fp);
+       pclose(fp);
+   }
+   return field_val;
+}
+
+/*
+ * This functions gets invoked whenever AsfvoltGetSystemInfo RPC gets called
+ */
+void asfvolt__asfvolt_get_system_info_cb(grpc_c_context_t *context)
+{
+   BalDefault *dummy;
+   AsfSystemInfo asf_system_info;
+   char product_name[ASFVOLT_FIELD_LEN] = "\0";
+   char part_num[ASFVOLT_FIELD_LEN] = "\0";
+   char serial_num[ASFVOLT_FIELD_LEN] = "\0";
+   char mac_address[ASFVOLT_FIELD_LEN] = "\0";
+   char mac_range[ASFVOLT_FIELD_LEN] = "\0";
+   char manufacturer[ASFVOLT_FIELD_LEN] = "\0";
+   char manufacturer_date[ASFVOLT_FIELD_LEN] = "\0";
+   char vendor[ASFVOLT_FIELD_LEN] = "\0";
+   char platform_name[ASFVOLT_FIELD_LEN] = "\0";
+   char label_revision[ASFVOLT_FIELD_LEN] = "\0";
+   char coutry_code[ASFVOLT_FIELD_LEN] = "\0";
+   char diag_version[ASFVOLT_FIELD_LEN] = "\0";
+   char onie_version[ASFVOLT_FIELD_LEN] = "\0";
+   int ret_val;
+
+   if (context->gcc_payload) {
+	context->gcc_stream->read(context, (void **)&dummy, 0);
+   }
+
+   asf_system_info__init(&asf_system_info);
+
+   asf_system_info.product_name = asfvolt_read_sysinfo("Product Name", product_name);
+   asf_system_info.part_num = asfvolt_read_sysinfo("Part Number", part_num);
+   asf_system_info.serial_num = asfvolt_read_sysinfo("Serial Number", serial_num);
+   asf_system_info.mac_address = asfvolt_read_sysinfo("MAC", mac_address);
+   asf_system_info.mac_range = asfvolt_read_sysinfo("MAC Range", mac_range);
+   asf_system_info.manufacturer = asfvolt_read_sysinfo("Manufacturer", manufacturer);
+   asf_system_info.manufacture_date = asfvolt_read_sysinfo("Manufacture Date", manufacturer_date);
+   asf_system_info.vendor = asfvolt_read_sysinfo("Vendor", vendor);
+   asf_system_info.platform_name = asfvolt_read_sysinfo("Platform Name", platform_name);
+   asf_system_info.label_revision = asfvolt_read_sysinfo("Label Revision", label_revision);
+   asf_system_info.country_code = asfvolt_read_sysinfo("Country Code", coutry_code);
+   asf_system_info.diag_version = asfvolt_read_sysinfo("Diag Version", diag_version);
+   asf_system_info.onie_version = asfvolt_read_sysinfo("ONIE Version", onie_version);
+
+   /*
+    * Write reply back to the client
+    */
+   ret_val = context->gcc_stream->write(context, &asf_system_info, -1);
+   is_grpc_write_pending(ret_val);
+
+   grpc_c_status_t status;
+   status.gcs_code = 0;
+
+   /*
+     * Finish response for RPC
+   */
+   if (context->gcc_stream->finish(context, &status))
+   {
+       ASFVOLT_LOG(ASFVOLT_ERROR, "Failed to write status");
+   }
+}
+
+/*
  * This functions gets invoked whenever Bal Stats gets called
  */
 void bal__bal_cfg_stat_get_cb(grpc_c_context_t *context)
@@ -994,6 +1087,7 @@
    ASFVOLT_LOG(ASFVOLT_INFO, "voltha_bal_driver running.....");
    bal__service_init(test_server);
    bal_get_ind__service_init(test_server);
+   asfvolt__service_init(test_server);
 
    /*
     * Start server
@@ -1012,4 +1106,5 @@
    /* code added for example Makefile to compile grpc-c along with edgecore driver */
    bal__service_init(server);
    bal_get_ind__service_init(server);
+   asfvolt__service_init(server);
 }
