diff --git a/LUFA/Drivers/USB/HighLevel/Events.h b/LUFA/Drivers/USB/HighLevel/Events.h
index ae7debbb73071658209d54ec31b223ca41ad51bd..f1d6f0316aed761de3e6d752057d6b9876c8991c 100644
--- a/LUFA/Drivers/USB/HighLevel/Events.h
+++ b/LUFA/Drivers/USB/HighLevel/Events.h
@@ -87,15 +87,6 @@
 	/* Public Interface - May be used in end-application: */			
 		/* Pseudo-Functions for Doxygen: */
 		#if !defined(__INCLUDE_FROM_EVENTS_C) || defined(__DOXYGEN__)
-			/** Event for USB stack initialization failure. This event fires when the USB interface fails to
-			 *  initialize correctly due to a hardware or software fault.
-			 *
-			 *  \note This event only exists on USB AVR models which support dual role modes.
-			 *
-			 *  \param[in] ErrorCode  Error code indicating the failure reason, a value in \ref USB_InitErrorCodes_t.
-			 */
-			void EVENT_USB_InitFailure(const uint8_t ErrorCode);
-
 			/** Event for USB mode pin level change. This event fires when the USB interface is set to dual role
 			 *  mode, and the UID pin level has changed to indicate a new mode (device or host). This event fires
 			 *  before the mode is switched to the newly indicated mode but after the \ref EVENT_USB_Device_Disconnect
@@ -344,7 +335,6 @@
 				void USB_Event_Stub(void) ATTR_CONST;
 					
 				#if defined(USB_CAN_BE_BOTH)
-					void EVENT_USB_InitFailure(const uint8_t ErrorCode) ATTR_WEAK ATTR_ALIAS(USB_Event_Stub);
 					void EVENT_USB_UIDChange(void) ATTR_WEAK ATTR_ALIAS(USB_Event_Stub);
 				#endif
 				
diff --git a/LUFA/Drivers/USB/LowLevel/USBController.c b/LUFA/Drivers/USB/LowLevel/USBController.c
index 7488a30035e7f8bcec56573ccead557ae0dbc118..fe62482169ecdbe1004e7d5e08c16855966488d5 100644
--- a/LUFA/Drivers/USB/LowLevel/USBController.c
+++ b/LUFA/Drivers/USB/LowLevel/USBController.c
@@ -72,16 +72,7 @@ void USB_Init(
 	#elif defined(USB_HOST_ONLY)
 	UHWCON &= ~(1 << UIMOD);
 	#elif defined(USB_CAN_BE_BOTH)
-	if (Mode == USB_MODE_UID)
-	{
-		UHWCON |=  (1 << UIDE);
-
-		USB_INT_Clear(USB_INT_IDTI);
-		USB_INT_Enable(USB_INT_IDTI);
-		
-		USB_CurrentMode = USB_GetUSBModeFromUID();
-	}
-	else if (Mode == USB_MODE_DEVICE)
+	if (Mode == USB_MODE_DEVICE)
 	{
 		UHWCON |=  (1 << UIMOD);
 	}
@@ -91,8 +82,7 @@ void USB_Init(
 	}
 	else
 	{
-		EVENT_USB_InitFailure(USB_INITERROR_NoUSBModeSpecified);
-		return;
+		UHWCON |=  (1 << UIDE);
 	}
 	#endif
 	
diff --git a/LUFA/Drivers/USB/LowLevel/USBController.h b/LUFA/Drivers/USB/LowLevel/USBController.h
index 980f818d44de1ae0544194ab9aec0fe9b6587973..8fdb24cba4479d419cf4f261a5e3d203c959bb72 100644
--- a/LUFA/Drivers/USB/LowLevel/USBController.h
+++ b/LUFA/Drivers/USB/LowLevel/USBController.h
@@ -317,17 +317,6 @@
 			 */
 			void USB_ResetInterface(void);
 
-		/* Enums: */
-			/** Enum for error codes relating to the powering on of the USB interface. These error codes are
-			 *  used in the ErrorCode parameter value of the \ref EVENT_USB_InitFailure() event.
-			 */
-			enum USB_InitErrorCodes_t
-			{
-				USB_INITERROR_NoUSBModeSpecified       = 0, /**< Indicates that \ref USB_Init() was called with an
-				                                             *   invalid or missing Mode parameter.
-				                                             */
-			};
-
 		/* Global Variables: */
 			#if (!defined(USB_HOST_ONLY) && !defined(USB_DEVICE_ONLY)) || defined(__DOXYGEN__)
 				/** Indicates the mode that the USB interface is currently initialized to. This value will be
diff --git a/LUFA/Drivers/USB/LowLevel/USBInterrupt.c b/LUFA/Drivers/USB/LowLevel/USBInterrupt.c
index 36541cf7fa6654e4802c7bb4a5151e5810aeaaae..a49b8da7b95e732da49df966ad7e73080bafbf58 100644
--- a/LUFA/Drivers/USB/LowLevel/USBInterrupt.c
+++ b/LUFA/Drivers/USB/LowLevel/USBInterrupt.c
@@ -142,8 +142,6 @@ ISR(USB_GEN_vect, ISR_BLOCK)
 		USB_INT_Disable(USB_INT_SUSPEND);
 		USB_INT_Enable(USB_INT_WAKEUP);
 
-		Endpoint_ClearEndpoints();
-
 		Endpoint_ConfigureEndpoint(ENDPOINT_CONTROLEP, EP_TYPE_CONTROL,
 		                           ENDPOINT_DIR_OUT, USB_ControlEndpointSize,
 		                           ENDPOINT_BANK_SINGLE);
diff --git a/LUFA/ManPages/ChangeLog.txt b/LUFA/ManPages/ChangeLog.txt
index 704f93e28752dbd255ddbe50d7ac5b2cd008d113..7fc73e9f2b006cf46b1772b6c47771f3f906ea4c 100644
--- a/LUFA/ManPages/ChangeLog.txt
+++ b/LUFA/ManPages/ChangeLog.txt
@@ -41,6 +41,7 @@
   *  - Changed over all demos, drivers and internal functions to use the current frame number over the Start of Frame flag where possible
   *    to free up the Start of Frame flag for interrupt use in the user application
   *  - All project makefiles now correctly clean intermediate build files from assembly and C++ sources (thanks to Daniel Czigany)
+  *  - Removed the EVENT_USB_InitFailure() event, not specifying a USB mode now defaults to UID selection mode
   *
   *  <b>Fixed:</b>
   *  - Fixed USB_GetHIDReportItemInfo() function modifying the given report item's data when the report item does not exist
diff --git a/LUFA/ManPages/MigrationInformation.txt b/LUFA/ManPages/MigrationInformation.txt
index c0efcbdc6173c70d57f0b910f315616f18fbd371..414a4a31e0bf68e23f7b27e5bf91ef034f698603 100644
--- a/LUFA/ManPages/MigrationInformation.txt
+++ b/LUFA/ManPages/MigrationInformation.txt
@@ -17,6 +17,8 @@
  *      variables.
  *    - A new USB driver source file, Drivers/USB/HighLevel/PipeStream.c now exists. This source file should be added to all
  *      project makefiles using the USB driver of LUFA, or the makefile should be updated to use the new module source variables.
+ *    - The EVENT_USB_InitFailure() event has been removed, as the USB_Init() function will no longer fail; if not USB mode is
+ *      specified, the controller will default to UID selection mode.
  *
  *  <b>Device Mode</b>
  *    - The signature for the CALLBACK_USB_GetDescriptor() callback has changed, the "void** const DescriptorAddress" parameter is