diff --git a/config/tmtcc_com_config.py b/config/tmtcc_com_config.py
index 79ad40209c1166bcc469a4d1dc00f4584e828353..00c6a346a98c22092a354360356cd29394f9c692 100644
--- a/config/tmtcc_com_config.py
+++ b/config/tmtcc_com_config.py
@@ -1,9 +1,14 @@
 """
 Set-up function. Initiates the communication interface.
 """
+import json
+import os
 import sys
 from typing import Union
 
+import serial
+import serial.tools.list_ports
+
 from tmtc_core.comIF.obsw_com_interface import CommunicationInterface
 from tmtc_core.comIF.obsw_dummy_com_if import DummyComIF
 from tmtc_core.comIF.obsw_ethernet_com_if import EthernetComIF
@@ -13,7 +18,7 @@ from tmtc_core.comIF.obsw_qemu_com_if import QEMUComIF
 from tmtc_core.utility.obsw_logger import get_logger
 from tmtc_core.utility.obsw_tmtc_printer import TmTcPrinter
 
-import config.tmtcc_config as g
+import config.obsw_config as g
 
 LOGGER = get_logger()
 
@@ -33,8 +38,22 @@ def set_communication_interface(tmtc_printer: TmTcPrinter) -> Union[Communicatio
         elif g.G_COM_IF == g.ComInterfaces.Serial:
             serial_baudrate = g.G_SERIAL_BAUDRATE
             serial_timeout = g.G_SERIAL_TIMEOUT
+            com_port = ""
+            if g.G_COM_PORT is None:
+                if os.path.isfile("config/tmtcc_config.json"):
+                    with open("config/tmtcc_config.json", "r") as write:
+                        load_data = json.load(write)
+                        com_port = load_data["COM_PORT"]
+
+                else:
+                    com_port = prompt_com_port()
+                    save_to_json = input("Do you want to store serial port to configuration? (y/n)")
+                    if save_to_json.lower() == 'y':
+                        with open("config/tmtcc_config.json", "w") as write:
+                            json.dump(dict(COM_PORT=com_port), write, indent=4)
+
             communication_interface = SerialComIF(
-                tmtc_printer=tmtc_printer, com_port=g.G_COM_PORT, baud_rate=serial_baudrate,
+                tmtc_printer=tmtc_printer, com_port=com_port, baud_rate=serial_baudrate,
                 serial_timeout=serial_timeout,
                 ser_com_type=SerialCommunicationType.DLE_ENCODING)
             communication_interface.set_dle_settings(
@@ -49,9 +68,24 @@ def set_communication_interface(tmtc_printer: TmTcPrinter) -> Union[Communicatio
                 g.G_SERIAL_DLE_MAX_QUEUE_LEN, g.G_SERIAL_DLE_MAX_FRAME_SIZE, serial_timeout)
         else:
             communication_interface = DummyComIF(tmtc_printer=tmtc_printer)
+        if not communication_interface.valid:
+            LOGGER.warning("Invalid communication interface!")
+            sys.exit()
         communication_interface.initialize()
         return communication_interface
     except (IOError, OSError):
         LOGGER.error("Error setting up communication interface")
         LOGGER.exception("Error")
         sys.exit()
+
+
+def prompt_com_port() -> str:
+    com_port = input(
+        "Serial Commuinication specified without COM port. Please enter COM Port"
+        "(enter h to display list of COM ports): ")
+    if com_port == 'h':
+        ports = serial.tools.list_ports.comports()
+        for port, desc, hwid in sorted(ports):
+            print("{}: {} [{}]".format(port, desc, hwid))
+        com_port = prompt_com_port()
+    return com_port
diff --git a/tmtc_core b/tmtc_core
index 2407697ea25ec1479df5f1308183f7c9f0d01a90..d550621a799b9836f8bbb1c0760ef3a20cac99af 160000
--- a/tmtc_core
+++ b/tmtc_core
@@ -1 +1 @@
-Subproject commit 2407697ea25ec1479df5f1308183f7c9f0d01a90
+Subproject commit d550621a799b9836f8bbb1c0760ef3a20cac99af