diff --git a/tc/obsw_tc_service23_sdcard.py b/tc/obsw_tc_service23_sdcard.py
index 488175637411a944d5a3ab6f39ebc04699f525b1..4d0bfa24a4b1cfdcdb95e798d6f07a3a4472978a 100644
--- a/tc/obsw_tc_service23_sdcard.py
+++ b/tc/obsw_tc_service23_sdcard.py
@@ -128,15 +128,18 @@ class FileTransferHelper:
             init_data)
         ssc += 1
         self.tc_queue.appendleft(command.pack_command_tuple())
-
         rest_of_data = self.file_data[self.allowed_file_data_size:]
         # Generate the rest of the packets to write to large file
         if self.max_file_data_size > 0:
             self.__generate_append_to_file_packets_automatically(
-                rest_of_data, self.max_file_data_size, ssc)
+                data=rest_of_data, target_repository=self.target_repository,
+                target_filename=self.target_filename, size_of_data_blocks=self.max_file_data_size,
+                init_ssc=ssc)
         else:
             self.__generate_append_to_file_packets_automatically(
-                rest_of_data, self.max_size_of_app_data, ssc)
+                data=rest_of_data, target_repository=self.target_repository,
+                target_filename=self.target_filename, size_of_data_blocks=self.max_size_of_app_data,
+                init_ssc=ssc)
         ssc += 1
         last_command = generate_finish_append_to_file_srv23_131_packet(
             filename=self.target_filename, repository_path=self.target_repository,
@@ -147,7 +150,8 @@ class FileTransferHelper:
             self.number_of_delete_packets + 1
 
     def __generate_append_to_file_packets_automatically(
-            self, data: bytearray, size_of_data_blocks: int, init_ssc: int):
+            self, data: bytearray, target_repository: str, target_filename: str,
+            size_of_data_blocks: int, init_ssc: int):
         """
         This function generates PUS packets which is used to write data in a file.
         A new file will be created if not already existing. If the file already exists, this might
@@ -159,11 +163,11 @@ class FileTransferHelper:
         @param data: Data which will be split up.
         @param init_ssc: First SSC, which will be incremented for each packet.
         """
-        header = self.object_id
-        header += bytearray(self.target_repository, 'utf-8')
+        header = bytearray(self.object_id)
+        header += target_repository.encode('utf-8')
         # Add string terminator of repository path
         header.append(0)
-        header += bytearray(self.target_filename, 'utf-8')
+        header += target_filename.encode('utf-8')
         # Add string terminator of filename
         header.append(0)
         self.__split_large_file(header, size_of_data_blocks, data, init_ssc)
@@ -305,10 +309,10 @@ def generate_create_file_srv23_1_packet(
         LOGGER.error("generate_create_file_srv23_1_packet: Initial data too large!")
         return None
     data_to_pack = bytearray(object_id)
-    data_to_pack += bytearray(repository_path, 'utf-8')
+    data_to_pack += repository_path.encode('utf-8')
     # Add string terminator to repository_path
     data_to_pack.append(0)
-    data_to_pack += bytearray(filename, 'utf-8')
+    data_to_pack += filename.encode('utf-8')
     # Add string terminator to filename
     data_to_pack.append(0)
 
@@ -328,10 +332,10 @@ def generate_rm_file_srv23_2_packet(filename: str, repository_path: str,
     :return The TC[23,2] PUS packet
     """
     data_to_pack = bytearray(object_id)
-    data_to_pack += bytearray(repository_path, 'utf-8')
+    data_to_pack += repository_path.encode('utf-8')
     # Add string terminator to repository_path
     data_to_pack.append(0)
-    data_to_pack += bytearray(filename, 'utf-8')
+    data_to_pack += filename.encode('utf-8')
     # Add string terminator to filename
     data_to_pack.append(0)
     return PusTelecommand(service=23, subservice=2, ssc=ssc, app_data=data_to_pack)
@@ -348,10 +352,10 @@ def generate_mkdir_srv23_9_packet(directory_name: str, ssc: int, repository_path
     :return
     """
     data_to_pack = bytearray(object_id)
-    data_to_pack += bytearray(repository_path, 'utf-8')
+    data_to_pack += repository_path.encode('utf-8')
     # Add string terminator to repository path
     data_to_pack.append(0)
-    data_to_pack += bytearray(directory_name, 'utf-8')
+    data_to_pack += directory_name.encode('utf-8')
     # Add string terminator to directory name
     data_to_pack.append(0)
     return PusTelecommand(service=23, subservice=9, ssc=ssc, app_data=data_to_pack)
@@ -368,10 +372,10 @@ def generate_rmdir_srv23_10_packet(directory_name: str, repository_path: str, ss
     @return The application data field of the (23,10) PUS packet
     """
     data_to_pack = bytearray(object_id)
-    data_to_pack += bytearray(repository_path, 'utf-8')
+    data_to_pack += repository_path.encode('utf-8')
     # Add string terminator of repository path
     data_to_pack.append(0)
-    data_to_pack += bytearray(directory_name, 'utf-8')
+    data_to_pack += directory_name.encode('utf-8')
     # Add string terminator of directory name
     data_to_pack.append(0)
     return PusTelecommand(service=23, subservice=10, ssc=ssc, app_data=data_to_pack)
@@ -382,10 +386,10 @@ def generate_append_to_file_srv23_130_packet(
         ssc: int, file_data: bytearray = bytearray([]),
         object_id: bytearray = g.SD_CARD_HANDLER_ID) -> PusTelecommand:
     data_to_pack = bytearray(object_id)
-    data_to_pack += bytearray(repository_path, 'utf-8')
+    data_to_pack += repository_path.encode('utf-8')
     # Add string terminator of repository path
     data_to_pack.append(0)
-    data_to_pack += bytearray(filename, 'utf-8')
+    data_to_pack += filename.encode('utf-8')
     # Add string terminator of filename
     data_to_pack.append(0)
     data_to_pack += file_data
@@ -393,19 +397,22 @@ def generate_append_to_file_srv23_130_packet(
     data_to_pack.append(packet_sequence_number & 0xff)
     return PusTelecommand(service=23, subservice=130, ssc=ssc, app_data=data_to_pack)
 
+
 def generate_finish_append_to_file_srv23_131_packet(
-        filename:str, repository_path: str, lock_file: bool, ssc:int ,
+        filename: str, repository_path: str, lock_file: bool, ssc: int,
         object_id: bytearray = g.SD_CARD_HANDLER_ID):
     data_to_pack = bytearray(object_id)
-    data_to_pack += bytearray(repository_path, 'utf-8')
+    data_to_pack += repository_path.encode('utf-8')
     # Add string terminator of repository path
     data_to_pack.append(0)
-    data_to_pack += bytearray(filename, 'utf-8')
+    data_to_pack += filename.encode('utf-8')
     # Add string terminator of filename
     data_to_pack.append(0)
     data_to_pack.append(lock_file)
+    print(len(data_to_pack))
     return PusTelecommand(service=23, subservice=131, ssc=ssc, app_data=data_to_pack)
 
+
 def generate_read_file_srv23_140_packet(
         repository_path: str, filename: str, ssc: int,
         object_id: bytearray = g.SD_CARD_HANDLER_ID) -> PusTelecommand:
@@ -419,15 +426,27 @@ def generate_read_file_srv23_140_packet(
     @return: The application data field of the (23,129) PUS packet
     """
     data_to_pack = bytearray(object_id)
-    data_to_pack += bytearray(repository_path, 'utf-8')
+    data_to_pack += repository_path.encode('utf-8')
     # Add string terminator of repository paht
     data_to_pack.append(0)
-    data_to_pack += bytearray(filename, 'utf-8')
+    data_to_pack += filename.encode('utf-8')
     # Add string terminator of filename
     data_to_pack.append(0)
     return PusTelecommand(service=23, subservice=140, ssc=ssc, app_data=data_to_pack)
 
 
+def generate_lock_file_packet(ssc: int, repository_path: str, filename: str,
+                              object_id: bytearray = g.SD_CARD_HANDLER_ID):
+    data_to_pack = bytearray(object_id)
+    data_to_pack += repository_path.encode('utf-8')
+    # Add string terminator of repository paht
+    data_to_pack.append(0)
+    data_to_pack += filename.encode('utf-8')
+    # Add string terminator of filename
+    data_to_pack.append(0)
+    return PusTelecommand(service=23, subservice=5, ssc=ssc, app_data=data_to_pack)
+
+
 def pack_service23_commands_into(tc_queue: Deque, op_code: int) -> Deque:
     # sd_handler_id = g.SD_CARD_HANDLER_ID
     if op_code == 0:
@@ -488,12 +507,63 @@ def pack_service23_commands_into(tc_queue: Deque, op_code: int) -> Deque:
         command = generate_format_sd_card_packet(ssc=2300)
         tc_queue.appendleft(command.pack_command_tuple())
     elif op_code == "C0A":
+        tc_queue.append(("print", "Generating generic folder structure on AT91"))
         generate_generic_folder_structure(tc_queue, init_ssc=0, iobc=False)
     elif op_code == "C0I":
+        tc_queue.append(("print", "Generating generic folder structure on iOBC"))
         generate_generic_folder_structure(tc_queue, init_ssc=0, iobc=True)
+    elif op_code == "5" or op_code == 5:
+
+        LOGGER.info("Press h in the following input requests to send a command to display the"
+                    "folder sturcture instead")
+        (repo_path, filename) = prompt_for_repo_filename()
+        if repo_path == "" and filename == "h":
+            tc_queue.append(("print", "Printing active file system"))
+            tc_queue.appendleft(generate_print_sd_card_packet(ssc=0))
+        elif repo_path == "" and filename == "c":
+            return tc_queue
+        else:
+            tc_queue.append(("print", "Locking file"))
+            command = generate_lock_file_packet(0, repository_path=repo_path, filename=filename)
+            tc_queue.appendleft(command.pack_command_tuple())
+    elif op_code == "6" or op_code == 6:
+
+        LOGGER.info("Press h in the following input requests to send a command to display the"
+                    "folder sturcture instead")
+        (repo_path, filename) = prompt_for_repo_filename()
+        if repo_path == "" and filename == "h":
+            tc_queue.append(("print", "Printing active file system"))
+            tc_queue.appendleft(generate_print_sd_card_packet(ssc=0).pack_command_tuple())
+        elif repo_path == "" and filename == "c":
+            return tc_queue
+        else:
+            tc_queue.append(("print", "Unlocking file"))
+            command = generate_lock_file_packet(0, repository_path=repo_path, filename=filename)
+            tc_queue.appendleft(command.pack_command_tuple())
     return tc_queue
 
 
 def calculate_allowed_file_data_size(max_app_data_size: int, filename: str, repository: str):
     # Subtract two because of '\0' terminators
     return max_app_data_size - len(filename) - len(repository) - 2
+
+
+def prompt_for_repo_filename():
+    input_confirmation = False
+    repo_path = ""
+    filename = ""
+    while not input_confirmation:
+        repo_path = input("Please type in repository path [c to cancel]: ")
+        if repo_path == "h":
+            return "", "h"
+        filename = input("Please type in filename path [c to cancel]: ")
+        print("Selection for repostiory path: " + str(repo_path))
+        print("Selection for filename: " + str(filename))
+        if repo_path == "c" or filename == "c":
+            return "", "c"
+        if repo_path == "h" or filename == "h":
+            return "", "h"
+        input_confirmation = input("Confirm selection [y/n]: ")
+        if input_confirmation in ['y', "yes", 1]:
+            input_confirmation = True
+    return repo_path, filename
diff --git a/utility/obsw_binary_uploader.py b/utility/obsw_binary_uploader.py
index 757f82b415437ad30b98b556bde059cc5e7754b1..55ea1efc0e613861603f383ee9ed79a5bd322299 100644
--- a/utility/obsw_binary_uploader.py
+++ b/utility/obsw_binary_uploader.py
@@ -19,7 +19,7 @@ import config.obsw_config as g
 from tmtc_core.utility.obsw_tmtc_printer import TmTcPrinter, DisplayMode
 from tmtc_core.utility.obsw_logger import get_logger
 from tmtc_core.sendreceive.obsw_tm_listener import TmListener
-from tmtc_core.tm.obsw_pus_tm_factory import PusTelemetryFactory
+from tmtc_core.tm.obsw_pus_tm_factory import PusTelemetryFactory, PusTmQueueT
 
 LOGGER = get_logger()
 
@@ -140,11 +140,11 @@ def perform_file_upload(com_if: CommunicationInterface, tmtc_printer: TmTcPrinte
                    " packets generated with " + \
                    str(file_transfer_helper.number_of_append_packets) + " append packets."
     LOGGER.info(print_string)
-    interval = 0.5
+    interval = 0.6
     last_sent = time.time()
     total_time = interval * total_num_packets
     idx = 1
-    reception_deque = deque()
+    reception_deque: PusTmQueueT = deque()
     while tc_queue:
         next_send = last_sent + interval
         (tc_packet, tc_info) = tc_queue.pop()
@@ -174,8 +174,8 @@ def perform_file_upload(com_if: CommunicationInterface, tmtc_printer: TmTcPrinte
     reception_deque.extend(tm_listener.retrieve_tm_packet_queue())
     for tm_list in reception_deque:
         for tm_packet in tm_list:
-            tm_packet = PusTelemetryFactory.create(tm_packet)
-            tmtc_printer.print_telemetry(tm_packet)
+            if tm_packet.get_service() == 23 and tm_packet.get_subservice() == 132:
+                tmtc_printer.print_telemetry(tm_packet)
     tm_listener.clear_tm_packet_queue()
     LOGGER.info("Transitioning back to listener mode..")
 
@@ -202,4 +202,4 @@ def print_progress_bar(iteration, total, prefix='', suffix='', decimals=1, lengt
     print(f'\r{prefix} |{bar}| {percent}% {suffix}', end=print_end)
     # Print New Line on Complete
     if iteration == total:
-        print()
\ No newline at end of file
+        print()