diff --git a/epicardium/ble/app/common/app_db.c b/epicardium/ble/app/common/app_db.c
index e4428f50751fd4407b3397c7111381314fd5ff45..285570f74739c49b92c0b95d450167f7fae15773 100644
--- a/epicardium/ble/app/common/app_db.c
+++ b/epicardium/ble/app/common/app_db.c
@@ -24,7 +24,6 @@
  */
 /* clang-format off */
 /* clang-formet turned off for easier diffing against orginal file */
-#include <string.h>
 #include "wsf_types.h"
 #include "wsf_assert.h"
 #include "util/bda.h"
@@ -33,6 +32,10 @@
 #include "app_db.h"
 #include "app_cfg.h"
 
+#include "epicardium.h"
+#include <string.h>
+#include <stdio.h>
+
 /**************************************************************************************************
   Data Types
 **************************************************************************************************/
@@ -96,7 +99,24 @@ static appDbRec_t *pAppDbNewRec = appDb.rec;
 /*************************************************************************************************/
 void AppDbInit(void)
 {
-  return;
+  int fd = epic_file_open("pairings.bin", "r");
+
+  if(fd >= 0) {
+    if(epic_file_read(fd, &appDb, sizeof(appDb)) != sizeof(appDb)) {
+        memset(&appDb, 0, sizeof(appDb));
+    }
+    epic_file_close(fd);
+  }
+}
+
+static void store(void)
+{
+  int fd = epic_file_open("pairings.bin", "w");
+  if(fd >= 0) {
+    if(epic_file_write(fd, &appDb, sizeof(appDb)) != sizeof(appDb)) {
+    }
+    epic_file_close(fd);
+  }
 }
 
 /*************************************************************************************************/
@@ -145,6 +165,7 @@ appDbHdl_t AppDbNewRecord(uint8_t addrType, uint8_t *pAddr)
   pRec->peerAddedToRl = FALSE;
   pRec->peerRpao = FALSE;
 
+  store();
   return (appDbHdl_t) pRec;
 }
 
@@ -209,6 +230,7 @@ appDbHdl_t AppDbGetNextRecord(appDbHdl_t hdl)
 void AppDbDeleteRecord(appDbHdl_t hdl)
 {
   ((appDbRec_t *) hdl)->inUse = FALSE;
+  store();
 }
 
 /*************************************************************************************************/
@@ -226,6 +248,7 @@ void AppDbValidateRecord(appDbHdl_t hdl, uint8_t keyMask)
 {
   ((appDbRec_t *) hdl)->valid = TRUE;
   ((appDbRec_t *) hdl)->keyValidMask = keyMask;
+  store();
 }
 
 /*************************************************************************************************/
@@ -315,6 +338,7 @@ void AppDbDeleteAllRecords(void)
   {
     pRec->inUse = FALSE;
   }
+  store();
 }
 
 /*************************************************************************************************/
@@ -461,6 +485,7 @@ void AppDbSetKey(appDbHdl_t hdl, dmSecKeyIndEvt_t *pKey)
     default:
       break;
   }
+  store();
 }
 
 /*************************************************************************************************/
@@ -493,6 +518,7 @@ void AppDbSetCccTblValue(appDbHdl_t hdl, uint16_t idx, uint16_t value)
   WSF_ASSERT(idx < APP_DB_NUM_CCCD);
 
   ((appDbRec_t *) hdl)->cccTbl[idx] = value;
+  store();
 }
 
 /*************************************************************************************************/
@@ -522,6 +548,7 @@ uint8_t AppDbGetDiscStatus(appDbHdl_t hdl)
 void AppDbSetDiscStatus(appDbHdl_t hdl, uint8_t status)
 {
   ((appDbRec_t *) hdl)->discStatus = status;
+  store();
 }
 
 /*************************************************************************************************/
@@ -551,6 +578,7 @@ uint16_t *AppDbGetHdlList(appDbHdl_t hdl)
 void AppDbSetHdlList(appDbHdl_t hdl, uint16_t *pHdlList)
 {
   memcpy(((appDbRec_t *) hdl)->hdlList, pHdlList, sizeof(((appDbRec_t *) hdl)->hdlList));
+  store();
 }
 
 /*************************************************************************************************/
@@ -593,6 +621,7 @@ void AppDbSetDevName(uint8_t len, char *pStr)
   len = (len <= sizeof(appDb.devName)) ? len : sizeof(appDb.devName);
 
   memcpy(appDb.devName, pStr, len);
+  store();
 }
 
 /*************************************************************************************************/
@@ -622,6 +651,7 @@ bool_t AppDbGetPeerAddrRes(appDbHdl_t hdl)
 void AppDbSetPeerAddrRes(appDbHdl_t hdl, uint8_t addrRes)
 {
   ((appDbRec_t *)hdl)->peerAddrRes = addrRes;
+  store();
 }
 
 /*************************************************************************************************/
@@ -651,6 +681,7 @@ uint32_t AppDbGetPeerSignCounter(appDbHdl_t hdl)
 void AppDbSetPeerSignCounter(appDbHdl_t hdl, uint32_t signCounter)
 {
   ((appDbRec_t *)hdl)->peerSignCounter = signCounter;
+  store();
 }
 
 /*************************************************************************************************/
@@ -680,6 +711,7 @@ bool_t AppDbGetPeerAddedToRl(appDbHdl_t hdl)
 void AppDbSetPeerAddedToRl(appDbHdl_t hdl, bool_t peerAddedToRl)
 {
   ((appDbRec_t *)hdl)->peerAddedToRl = peerAddedToRl;
+  store();
 }
 
 /*************************************************************************************************/
@@ -709,5 +741,6 @@ bool_t AppDbGetPeerRpao(appDbHdl_t hdl)
 void AppDbSetPeerRpao(appDbHdl_t hdl, bool_t peerRpao)
 {
   ((appDbRec_t *)hdl)->peerRpao = peerRpao;
+  store();
 }
 /* clang-format on */