diff --git a/gui/action.cpp b/gui/action.cpp
index 8315ab2..a3cf22e 100644
--- a/gui/action.cpp
+++ b/gui/action.cpp
@@ -1363,7 +1363,7 @@
 			DataManager::GetValue(TW_HAS_DATA_MEDIA, has_datamedia);
 			if (has_datamedia != 0) {
 				if (tw_get_default_metadata(DataManager::GetSettingsStoragePath().c_str()) != 0) {
-					LOGERR("Failed to get default contexts and file mode for storage files.\n");
+					LOGINFO("Failed to get default contexts and file mode for storage files.\n");
 				} else {
 					LOGINFO("Got default contexts and file mode for storage files.\n");
 				}
diff --git a/partitionmanager.cpp b/partitionmanager.cpp
index 09ae5d2..23632d2 100644
--- a/partitionmanager.cpp
+++ b/partitionmanager.cpp
@@ -2028,7 +2028,7 @@
 		return false; // MTP is disabled
 
 	if (mtp_write_fd < 0) {
-		LOGERR("MTP: mtp_write_fd is not set\n");
+		LOGINFO("MTP: mtp_write_fd is not set\n");
 		return false;
 	}
 
@@ -2040,7 +2040,7 @@
 			LOGINFO("sending message to remove %i\n", Part->MTP_Storage_ID);
 			mtp_message.storage_id = Part->MTP_Storage_ID;
 			if (write(mtp_write_fd, &mtp_message, sizeof(mtp_message)) <= 0) {
-				LOGERR("error sending message to remove storage %i\n", Part->MTP_Storage_ID);
+				LOGINFO("error sending message to remove storage %i\n", Part->MTP_Storage_ID);
 				return false;
 			} else {
 				LOGINFO("Message sent, remove storage ID: %i\n", Part->MTP_Storage_ID);
@@ -2054,7 +2054,7 @@
 			mtp_message.maxFileSize = Part->Get_Max_FileSize();
 			LOGINFO("sending message to add %i '%s'\n", Part->MTP_Storage_ID, mtp_message.path);
 			if (write(mtp_write_fd, &mtp_message, sizeof(mtp_message)) <= 0) {
-				LOGERR("error sending message to add storage %i\n", Part->MTP_Storage_ID);
+				LOGINFO("error sending message to add storage %i\n", Part->MTP_Storage_ID);
 				return false;
 			} else {
 				LOGINFO("Message sent, add storage ID: %i\n", Part->MTP_Storage_ID);
@@ -2066,7 +2066,7 @@
 	} else {
 		// This hopefully never happens as the error handling should
 		// occur in the calling function.
-		LOGERR("TWPartitionManager::Add_Remove_MTP_Storage NULL partition given\n");
+		LOGINFO("TWPartitionManager::Add_Remove_MTP_Storage NULL partition given\n");
 	}
 	return true;
 #else
@@ -2082,7 +2082,7 @@
 	if (Part) {
 		return PartitionManager.Add_Remove_MTP_Storage(Part, MTP_MESSAGE_ADD_STORAGE);
 	} else {
-		LOGERR("TWFunc::Add_MTP_Storage unable to locate partition for '%s'\n", Mount_Point.c_str());
+		LOGINFO("TWFunc::Add_MTP_Storage unable to locate partition for '%s'\n", Mount_Point.c_str());
 	}
 #endif
 	return false;
@@ -2094,7 +2094,7 @@
 	if (Part) {
 		return PartitionManager.Add_Remove_MTP_Storage(Part, MTP_MESSAGE_ADD_STORAGE);
 	} else {
-		LOGERR("TWFunc::Add_MTP_Storage unable to locate partition for %i\n", Storage_ID);
+		LOGINFO("TWFunc::Add_MTP_Storage unable to locate partition for %i\n", Storage_ID);
 	}
 #endif
 	return false;
@@ -2106,7 +2106,7 @@
 	if (Part) {
 		return PartitionManager.Add_Remove_MTP_Storage(Part, MTP_MESSAGE_REMOVE_STORAGE);
 	} else {
-		LOGERR("TWFunc::Remove_MTP_Storage unable to locate partition for '%s'\n", Mount_Point.c_str());
+		LOGINFO("TWFunc::Remove_MTP_Storage unable to locate partition for '%s'\n", Mount_Point.c_str());
 	}
 #endif
 	return false;
@@ -2118,7 +2118,7 @@
 	if (Part) {
 		return PartitionManager.Add_Remove_MTP_Storage(Part, MTP_MESSAGE_REMOVE_STORAGE);
 	} else {
-		LOGERR("TWFunc::Remove_MTP_Storage unable to locate partition for %i\n", Storage_ID);
+		LOGINFO("TWFunc::Remove_MTP_Storage unable to locate partition for %i\n", Storage_ID);
 	}
 #endif
 	return false;
diff --git a/set_metadata.c b/set_metadata.c
index f4e0de2..2e1d769 100644
--- a/set_metadata.c
+++ b/set_metadata.c
@@ -39,7 +39,7 @@
 		printf("tw_get_context got selinux context: %s\n", selinux_context);
 		return 0;
 	} else {
-		printf("tw_get_context failed to get selinux context");
+		printf("tw_get_context failed to get selinux context\n");
 		selinux_context = NULL;
 	}
 	return -1;
diff --git a/twrp.cpp b/twrp.cpp
index b6d3d79..4a8b1fb 100644
--- a/twrp.cpp
+++ b/twrp.cpp
@@ -284,7 +284,7 @@
 		}
 	} else if (datamedia) {
 		if (tw_get_default_metadata(DataManager::GetSettingsStoragePath().c_str()) != 0) {
-			LOGERR("Failed to get default contexts and file mode for storage files.\n");
+			LOGINFO("Failed to get default contexts and file mode for storage files.\n");
 		} else {
 			LOGINFO("Got default contexts and file mode for storage files.\n");
 		}
