diff --git a/tools/dev/mininet/bmv2.py b/tools/dev/mininet/bmv2.py
index a0f92d2..6b31d05 100644
--- a/tools/dev/mininet/bmv2.py
+++ b/tools/dev/mininet/bmv2.py
@@ -22,16 +22,16 @@
     deviceId = 0
     instanceCount = 0
 
-    def __init__(self, name, debugger=False, loglevel="warn", elogger=False, persistent=False,
-                 thriftPort=None, grpcPort=None, netcfg=True, **kwargs):
+    def __init__(self, name, json=None, debugger=False, loglevel="warn", elogger=False,
+                 persistent=False, grpcPort=None, netcfg=True, **kwargs):
         Switch.__init__(self, name, **kwargs)
-        self.thriftPort = ONOSBmv2Switch.pickUnusedPort() if not thriftPort else thriftPort
         self.grpcPort = ONOSBmv2Switch.pickUnusedPort() if not grpcPort else grpcPort
         if self.dpid:
             self.deviceId = int(self.dpid, 0 if 'x' in self.dpid else 16)
         else:
             self.deviceId = ONOSBmv2Switch.deviceId
             ONOSBmv2Switch.deviceId += 1
+        self.json = json
         self.debugger = debugger
         self.loglevel = loglevel
         self.logfile = '/tmp/bmv2-%d.log' % self.deviceId
@@ -43,7 +43,6 @@
             self.exectoken = "/tmp/bmv2-%d-exec-token" % self.deviceId
             self.cmd("touch %s" % self.exectoken)
         # Store thrift port for future uses.
-        self.cmd("echo %d > /tmp/bmv2-%d-thrift-port" % (self.thriftPort, self.deviceId))
         self.cmd("echo %d > /tmp/bmv2-%d-grpc-port" % (self.grpcPort, self.deviceId))
 
     @classmethod
@@ -114,15 +113,17 @@
         for port, intf in self.intfs.items():
             if not intf.IP():
                 args.append('-i %d@%s' % (port, intf.name))
-        if self.thriftPort:
-            args.append('--thrift-port %d' % self.thriftPort)
         if self.elogger:
             nanomsg = 'ipc:///tmp/bmv2-%d-log.ipc' % self.deviceId
             args.append('--nanolog %s' % nanomsg)
         if self.debugger:
             args.append('--debugger')
+        args.append('--log-console')
         args.append('-L%s' % self.loglevel)
-        args.append('--no-p4')
+        if not self.json:
+            args.append('--no-p4')
+        else:
+            args.append(self.json)
 
         # gRPC target-specific options.
         args.append('--')
@@ -131,14 +132,12 @@
 
         bmv2cmd = " ".join(args)
         info("\nStarting BMv2 target: %s\n" % bmv2cmd)
+
         if self.persistent:
             # Bash loop to re-exec the switch if it crashes.
-            cmdStr = "(while [ -e {} ]; " \
-                     "do {} ; " \
-                     "sleep 1; " \
-                     "done;) > {} 2>&1 &".format(self.exectoken, bmv2cmd, self.logfile)
-        else:
-            cmdStr = "{} > {} 2>&1 &".format(bmv2cmd, self.logfile)
+            bmv2cmd = "(while [ -e {} ]; do {} ; sleep 1; done;)".format(self.exectoken, bmv2cmd)
+
+        cmdStr = "{} > {} 2>&1 &".format(bmv2cmd, self.logfile)
 
         # Starts the switch.
         out = self.cmd(cmdStr)
@@ -157,7 +156,7 @@
     def stop(self, deleteIntfs=True):
         """Terminate switch."""
         self.cmd("rm -f /tmp/bmv2-%d-*" % self.deviceId)
-        self.cmd("rm -f /tmp/bmv2-%d.log" % self.deviceId)
+        self.cmd("rm -f /tmp/bmv2-%d.log*" % self.deviceId)
         self.cmd('kill %' + BMV2_TARGET)
         Switch.stop(self, deleteIntfs)
 
