diff --git a/edge-monitoring/agent_adb/config.json b/edge-monitoring/agent_adb/config.json
index 8c91c94..094cb5f 100644
--- a/edge-monitoring/agent_adb/config.json
+++ b/edge-monitoring/agent_adb/config.json
@@ -1,5 +1,5 @@
 {
-    "edge_name": "production-edge-example",
+    "edge_name": "ace-example",
     "adb": {
         "path": "/usr/local/bin/adb",
         "apn_mode_toggle_location": {
@@ -8,5 +8,6 @@
         }
     },
     "report_url": "https://aether.onlab.us/edges",
-    "report_interval": 180
+    "report_interval": 180,
+    "log_file": "/var/log/edge_monitoring_agent.log"
 }
diff --git a/edge-monitoring/agent_adb/edge-mon-agent.service b/edge-monitoring/agent_adb/edge-mon-agent.service
new file mode 100644
index 0000000..3ee8057
--- /dev/null
+++ b/edge-monitoring/agent_adb/edge-mon-agent.service
@@ -0,0 +1,13 @@
+[Unit]
+Description=Aether Edge Monitoring Agent
+After=multi-user.target
+
+[Service]
+Type=simple
+Environment=CONFIG_FILE=/etc/aether-edge-mon/config.json
+ExecStart=/etc/aether-edge-mon/edge_monitoring_agent_adb.py
+ExecStartPre=/bin/sleep 60
+Restart=on-failure
+
+[Install]
+WantedBy=multi-user.target
diff --git a/edge-monitoring/agent_adb/edge_monitoring_agent_adb.py b/edge-monitoring/agent_adb/edge_monitoring_agent_adb.py
old mode 100644
new mode 100755
index f26f5d1..86c05d5
--- a/edge-monitoring/agent_adb/edge_monitoring_agent_adb.py
+++ b/edge-monitoring/agent_adb/edge_monitoring_agent_adb.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
 
 # Copyright 2020-present Open Networking Foundation
 #
@@ -14,12 +14,13 @@
 # See the License for the specific language governing permissions and
 # limitations under the License
 
+import sys
 import os
 import time
 import requests
 import json
 import enum
-import daemon
+import logging
 from collections import namedtuple
 from pyadb import ADB
 
@@ -36,6 +37,12 @@
     object_hook=lambda d: namedtuple('X', d.keys())(*d.values())
 )
 
+logging.basicConfig(
+    filename=CONF.log_file,
+    format='%(asctime)s [%(levelname)s] %(message)s',
+    level=logging.WARN
+)
+
 ADB_GET_COMMANDS = {
     "apn_mode": "settings get global airplane_mode_on",
     "lte_state": "dumpsys telephony.registry | grep -m1 mDataConnectionState",
@@ -72,9 +79,10 @@
 
 def _run_adb_shell(adb, command):
     result, error = adb.shell_command(command)
-    if error is not None:
-        err = "[ERROR]: " + command + " failed"
-        return False, err
+    # error is returned even when succeeded
+    # so ignore error value here
+    if result:
+        logging.debug(result)
     time.sleep(2)
     result = result[0] if result is not None else None
     return True, result
@@ -132,22 +140,35 @@
     '''
     report the aether network state to the monitoring server
     '''
+    logging.info("Sending report %s", edge_status)
     try:
         result = requests.post(CONF.report_url, json=edge_status)
     except requests.exceptions.ConnectionError:
+        logging.error("Failed to report for %s", e)
+        pass
+    try:
+        result.raise_for_status()
+    except requests.exceptions.HTTPError as e:
+        logging.error("Failed to report for %s", e)
         pass
 
 
-def run():
+def main():
     adb = ADB()
     if adb.set_adb_path(CONF.adb.path) is False:
-        err = "[ERROR]: " + CONF.adb.path + " not found"
-        return State.error, err
+        logging.error(CONF.adb.path + " not found")
+        sys.exit(1)
 
     dev = adb.get_devices()
     if len(dev) == 0:
-      return State.error, "Device not found"
+      logging.error("No device found")
+      sys.exit(1)
+
     adb.set_target_device(dev[0])
+    success, result = _run_adb_shell(adb, "svc data enable")
+    if not success:
+        logging.error("Failed to turn data on")
+        sys.exit(1)
 
     while True:
         cp_state, err = get_control_plane_state(adb)
@@ -160,10 +181,5 @@
         time.sleep(CONF.report_interval)
 
 
-def main():
-    with daemon.DaemonContext():
-        run()
-
-
 if __name__ == "__main__":
     main()
diff --git a/edge-monitoring/agent_adb/requirements.txt b/edge-monitoring/agent_adb/requirements.txt
index bee016d..a8d3333 100644
--- a/edge-monitoring/agent_adb/requirements.txt
+++ b/edge-monitoring/agent_adb/requirements.txt
@@ -1,3 +1,2 @@
 requests
 git+git://github.com/sch3m4/pyadb@master#egg=pyadb
-python-daemon
