diff --git a/minimal-values.yaml b/minimal-values.yaml
index 1de1d9d..0a6a22c 100644
--- a/minimal-values.yaml
+++ b/minimal-values.yaml
@@ -17,7 +17,9 @@
 
 images:
   adapter_open_olt:
-    tag_go: master-go
+    tag_go: master
+  onos:
+    tag: 1.13.5
   bbsim:
     tag: master
 
diff --git a/voltha b/voltha
index 04cd2ff..95a3d1b 100755
--- a/voltha
+++ b/voltha
@@ -39,6 +39,7 @@
 BOLD=$(tput bold)
 NORMAL=$(tput sgr0)
 ERROR="\xe2\x9c\x97\x20"
+CEOL=$(tput el)
 
 TYPE=${TYPE:-minimal}
 WITH_BBSIM=${WITH_BBSIM:-no}
@@ -187,11 +188,13 @@
     ONOS_SSH_PORT=${ONOS_SSH_PORT:-8102}
     VOLTHA_API_PORT=${VOLTHA_API_PORT:-55556}
     VOLTHA_SSH_PORT=${VOLTHA_SSH_PORT:-5023}
+    VOLTHA_ETCD_PORT=${VOLTHA_ETCD_PORT:-2379}
 else
     ONOS_API_PORT=${ONOS_API_PORT:-8181}
     ONOS_SSH_PORT=${ONOS_SSH_PORT:-8101}
     VOLTHA_API_PORT=${VOLTHA_API_PORT:-55555}
     VOLTHA_SSH_PORT=${VOLTHA_SSH_PORT:-5022}
+    VOLTHA_ETCD_PORT=${VOLTHA_ETCD_PORT:-2379}
 fi
 
 if [ "$WITH_TP" == "yes" ]; then
@@ -208,58 +211,6 @@
 
 export SADIS_VER OLT_VER AAA_VER DHCP_VER
 
-if [ "$1" == "get" -a "$2" == "voltconfig" ]; then
-    echo "$HOME/.volt/config-$TYPE"
-    exit
-fi
-
-if [ $# -ne 1 -o $(echo ":up:down:" | grep -c ":$1:") -ne 1 ]; then 
-    >&2 echo "up or down?"
-    exit 1
-fi
-
-if [ "$1" == "down" ]; then
-    if [ $DEPLOY_K8S == "yes" ]; then
-        if [ -x ./bin/kind ]; then
-            exec ./bin/kind delete cluster --name voltha-$TYPE
-        else
-           >&2 echo "Kind doesn't seem to be installed, so nothing to do. Bye."
-        fi
-    else
-        EXISTS=$(helm list -q)
-        EXPECT="etcd-operator onos open-olt open-onu sim voltha bbsim radius"
-        INTERSECT=
-        for i in $EXISTS; do
-            if [ $(echo $EXPECT | grep -c $i) -eq 1 ]; then
-                HAVE="$HAVE $i"
-            fi
-        done
-        if [ "$HAVE X" != " X" ]; then
-            ./bin/helm delete --purge $HAVE
-        fi
-fi
-    exit 
-fi
-
-LOG="install-$TYPE.log"
-date > $LOG
-
-# Output install options to log
-echo "OPTIONS" >> $LOG
-ALL_OPTIONS="TYPE WITH_BBSIM WITH_RADIUS WITH_ONOS WITH_TP JUST_K8S DEPLOY_K8S \
-    SKIP_RESTART_API INSTALL_KUBECTL INSTALL_HELM USE_GO VOLTHA_LOG_LEVEL \
-    VOLTHA_CHART VOLTHA_ADAPTER_SIM_CHART VOLTHA_ADAPTER_OPEN_OLT_CHART \
-    VOLTHA_ADAPTER_OPEN_ONU_CHART SADIS_VER OLT_VER AAA_VER DHCP_VER"
-for O in $ALL_OPTIONS; do
-    VAL=$(eval echo \$$O)
-    if [ $O == "USE_GO" ]; then
-        VAL="$(echo $VAL| test $(grep -c true) -eq 1 && echo yes || echo no)"
-    fi
-    if [ ! -z "$VAL" ]; then
-        printf "    %-30s = %s\n" $O $VAL >> $LOG
-    fi
-done
-
 spin() {
     PARTS="\
         \xe2\xa2\x8e\xe2\xa1\xb0 \
@@ -348,6 +299,118 @@
     tput cnorm
 }
 
+if [ "$1" == "get" -a "$2" == "voltconfig" ]; then
+    echo "$HOME/.volt/config-$TYPE"
+    exit
+fi
+
+if [ $# -ne 1 -o $(echo ":up:down:dump:" | grep -c ":$1:") -ne 1 ]; then 
+    >&2 echo "What wouild you like to do today:"
+    >&2 echo "  up   - bring up voltha"
+    >&2 echo "  down - tear down voltha"
+    >&2 echo "  dump - create a debug dump of running system"
+    exit 1
+fi
+
+if [ "$1" == "down" ]; then
+    if [ $DEPLOY_K8S == "yes" ]; then
+        if [ -x ./bin/kind ]; then
+            exec ./bin/kind delete cluster --name voltha-$TYPE
+        else
+           >&2 echo "Kind doesn't seem to be installed, so nothing to do. Bye."
+        fi
+    else
+        EXISTS=$(helm list -q)
+        EXPECT="etcd-operator onos open-olt open-onu sim voltha bbsim radius"
+        INTERSECT=
+        for i in $EXISTS; do
+            if [ $(echo $EXPECT | grep -c $i) -eq 1 ]; then
+                HAVE="$HAVE $i"
+            fi
+        done
+        if [ "$HAVE X" != " X" ]; then
+            ./bin/helm delete --purge $HAVE
+        fi
+    fi
+    exit 
+fi
+
+if [ "$1" == "dump" ]; then
+    LOG="dump-$TYPE.log"
+    TS=$(date -u +"%Y%m%dT%H%M%SZ")
+    WORK=$(mktemp -u -d)
+    DATA=$WORK/voltha-debug-dump-$TS
+    mkdir -p $DATA
+    echo $TS > $LOG
+    echo -e "Capturing debug dump to voltha-debug-dump-$TS.tgz"
+    bspin - "Copy install log"
+    if [ -f install-$TYPE.log ]; then
+        (set -x; cp install-$TYPE.log $DATA/install-$TYPE.log) >>$LOG 2>&1
+        espin - $VERIFIED
+    else
+        espin - "$NO_ENTRY Copy install log: install-$TYPE.log not found"
+    fi
+    bspin - "Dumping Kubernetes PODs"
+    (set -x; kubectl get --all-namespaces pods >> $DATA/all-pods.txt 2>&1) >>$LOG 2>&1
+    espin - $VERIFIED
+    bspin - "Dumping Kubernetes SERVICEs"
+    (set -x; kubectl get --all-namespaces svc >> $DATA/all-services.txt 2>&1) >>$LOG 2>&1
+    espin - $VERIFIED
+    bspin - "Dumping Kubernetes EVENTs"
+    (set -x; kubectl get --all-namespaces events >> $DATA/all-events.txt 2>&1) >>$LOG 2>&1
+    espin - $VERIFIED
+    bspin - "Dumping VOLTHA POD details"
+    PODS=$(kubectl get -n voltha pod -o name)
+    for POD in $PODS; do
+        sspin - "Dumping VOLTHA POD details: $POD$CEOL"
+        mkdir -p $DATA/$POD
+        (set -x; kubectl describe -n voltha $POD >> $DATA/$POD/describe.txt 2>&1) >>$LOG 2>&1
+        sspin - "Dumping VOLTHA POD details: $POD"
+        (set -x; kubectl logs -n voltha --all-containers --previous $LOG_ARGS $POD >> $DATA/$POD/logs-previous.txt 2>&1) >>$LOG 2>&1
+        sspin - "Dumping VOLTHA POD details: $POD"
+        (set -x; kubectl logs -n voltha --all-containers $LOG_ARGS $POD >> $DATA/$POD/logs-current.txt 2>&1) >>$LOG 2>&1
+        sspin - "Dumping VOLTHA POD details: $POD"
+    done
+    espin - "$VERIFIED Dumping VOLTHA POD details$CEOL"
+    bspin - "Dumping ETCD"
+    if [ "$(which etcdctl) X" != " X" ]; then
+        (set -x; ETCDCTL_API=3 etcdctl --endpoints localhost:2379 get --prefix service/voltha | hexdump -C >> $DATA/etcd.hex 2>&1) >>$LOG 2>&1
+        espin - $VERIFIED
+    else
+        espin - "$NO_ENTRY Dumping ETCD: etcdctl command not available"
+    fi
+    bspin - "Creating compressed TAR: voltha-debug-dump-$TS.tgz"
+    (set -x; tar -C $WORK -zcf voltha-debug-dump-$TS.tgz ./voltha-debug-dump-$TS) >>$LOG 2>&1
+    espin - $VERIFIED
+    bspin - "Cleanup"
+    (set -x; rm -rf $WORK) >>$LOG 2>&1
+    espin - $VERIFIED
+    bspin - "$(ls -l voltha-debug-dump-$TS.tgz)"
+    espin - $VERIFIED
+    exit
+fi
+
+
+LOG="install-$TYPE.log"
+date > $LOG
+
+# Output install options to log
+echo "OPTIONS" >> $LOG
+ALL_OPTIONS="TYPE WITH_BBSIM WITH_RADIUS WITH_ONOS WITH_TP JUST_K8S DEPLOY_K8S \
+    SKIP_RESTART_API INSTALL_KUBECTL INSTALL_HELM USE_GO VOLTHA_LOG_LEVEL \
+    VOLTHA_CHART VOLTHA_ADAPTER_SIM_CHART VOLTHA_ADAPTER_OPEN_OLT_CHART \
+    VOLTHA_ADAPTER_OPEN_ONU_CHART SADIS_VER OLT_VER AAA_VER DHCP_VER"
+for O in $ALL_OPTIONS; do
+    VAL=$(eval echo \$$O)
+    if [ $O == "USE_GO" ]; then
+        VAL="$(echo $VAL| test $(grep -c true) -eq 1 && echo yes || echo no)"
+    fi
+    if [ ! -z "$VAL" ]; then
+        printf "    %-30s = %s\n" $O $VAL >> $LOG
+    fi
+done
+
+
 count_pods() {
     local NAMESPACE=$1; shift
     local PODS=$(kubectl -n $NAMESPACE get pod -o go-template="{{range .items}}{{.metadata.name}}/{{.status.phase}}/_{{range .status.containerStatuses}}{{.ready}}_{{end}} {{end}}")
@@ -758,6 +821,12 @@
 done
 (set -x; screen -dmS voltha-ssh-$TYPE bash -c "while true; do kubectl port-forward -n voltha service/voltha-cli $VOLTHA_SSH_PORT:5022; done" >>$LOG 2>&1) >>$LOG 2>&1
 espin - $VERIFIED
+bspin - "Forward VOLTHA ETCD port $FORWARD"
+for i in $(screen -ls | grep voltha-etcd-$TYPE | awk '{print $1}'); do
+    (set -x; screen -X -S $i quit >>$LOG 2>&1) >>$LOG 2>&1
+done
+(set -x; screen -dmS voltha-etcd-$TYPE bash -c "while true; do kubectl port-forward -n voltha service/voltha-etcd-cluster-client $VOLTHA_ETCD_PORT:2379; done" >>$LOG 2>&1) >>$LOG 2>&1
+espin - $VERIFIED
 
 if [ $WITH_ONOS == "yes" -a $WITH_RADIUS == "yes" ]; then
     bspin "Configure ONOS RADIUS Connection $GEAR"
