diff --git a/config/tmtcc_com_config.py b/config/tmtcc_com_config.py
index 375b40b3d81d76f9d886e31d393320ca4c4b6a03..e240e2e554762f19621a6d90a689d62cd651d8ba 100644
--- a/config/tmtcc_com_config.py
+++ b/config/tmtcc_com_config.py
@@ -33,25 +33,13 @@ def set_communication_interface(tmtc_printer: TmTcPrinter) -> Union[Communicatio
         if g.G_COM_IF == g.ComInterfaces.Ethernet:
             communication_interface = EthernetComIF(
                 tmtc_printer=tmtc_printer, tm_timeout=g.G_TM_TIMEOUT,
-                tc_timeout_factor=g.G_TC_SEND_TIMEOUT_FACTOR, send_address=g.G_ETHERNET_SEND_ADDRESS,
+                tc_timeout_factor=g.G_TC_SEND_TIMEOUT_FACTOR,
+                send_address=g.G_ETHERNET_SEND_ADDRESS,
                 receive_address=g.G_ETHERNET_RECV_ADDRESS)
         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)
-
+            com_port = determine_com_port()
             communication_interface = SerialComIF(
                 tmtc_printer=tmtc_printer, com_port=com_port, baud_rate=serial_baudrate,
                 serial_timeout=serial_timeout,
@@ -79,13 +67,65 @@ def set_communication_interface(tmtc_printer: TmTcPrinter) -> Union[Communicatio
         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))
+def determine_com_port() -> str:
+    reconfigure_com_port = False
+    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"]
+                if not check_port_validity(com_port):
+                    reconfigure = input(
+                        "COM port from configuration file not contained within serial"
+                        "port list. Reconfigure serial port? [y/n]: ")
+                    if reconfigure.lower() in ['y', "yes"]:
+                        write.close()
+                        os.remove("config/tmtcc_config.json")
+                        reconfigure_com_port = True
+        else:
+            reconfigure_com_port = True
+    else:
+        com_port = g.G_COM_PORT
+
+    if reconfigure_com_port:
         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() in ['y', "yes"]:
+            with open("config/tmtcc_config.json", "w") as write:
+                json.dump(dict(COM_PORT=com_port), write, indent=4)
     return com_port
+
+
+def prompt_com_port() -> str:
+    while True:
+        com_port = input(
+            "Configuring serial 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))
+        else:
+            if not check_port_validity(com_port):
+                print("Serial port not in list of available serial ports. Try again? [y/n]")
+                try_again = input()
+                if try_again.lower() in ['y', "yes"]:
+                    continue
+                else:
+                    break
+            else:
+                break
+    return com_port
+
+
+def check_port_validity(com_port_to_check: str) -> bool:
+    port_list = []
+    ports = serial.tools.list_ports.comports()
+    for port, desc, hwid in sorted(ports):
+        port_list.append(port)
+    if com_port_to_check not in port_list:
+        return False
+    return True
+
diff --git a/config/tmtcc_config.py b/config/tmtcc_config.py
index d04534b9f1a680c1e19b943bb9c0428a8eb50ffb..c1bbc569fe949462e3173deb2d110d4fe1e41b68 100644
--- a/config/tmtcc_config.py
+++ b/config/tmtcc_config.py
@@ -77,7 +77,6 @@ G_MAX_APP_DATA_LENGTH = G_MAX_BINARY_FRAME_LENGTH - 100
 
 G_COM_IF: ComInterfaces = ComInterfaces.QEMU
 # COM Port for serial communication
-G_COM_PORT = ""
 G_SERIAL_TIMEOUT = 0.01
 G_SERIAL_BAUDRATE = 230400
 G_SERIAL_FRAME_SIZE = 256
@@ -118,7 +117,7 @@ G_TMTC_PRINTER = None
 # noinspection PyUnusedLocal
 def set_globals(args):
     global G_ETHERNET_RECV_ADDRESS, G_ETHERNET_SEND_ADDRESS, G_SCRIPT_MODE, G_MODE_ID, G_SERVICE, \
-        G_DISPLAY_MODE, G_COM_IF, G_COM_PORT, G_SERIAL_TIMEOUT, G_TM_TIMEOUT, \
+        G_DISPLAY_MODE, G_COM_IF, G_SERIAL_TIMEOUT, G_TM_TIMEOUT, \
         G_TC_SEND_TIMEOUT_FACTOR, G_PRINT_TO_FILE, G_PRINT_HK_DATA, G_PRINT_RAW_TM, G_PRINT_TM, \
         G_OP_CODE, G_RESEND_TC, G_LISTENER_AFTER_OP
 
@@ -170,7 +169,6 @@ def set_globals(args):
     G_PRINT_TM = args.print_tm
     G_PRINT_TO_FILE = args.print_log
     G_PRINT_RAW_TM = args.rawDataPrint
-    G_COM_PORT = args.com_port
     G_TM_TIMEOUT = args.tm_timeout
     G_RESEND_TC = args.resend_tc
     G_LISTENER_AFTER_OP = args.listener
diff --git a/utility/tmtcc_args_parser.py b/utility/tmtcc_args_parser.py
index 736797bf93180a64d7efba8ce1576785a97662e9..a840c381e99e3abf75cc960561e4f241702a1556 100644
--- a/utility/tmtcc_args_parser.py
+++ b/utility/tmtcc_args_parser.py
@@ -54,7 +54,6 @@ def parse_input_arguments():
         '-d', '--shortDisplayMode', help='Supply -d to print short output', action='store_true')
     arg_parser.add_argument(
         '--hk', dest='print_hk', help='Supply -k or --hk to print HK data', action='store_true')
-    arg_parser.add_argument('--COM', dest="com_port", help='COM Port for serial communication')
     arg_parser.add_argument(
         '--rs', dest="resend_tc", help='Specify whether TCs are sent again after timeout',
         action='store_true')
@@ -63,8 +62,7 @@ def parse_input_arguments():
         print("No Input Arguments specified.")
         arg_parser.print_help()
     args, unknown = arg_parser.parse_known_args()
-
-    #for argument in vars(args):
+    # for argument in vars(args):
     #   LOGGER.debug(argument + ": " + str(getattr(args, argument)))
     handle_args(args, unknown)