diff --git a/LUFA/Drivers/USB/LowLevel/Endpoint.c b/LUFA/Drivers/USB/LowLevel/Endpoint.c
index 742e618609eb5cbcc42e045c8d2f584e07680972..4b2d1c059b2657267a1bfb06db0d35f17884bedc 100644
--- a/LUFA/Drivers/USB/LowLevel/Endpoint.c
+++ b/LUFA/Drivers/USB/LowLevel/Endpoint.c
@@ -43,6 +43,16 @@ bool Endpoint_ConfigureEndpoint_Prv(const uint8_t Number,
                                     const uint8_t UECFG0XData,
                                     const uint8_t UECFG1XData)
 {
+#if defined(CONTROL_ONLY_DEVICE)
+	Endpoint_SelectEndpoint(ENDPOINT_CONTROLEP);
+	Endpoint_EnableEndpoint();
+
+	UECFG1X = 0;
+	UECFG0X = UECFG0XData;
+	UECFG1X = UECFG1XData;
+
+	return Endpoint_IsConfigured();
+#else
 	uint8_t UECFG0XTemp[ENDPOINT_TOTAL_ENDPOINTS];
 	uint8_t UECFG1XTemp[ENDPOINT_TOTAL_ENDPOINTS];
 	
@@ -82,6 +92,7 @@ bool Endpoint_ConfigureEndpoint_Prv(const uint8_t Number,
 	
 	Endpoint_SelectEndpoint(Number);
 	return true;
+#endif
 }
 
 void Endpoint_ClearEndpoints(void)