diff --git a/tools/dev/bin/onos-setup-p4-dev b/tools/dev/bin/onos-setup-p4-dev
index f3573a1..65179ef 100755
--- a/tools/dev/bin/onos-setup-p4-dev
+++ b/tools/dev/bin/onos-setup-p4-dev
@@ -15,8 +15,8 @@
 set -e
 
 BUILD_DIR=~/p4tools
-BMV2_COMMIT="41c1f2ed487ff086a1d582069e8bc68cab8ffdb0"
-PI_COMMIT="f110570ca0c8ddc5feaf5028b08a0f477ceb4eea"
+BMV2_COMMIT="654e9c3794273b481284d8bafecfc74c7ffd643d"
+PI_COMMIT="8051d54c9c3415ca800db232a226189fd17ad60a"
 P4C_COMMIT="adce375fd961a9e467c7e77ad1bef647ef28e5e8"
 P4C_BM_COMMIT="8f4abeaa6f8374aaf95ea2aacfc2b750069391b5"
 PROTOBUF_COMMIT="tags/v3.0.2"
@@ -26,13 +26,18 @@
 
 function do_requirements {
     sudo apt update
+    #FIXME the following two lines seem like they are not required, at least for 16.04
     sudo apt install -y python-software-properties software-properties-common
     sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test
     sudo apt update
-    sudo apt install -y \
+    #FIXME 14.04 needs special gcc, 16.04 can use apt-get default
+    sudo apt install -y --no-install-recommends \
         autoconf \
         automake \
         bison \
+        build-essential \
+        cmake \
+        cpp \
         curl \
         dpkg-dev \
         flex \
@@ -40,20 +45,38 @@
         gcc-4.9 \
         git \
         libboost-dev \
+        libboost-filesystem-dev \
         libboost-iostreams-dev \
+        libboost-program-options-dev \
+        libboost-system-dev \
+        libboost-test-dev \
+        libboost-thread-dev \
+        libc6-dev \
+        libevent-dev \
+        libffi-dev \
         libfl-dev \
         libgc-dev \
+        libgc1c2 \
+        libgflags-dev \
         libgmp-dev \
+        libgmp10 \
+        libgmpxx4ldbl \
+        libjudy-dev \
+        libpcap-dev \
         libreadline6 \
         libreadline6-dev \
+        libssl-dev \
         libtool \
-        libc6-dev \
         make \
+        mktemp \
         pkg-config \
         python \
+        python-dev \
         python-ipaddr \
+        python-pip \
         python-scapy \
         tcpdump \
+        wget \
         unzip
 
     # Needed for p4c.
@@ -62,7 +85,6 @@
 }
 
 function do_protobuf {
-    # Protobuf
     cd ${BUILD_DIR}
     if [ ! -d protobuf ]; then
       git clone https://github.com/google/protobuf.git
@@ -70,15 +92,19 @@
     cd protobuf
     git fetch
     git checkout ${PROTOBUF_COMMIT}
+
+    export CFLAGS="-Os"
+    export CXXFLAGS="-Os"
+    export LDFLAGS="-Wl,-s"
     ./autogen.sh
     ./configure --prefix=/usr
     make -j${NUM_CORES}
     sudo make install
     sudo ldconfig
+    unset CFLAGS CXXFLAGS LDFLAGS
 }
 
 function do_grpc {
-    # gRPC
     cd ${BUILD_DIR}
     if [ ! -d grpc ]; then
       git clone https://github.com/grpc/grpc.git
@@ -87,30 +113,15 @@
     git fetch
     git checkout ${GRPC_COMMIT}
     git submodule update --init
-    make -j${NUM_CORES}
-    sudo make install
-    sudo ldconfig
-}
 
-function do_bmv2 {
-    # BMv2 part 1 (without PI)
-    cd ${BUILD_DIR}
-    if [ ! -d bmv2 ]; then
-        git clone https://github.com/p4lang/behavioral-model.git bmv2
-    fi
-    cd bmv2
-    git fetch
-    git checkout ${BMV2_COMMIT}
-    ./install_deps.sh
-    ./autogen.sh
-    ./configure --enable-debugger
+    export LDFLAGS="-Wl,-s"
     make -j${NUM_CORES}
     sudo make install
     sudo ldconfig
+    unset LDFLAGS
 }
 
 function do_p4runtime {
-    # P4Runtime (PI)
     cd ${BUILD_DIR}
     if [ ! -d p4runtime ]; then
         git clone https://github.com/p4lang/PI.git p4runtime
@@ -119,17 +130,26 @@
     git fetch
     git checkout ${PI_COMMIT}
     git submodule update --init --recursive
+
     ./autogen.sh
-    ./configure --with-bmv2 --with-proto
+    ./configure --with-proto --without-cli --without-internal-rpc
     make -j${NUM_CORES}
     sudo make install
     sudo ldconfig
 }
 
-function do_bmv2_with_pi {
-    # BMv2 part 2 (with PI)
-    cd ${BUILD_DIR}/bmv2
-    ./configure --enable-debugger --with-pi
+function do_bmv2 {
+    cd ${BUILD_DIR}
+    if [ ! -d bmv2 ]; then
+        git clone https://github.com/p4lang/behavioral-model.git bmv2
+    fi
+    cd bmv2
+    git fetch
+    git checkout ${BMV2_COMMIT}
+
+    ./autogen.sh
+    # FIXME: to build with debugger, we need to install nanomsg first (see bmv2's install_deps.sh)
+    ./configure --without-thrift --without-nanomsg --with-pi
     make -j${NUM_CORES}
     sudo make install
     sudo ldconfig
@@ -144,7 +164,6 @@
 }
 
 function do_p4c {
-    # p4c
     cd ${BUILD_DIR}
     if [ ! -d p4c ]; then
         git clone https://github.com/p4lang/p4c.git
@@ -153,6 +172,7 @@
     git fetch
     git checkout ${P4C_COMMIT}
     git submodule update --init --recursive
+
     ./bootstrap.sh
     cd build
     make -j${NUM_CORES}
@@ -160,8 +180,9 @@
     sudo ldconfig
 }
 
+# FIXME: Can we deprecate this?
 function do_p4c_bm {
-    # p4c-bmv2 (old BMv2 compiler)
+    # old BMv2 compiler
     cd ${BUILD_DIR}
     if [ ! -d p4c-bmv2 ]; then
         git clone https://github.com/p4lang/p4c-bm.git p4c-bmv2
@@ -196,6 +217,7 @@
         echo "# Building ${proj_dir} (${commit_id})"
         echo "#"
         if ! ${DID_REQUIREMENTS} = true; then
+        #FIXME need version check for 14.04 vs 16.04
             do_requirements
             DID_REQUIREMENTS=true
         fi
@@ -213,9 +235,8 @@
 # In dependency order.
 check_and_do ${PROTOBUF_COMMIT} protobuf do_protobuf
 check_and_do ${GRPC_COMMIT} grpc do_grpc
-check_and_do ${BMV2_COMMIT} bmv2 do_bmv2
 check_and_do ${PI_COMMIT} p4runtime do_p4runtime
-check_and_do ${BMV2_COMMIT} bmv2 do_bmv2_with_pi
+check_and_do ${BMV2_COMMIT} bmv2 do_bmv2
 check_and_do ${P4C_COMMIT} p4c do_p4c
 check_and_do ${P4C_BM_COMMIT} p4c-bmv2 do_p4c_bm
 
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)
 
