diff --git a/LUFA/Drivers/USB/LowLevel/USBController.c b/LUFA/Drivers/USB/LowLevel/USBController.c
index 49bd05b641f3764fae8790abf7d9ad197bbc9eea..f7207778c7b60c1e6a6a0a91f1ac106a88374a89 100644
--- a/LUFA/Drivers/USB/LowLevel/USBController.c
+++ b/LUFA/Drivers/USB/LowLevel/USBController.c
@@ -60,6 +60,11 @@ void USB_Init(
 	USB_Options = Options;
 	#endif
 	
+	if (!(USB_Options & USB_OPT_REG_DISABLED))
+	  USB_REG_On();
+	else
+	  USB_REG_Off();
+
 	#if defined(USB_CAN_BE_BOTH)
 	if (Mode == USB_MODE_UID)
 	{
@@ -112,11 +117,6 @@ void USB_ResetInterface(void)
 	USB_INT_ClearAllInterrupts();
 	
 	USB_Controller_Reset();
-
-	if (!(USB_Options & USB_OPT_REG_DISABLED))
-	  USB_REG_On();
-	else
-	  USB_REG_Off();
 	  
 	if (!(USB_Options & USB_OPT_MANUAL_PLL))
 	{
@@ -126,9 +126,7 @@ void USB_ResetInterface(void)
 
 		USB_PLL_On();
 		while (!(USB_PLL_IsReady()));
-	}	  
-
-	USB_CLK_Unfreeze();
+	}
 
 	#if defined(USB_CAN_BE_BOTH)
 	if (UIDModeSelectEnabled)
@@ -137,6 +135,8 @@ void USB_ResetInterface(void)
 		USB_INT_Enable(USB_INT_IDTI);
 	}
 	#endif
+
+	USB_CLK_Unfreeze();
 	
 	if (USB_CurrentMode == USB_MODE_DEVICE)
 	{
@@ -159,8 +159,6 @@ void USB_ResetInterface(void)
 	#if (defined(USB_SERIES_6_AVR) || defined(USB_SERIES_7_AVR))
 	USB_OTGPAD_On();
 	#endif
-	
-	USB_Attach();
 }
 
 #if defined(USB_CAN_BE_DEVICE)
@@ -201,10 +199,14 @@ static void USB_Init_Device(void)
 	USB_INT_Enable(USB_INT_VBUS);
 	#endif
 
-	USB_INT_Clear(USB_INT_SUSPEND);
+	Endpoint_ConfigureEndpoint(ENDPOINT_CONTROLEP, EP_TYPE_CONTROL,
+							   ENDPOINT_DIR_OUT, USB_ControlEndpointSize,
+							   ENDPOINT_BANK_SINGLE);		
+
 	USB_INT_Enable(USB_INT_SUSPEND);
-	USB_INT_Clear(USB_INT_EORSTI);
 	USB_INT_Enable(USB_INT_EORSTI);
+
+	USB_Attach();
 }
 #endif