diff --git a/LUFA/Drivers/USB/LowLevel/Endpoint.c b/LUFA/Drivers/USB/LowLevel/Endpoint.c
index fdb6c7469ecfbbdc34e7b86e714ab167af411f8a..d4f10db044bab0a6bb1bf0f0c3c953ab9ba5d826 100644
--- a/LUFA/Drivers/USB/LowLevel/Endpoint.c
+++ b/LUFA/Drivers/USB/LowLevel/Endpoint.c
@@ -55,16 +55,19 @@ bool Endpoint_ConfigureEndpoint_Prv(const uint8_t Number,
 #else
 	uint8_t UECFG0XTemp[ENDPOINT_TOTAL_ENDPOINTS];
 	uint8_t UECFG1XTemp[ENDPOINT_TOTAL_ENDPOINTS];
+	uint8_t UEIENXTemp[ENDPOINT_TOTAL_ENDPOINTS];
 	
 	for (uint8_t EPNum = 0; EPNum < ENDPOINT_TOTAL_ENDPOINTS; EPNum++)
 	{
 		Endpoint_SelectEndpoint(EPNum);
 		UECFG0XTemp[EPNum] = UECFG0X;
 		UECFG1XTemp[EPNum] = UECFG1X;
+		UEIENXTemp[EPNum]  = UEIENX;
 	}
 	
 	UECFG0XTemp[Number] = UECFG0XData;
 	UECFG1XTemp[Number] = UECFG1XData;
+	UEIENXTemp[Number]  = 0;
 	
 	for (uint8_t EPNum = 1; EPNum < ENDPOINT_TOTAL_ENDPOINTS; EPNum++)
 	{
@@ -85,6 +88,7 @@ bool Endpoint_ConfigureEndpoint_Prv(const uint8_t Number,
 
 		UECFG0X = UECFG0XTemp[EPNum];
 		UECFG1X = UECFG1XTemp[EPNum];
+		UEIENX  = UEIENXTemp[EPNum];
 		
 		if (!(Endpoint_IsConfigured()))
 		  return false;
diff --git a/LUFA/Drivers/USB/LowLevel/Pipe.c b/LUFA/Drivers/USB/LowLevel/Pipe.c
index 79c21f24ed6356466e77a6929617959cdb555791..748ed0b5613cbecce2d5698ab0d1a3ea879ecaa0 100644
--- a/LUFA/Drivers/USB/LowLevel/Pipe.c
+++ b/LUFA/Drivers/USB/LowLevel/Pipe.c
@@ -49,6 +49,7 @@ bool Pipe_ConfigurePipe(const uint8_t Number,
 	uint8_t UPCFG2XTemp[PIPE_TOTAL_PIPES];
 	uint8_t UPCONXTemp[PIPE_TOTAL_PIPES];
 	uint8_t UPINRQXTemp[PIPE_TOTAL_PIPES];
+	uint8_t UPIENXTemp[PIPE_TOTAL_PIPES];
 	
 	for (uint8_t PNum = 0; PNum < PIPE_TOTAL_PIPES; PNum++)
 	{
@@ -58,6 +59,7 @@ bool Pipe_ConfigurePipe(const uint8_t Number,
 		UPCFG2XTemp[PNum] = UPCFG2X;
 		UPCONXTemp[PNum]  = UPCONX;
 		UPINRQXTemp[PNum] = UPINRQX;
+		UPIENXTemp[PNum]  = UPIENX;
 	}
 	
 	UPCFG0XTemp[Number] = ((Type << EPTYPE0) | Token | ((EndpointNumber & PIPE_EPNUM_MASK) << PEPNUM0));
@@ -65,6 +67,7 @@ bool Pipe_ConfigurePipe(const uint8_t Number,
 	UPCFG2XTemp[Number] = 0;
 	UPCONXTemp[Number]  = (1 << INMODE);
 	UPINRQXTemp[Number] = 0;
+	UPIENXTemp[Number]  = 0;
 	
 	for (uint8_t PNum = 0; PNum < PIPE_TOTAL_PIPES; PNum++)
 	{
@@ -88,6 +91,7 @@ bool Pipe_ConfigurePipe(const uint8_t Number,
 		UPCFG2X  = UPCFG2XTemp[PNum];
 		UPCONX  |= UPCONXTemp[PNum];
 		UPINRQX  = UPINRQXTemp[PNum];
+		UPIENX   = UPIENXTemp[PNum];
 
 		if (!(Pipe_IsConfigured()))
 		  return false;