diff --git a/LUFA/Drivers/USB/HighLevel/StdDescriptors.h b/LUFA/Drivers/USB/HighLevel/StdDescriptors.h
index 9e5764bcee4d724459749733bfb34eed3b72d143..19ca8aa69161789e33a2e1301fe372985ffce7bf 100644
--- a/LUFA/Drivers/USB/HighLevel/StdDescriptors.h
+++ b/LUFA/Drivers/USB/HighLevel/StdDescriptors.h
@@ -544,17 +544,17 @@
 			{
 				USB_Descriptor_Header_t Header; /**< Descriptor header, including type and size. */
 				
-				int16_t     UnicodeString[]; /**< String data, as unicode characters (alternatively,
-				                              *   string language IDs). If normal ASCII characters are
-				                              *   to be used, they must be added as an array of characters
-				                              *   rather than a normal C string so that they are widened to
-				                              *   Unicode size.
-				                              *
-				                              *   Under GCC, strings prefixed with the "L" character (before
-				                              *   the opening string quotation mark) are considered to be
-				                              *   Unicode strings, and may be used instead of an explicit
-				                              *   array of ASCII characters.
-				                              */
+				wchar_t UnicodeString[];  /**< String data, as unicode characters (alternatively,
+				                           *   string language IDs). If normal ASCII characters are
+				                           *   to be used, they must be added as an array of characters
+				                           *   rather than a normal C string so that they are widened to
+				                           *   Unicode size.
+				                           *
+				                           *   Under GCC, strings prefixed with the "L" character (before
+				                           *   the opening string quotation mark) are considered to be
+				                           *   Unicode strings, and may be used instead of an explicit
+				                           *   array of ASCII characters.
+				                           */
 			} USB_Descriptor_String_t;
 
 			/** Type define for a standard string descriptor. Unlike other standard descriptors, the length
diff --git a/LUFA/Drivers/USB/LowLevel/LowLevel.h b/LUFA/Drivers/USB/LowLevel/LowLevel.h
index 743a318ad60a649ccbaf2108930d6beb5a57ca2a..8b441c2e2e56331adec158d6772408cf464e138e 100644
--- a/LUFA/Drivers/USB/LowLevel/LowLevel.h
+++ b/LUFA/Drivers/USB/LowLevel/LowLevel.h
@@ -75,7 +75,8 @@
 		#endif
 	
 		#if (F_CLOCK == 8000000)
-			#if (defined(__AVR_AT90USB82__) || defined(__AVR_AT90USB162__))
+			#if (defined(__AVR_AT90USB82__) || defined(__AVR_AT90USB162__) || \
+			     defined(__AVR_ATMEGA8U2__) || defined(__AVR_ATMEGA16U2__))
 				#define USB_PLL_PSC                0
 			#elif (defined(__AVR_ATmega16U4__) || defined(__AVR_ATmega32U4__))
 				#define USB_PLL_PSC                0
@@ -85,7 +86,8 @@
 				#define USB_PLL_PSC                ((1 << PLLP1) | (1 << PLLP0))
 			#endif
 		#elif (F_CLOCK == 16000000)
-			#if (defined(__AVR_AT90USB82__) || defined(__AVR_AT90USB162__))
+			#if (defined(__AVR_AT90USB82__) || defined(__AVR_AT90USB162__) || \
+			     defined(__AVR_ATMEGA8U2__) || defined(__AVR_ATMEGA16U2__))
 				#define USB_PLL_PSC                (1 << PLLP0)
 			#elif (defined(__AVR_ATmega16U4__) || defined(__AVR_ATmega32U4__))
 				#define USB_PLL_PSC                (1 << PINDIV)
diff --git a/LUFA/Drivers/USB/USB.h b/LUFA/Drivers/USB/USB.h
index b40d6ab444d6ef58c368788b8ba26cd54b052a1c..0d0a3f784782b892c9e41230f230c06b45f748aa 100644
--- a/LUFA/Drivers/USB/USB.h
+++ b/LUFA/Drivers/USB/USB.h
@@ -132,19 +132,16 @@
 #ifndef __USB_H__
 #define __USB_H__
 
+	/* Includes: */
+		#include "HighLevel/USBMode.h"
+
 	/* Preprocessor Checks: */		
-		#if (!(defined(__AVR_AT90USB1287__) || defined(__AVR_AT90USB647__) ||  \
-		       defined(__AVR_AT90USB1286__) || defined(__AVR_AT90USB646__) ||  \
-			   defined(__AVR_AT90USB162__)  || defined(__AVR_AT90USB82__)  ||  \
-			   defined(__AVR_ATmega32U2__)  || defined(__AVR_ATmega16U2__) ||  \
-			   defined(__AVR_ATmega8U2__)   ||                                 \
-			   defined(__AVR_ATmega16U4__)  || defined(__AVR_ATmega32U4__) ||  \
-			   defined(__AVR_ATmega32U6__)))
+		#if (!defined(USB_SERIES_2_AVR) && !defined(USB_SERIES_4_AVR) && \
+		     !defined(USB_SERIES_6_AVR) && !defined(USB_SERIES_7_AVR))
 			#error The currently selected AVR model is not supported under the USB component of the LUFA library.
 		#endif
 		
 	/* Includes: */
-		#include "HighLevel/USBMode.h"
 		#include "HighLevel/USBTask.h"
 		#include "HighLevel/USBInterrupt.h"
 		#include "HighLevel/Events.h"
diff --git a/LUFA/ManPages/ChangeLog.txt b/LUFA/ManPages/ChangeLog.txt
index 8f7a410ffc27b267c6ef42f3a1a0f9e20125a9ff..4b37995aff9d8785b1a2ca1af16a7d50836f8b7a 100644
--- a/LUFA/ManPages/ChangeLog.txt
+++ b/LUFA/ManPages/ChangeLog.txt
@@ -40,6 +40,7 @@
   *  - Fixed host state machine not enabling Auto VBUS mode when HOST_DEVICE_SETTLE_DELAY_MS is set to zero
   *  - Fixed misnamed Pipe_SetPipeToken() macro for setting a pipe's direction
   *  - Fixed CDCHost failing on devices with bidirectional endpoints
+  *  - Fixed USB driver failing to define the PLL prescaler mask for the ATMEGA8U2 and ATMEGA16U2
   *
   *  \section Sec_ChangeLog091122 Version 091122
   *