diff --git a/config/obsw_config.py b/config/obsw_config.py
index b5d51e3adcebd694f5671bb40b873d30a23c2feb..7fab99dc924ea04a4831a9448509dd3396df258c 100644
--- a/config/obsw_config.py
+++ b/config/obsw_config.py
@@ -27,6 +27,7 @@ THERMAL_SENSOR_DEVICE_ID = bytearray([0x44, 0x11, 0x54, 0x00])
 GYRO_DEVICE_ID = bytearray([0x44, 0x11, 0x55, 0x00])
 TEST_TASK_ID = bytearray([0x42, 0x69, 0x42, 0x69])
 SD_CARD_HANDLER_ID = bytearray([0x4D, 0x00, 0x73, 0xAD])
+INTERNAL_ERROR_REPORTER_ID = bytearray([0x53, 0x04, 0x00, 0x00])
 
 # Commands
 DUMMY_COMMAND_1 = struct.pack(">I", 666)
diff --git a/tc/obsw_tc_service3.py b/tc/obsw_tc_service3.py
index 70a937c52a9b55c67cca873c81eb807fce04c95b..40b30ed48cf54d97d54d4043e774f89e12678f3a 100644
--- a/tc/obsw_tc_service3.py
+++ b/tc/obsw_tc_service3.py
@@ -24,12 +24,15 @@ def make_interval(interval_seconds: float) -> bytearray:
 sid_thermalsensor = make_sid(g.THERMAL_SENSOR_DEVICE_ID, 1)
 number_of_parameters = struct.pack('>B', 5)
 
+sid_internal_err_rprtr = make_sid(g.INTERNAL_ERROR_REPORTER_ID, 0)
+
 
 def pack_service3_test_into(tc_queue: Deque) -> Deque:
     tc_queue.appendleft(("print", "Testing Service 3"))
     # Predefined packet testing
     pack_test_device_test(tc_queue)
     pack_custom_tests(tc_queue)
+    pack_internal_error_reporter_tests(tc_queue)
 
     tc_queue.appendleft(("export", "log/tmtc_log_service3.txt"))
     return tc_queue
@@ -40,35 +43,45 @@ def pack_test_device_test(tc_queue: Deque):
 
 
 def pack_custom_tests(tc_queue: Deque):
-    tc_queue.appendleft(("print", "Testing Service 3: "))
-
-    # tc_queue.appendleft(("print", "Generate one thermal sensor packet: "))
-    # command = PusTelecommand(service=3, subservice=27, ssc=3100, app_data=sid_thermalsensor)
-    # tc_queue.appendleft(command.pack_command_tuple())
-    #
-    # tc_queue.appendleft(("print", "Enabling periodic thermal sensor packet generation: "))
-    # command = PusTelecommand(service=3, subservice=5, ssc=3101, app_data=sid_thermalsensor)
-    # tc_queue.appendleft(command.pack_command_tuple())
-    #
-    # tc_queue.appendleft(("wait", 6))
-    #
-    # new_interval = 1.2
-    # interval_app_data = sid_thermalsensor + make_interval(new_interval)
-    # tc_queue.appendleft(("print", "Setting interval to one second: "))
-    # command = PusTelecommand(service=3, subservice=31, ssc=3102, app_data=interval_app_data)
-    # tc_queue.appendleft(command.pack_command_tuple())
-    #
-    # tc_queue.appendleft(("wait", 3))
-    #
-    # tc_queue.appendleft(("print", "Disabling periodic thermal sensor packet generation: "))
-    # command = PusTelecommand(service=3, subservice=6, ssc=3103, app_data=sid_thermalsensor)
-    # tc_queue.appendleft(command.pack_command_tuple())
-
-    tc_queue.appendleft(("print", "Generating structure  report for thermal sensor packet: "))
+    tc_queue.appendleft(("print", "Generate one thermal sensor packet: "))
+    command = PusTelecommand(service=3, subservice=27, ssc=3100, app_data=sid_thermalsensor)
+    tc_queue.appendleft(command.pack_command_tuple())
+
+    tc_queue.appendleft(("print", "Enabling periodic thermal sensor packet generation: "))
+    command = PusTelecommand(service=3, subservice=5, ssc=3101, app_data=sid_thermalsensor)
+    tc_queue.appendleft(command.pack_command_tuple())
+
+    tc_queue.appendleft(("wait", 6))
+
+    new_interval = 1.2
+    interval_app_data = sid_thermalsensor + make_interval(new_interval)
+    tc_queue.appendleft(("print", "Setting interval to 1.2 second: "))
+    command = PusTelecommand(service=3, subservice=31, ssc=3102, app_data=interval_app_data)
+    tc_queue.appendleft(command.pack_command_tuple())
+
+    tc_queue.appendleft(("wait", 3))
+
+    tc_queue.appendleft(("print", "Disabling periodic thermal sensor packet generation: "))
+    command = PusTelecommand(service=3, subservice=6, ssc=3103, app_data=sid_thermalsensor)
+    tc_queue.appendleft(command.pack_command_tuple())
+
+    tc_queue.appendleft(("print", "Generating structure report for thermal sensor packet: "))
     command = PusTelecommand(service=3, subservice=9, ssc=3104, app_data=sid_thermalsensor)
     tc_queue.appendleft(command.pack_command_tuple())
 
 
+def pack_internal_error_reporter_tests(tc_queue: Deque):
+    new_interval = 1.2
+    interval_app_data = sid_thermalsensor + make_interval(new_interval)
+    tc_queue.appendleft(("print", "Setting interval to 3.0 second: "))
+    command = PusTelecommand(service=3, subservice=32, ssc=3102, app_data=interval_app_data)
+    tc_queue.appendleft(command.pack_command_tuple())
+
+    tc_queue.appendleft(("print", "Enabling periodic thermal sensor packet generation: "))
+    command = PusTelecommand(service=3, subservice=6, ssc=3101, app_data=sid_thermalsensor)
+    tc_queue.appendleft(command.pack_command_tuple())
+
+