diff --git a/person_detection/app.py b/person_detection/app.py
index b1e9b2d..0ed28eb 100644
--- a/person_detection/app.py
+++ b/person_detection/app.py
@@ -12,7 +12,7 @@
 
 import config
 from person_detection import Camera
-import roc
+from roc import Roc
 
 
 app = flask.Flask(__name__)
@@ -20,7 +20,6 @@
 
 @app.route('/')
 def index():
-    global cameras
     """Video streaming home page."""
     log.info("{} - connected".format(flask.request.remote_addr))
     return flask.render_template('index.html', devices=config.cameras)
@@ -69,6 +68,12 @@
     args.add_argument("--key",
             help = "ROC api key",
             type = str)
+    args.add_argument("--user",
+            help = "ROC username",
+            type = str)
+    args.add_argument("--password",
+            help = "ROC password",
+            type = str)
     args.add_argument("--mbrlow",
             help = "Low range of MBR",
             default = 7000000,
@@ -86,9 +91,26 @@
 
 
 if __name__ == '__main__':
-    log.basicConfig(format="[ %(levelname)s ] %(message)s", level=log.DEBUG, stream=sys.stdout)
+    log.basicConfig(
+            format='%(asctime)s %(levelname)-8s %(message)s',
+            level=log.DEBUG,
+            datefmt='%Y-%m-%d %H:%M:%S',
+            stream=sys.stdout)
     log.debug("Starting person detection app")
+
     args = build_argparser().parse_args()
+
     if not args.noroc:
-        roc.set_mbr(args.key, args.devicegroup, args.mbrlow)
+        key = args.key
+        if key is None:
+            if args.user is not None and args.password is not None:
+                roc = Roc(args.user, args.password)
+                key = roc.get_key()
+            else:
+                log.error("Either key or user/password required")
+                sys.exit()
+
+        log.info("Device group:{} mbr:{}(low)".format(args.devicegroup, args.mbrlow))
+        roc.set_mbr(args.devicegroup, args.mbrlow)
+
     app.run(host='0.0.0.0', debug=True)
diff --git a/person_detection/base_camera.py b/person_detection/base_camera.py
index b8fa47c..e0018f5 100644
--- a/person_detection/base_camera.py
+++ b/person_detection/base_camera.py
@@ -6,7 +6,7 @@
 import logging as log
 from multiprocessing import Process, Queue, Value, Array, Lock
 
-import roc
+from roc import Roc
 import config
 
 
@@ -17,14 +17,14 @@
     cameras = Array('i', [0]*len(config.cameras))
     lock = Lock()
 
-    def __init__(self, device, key, mbrlow, mbrhigh, devicegroup, noroc):
+    def __init__(self, device, user, password, mbrlow, mbrhigh, devicegroup, noroc):
         self.mqttBroker = "localhost"
         self.device = device
-        self.key = key
         self.mbrlow = mbrlow
         self.mbrhigh = mbrhigh
         self.devicegroup = devicegroup
         self.noroc = noroc
+        self.roc = Roc(user, password)
 
         """Start the background camera process if it isn't running yet."""
         if BaseCamera.cameras[int(self.device)] == 0:
@@ -67,7 +67,7 @@
             BaseCamera.lock.release()
             self.set_resolution_high()
             if not self.noroc:
-                roc.set_mbr(self.key, self.devicegroup, self.mbrhigh)
+                self.roc.set_mbr(self.devicegroup, self.mbrhigh)
             self.detected = True
             self.start_timer()
 
@@ -80,7 +80,7 @@
             BaseCamera.activity_counter.value = 0
             self.set_resolution_low()
             if not self.noroc:
-                roc.set_mbr(self.key, self.devicegroup, self.mbrlow)
+                self.roc.set_mbr(self.devicegroup, self.mbrlow)
         BaseCamera.lock.release()
 
 
@@ -110,7 +110,7 @@
     def timer_expiry(self):
         now = time.time()
         diff = now - self.last_detected
-        log.info("timer_expiry() - now:{}, last_detected:{}".format(now, self.last_detected))
+        log.debug("timer_expiry() - now:{}, last_detected:{}".format(now, self.last_detected))
         if diff > 5.0:
             self.no_person_detected()
         else:
diff --git a/person_detection/person_detection.py b/person_detection/person_detection.py
index 86ebaa5..8d49589 100644
--- a/person_detection/person_detection.py
+++ b/person_detection/person_detection.py
@@ -27,7 +27,7 @@
         self.is_async_mode = True
         self.device = device
         self.client = client
-        super(Camera, self).__init__(device, args.key, args.mbrlow, args.mbrhigh, args.devicegroup, args.noroc)
+        super(Camera, self).__init__(device, args.user, args.password, args.mbrlow, args.mbrhigh, args.devicegroup, args.noroc)
 
     def __del__(self):
         # stream.release()
diff --git a/person_detection/roc.py b/person_detection/roc.py
index 7488af9..003d121 100644
--- a/person_detection/roc.py
+++ b/person_detection/roc.py
@@ -6,46 +6,77 @@
 import requests
 import json
 from requests.structures import CaseInsensitiveDict
+import logging as log
 
 
 URL = "https://roc.menlo.aetherproject.org/aether-roc-api/aether/v4.0.0/connectivity-service-v4/"
 #URL = "https://roc.staging.aether.onlab.us/aether-roc-api/aether/v4.0.0/connectivity-service-v4/"
 
 
-def headers(key):
-    h = CaseInsensitiveDict()
-    h["Content-Type"] = "application/json"
-    h["Authorization"] = "Bearer " + key
-    return h
+class Roc(object):
 
-def get_mbr(key, device_group):
-    url = URL + "vcs/vcs/vcs-{}/slice/mbr".format(device_group)
-    response = requests.get(url, headers=headers(key))
-    if response.status_code != 200:
-        print("Failed to get mbr, status_code: {}".format(response.status_code))
-        return None
-    mbr = json.loads(response.text)
-    return mbr
+    def __init__(self, user, password):
+        self.user = user
+        self.password = password
+        self.key = self.get_key()
 
-def set_mbr(key, device_group, mbr):
-    print("Set {} mbr to {}".format(device_group, mbr))
-    m = {'uplink' : mbr}
-    url = URL + "vcs/vcs/vcs-{}/slice/mbr".format(device_group)
-    response = requests.post(url, headers=headers(key), json=m)
-    assert response.status_code == 201, "Failed to set mbr"
-    if response.status_code != 201:
-        print("Failed to set mbr, device_group:{}, mbr:{}, status_code: {}".format(device_group, mbr, response.status_code))
+    def headers(self):
+        h = CaseInsensitiveDict()
+        h["Content-Type"] = "application/json"
+        h["Authorization"] = "Bearer " + self.key
+        return h
+
+    def get_mbr(self, device_group):
+        url = URL + "vcs/vcs/vcs-{}/slice/mbr".format(device_group)
+        response = requests.get(url, headers=self.headers())
+        if response.status_code != 200:
+            log.error("Failed to get mbr, status_code: {}".format(response.status_code))
+            return None
+        mbr = json.loads(response.text)
+        return mbr
+
+    def set_mbr(self, device_group, mbr):
+        log.info("Set {} mbr to {}".format(device_group, mbr))
+        m = {'uplink' : mbr}
+        url = URL + "vcs/vcs/vcs-{}/slice/mbr".format(device_group)
+        response = requests.post(url, headers=self.headers(), json=m)
+
+        # If error, renew api key and try again
+        if response.status_code != 201:
+            log.info("Renew ROC api key")
+            self.key = self.get_key()
+            response = requests.post(url, headers=self.headers(), json=m)
+            if response.status_code != 201:
+                log.error("Failed to set mbr, device_group:{}, mbr:{}, status_code: {}".format(device_group, mbr, response.status_code))
+                sys.exit()
+
+    def get_key(self):
+        url = "https://keycloak.opennetworking.org/auth/realms/master/protocol/openid-connect/token"
+        headers = CaseInsensitiveDict()
+        headers["Content-Type"] = "application/x-www-form-urlencoded"
+        data = {
+                'grant_type': 'password',
+                'client_id': 'aether-roc-gui',
+                'username': self.user,
+                'password': self.password,
+                'scope': 'openid profile email groups'
+                }
+        response = requests.post(url, data, headers)
+        key = json.loads(response.text)['access_token']
+        return key
 
 if __name__ == '__main__':
-    key = ""
-    cameras = "menlo-4g-cameras"
-    #cameras = "cameras-4g"
 
-    mbr = get_mbr(key, cameras)
+    # use valid keycloak user/password
+    roc = Roc("user", "password")
+
+    cameras = "menlo-4g-cameras"
+
+    mbr = roc.get_mbr(cameras)
     print("uplink mbr:{}, downlink mbr: {}".format(mbr["uplink"], mbr["downlink"]))
-    set_mbr(key, cameras, 5000000)
-    mbr = get_mbr(key, cameras)
+    roc.set_mbr(cameras, 5000000)
+    mbr = roc.get_mbr(cameras)
     print("uplink mbr:{}, downlink mbr: {}".format(mbr["uplink"], mbr["downlink"]))
-    set_mbr(key, cameras, 10000000)
-    mbr = get_mbr(key, cameras)
+    roc.set_mbr(cameras, 10000000)
+    mbr = roc.get_mbr(cameras)
     print("uplink mbr:{}, downlink mbr: {}".format(mbr["uplink"], mbr["downlink"]))
