diff --git a/rmi4update/rmi4update.cpp b/rmi4update/rmi4update.cpp
index 5e1d924..6a21c38 100755
--- a/rmi4update/rmi4update.cpp
+++ b/rmi4update/rmi4update.cpp
@@ -1119,6 +1119,10 @@
 		do {
 			Sleep(20);
 			rmi4update_poll();
+			if (CheckWriteProtectionActivated()) {
+				if (m_flashStatus == WRITE_PROTECTION)
+					return UPDATE_FAIL_WRITE_PROTECTED;
+			}
 			if (m_flashStatus == SUCCESS){
 				break;
 			}
@@ -1252,6 +1256,10 @@
 		do {
 			Sleep(20);
 			rmi4update_poll();
+			if (CheckWriteProtectionActivated()) {
+				if (m_flashStatus == WRITE_PROTECTION)
+					return UPDATE_FAIL_WRITE_PROTECTED;
+			}
 			if (m_flashStatus == SUCCESS){
 				break;
 
@@ -1442,6 +1450,10 @@
 	do {
 		Sleep(20);
 		rmi4update_poll();
+		if (CheckWriteProtectionActivated()) {
+			if (m_flashStatus == WRITE_PROTECTION)
+				return UPDATE_FAIL_WRITE_PROTECTED;
+		}
 		if (m_flashStatus == SUCCESS){
 			break;
 		}
@@ -1569,6 +1581,10 @@
 	do {
 		Sleep(20);
 		rmi4update_poll();
+		if (CheckWriteProtectionActivated()) {
+			if (m_flashStatus == WRITE_PROTECTION)
+				return UPDATE_FAIL_WRITE_PROTECTED;
+		}
 		if (m_flashStatus == SUCCESS){
 			break;
 		}
@@ -1681,7 +1697,7 @@
 		rmi4update_poll();
 		if (!m_inBLmode)
 			return UPDATE_FAIL_DEVICE_NOT_IN_BOOTLOADER;
-
+			
 	} else
 		fprintf(stdout, "Already in BL mode, skip...\n");
 
@@ -1972,3 +1988,12 @@
 
 	return UPDATE_SUCCESS;
 }
+
+bool RMI4Update::CheckWriteProtectionActivated()
+{
+	if ((m_bootloaderID[1] >= 10) ||
+		((m_bootloaderID[1] == 8) && (m_bootloaderID[0] >= 7))){
+		return true;
+	} else 
+		return false;
+}
diff --git a/rmi4update/rmi4update.h b/rmi4update/rmi4update.h
index 928e07b..80923dd 100755
--- a/rmi4update/rmi4update.h
+++ b/rmi4update/rmi4update.h
@@ -35,6 +35,7 @@
 	FLASH_PROGRAMMING_KEY_INCORRECT,
 	BAD_PARTITION_TABLE,
 	CHECKSUM_FAILED,
+	WRITE_PROTECTION = 0x0E,
 	FLASH_HARDWARE_FAILURE = 0x1f,
 };
 
@@ -194,6 +195,7 @@
 	int GetFirmwareSize() { return m_blockSize * m_fwBlockCount; }
 	int GetConfigSize() { return m_blockSize * m_configBlockCount; }
 	int WriteSignatureV7(enum signature_BLv7 signature_partition, unsigned char* data, int offset);
+	bool CheckWriteProtectionActivated();
 
 private:
 	RMIDevice & m_device;
diff --git a/rmi4update/updateutil.cpp b/rmi4update/updateutil.cpp
index 52245d3..cc607d2 100644
--- a/rmi4update/updateutil.cpp
+++ b/rmi4update/updateutil.cpp
@@ -52,6 +52,7 @@
 	"the firmware image is older then the firmware on the device",	// UPDATE_FAIL_FIRMWARE_IMAGE_IS_OLDER
 	"invalid parameter",						// UPDATE_FAIL_INVALID_PARAMETER
 	"failed to open firmware image file",				// UPDATE_FAIL_OPEN_FIRMWARE_IMAGE
+	"write protection is activated",			// UPDATE_FAIL_WRITE_PROTECTED
 };
 
 const char * update_err_to_string(int err)
diff --git a/rmi4update/updateutil.h b/rmi4update/updateutil.h
index c65c53a..8667086 100644
--- a/rmi4update/updateutil.h
+++ b/rmi4update/updateutil.h
@@ -51,6 +51,7 @@
 	UPDATE_FAIL_FIRMWARE_IMAGE_IS_OLDER,
 	UPDATE_FAIL_INVALID_PARAMETER,
 	UPDATE_FAIL_OPEN_FIRMWARE_IMAGE,
+	UPDATE_FAIL_WRITE_PROTECTED,
 };
 
 const char * update_err_to_string(int err);
