diff --git a/tc/obsw_tc_service23.py b/tc/obsw_tc_service23.py
index 9f384fe3d9ac06437a79048b1c5d446550fed99a..172b1dc4043df90cba659ca70905ed6aae42efdf 100644
--- a/tc/obsw_tc_service23.py
+++ b/tc/obsw_tc_service23.py
@@ -51,6 +51,7 @@ class FileTransferHelper:
         """
         self.transfer_mode = self.TransferMode.NORMAL
         self.max_size_of_app_data = max_size_of_app_data
+        self.max_file_data_size = 0
         self.allowed_file_data_size = calculate_allowed_file_data_size(
             max_size_of_app_data, target_filename, target_repository)
         self.target_filename = target_filename
@@ -79,6 +80,15 @@ class FileTransferHelper:
         self.transfer_mode = self.TransferMode.RENAME_OLD
         self.renamed_name = renamed_name
 
+    def set_max_file_data_size(self, max_file_data_size: int):
+        """
+        If this value is specified and the source file is large (larger than the maximum allowed
+        app data!), the file data size will be set to this value.
+        @param max_file_data_size:
+        @return:
+        """
+        self.max_file_data_size = max_file_data_size
+
     def generate_packets(self, ssc: int):
         if self.transfer_mode == self.TransferMode.DELETE_OLD:
             command = generate_rm_file_srv23_2_packet(self.target_filename, self.target_repository,
@@ -90,7 +100,10 @@ class FileTransferHelper:
             pass
         if len(self.file_data) > self.allowed_file_data_size:
             # Large file, create file with init_data
-            init_data = self.file_data[0:self.allowed_file_data_size]
+            if self.max_file_data_size > 0:
+                init_data = self.file_data[0:self.max_file_data_size]
+            else:
+                init_data = self.file_data[0:self.allowed_file_data_size]
         else:
             # Small file, one packet for file creation sufficient
             command = generate_create_file_srv23_1_packet(
@@ -109,9 +122,15 @@ class FileTransferHelper:
 
         rest_of_data = self.file_data[self.allowed_file_data_size:]
         # Generate the rest of the packets to write to large file
-        self.__generate_append_to_file_packets_automatically(rest_of_data, ssc)
+        if self.max_file_data_size > 0:
+            self.__generate_append_to_file_packets_automatically(
+                rest_of_data, self.max_file_data_size, ssc)
+        else:
+            self.__generate_append_to_file_packets_automatically(
+                rest_of_data, self.max_size_of_app_data, ssc)
 
-    def __generate_append_to_file_packets_automatically(self, data: bytearray, init_ssc: int):
+    def __generate_append_to_file_packets_automatically(
+            self, data: bytearray, 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
@@ -130,7 +149,7 @@ class FileTransferHelper:
         header += bytearray(self.target_filename, 'utf-8')
         # Add string terminator of filename
         header.append(0)
-        self.__split_large_file(header, self.max_size_of_app_data, data, init_ssc)
+        self.__split_large_file(header, size_of_data_blocks, data, init_ssc)
 
     def __split_large_file(self, header: bytearray, size_of_data_blocks: int,
                            data: bytearray, init_ssc: int):
diff --git a/utility/obsw_binary_uploader.py b/utility/obsw_binary_uploader.py
index a731e443144d213a7eaea077f5e83b313e8f16f6..fa58a0ea2e0b62a4089a5d2eb3a6a42311b8049a 100644
--- a/utility/obsw_binary_uploader.py
+++ b/utility/obsw_binary_uploader.py
@@ -12,8 +12,7 @@ from tkinter import filedialog
 from collections import deque
 
 from tmtc_core.comIF.obsw_com_interface import CommunicationInterface
-from tc.obsw_tc_service23 import generate_append_to_file_packets_automatically, \
-    generate_rmdir_srv23_10_packet
+from tc.obsw_tc_service23 import FileTransferHelper
 import config.obsw_config as g
 
 
@@ -49,13 +48,16 @@ def perform_binary_upload(comIF: CommunicationInterface):
 
     # Delete existing binary file first, otherwise data might be appeneded to otherwise
     # valid file which already exists.
-    generate_rmdir_srv23_10_packet()
+    file_transfer_helper = FileTransferHelper(
+        tc_queue=tc_queue, max_size_of_app_data=1500, target_repository="BIN/AT91/BL",
+        target_filename="bl.bin")
 
+    file_transfer_helper.generate_packets(1)
+    file_transfer_helper.set_to_delete_old_file()
     # We have to split the binary here first
-    generate_append_to_file_packets_automatically(tc_queue, "BIN/AT91/BL", "bl.bin", 1024, data_to_read)
+    # generate_append_to_file_packets_automatically(tc_queue, ,, 1024, data_to_read)
     while tc_queue:
         (tc_packet, tc_info) = tc_queue.pop()
         comIF.send_telecommand(tc_packet, tc_info)
         print("Sending..")
-        time.sleep(2.0)
-    print("Test2")
+        time.sleep(30.0)