diff --git a/groundStation/src/backend/commands.c b/groundStation/src/backend/commands.c
index 4bba287358dacb4f9ad545073d983c6b89600e9d..8c64c0efcea6e41e6489d4775f0a9ea679e81e90 100644
--- a/groundStation/src/backend/commands.c
+++ b/groundStation/src/backend/commands.c
@@ -55,6 +55,7 @@ command_cb cb_update __attribute__((weak, alias("cb_default")));
 command_cb cb_beginupdate __attribute__((weak, alias("cb_default")));
 command_cb cb_log __attribute__((weak, alias("cb_default")));
 command_cb cb_response __attribute__((weak, alias("cb_default")));
+command_cb cb_logend __attribute__((weak, alias("cb_default")));
 
 /* Callbacks for configuration */
 command_cb cb_setparam __attribute__((weak, alias("cb_default")));
@@ -163,6 +164,15 @@ struct MessageType MessageTypes[MAX_TYPE_ID] =
 		floatType,
 		// Function pointer
 		&cb_respparam
+	},
+	// LOG_END
+	{
+		// Command text
+		"logend",
+		// Type of the command data
+		stringType,
+		// Function pointer
+		&cb_logend
 	}
 
 };
diff --git a/groundStation/src/backend/commands.h b/groundStation/src/backend/commands.h
index 73ec98f953a12e910ce7fbdec572dcb95c4fb6a6..08218e6ffe8912f4071fb107ca3f1b9accec4e4f 100644
--- a/groundStation/src/backend/commands.h
+++ b/groundStation/src/backend/commands.h
@@ -29,7 +29,8 @@ enum DataType
  * Message type IDs used to know what kind of message we are dealing with
  * Enumeration used to index the MessageTypes array in commands.c
  *
- * DO NOT change this enum or you will break backwards compatibility.
+ * DO NOT change items in the middle of this enum or you will break backwards compatibility.
+ *     - Add new message types in the slot between MAX_TYPE_ID and the one before it
  * DO NOT change this enum without also updating the "MessageTypes" array
  * in commands.c to match.
  */
@@ -44,7 +45,8 @@ enum MessageTypeID{
 	SETPARAM_ID,          // 07 - Setting controller parameters. Example: PID constants
 	GETPARAM_ID,          // 08 - Getting controller parameters. Example: PID constants
 	RESPPARAM_ID,         // 09 - Responding with controller parameters. Example: PID constants
-	MAX_TYPE_ID           // 10 - Just used to keep track of the size
+	LOG_END_ID,           // 10 - Responding with controller parameters. Example: PID constants
+	MAX_TYPE_ID           // 11 - Just used to keep track of the size. Must remain at the end
 };
 
 /*
diff --git a/quad/sw/modular_quad_pid/src/main.c b/quad/sw/modular_quad_pid/src/main.c
index 52f8c0a8379a297cd18fca00c4c4b4f0c1111bb1..790dc32f30a50b0832cd4a7bcbddeeeb9e4e6c23 100644
--- a/quad/sw/modular_quad_pid/src/main.c
+++ b/quad/sw/modular_quad_pid/src/main.c
@@ -129,6 +129,8 @@ int main()
 			printLogging(&(structs.log_struct), &(structs.parameter_struct));
 			resetLogging();
 			MIO7_led_off();
+			char data[1] = {0}; // 1 byte to make compilers happy
+			send_data(LOG_END_ID, 0, data, 0);
 		}
 
 		last_kill_condition = this_kill_condition;