diff --git a/Bootloaders/CDC/Descriptors.c b/Bootloaders/CDC/Descriptors.c
index 06088d8f7946966376abc9d66c0fd5d639ab9d5b..11b2e375d46d74c6e0f6bb9f0aef1c0c0d6b2f47 100644
--- a/Bootloaders/CDC/Descriptors.c
+++ b/Bootloaders/CDC/Descriptors.c
@@ -203,7 +203,7 @@ USB_Descriptor_String_t ProductString =
 	.UnicodeString          = L"AVR CDC Bootloader"
 };
 
-/** This function is called by the library when in device mode, and must be overridden (see StdDescriptors.h
+/** This function is called by the library when in device mode, and must be overridden (see LUFA library "USB Descriptors"
  *  documentation) by the application code so that the address and size of a requested descriptor can be given
  *  to the USB library. When the device receives a Get Descriptor request on the control endpoint, this function
  *  is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the
diff --git a/Bootloaders/CDC/makefile b/Bootloaders/CDC/makefile
index 39a7a7da46e410e0a39276cfe486c4b42cf4ac28..0eecb18f87d532da1c7d74f8156f1a0944fd0d9e 100644
--- a/Bootloaders/CDC/makefile
+++ b/Bootloaders/CDC/makefile
@@ -51,7 +51,7 @@
 MCU = at90usb1287
 
 
-# Target board (see library BoardTypes.h documentation, USER or blank for projects not requiring
+# Target board (see library "Board Types" documentation, USER or blank for projects not requiring
 # LUFA board drivers). If USER is selected, put custom board drivers in a directory called 
 # "Board" inside the application directory.
 BOARD  = USBKEY
diff --git a/Bootloaders/DFU/Descriptors.c b/Bootloaders/DFU/Descriptors.c
index 3e8978a924c05d69b0bcb302eeb8057467e59490..94f7404c6edbad4fed2dab128d5276a2fe5d950d 100644
--- a/Bootloaders/DFU/Descriptors.c
+++ b/Bootloaders/DFU/Descriptors.c
@@ -137,7 +137,7 @@ USB_Descriptor_String_t ProductString =
 	.UnicodeString          = L"AVR DFU Bootloader"
 };
 
-/** This function is called by the library when in device mode, and must be overridden (see StdDescriptors.h
+/** This function is called by the library when in device mode, and must be overridden (see library "USB Descriptors"
  *  documentation) by the application code so that the address and size of a requested descriptor can be given
  *  to the USB library. When the device receives a Get Descriptor request on the control endpoint, this function
  *  is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the
diff --git a/Bootloaders/DFU/makefile b/Bootloaders/DFU/makefile
index 5b225b4db175d89808cda3495471daab38dcd5f8..124ea58c572d3f51c0701c9ad3c31327909b5897 100644
--- a/Bootloaders/DFU/makefile
+++ b/Bootloaders/DFU/makefile
@@ -51,7 +51,7 @@
 MCU = at90usb1287
 
 
-# Target board (see library BoardTypes.h documentation, USER or blank for projects not requiring
+# Target board (see library "Board Types" documentation, USER or blank for projects not requiring
 # LUFA board drivers). If USER is selected, put custom board drivers in a directory called 
 # "Board" inside the application directory.
 BOARD = USBKEY
diff --git a/Bootloaders/TeensyHID/Descriptors.c b/Bootloaders/TeensyHID/Descriptors.c
index 508dfb73a963af4c1ae65a1392901827cff78d8e..fc7f51c6c409e47ff92d16315752685683a94cf6 100644
--- a/Bootloaders/TeensyHID/Descriptors.c
+++ b/Bootloaders/TeensyHID/Descriptors.c
@@ -166,7 +166,7 @@ USB_Descriptor_String_t ProductString =
 	.UnicodeString          = L"AVR Teensy Bootloader"
 };
 
-/** This function is called by the library when in device mode, and must be overridden (see StdDescriptors.h
+/** This function is called by the library when in device mode, and must be overridden (see library "USB Descriptors"
  *  documentation) by the application code so that the address and size of a requested descriptor can be given
  *  to the USB library. When the device receives a Get Descriptor request on the control endpoint, this function
  *  is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the
diff --git a/Bootloaders/TeensyHID/makefile b/Bootloaders/TeensyHID/makefile
index 48c4d1ee985df72e03663421280a9f431d791488..bff9e11da9577fbaa9b14516961e118ce248c251 100644
--- a/Bootloaders/TeensyHID/makefile
+++ b/Bootloaders/TeensyHID/makefile
@@ -51,7 +51,7 @@
 MCU = at90usb162
 
 
-# Target board (see library BoardTypes.h documentation, USER or blank for projects not requiring
+# Target board (see library "Board Types" documentation, USER or blank for projects not requiring
 # LUFA board drivers). If USER is selected, put custom board drivers in a directory called 
 # "Board" inside the application directory.
 BOARD  = USBKEY
diff --git a/Demos/Device/AudioInput/Descriptors.c b/Demos/Device/AudioInput/Descriptors.c
index 0a0ef020579a91d4258f920b00e26c9d551d2336..f15757ef6e407a6383529d467300be0c9b52ca9e 100644
--- a/Demos/Device/AudioInput/Descriptors.c
+++ b/Demos/Device/AudioInput/Descriptors.c
@@ -265,7 +265,7 @@ USB_Descriptor_String_t PROGMEM ProductString =
 	.UnicodeString          = L"LUFA Audio In Demo"
 };
 
-/** This function is called by the library when in device mode, and must be overridden (see StdDescriptors.h
+/** This function is called by the library when in device mode, and must be overridden (see library "USB Descriptors"
  *  documentation) by the application code so that the address and size of a requested descriptor can be given
  *  to the USB library. When the device receives a Get Descriptor request on the control endpoint, this function
  *  is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the
diff --git a/Demos/Device/AudioInput/makefile b/Demos/Device/AudioInput/makefile
index 4b3938a79012f556d6006585827af7bee5f28f0e..aca88cb8754e3017cf43d464727b849f20a1043a 100644
--- a/Demos/Device/AudioInput/makefile
+++ b/Demos/Device/AudioInput/makefile
@@ -63,7 +63,7 @@
 MCU = at90usb1287
 
 
-# Target board (see library BoardTypes.h documentation, USER or blank for projects not requiring
+# Target board (see library "Board Types" documentation, USER or blank for projects not requiring
 # LUFA board drivers). If USER is selected, put custom board drivers in a directory called 
 # "Board" inside the application directory.
 BOARD  = USBKEY
diff --git a/Demos/Device/AudioOutput/Descriptors.c b/Demos/Device/AudioOutput/Descriptors.c
index 9da69f19840814364d51f82a59a3bcd515e4763f..ba89b84afd5bc6bb7aa7cf3fa822c7011bd8475c 100644
--- a/Demos/Device/AudioOutput/Descriptors.c
+++ b/Demos/Device/AudioOutput/Descriptors.c
@@ -265,7 +265,7 @@ USB_Descriptor_String_t PROGMEM ProductString =
 	.UnicodeString          = L"LUFA Audio Out Demo"
 };
 
-/** This function is called by the library when in device mode, and must be overridden (see StdDescriptors.h
+/** This function is called by the library when in device mode, and must be overridden (see library "USB Descriptors"
  *  documentation) by the application code so that the address and size of a requested descriptor can be given
  *  to the USB library. When the device receives a Get Descriptor request on the control endpoint, this function
  *  is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the
diff --git a/Demos/Device/AudioOutput/makefile b/Demos/Device/AudioOutput/makefile
index bb609afd4a5e7d3c9c30e5ca106fbf6f35a4973c..0a6401b70febdea4606ad6791ff87cc2f01af9af 100644
--- a/Demos/Device/AudioOutput/makefile
+++ b/Demos/Device/AudioOutput/makefile
@@ -63,7 +63,7 @@
 MCU = at90usb1287
 
 
-# Target board (see library BoardTypes.h documentation, USER or blank for projects not requiring
+# Target board (see library "Board Types" documentation, USER or blank for projects not requiring
 # LUFA board drivers). If USER is selected, put custom board drivers in a directory called 
 # "Board" inside the application directory.
 BOARD  = USBKEY
diff --git a/Demos/Device/CDC/Descriptors.c b/Demos/Device/CDC/Descriptors.c
index 3618b8de7772b5e09eb9bb5c7465bf8d1a34fe3c..70c885fe5e6696ea97fbd9b11109e2e5989dc4d4 100644
--- a/Demos/Device/CDC/Descriptors.c
+++ b/Demos/Device/CDC/Descriptors.c
@@ -214,7 +214,7 @@ USB_Descriptor_String_t PROGMEM ProductString =
 	.UnicodeString          = L"LUFA CDC Demo"
 };
 
-/** This function is called by the library when in device mode, and must be overridden (see StdDescriptors.h
+/** This function is called by the library when in device mode, and must be overridden (see library "USB Descriptors"
  *  documentation) by the application code so that the address and size of a requested descriptor can be given
  *  to the USB library. When the device receives a Get Descriptor request on the control endpoint, this function
  *  is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the
diff --git a/Demos/Device/CDC/makefile b/Demos/Device/CDC/makefile
index 3a0ebb1c1eaedbc4b075bf5dc4e588dcca4a0ab7..ce2436eb8638cc3ed363850f35a658e953b64b8d 100644
--- a/Demos/Device/CDC/makefile
+++ b/Demos/Device/CDC/makefile
@@ -63,7 +63,7 @@
 MCU = at90usb1287
 
 
-# Target board (see library BoardTypes.h documentation, USER or blank for projects not requiring
+# Target board (see library "Board Types" documentation, USER or blank for projects not requiring
 # LUFA board drivers). If USER is selected, put custom board drivers in a directory called 
 # "Board" inside the application directory.
 BOARD  = USBKEY
diff --git a/Demos/Device/DualCDC/Descriptors.c b/Demos/Device/DualCDC/Descriptors.c
index d88fe98e7f64c07a405ac9614a325d5c4c85cff4..b128b4f48dec0d4687fda474a673f19474bb0084 100644
--- a/Demos/Device/DualCDC/Descriptors.c
+++ b/Demos/Device/DualCDC/Descriptors.c
@@ -336,7 +336,7 @@ USB_Descriptor_String_t PROGMEM ProductString =
 	.UnicodeString          = L"LUFA Dual CDC Demo"
 };
 
-/** This function is called by the library when in device mode, and must be overridden (see StdDescriptors.h
+/** This function is called by the library when in device mode, and must be overridden (see library "USB Descriptors"
  *  documentation) by the application code so that the address and size of a requested descriptor can be given
  *  to the USB library. When the device receives a Get Descriptor request on the control endpoint, this function
  *  is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the
diff --git a/Demos/Device/DualCDC/makefile b/Demos/Device/DualCDC/makefile
index 115a8f251eb951278946da09b76481bfe2346718..fc0005d668f1f26c176619a5b11a412336915506 100644
--- a/Demos/Device/DualCDC/makefile
+++ b/Demos/Device/DualCDC/makefile
@@ -63,7 +63,7 @@
 MCU = at90usb1287
 
 
-# Target board (see library BoardTypes.h documentation, USER or blank for projects not requiring
+# Target board (see library "Board Types" documentation, USER or blank for projects not requiring
 # LUFA board drivers). If USER is selected, put custom board drivers in a directory called 
 # "Board" inside the application directory.
 BOARD  = USBKEY
diff --git a/Demos/Device/GenericHID/Descriptors.c b/Demos/Device/GenericHID/Descriptors.c
index 30b0c5365d9e53d05bae6c6d8f05004e6a2ba510..a14fc5050de92ff8877e0dbece6b824f46864426 100644
--- a/Demos/Device/GenericHID/Descriptors.c
+++ b/Demos/Device/GenericHID/Descriptors.c
@@ -193,7 +193,7 @@ USB_Descriptor_String_t PROGMEM ProductString =
 	.UnicodeString          = L"LUFA Generic HID Demo"
 };
 
-/** This function is called by the library when in device mode, and must be overridden (see StdDescriptors.h
+/** This function is called by the library when in device mode, and must be overridden (see library "USB Descriptors"
  *  documentation) by the application code so that the address and size of a requested descriptor can be given
  *  to the USB library. When the device receives a Get Descriptor request on the control endpoint, this function
  *  is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the
diff --git a/Demos/Device/GenericHID/makefile b/Demos/Device/GenericHID/makefile
index 74beb28b8fb2720388e4b1d4dba1c832f59698e9..23d27911cf8ee2c6b4ae69e554b5327b8f51e48c 100644
--- a/Demos/Device/GenericHID/makefile
+++ b/Demos/Device/GenericHID/makefile
@@ -63,7 +63,7 @@
 MCU = at90usb1287
 
 
-# Target board (see library BoardTypes.h documentation, USER or blank for projects not requiring
+# Target board (see library "Board Types" documentation, USER or blank for projects not requiring
 # LUFA board drivers). If USER is selected, put custom board drivers in a directory called 
 # "Board" inside the application directory.
 BOARD  = USBKEY
diff --git a/Demos/Device/Joystick/Descriptors.c b/Demos/Device/Joystick/Descriptors.c
index 8567aede1214c8ecb31430af3a6e92a765747ddf..f1cf8d5c671446d8e78f3fd4d9d999e2abcbebfd 100644
--- a/Demos/Device/Joystick/Descriptors.c
+++ b/Demos/Device/Joystick/Descriptors.c
@@ -193,7 +193,7 @@ USB_Descriptor_String_t PROGMEM ProductString =
 	.UnicodeString          = L"LUFA Joystick Demo"
 };
 
-/** This function is called by the library when in device mode, and must be overridden (see StdDescriptors.h
+/** This function is called by the library when in device mode, and must be overridden (see library "USB Descriptors"
  *  documentation) by the application code so that the address and size of a requested descriptor can be given
  *  to the USB library. When the device receives a Get Descriptor request on the control endpoint, this function
  *  is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the
diff --git a/Demos/Device/Joystick/makefile b/Demos/Device/Joystick/makefile
index ce67e58baf23eacd2d34166041081ba927fb3c8a..9ab8ec274b4ee96aa1cbcbac9ebf32a1899e7907 100644
--- a/Demos/Device/Joystick/makefile
+++ b/Demos/Device/Joystick/makefile
@@ -63,7 +63,7 @@
 MCU = at90usb1287
 
 
-# Target board (see library BoardTypes.h documentation, USER or blank for projects not requiring
+# Target board (see library "Board Types" documentation, USER or blank for projects not requiring
 # LUFA board drivers). If USER is selected, put custom board drivers in a directory called 
 # "Board" inside the application directory.
 BOARD  = USBKEY
diff --git a/Demos/Device/Keyboard/Descriptors.c b/Demos/Device/Keyboard/Descriptors.c
index 8d60bd8adf87832fc6963877e33738c1469bab6c..69300eb9b3a5122ad95af902faa817fbde0a66bd 100644
--- a/Demos/Device/Keyboard/Descriptors.c
+++ b/Demos/Device/Keyboard/Descriptors.c
@@ -210,7 +210,7 @@ USB_Descriptor_String_t PROGMEM ProductString =
 	.UnicodeString          = L"LUFA Keyboard Demo"
 };
 
-/** This function is called by the library when in device mode, and must be overridden (see StdDescriptors.h
+/** This function is called by the library when in device mode, and must be overridden (see library "USB Descriptors"
  *  documentation) by the application code so that the address and size of a requested descriptor can be given
  *  to the USB library. When the device receives a Get Descriptor request on the control endpoint, this function
  *  is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the
diff --git a/Demos/Device/Keyboard/makefile b/Demos/Device/Keyboard/makefile
index 627e66108d82e84106666d2d352ed1882e13e093..bacf6dc5760afa3e049a5b7cdd2f12893087cb2e 100644
--- a/Demos/Device/Keyboard/makefile
+++ b/Demos/Device/Keyboard/makefile
@@ -63,7 +63,7 @@
 MCU = at90usb1287
 
 
-# Target board (see library BoardTypes.h documentation, USER or blank for projects not requiring
+# Target board (see library "Board Types" documentation, USER or blank for projects not requiring
 # LUFA board drivers). If USER is selected, put custom board drivers in a directory called 
 # "Board" inside the application directory.
 BOARD  = USBKEY
diff --git a/Demos/Device/KeyboardMouse/Descriptors.c b/Demos/Device/KeyboardMouse/Descriptors.c
index 0b13ac4097f28c844c78305d050e7446240f3cf7..bcb0bf93ba510d149e054527fed5ff556f6d345c 100644
--- a/Demos/Device/KeyboardMouse/Descriptors.c
+++ b/Demos/Device/KeyboardMouse/Descriptors.c
@@ -280,7 +280,7 @@ USB_Descriptor_String_t PROGMEM ProductString =
 	.UnicodeString          = L"LUFA Mouse and Keyboard Demo"
 };
 
-/** This function is called by the library when in device mode, and must be overridden (see StdDescriptors.h
+/** This function is called by the library when in device mode, and must be overridden (see library "USB Descriptors"
  *  documentation) by the application code so that the address and size of a requested descriptor can be given
  *  to the USB library. When the device receives a Get Descriptor request on the control endpoint, this function
  *  is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the
diff --git a/Demos/Device/KeyboardMouse/makefile b/Demos/Device/KeyboardMouse/makefile
index 1c239ba30c0e6900d53303f70268d41cfe9df86b..e48399877728b09fd7e81003cab1388527551f41 100644
--- a/Demos/Device/KeyboardMouse/makefile
+++ b/Demos/Device/KeyboardMouse/makefile
@@ -63,7 +63,7 @@
 MCU = at90usb1287
 
 
-# Target board (see library BoardTypes.h documentation, USER or blank for projects not requiring
+# Target board (see library "Board Types" documentation, USER or blank for projects not requiring
 # LUFA board drivers). If USER is selected, put custom board drivers in a directory called 
 # "Board" inside the application directory.
 BOARD  = USBKEY
diff --git a/Demos/Device/MIDI/Descriptors.c b/Demos/Device/MIDI/Descriptors.c
index 7b819cb320feaca7768ad17a62013f459b0d335b..51b54cddb7ff3993e0f299e48da3d7149d2e5e36 100644
--- a/Demos/Device/MIDI/Descriptors.c
+++ b/Demos/Device/MIDI/Descriptors.c
@@ -276,7 +276,7 @@ USB_Descriptor_String_t PROGMEM ProductString =
 	.UnicodeString          = L"LUFA MIDI Demo"
 };
 
-/** This function is called by the library when in device mode, and must be overridden (see StdDescriptors.h
+/** This function is called by the library when in device mode, and must be overridden (see library "USB Descriptors"
  *  documentation) by the application code so that the address and size of a requested descriptor can be given
  *  to the USB library. When the device receives a Get Descriptor request on the control endpoint, this function
  *  is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the
diff --git a/Demos/Device/MIDI/makefile b/Demos/Device/MIDI/makefile
index 11a9f3623c8eb0eafbc9ec90bfa34a51cf51f3fa..1ad946e763d55d812fab8c3b086ef03de4c03a48 100644
--- a/Demos/Device/MIDI/makefile
+++ b/Demos/Device/MIDI/makefile
@@ -63,7 +63,7 @@
 MCU = at90usb1287
 
 
-# Target board (see library BoardTypes.h documentation, USER or blank for projects not requiring
+# Target board (see library "Board Types" documentation, USER or blank for projects not requiring
 # LUFA board drivers). If USER is selected, put custom board drivers in a directory called 
 # "Board" inside the application directory.
 BOARD  = USBKEY
diff --git a/Demos/Device/MassStorage/Descriptors.c b/Demos/Device/MassStorage/Descriptors.c
index b4297eb37a989d7a206396066b95438ee4393882..dbb16d1de1758d5f6c31bedbb0f67b7f2372e14d 100644
--- a/Demos/Device/MassStorage/Descriptors.c
+++ b/Demos/Device/MassStorage/Descriptors.c
@@ -170,7 +170,7 @@ USB_Descriptor_String_t PROGMEM SerialNumberString =
 	.UnicodeString          = L"000000000000"
 };
 
-/** This function is called by the library when in device mode, and must be overridden (see StdDescriptors.h
+/** This function is called by the library when in device mode, and must be overridden (see library "USB Descriptors"
  *  documentation) by the application code so that the address and size of a requested descriptor can be given
  *  to the USB library. When the device receives a Get Descriptor request on the control endpoint, this function
  *  is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the
diff --git a/Demos/Device/MassStorage/makefile b/Demos/Device/MassStorage/makefile
index faee640b0c783dfe4c05f49924e8f05c80b400a9..3115aae161c8a47d23e441f590900fe65f6d8373 100644
--- a/Demos/Device/MassStorage/makefile
+++ b/Demos/Device/MassStorage/makefile
@@ -63,7 +63,7 @@
 MCU = at90usb1287
 
 
-# Target board (see library BoardTypes.h documentation, USER or blank for projects not requiring
+# Target board (see library "Board Types" documentation, USER or blank for projects not requiring
 # LUFA board drivers). If USER is selected, put custom board drivers in a directory called 
 # "Board" inside the application directory.
 BOARD  = USBKEY
diff --git a/Demos/Device/Mouse/Descriptors.c b/Demos/Device/Mouse/Descriptors.c
index 40ad01c76c648b5558164f3babce6e19a0ad856b..e58e9978874c83417e6aeb10bfa693013993c630 100644
--- a/Demos/Device/Mouse/Descriptors.c
+++ b/Demos/Device/Mouse/Descriptors.c
@@ -193,7 +193,7 @@ USB_Descriptor_String_t PROGMEM ProductString =
 	.UnicodeString          = L"LUFA Mouse Demo"
 };
 
-/** This function is called by the library when in device mode, and must be overridden (see StdDescriptors.h
+/** This function is called by the library when in device mode, and must be overridden (see library "USB Descriptors"
  *  documentation) by the application code so that the address and size of a requested descriptor can be given
  *  to the USB library. When the device receives a Get Descriptor request on the control endpoint, this function
  *  is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the
diff --git a/Demos/Device/Mouse/makefile b/Demos/Device/Mouse/makefile
index f7e4d89da6f45c604c4f785ae5f4d5c95f766b93..3fa887b7b588bb5d976b3bd65701a42d694614b9 100644
--- a/Demos/Device/Mouse/makefile
+++ b/Demos/Device/Mouse/makefile
@@ -63,7 +63,7 @@
 MCU = at90usb1287
 
 
-# Target board (see library BoardTypes.h documentation, USER or blank for projects not requiring
+# Target board (see library "Board Types" documentation, USER or blank for projects not requiring
 # LUFA board drivers). If USER is selected, put custom board drivers in a directory called 
 # "Board" inside the application directory.
 BOARD  = USBKEY
diff --git a/Demos/Device/RNDISEthernet/Descriptors.c b/Demos/Device/RNDISEthernet/Descriptors.c
index 1e084be0368f9e286995dbb893ed6c7fc4a0c8d2..93281f1de03ee748f61bbc1e28ed9667ef945bca 100644
--- a/Demos/Device/RNDISEthernet/Descriptors.c
+++ b/Demos/Device/RNDISEthernet/Descriptors.c
@@ -214,7 +214,7 @@ USB_Descriptor_String_t PROGMEM ProductString =
 	.UnicodeString          = L"LUFA RNDIS CDC Demo"
 };
 
-/** This function is called by the library when in device mode, and must be overridden (see StdDescriptors.h
+/** This function is called by the library when in device mode, and must be overridden (see library "USB Descriptors"
  *  documentation) by the application code so that the address and size of a requested descriptor can be given
  *  to the USB library. When the device receives a Get Descriptor request on the control endpoint, this function
  *  is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the
diff --git a/Demos/Device/RNDISEthernet/makefile b/Demos/Device/RNDISEthernet/makefile
index 0954c283f682b826910a19da1b92746256146e37..7a9722bbf2c49f2f12ccd15a69ca36952ab367eb 100644
--- a/Demos/Device/RNDISEthernet/makefile
+++ b/Demos/Device/RNDISEthernet/makefile
@@ -63,7 +63,7 @@
 MCU = at90usb1287
 
 
-# Target board (see library BoardTypes.h documentation, USER or blank for projects not requiring
+# Target board (see library "Board Types" documentation, USER or blank for projects not requiring
 # LUFA board drivers). If USER is selected, put custom board drivers in a directory called 
 # "Board" inside the application directory.
 BOARD  = USBKEY
diff --git a/Demos/Device/USBtoSerial/Descriptors.c b/Demos/Device/USBtoSerial/Descriptors.c
index 3e2f3799336d65b0e2def24f8f5e5eb91b33e0b2..26ba2c77b462dfdfbc6d15aea7b0699ba2899fc8 100644
--- a/Demos/Device/USBtoSerial/Descriptors.c
+++ b/Demos/Device/USBtoSerial/Descriptors.c
@@ -214,7 +214,7 @@ USB_Descriptor_String_t PROGMEM ProductString =
 	.UnicodeString          = L"LUFA USB-RS232 Demo"
 };
 
-/** This function is called by the library when in device mode, and must be overridden (see StdDescriptors.h
+/** This function is called by the library when in device mode, and must be overridden (see library "USB Descriptors"
  *  documentation) by the application code so that the address and size of a requested descriptor can be given
  *  to the USB library. When the device receives a Get Descriptor request on the control endpoint, this function
  *  is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the
diff --git a/Demos/Device/USBtoSerial/makefile b/Demos/Device/USBtoSerial/makefile
index 189741a99bb6dbf9a4375e28ec706bb5b9e369f0..6f7f64182f230db19e23643ade338953a8802af3 100644
--- a/Demos/Device/USBtoSerial/makefile
+++ b/Demos/Device/USBtoSerial/makefile
@@ -63,7 +63,7 @@
 MCU = at90usb1287
 
 
-# Target board (see library BoardTypes.h documentation, USER or blank for projects not requiring
+# Target board (see library "Board Types" documentation, USER or blank for projects not requiring
 # LUFA board drivers). If USER is selected, put custom board drivers in a directory called 
 # "Board" inside the application directory.
 BOARD  = USBKEY
diff --git a/Demos/Host/CDCHost/makefile b/Demos/Host/CDCHost/makefile
index 954fc583fff52a309d525c44449a14d8483991ce..ecd6269defad35601ace9588d63fd76efda60032 100644
--- a/Demos/Host/CDCHost/makefile
+++ b/Demos/Host/CDCHost/makefile
@@ -63,7 +63,7 @@
 MCU = at90usb1287
 
 
-# Target board (see library BoardTypes.h documentation, USER or blank for projects not requiring
+# Target board (see library "Board Types" documentation, USER or blank for projects not requiring
 # LUFA board drivers). If USER is selected, put custom board drivers in a directory called 
 # "Board" inside the application directory.
 BOARD  = USBKEY
diff --git a/Demos/Host/GenericHIDHost/makefile b/Demos/Host/GenericHIDHost/makefile
index 1b0f6d23284fc318b9aefc0cda609295c3b85c92..d261da92751644270cfdfd86110a88ec325a3b73 100644
--- a/Demos/Host/GenericHIDHost/makefile
+++ b/Demos/Host/GenericHIDHost/makefile
@@ -63,7 +63,7 @@
 MCU = at90usb1287
 
 
-# Target board (see library BoardTypes.h documentation, USER or blank for projects not requiring
+# Target board (see library "Board Types" documentation, USER or blank for projects not requiring
 # LUFA board drivers). If USER is selected, put custom board drivers in a directory called 
 # "Board" inside the application directory.
 BOARD  = USBKEY
diff --git a/Demos/Host/KeyboardHost/makefile b/Demos/Host/KeyboardHost/makefile
index 47acfa6bce5183bba4a2d5539ba8e25dbe032363..e304974e243394a54c2c270cf8d177838b7fbb28 100644
--- a/Demos/Host/KeyboardHost/makefile
+++ b/Demos/Host/KeyboardHost/makefile
@@ -63,7 +63,7 @@
 MCU = at90usb1287
 
 
-# Target board (see library BoardTypes.h documentation, USER or blank for projects not requiring
+# Target board (see library "Board Types" documentation, USER or blank for projects not requiring
 # LUFA board drivers). If USER is selected, put custom board drivers in a directory called 
 # "Board" inside the application directory.
 BOARD  = USBKEY
diff --git a/Demos/Host/KeyboardHostWithParser/makefile b/Demos/Host/KeyboardHostWithParser/makefile
index 0e6658c33160501a0f43daf8460e02fcdfeff909..ad8f072539fbd0328946028b1396006189256a1f 100644
--- a/Demos/Host/KeyboardHostWithParser/makefile
+++ b/Demos/Host/KeyboardHostWithParser/makefile
@@ -63,7 +63,7 @@
 MCU = at90usb1287
 
 
-# Target board (see library BoardTypes.h documentation, USER or blank for projects not requiring
+# Target board (see library "Board Types" documentation, USER or blank for projects not requiring
 # LUFA board drivers). If USER is selected, put custom board drivers in a directory called 
 # "Board" inside the application directory.
 BOARD  = USBKEY
diff --git a/Demos/Host/MassStorageHost/makefile b/Demos/Host/MassStorageHost/makefile
index 849511443ffcab5aff62bf5fa9dd8c75c38e5c15..6987794bc9350fd4c5153f816657315772d5c99e 100644
--- a/Demos/Host/MassStorageHost/makefile
+++ b/Demos/Host/MassStorageHost/makefile
@@ -63,7 +63,7 @@
 MCU = at90usb1287
 
 
-# Target board (see library BoardTypes.h documentation, USER or blank for projects not requiring
+# Target board (see library "Board Types" documentation, USER or blank for projects not requiring
 # LUFA board drivers). If USER is selected, put custom board drivers in a directory called 
 # "Board" inside the application directory.
 BOARD  = USBKEY
diff --git a/Demos/Host/MouseHost/makefile b/Demos/Host/MouseHost/makefile
index 5ab0338eaef65827a023e05b18d438bc10fc56b8..1cfba959a1583b498282a6f60ca7771c1b27d570 100644
--- a/Demos/Host/MouseHost/makefile
+++ b/Demos/Host/MouseHost/makefile
@@ -63,7 +63,7 @@
 MCU = at90usb1287
 
 
-# Target board (see library BoardTypes.h documentation, USER or blank for projects not requiring
+# Target board (see library "Board Types" documentation, USER or blank for projects not requiring
 # LUFA board drivers). If USER is selected, put custom board drivers in a directory called 
 # "Board" inside the application directory.
 BOARD  = USBKEY
diff --git a/Demos/Host/MouseHostWithParser/makefile b/Demos/Host/MouseHostWithParser/makefile
index d2f06a21235bdbbdd4e83c6c769c18ac47ebeeac..4e1aa90b49277bfa8ff65371ec03729df2bd478c 100644
--- a/Demos/Host/MouseHostWithParser/makefile
+++ b/Demos/Host/MouseHostWithParser/makefile
@@ -63,7 +63,7 @@
 MCU = at90usb1287
 
 
-# Target board (see library BoardTypes.h documentation, USER or blank for projects not requiring
+# Target board (see library "Board Types" documentation, USER or blank for projects not requiring
 # LUFA board drivers). If USER is selected, put custom board drivers in a directory called 
 # "Board" inside the application directory.
 BOARD  = USBKEY
diff --git a/Demos/Host/StillImageHost/makefile b/Demos/Host/StillImageHost/makefile
index 16ec64954b0df0e0e407004a7be9e006bcd91cef..f78d66c034e0bd4aa75d78908aa1df94a18cf3f5 100644
--- a/Demos/Host/StillImageHost/makefile
+++ b/Demos/Host/StillImageHost/makefile
@@ -62,7 +62,7 @@
 MCU = at90usb1287
 
 
-# Target board (see library BoardTypes.h documentation, USER or blank for projects not requiring
+# Target board (see library "Board Types" documentation, USER or blank for projects not requiring
 # LUFA board drivers). If USER is selected, put custom board drivers in a directory called 
 # "Board" inside the application directory.
 BOARD  = USBKEY
diff --git a/Demos/OTG/TestApp/Descriptors.c b/Demos/OTG/TestApp/Descriptors.c
index caf6c9107e4788815ad42cb295bfe5115c873978..96a07043900d1771ac0c0289e2a7cf290106435c 100644
--- a/Demos/OTG/TestApp/Descriptors.c
+++ b/Demos/OTG/TestApp/Descriptors.c
@@ -138,7 +138,7 @@ USB_Descriptor_String_t PROGMEM ProductString =
 	.UnicodeString          = L"LUFA Demo"
 };
 
-/** This function is called by the library when in device mode, and must be overridden (see StdDescriptors.h
+/** This function is called by the library when in device mode, and must be overridden (see library "USB Descriptors"
  *  documentation) by the application code so that the address and size of a requested descriptor can be given
  *  to the USB library. When the device receives a Get Descriptor request on the control endpoint, this function
  *  is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the
diff --git a/Demos/OTG/TestApp/TestEvents.c b/Demos/OTG/TestApp/TestEvents.c
index b1530128b1c7cf8a75ccbaad3a48afe28b1065cf..884e5b680b8d72b7c950326f2ca2848adff4b775 100644
--- a/Demos/OTG/TestApp/TestEvents.c
+++ b/Demos/OTG/TestApp/TestEvents.c
@@ -31,7 +31,7 @@
 /** \file
  *
  *  This file contains dummy handlers for all the possible USB events passed to the
- *  application by the library (see Events.h documentation for more details on USB events).
+ *  application by the library (see \ref Group_Events documentation for more details on USB events).
  *
  *  Each event is caught and printed to the USART so that they may be monitored.
  */
diff --git a/Demos/OTG/TestApp/makefile b/Demos/OTG/TestApp/makefile
index 43981a4f23317ee201972bcd6e5425f731801102..0ff49b6b9a852388bb1b7c502e94e5002620b579 100644
--- a/Demos/OTG/TestApp/makefile
+++ b/Demos/OTG/TestApp/makefile
@@ -63,7 +63,7 @@
 MCU = at90usb1287
 
 
-# Target board (see library BoardTypes.h documentation, USER or blank for projects not requiring
+# Target board (see library "Board Types" documentation, USER or blank for projects not requiring
 # LUFA board drivers). If USER is selected, put custom board drivers in a directory called 
 # "Board" inside the application directory.
 BOARD  = USBKEY
diff --git a/LUFA/ChangeLog.txt b/LUFA/ChangeLog.txt
index 19b311cdd09a819f0324ac47f6e8a025d71eae5a..2c40ba8e3d6df773d362b8e9e7217fe3e88f4310 100644
--- a/LUFA/ChangeLog.txt
+++ b/LUFA/ChangeLog.txt
@@ -42,7 +42,7 @@
   *    renamed to Endpoint_ClearSETUP(), the Pipe_IsSetupSent() macro has been renamed to Pipe_IsSETUPSent() and the
   *    Pipe_ClearSetupSent() macro is no longer applicable and should be removed - changes made to compliment the new endpoint and pipe
   *    bank management API
-  *  - Updated all demos, bootloaders and projects to use the new endpoint and pipe management APIs (thanks to Roman Thiel (Curetis AG))
+  *  - Updated all demos, bootloaders and projects to use the new endpoint and pipe management APIs (thanks to Roman Thiel from Curetis AG)
   *  - Updated library doxygen documentation, added groups, changed documentation macro functions to real functions for clarity
   *  - Removed old endpoint and pipe aliased read/write/discard routines which did not have an explicit endian specifier for clarity
   *  - Removed the ButtLoadTag.h header file, as no one used for its intended purpose anyway
@@ -72,6 +72,8 @@
   *  - Fixed PREVENT ALLOW MEDIUM REMOVAL command issuing in the MassStorageHost demo using incorrect parameters (thanks to Mike Alex)
   *  - Fixed MassStorageHost demo broken due to an incorrect if statement test in MassStore_GetReturnedStatus()
   *  - Fixed reversed signature byte ordering in the CDC bootloader (thanks to Johannes Raschke)
+  *  - Changed PIPE_CONTROLPIPE_DEFAULT_SIZE from 8 to 64 to try to prevent problems with faulty devices which do not respect the given
+  *    wLength value when reading in the device descriptor
   *    
   *
   *  \section Sec_ChangeLog090401 Version 090401
diff --git a/LUFA/Doxygen.conf b/LUFA/Doxygen.conf
index 3b94c4bac57ca8026c3a1351184b8a016c77990b..afc46813f84c3fe2d337a9f2e584645a65a9d795 100644
--- a/LUFA/Doxygen.conf
+++ b/LUFA/Doxygen.conf
@@ -475,7 +475,7 @@ SHOW_DIRECTORIES       = YES
 # This will remove the Files entry from the Quick Index and from the 
 # Folder Tree View (if specified). The default is YES.
 
-SHOW_FILES             = YES
+SHOW_FILES             = NO
 
 # Set the SHOW_NAMESPACES tag to NO to disable the generation of the 
 # Namespaces page.  This will remove the Namespaces entry from the Quick Index
diff --git a/LUFA/Drivers/Board/Temperature.h b/LUFA/Drivers/Board/Temperature.h
index 30c311f83cdfeb081cc7522f05eec4a12a7e9a47..db2643c1d3c7676b94243b972822203c931ac8ae 100644
--- a/LUFA/Drivers/Board/Temperature.h
+++ b/LUFA/Drivers/Board/Temperature.h
@@ -61,7 +61,7 @@
 		#include "../Peripheral/ADC.h"
 	
 		#if !defined(BOARD)
-			#error #error BOARD must be set in makefile to a value specified in BoardTypes.h.	
+			#error BOARD must be set in makefile to a value specified in BoardTypes.h.	
 		#elif (BOARD != BOARD_USBKEY) && (BOARD != BOARD_STK525) && (BOARD != BOARD_STK526)
 			#error The selected board does not contain a temperature sensor.
 		#endif
diff --git a/LUFA/Drivers/USB/Class/ConfigDescriptor.h b/LUFA/Drivers/USB/Class/ConfigDescriptor.h
index dce7de79e982bf65f38ef02f87bb790503540f1b..6f5bbc44877aa57b032ecce5f06fd5d1d061427d 100644
--- a/LUFA/Drivers/USB/Class/ConfigDescriptor.h
+++ b/LUFA/Drivers/USB/Class/ConfigDescriptor.h
@@ -96,7 +96,7 @@
 
 			/** Returns the descriptor's type, expressed as the 8-bit type value in the header of the descriptor.
 			 *  This value's meaning depends on the descriptor's placement in the descriptor, but standard type
-			 *  values can be accessed in the DescriptorTypes_t enum located in USB/HighLevel/StdDescriptors.h.
+			 *  values can be accessed in the \ref USB_DescriptorTypes_t enum.
 			 */
 			#if defined(USE_NONSTANDARD_DESCRIPTOR_NAMES) || defined(__DOXYGEN__)
 				#define DESCRIPTOR_TYPE(DescriptorPtr)    DESCRIPTOR_CAST(DescriptorPtr, USB_Descriptor_Header_t).Type
diff --git a/LUFA/Drivers/USB/HighLevel/Events.h b/LUFA/Drivers/USB/HighLevel/Events.h
index 4624e5bcec48ebc6acb6eaa31e4c68ba656cd68d..36e16c98b4f297bde8e5b6649538e60e78d8150a 100644
--- a/LUFA/Drivers/USB/HighLevel/Events.h
+++ b/LUFA/Drivers/USB/HighLevel/Events.h
@@ -219,7 +219,7 @@
 			 *  \note This event only exists on USB AVR models which support dual role modes.
 			 *
 			 *  \note This event does not exist if the USB_DEVICE_ONLY or USB_HOST_ONLY tokens have been supplied
-			 *        to the compiler (see LowLevel.h documentation).
+			 *        to the compiler (see \ref Group_USBManagement documentation).
 			 */
 			void USB_UIDChange(void);
 
@@ -232,7 +232,7 @@
 			 *  \note This event only exists on USB AVR models which supports host mode.
 			 *
 			 *  \note This event does not exist if the USB_DEVICE_ONLY token is supplied to the compiler (see
-			 *        LowLevel.h documentation).
+			 *        \ref Group_USBManagement documentation).
 			 */
 			void USB_HostError(const uint8_t ErrorCode);
 			
@@ -244,9 +244,9 @@
 			 *  \note This event only exists on USB AVR models which supports host mode.
 			 *
 			 *  \note This event does not exist if the USB_DEVICE_ONLY token is supplied to the compiler (see
-			 *        LowLevel.h documentation).
+			 *        \ref Group_USBManagement documentation).
 			 *
-			 *  \see USBTask.h for more information on the USB management task and reducing CPU usage.
+			 *  \see \ref TASK(USB_USBTask) for more information on the USB management task and reducing CPU usage.
 			 */
 			void USB_DeviceAttached(void);
 
@@ -257,9 +257,9 @@
 			 *  \note This event only exists on USB AVR models which supports host mode.
 			 *
 			 *  \note This event does not exist if the USB_DEVICE_ONLY token is supplied to the compiler (see
-			 *        LowLevel.h documentation).
+			 *        \ref Group_USBManagement documentation).
 			 *
-			 *  \see USBTask.h for more information on the USB management task and reducing CPU usage.
+			 *  \see \ref TASK(USB_USBTask) for more information on the USB management task and reducing CPU usage.
 			 */
 			void USB_DeviceUnattached(void);
 			
@@ -276,7 +276,7 @@
 			 *  \note This event only exists on USB AVR models which supports host mode.
 			 *
 			 *  \note This event does not exist if the USB_DEVICE_ONLY token is supplied to the compiler (see
-			 *        LowLevel.h documentation).
+			 *        \ref Group_USBManagement documentation).
 			 */
 			void USB_DeviceEnumerationFailed(const uint8_t ErrorCode, const uint8_t SubErrorCode);
 
@@ -294,7 +294,7 @@
 			 *  on control transfers, interrupts are disabled during control request processing.
 			 *
 			 *  \note This event does not exist if the USB_HOST_ONLY token is supplied to the compiler (see
-			 *        LowLevel.h documentation).
+			 *        \ref Group_USBManagement documentation).
 			 *
 			 *  \note Requests should be handled in the same manner as described in the USB 2.0 Specification,
 			 *        or appropriate class specification. In all instances, the library has already read the
@@ -310,7 +310,7 @@
 			 *  This event fires after the value of \ref USB_ConfigurationNumber has been changed.
 			 *
 			 *  \note This event does not exist if the USB_HOST_ONLY token is supplied to the compiler (see
-			 *        LowLevel.h documentation).
+			 *        \ref Group_USBManagement documentation).
 			 */
 			void USB_ConfigurationChanged(void);
 
@@ -319,7 +319,7 @@
 			 *  the device over to a low power state until the host wakes up the device.
 			 *
 			 *  \note This event does not exist if the USB_HOST_ONLY token is supplied to the compiler (see
-			 *        LowLevel.h documentation).
+			 *        \ref Group_USBManagement documentation).
 			 *
 			 *  \see \ref USB_WakeUp() event for accompanying Wake Up event.
 			 */
@@ -331,7 +331,7 @@
 			 *  mode.
 			 *
 			 *  \note This event does not exist if the USB_HOST_ONLY token is supplied to the compiler (see
-			 *        LowLevel.h documentation).
+			 *        \ref Group_USBManagement documentation).
 			 *
 			 *  \see \ref USB_Suspend() event for accompanying Suspend event.
 			 */
@@ -344,7 +344,7 @@
 			 *  disabled.
 			 *
 			 *  \note This event does not exist if the USB_HOST_ONLY token is supplied to the compiler (see
-			 *        LowLevel.h documentation).
+			 *        \ref Group_USBManagement documentation).
 			 */
 			void USB_Reset(void);
 			
@@ -355,7 +355,7 @@
 			 *                    \ref USB_Device_ErrorCodes_t enum located in Device.h.
 			 *
 			 *  \note This event does not exist if the USB_HOST_ONLY token is supplied to the compiler (see
-			 *        LowLevel.h documentation).
+			 *        \ref Group_USBManagement documentation).
 			 */
 			void USB_DeviceError(const uint8_t ErrorCode);
 		#endif
diff --git a/LUFA/Drivers/USB/HighLevel/StdDescriptors.h b/LUFA/Drivers/USB/HighLevel/StdDescriptors.h
index caa0fb046ac3c38e2859807f4dcd991012371782..2de50584b4450cbb537c4226d7bc0c9c6da9f52e 100644
--- a/LUFA/Drivers/USB/HighLevel/StdDescriptors.h
+++ b/LUFA/Drivers/USB/HighLevel/StdDescriptors.h
@@ -76,12 +76,12 @@
 			#define NO_DESCRIPTOR                     0
 			
 			/** Macro to calculate the power value for the device descriptor, from a given number of milliamps. */
-			#define USB_CONFIG_POWER_MA(x)            (x >> 1)
+			#define USB_CONFIG_POWER_MA(mA)            (mA >> 1)
 
 			/** Macro to calculate the Unicode length of a string with a given number of Unicode characters.
 			 *  Should be used in string descriptor's headers for giving the string descriptor's byte length.
 			 */
-			#define USB_STRING_LEN(x)                 (sizeof(USB_Descriptor_Header_t) + (x << 1))
+			#define USB_STRING_LEN(str)               (sizeof(USB_Descriptor_Header_t) + (str << 1))
 			
 			/** Macro to encode a given four digit floating point version number (e.g. 01.23) into Binary Coded
 			 *  Decimal format for descriptor fields requiring BCD encoding, such as the USB version number in the
@@ -183,7 +183,7 @@
 				/** This module raises the Device Error event while in device mode, if the \ref USB_GetDescriptor()
 				 *  routine is not hooked in the user application to properly return descriptors to the library.
 				 *
-				 *  \see Events.h for more information on this event.
+				 *  \see \ref Group_Events for more information on this event.
 				 */
 				RAISES_EVENT(USB_DeviceError);
 			#endif
@@ -206,10 +206,9 @@
 		/* Type Defines: */
 			/** Type define for all descriptor's header, indicating the descriptor's length and type.
 			 *
-			 *  \note The non-standard structure element names are documented here - see the StdDescriptors.h file
-			 *        documentation for more information on the two descriptor naming schemes. If the
-			 *        USE_NONSTANDARD_DESCRIPTOR_NAMES token is not set, this structure contains elements with names
-			 *        identical to those listed in the USB standard.
+			 *  \note The non-standard structure element names are documented here. If the
+			 *        USE_NONSTANDARD_DESCRIPTOR_NAMES token is not set, this structure contains elements 
+			 *        with names identical to those listed in the USB standard.
 			 */
 			typedef struct
 			{
@@ -226,10 +225,9 @@
 			
 			/** Type define for a standard device descriptor.
 			 *
-			 *  \note The non-standard structure element names are documented here - see the StdDescriptors.h file
-			 *        documentation for more information on the two descriptor naming schemes. If the
-			 *        USE_NONSTANDARD_DESCRIPTOR_NAMES token is not set, this structure contains elements with names
-			 *        identical to those listed in the USB standard.
+			 *  \note The non-standard structure element names are documented here. If the
+			 *        USE_NONSTANDARD_DESCRIPTOR_NAMES token is not set, this structure contains elements 
+			 *        with names identical to those listed in the USB standard.
 			 */
 			typedef struct
 			{
@@ -286,10 +284,9 @@
 
 			/** Type define for a standard configuration descriptor.
 			 *
-			 *  \note The non-standard structure element names are documented here - see the StdDescriptors.h file
-			 *        documentation for more information on the two descriptor naming schemes. If the
-			 *        USE_NONSTANDARD_DESCRIPTOR_NAMES token is not set, this structure contains elements with names
-			 *        identical to those listed in the USB standard.
+			 *  \note The non-standard structure element names are documented here. If the
+			 *        USE_NONSTANDARD_DESCRIPTOR_NAMES token is not set, this structure contains elements 
+			 *        with names identical to those listed in the USB standard.
 			 */
 			typedef struct
 			{
@@ -326,10 +323,9 @@
 
 			/** Type define for a standard interface descriptor.
 			 *
-			 *  \note The non-standard structure element names are documented here - see the StdDescriptors.h file
-			 *        documentation for more information on the two descriptor naming schemes. If the
-			 *        USE_NONSTANDARD_DESCRIPTOR_NAMES token is not set, this structure contains elements with names
-			 *        identical to those listed in the USB standard.
+			 *  \note The non-standard structure element names are documented here. If the
+			 *        USE_NONSTANDARD_DESCRIPTOR_NAMES token is not set, this structure contains elements 
+			 *        with names identical to those listed in the USB standard.
 			 */
 			typedef struct
 			{
@@ -372,10 +368,9 @@
 			 *  together at the point of enumeration, loading one generic driver for all the interfaces in the single
 			 *  function. Read the ECN for more information.
 			 *
-			 *  \note The non-standard structure element names are documented here - see the StdDescriptors.h file
-			 *        documentation for more information on the two descriptor naming schemes. If the
-			 *        USE_NONSTANDARD_DESCRIPTOR_NAMES token is not set, this structure contains elements with names
-			 *        identical to those listed in the USB standard.
+			 *  \note The non-standard structure element names are documented here. If the
+			 *        USE_NONSTANDARD_DESCRIPTOR_NAMES token is not set, this structure contains elements 
+			 *        with names identical to those listed in the USB standard.
 			 */
 			typedef struct
 			{
@@ -406,10 +401,9 @@
 
 			/** Type define for a standard endpoint descriptor.
 			 *
-			 *  \note The non-standard structure element names are documented here - see the StdDescriptors.h file
-			 *        documentation for more information on the two descriptor naming schemes. If the
-			 *        USE_NONSTANDARD_DESCRIPTOR_NAMES token is not set, this structure contains elements with names
-			 *        identical to those listed in the USB standard.
+			 *  \note The non-standard structure element names are documented here. If the
+			 *        USE_NONSTANDARD_DESCRIPTOR_NAMES token is not set, this structure contains elements 
+			 *        with names identical to those listed in the USB standard.
 			*/
 			typedef struct
 			{
@@ -448,10 +442,9 @@
 			 *  This structure should also be used for string index 0, which contains the supported language IDs for
 			 *  the device as an array.
 			 *
-			 *  \note The non-standard structure element names are documented here - see the StdDescriptors.h file
-			 *        documentation for more information on the two descriptor naming schemes. If the
-			 *        USE_NONSTANDARD_DESCRIPTOR_NAMES token is not set, this structure contains elements with names
-			 *        identical to those listed in the USB standard.
+			 *  \note The non-standard structure element names are documented here. If the
+			 *        USE_NONSTANDARD_DESCRIPTOR_NAMES token is not set, this structure contains elements 
+			 *        with names identical to those listed in the USB standard.
 			 */
 			typedef struct
 			{
diff --git a/LUFA/Drivers/USB/HighLevel/USBInterrupt.h b/LUFA/Drivers/USB/HighLevel/USBInterrupt.h
index ee13f2554b348768c22013263e4da67c9d6e2a56..9a16047030c2315974010907f4cdd65b698963e6 100644
--- a/LUFA/Drivers/USB/HighLevel/USBInterrupt.h
+++ b/LUFA/Drivers/USB/HighLevel/USBInterrupt.h
@@ -118,7 +118,7 @@
 				 *
 				 *  \note Not all USB AVR models support VBUS interrupts; this event only exists on supported AVRs.
 				 *
-				 *  \see Events.h for more information on this event.
+				 *  \see \ref Group_Events for more information on this event.
 				 */
 				RAISES_EVENT(USB_VBUSChange);
 
@@ -126,7 +126,7 @@
 				 *
 				 *  \note Not all USB AVR models support VBUS interrupts; this event only exists on supported AVRs.
 				 *
-				 *  \see Events.h for more information on this event.
+				 *  \see \ref Group_Events for more information on this event.
 				 */
 				RAISES_EVENT(USB_VBUSConnect);
 
@@ -134,7 +134,7 @@
 				 *
 				 *  \note Not all USB AVR models support VBUS interrupts; this event only exists on supported AVRs.
 				 *
-				 *  \see Events.h for more information on this event.
+				 *  \see \ref Group_Events for more information on this event.
 				 */
 				RAISES_EVENT(USB_VBUSDisconnect);
 			#endif
@@ -143,21 +143,21 @@
 				/** This module raises the Suspended event when the host suspends the USB interface of the AVR
 				 *  whilst running in device mode.
 				 *
-				 *  \see Events.h for more information on this event.
+				 *  \see \ref Group_Events for more information on this event.
 				 */
 				RAISES_EVENT(USB_Suspend);
 
 				/** This module raises the Wake Up event when the host resumes the USB interface of the AVR
 				 *  whilst running in device mode.
 				 *
-				 *  \see Events.h for more information on this event.
+				 *  \see \ref Group_Events for more information on this event.
 				 */
 				RAISES_EVENT(USB_WakeUp);
 
 				/** This module raises the USB Reset event when the host resets the USB interface of the AVR
 				 *  whilst running in device mode.
 				 *
-				 *  \see Events.h for more information on this event.
+				 *  \see \ref Group_Events for more information on this event.
 				 */
 				RAISES_EVENT(USB_Reset);
 			#endif
@@ -168,7 +168,7 @@
 				 *
 				 *  \note Not all USB AVR models support host mode; this event only exists on supported AVRs.
 				 *
-				 *  \see Events.h for more information on this event.
+				 *  \see \ref Group_Events for more information on this event.
 				 */
 				RAISES_EVENT(USB_HostError);
 
@@ -177,7 +177,7 @@
 				 *
 				 *  \note Not all USB AVR models support host mode; this event only exists on supported AVRs.
 				 *
-				 *  \see Events.h for more information on this event.
+				 *  \see \ref Group_Events for more information on this event.
 				 */
 				RAISES_EVENT(USB_DeviceUnattached);
 			#endif
@@ -188,7 +188,7 @@
 				 *  \note Not all USB AVR models support host mode and thus the UID pin; this event only exists on
 				 *        supported AVRs.
 				 *
-				 *  \see Events.h for more information on this event.
+				 *  \see \ref Group_Events for more information on this event.
 				 */
 				RAISES_EVENT(USB_UIDChange);
 			#endif
diff --git a/LUFA/Drivers/USB/HighLevel/USBTask.c b/LUFA/Drivers/USB/HighLevel/USBTask.c
index aa04c56baa65c19cb06a51da863a16970c5caa1e..738dc159267bfae83638582722e19043cbe58e60 100644
--- a/LUFA/Drivers/USB/HighLevel/USBTask.c
+++ b/LUFA/Drivers/USB/HighLevel/USBTask.c
@@ -157,7 +157,7 @@ static void USB_HostTask(void)
 			break;
 		case HOST_STATE_Powered:
 			Pipe_ConfigurePipe(PIPE_CONTROLPIPE, EP_TYPE_CONTROL,
-							   PIPE_TOKEN_SETUP, PIPE_CONTROLPIPE,
+							   PIPE_TOKEN_SETUP, ENDPOINT_CONTROLEP,
 							   PIPE_CONTROLPIPE_DEFAULT_SIZE, PIPE_BANK_SINGLE);		
 		
 			if (!(Pipe_IsConfigured()))
@@ -203,7 +203,7 @@ static void USB_HostTask(void)
 			Pipe_ResetPipe(PIPE_CONTROLPIPE);
 			
 			Pipe_ConfigurePipe(PIPE_CONTROLPIPE, EP_TYPE_CONTROL,
-			                   PIPE_TOKEN_SETUP, PIPE_CONTROLPIPE,
+			                   PIPE_TOKEN_SETUP, ENDPOINT_CONTROLEP,
 			                   USB_ControlPipeSize, PIPE_BANK_SINGLE);
 
 			if (!(Pipe_IsConfigured()))
diff --git a/LUFA/Drivers/USB/HighLevel/USBTask.h b/LUFA/Drivers/USB/HighLevel/USBTask.h
index 918fa5e315f4f0896989786406298b21dec61a65..1718ed6916f93092228e7ce4b361c12faec3f4ec 100644
--- a/LUFA/Drivers/USB/HighLevel/USBTask.h
+++ b/LUFA/Drivers/USB/HighLevel/USBTask.h
@@ -127,28 +127,28 @@
 				/** This module raises the \ref USB_Connect event when a USB device has been connected whilst in host
 				 *  mode, but not yet enumerated.
 				 *
-				 *  \see Events.h for more information on this event.
+				 *  \see \ref Group_Events for more information on this event.
 				 */
 				RAISES_EVENT(USB_Connect);
 
 				/** This module raises the \ref USB_DeviceAttached event when in host mode, and a device is attached
 				 *  to the AVR's USB interface.
 				 *
-				 *  \see Events.h for more information on this event.
+				 *  \see \ref Group_Events for more information on this event.
 				 */
 				RAISES_EVENT(USB_DeviceAttached);
 
 				/** This module raises the \ref USB_DeviceUnattached event when in host mode, and a device is removed
 				 *  from the AVR's USB interface.
 				 *
-				 *  \see Events.h for more information on this event.
+				 *  \see \ref Group_Events for more information on this event.
 				 */
 				RAISES_EVENT(USB_DeviceUnattached);
 				
 				/** This module raises the \ref USB_DeviceEnumerationFailed event when in host mode, and an
 				 *  attached USB device has failed to successfully enumerated.
 				 *
-				 *  \see Events.h for more information on this event.
+				 *  \see \ref Group_Events for more information on this event.
 				 */
 				RAISES_EVENT(USB_DeviceEnumerationFailed);
 
@@ -156,14 +156,14 @@
 				 *  attached USB device has been successfully enumerated and ready to be used by the user
 				 *  application.
 				 *
-				 *  \see Events.h for more information on this event.
+				 *  \see \ref Group_Events for more information on this event.
 				 */
 				RAISES_EVENT(USB_DeviceEnumerationComplete);
 
 				/** This module raises the \ref USB_Disconnect event when an attached USB device is removed from the USB
 				 *  bus.
 				 *
-				 *  \see Events.h for more information on this event.
+				 *  \see \ref Group_Events for more information on this event.
 				 */
 				RAISES_EVENT(USB_Disconnect);
 			#endif
@@ -183,7 +183,7 @@
 			 *    - In host mode, it may be disabled at start-up, enabled on the firing of the \ref USB_DeviceAttached
 			 *    event and disabled again on the firing of the \ref USB_DeviceUnattached event.
 			 *
-			 *  \see Events.h for more information on the USB events.
+			 *  \see \ref Group_Events for more information on the USB events.
 			 *
 			 *  \ingroup Group_USBManagement
 			 */
diff --git a/LUFA/Drivers/USB/LowLevel/DevChapter9.h b/LUFA/Drivers/USB/LowLevel/DevChapter9.h
index 3369b51921821c9233e8f4cdf2859d24100c9523..49795e5de3f0b3b6cff962da41abeac5eeca9ef2 100644
--- a/LUFA/Drivers/USB/LowLevel/DevChapter9.h
+++ b/LUFA/Drivers/USB/LowLevel/DevChapter9.h
@@ -86,14 +86,14 @@
 			/** This module raises the \ref USB_UnhandledControlPacket event when a request to the default control
 			 *  endpoint has been received, but the library does not implement an internal handler for it.
 			 *
-			 *  \see Events.h for more information on this event.
+			 *  \see \ref Group_Events for more information on this event.
 			 */
 			RAISES_EVENT(USB_UnhandledControlPacket);
 
 			/** This module raises the \ref USB_ConfigurationChanged event when the host issues a \ref REQ_SetConfiguration
 			 *  device request, to change the currently selected configuration number.
 			 *
-			 *  \see Events.h for more information on this event.
+			 *  \see \ref Group_Events for more information on this event.
 			 */
 			RAISES_EVENT(USB_ConfigurationChanged);
 
@@ -101,7 +101,7 @@
 			 *  enumeration of the device (i.e. when a \ref REQ_SetConfiguration request changes the current configuration
 			 *  number from 0 to a non-zero value).
 			 *
-			 *  \see Events.h for more information on this event.
+			 *  \see \ref Group_Events for more information on this event.
 			 */
 			RAISES_EVENT(USB_DeviceEnumerationComplete);
 	
diff --git a/LUFA/Drivers/USB/LowLevel/Device.h b/LUFA/Drivers/USB/LowLevel/Device.h
index b3a11d27bdcace23c6e0a14c524b1fbfeb710ec2..411ece002061bfdf37c6215bb4cb6b10009883d5 100644
--- a/LUFA/Drivers/USB/LowLevel/Device.h
+++ b/LUFA/Drivers/USB/LowLevel/Device.h
@@ -80,7 +80,7 @@
 				 *        issued if the host is currently allowing remote wakeup events from the device (i.e.,
 				 *        the \ref USB_RemoteWakeupEnabled flag is set).
 				 *
-				 *  \see StdDescriptors.h for more information on the RMWAKEUP feature and device descriptors.
+				 *  \see \ref Group_Descriptors for more information on the RMWAKEUP feature and device descriptors.
 				 */
 				static inline void USB_Device_SendRemoteWakeup(void);
 				
@@ -93,7 +93,7 @@
 				 *  \note This macro should only be used if the device has indicated to the host that it
 				 *        supports the Remote Wakeup feature in the device descriptors.
 				 *
-				 *  \see StdDescriptors.h for more information on the RMWAKEUP feature and device descriptors.
+				 *  \see \ref Group_Descriptors for more information on the RMWAKEUP feature and device descriptors.
 				 *
 				 *  \return Boolean true if no Remote Wakeup request is currently being sent, false otherwise
 				 */
@@ -124,7 +124,7 @@
 				DEVICE_ERROR_GetDescriptorNotHooked        = 0, /**< Indicates that the \ref USB_GetDescriptor() method
 				                                                 *   has not been hooked by the user application.
 				                                                 *
-				                                                 *   \see StdDescriptors.h for more information on
+				                                                 *   \see \ref Group_Descriptors for more information on
 				                                                 *        the \ref USB_GetDescriptor() method.
 				                                                 */
 			};
diff --git a/LUFA/Drivers/USB/LowLevel/Host.h b/LUFA/Drivers/USB/LowLevel/Host.h
index 0eb4843740d128d6be0aaedea9fe42a1592277d3..b1d60afb573cbb1dd063d15e8702c8a985a2a48e 100644
--- a/LUFA/Drivers/USB/LowLevel/Host.h
+++ b/LUFA/Drivers/USB/LowLevel/Host.h
@@ -179,8 +179,7 @@
 			 *
 			 *  For information on each state, refer to the USB 2.0 specification. Some states have
 			 *
-			 *  \see USBTask.h for information on the global variable USB_HostState, which stores the
-			 *       current host state machine state.
+			 *  \see \ref USB_HostState, which stores the current host state machine state.
 			 */
 			enum USB_Host_States_t
 			{
@@ -202,7 +201,7 @@
 			
 			/** Enum for the error codes for the \ref USB_HostError event.
 			 *
-			 *  \see Events.h for more information on this event.
+			 *  \see \ref Group_Events for more information on this event.
 			 */
 			enum USB_Host_ErrorCodes_t
 			{
@@ -216,7 +215,7 @@
 			
 			/** Enum for the error codes for the \ref USB_DeviceEnumerationFailed event.
 			 *
-			 *  \see Events.h for more information on this event.
+			 *  \see \ref Group_Events for more information on this event.
 			 */
 			enum USB_Host_EnumerationErrorCodes_t
 			{
diff --git a/LUFA/Drivers/USB/LowLevel/LowLevel.h b/LUFA/Drivers/USB/LowLevel/LowLevel.h
index ac5cb9ebf7317bd752861098955c190c1f9345b9..a5adf99f15196861c76130a3b6bab5d52ec188a2 100644
--- a/LUFA/Drivers/USB/LowLevel/LowLevel.h
+++ b/LUFA/Drivers/USB/LowLevel/LowLevel.h
@@ -118,7 +118,7 @@
 				 *
 				 *  \note This token is not available on AVR models which do not support host mode.
 				 */
-				#define USB_MODE_HOST                      2
+				#define USB_MODE_HOST                  2
 			#endif
 			
 			#if defined(USB_CAN_BE_BOTH) || defined(__DOXYGEN__)
@@ -159,25 +159,25 @@
 
 			/** Mask for a CONTROL type endpoint or pipe.
 			 *
-			 *  \note See Endpoint.h and Pipe.h headers for endpoint/pipe functions.
+			 *  \note See \ref Group_EndpointManagement and \ref Group_PipeManagement for endpoint/pipe functions.
 			 */
 			#define EP_TYPE_CONTROL                    0x00
 
 			/** Mask for an ISOCHRONOUS type endpoint or pipe.
 			 *
-			 *  \note See Endpoint.h and Pipe.h headers for endpoint/pipe functions.
+			 *  \note See \ref Group_EndpointManagement and \ref Group_PipeManagement for endpoint/pipe functions.
 			 */
 			#define EP_TYPE_ISOCHRONOUS                0x01
 
 			/** Mask for a BULK type endpoint or pipe.
 			 *
-			 *  \note See Endpoint.h and Pipe.h headers for endpoint/pipe functions.
+			 *  \note See \ref Group_EndpointManagement and \ref Group_PipeManagement for endpoint/pipe functions.
 			 */
 			#define EP_TYPE_BULK                       0x02
 
 			/** Mask for an INTERRUPT type endpoint or pipe.
 			 *
-			 *  \note See Endpoint.h and Pipe.h headers for endpoint/pipe functions.
+			 *  \note See \ref Group_EndpointManagement and \ref Group_PipeManagement for endpoint/pipe functions.
 			 */
 			#define EP_TYPE_INTERRUPT                  0x03
 
@@ -304,13 +304,13 @@
 			#endif
 			
 			#if !defined(USE_STATIC_OPTIONS) || defined(__DOXYGEN__)
-				extern volatile uint8_t USB_Options;
 				/** Indicates the current USB options that the USB interface was initialized with when \ref USB_Init()
 				 *  was called. This value will be one of the USB_MODE_* masks defined elsewhere in this module.
 				 *
 				 *  \note This variable should be treated as read-only in the user application, and never manually
 				 *        changed in value.
 				 */
+				extern volatile uint8_t USB_Options;
 			#endif
 
 		/* Throwable Events: */
diff --git a/LUFA/Drivers/USB/LowLevel/Pipe.h b/LUFA/Drivers/USB/LowLevel/Pipe.h
index beee0bdb12c9ca45deb1753b334e56e90bd1f9fb..7e81cf6868d46ecacbfcda19baced9f4aa21bea4 100644
--- a/LUFA/Drivers/USB/LowLevel/Pipe.h
+++ b/LUFA/Drivers/USB/LowLevel/Pipe.h
@@ -128,7 +128,7 @@
 			/** Default size of the default control pipe's bank, until altered by the Endpoint0Size value 
 			 *  in the device descriptor of the attached device.
 			 */
-			#define PIPE_CONTROLPIPE_DEFAULT_SIZE   8
+			#define PIPE_CONTROLPIPE_DEFAULT_SIZE   64
 			
 			/** Pipe number mask, for masking against pipe addresses to retrieve the pipe's numerical address
 			 *  in the device.
@@ -955,6 +955,10 @@
 		/* Macros: */
 			#define PIPE_TOKEN_MASK                (0x03 << PTOKEN0)
 
+			#if !defined(ENDPOINT_CONTROLEP)
+				#define ENDPOINT_CONTROLEP         0
+			#endif
+			
 			#define Pipe_AllocateMemory()          MACROS{ UPCFG1X |=  (1 << ALLOC); }MACROE
 			#define Pipe_DeallocateMemory()        MACROS{ UPCFG1X &= ~(1 << ALLOC); }MACROE
 
diff --git a/LUFA/LUFAPoweredProjects.txt b/LUFA/LUFAPoweredProjects.txt
index 5f81ad55f7a01e9c393193560c85ccc15ae5665e..e1ba65de1c824801ea2199e8c5e1c87153519174 100644
--- a/LUFA/LUFAPoweredProjects.txt
+++ b/LUFA/LUFAPoweredProjects.txt
@@ -27,4 +27,5 @@
  *  - Teensy, another tiny AT90USB162 development board: http://www.pjrc.com/teensy/index.html
  *  - SEGA Megadrive/Genesis Development Cartridge: http://www.spritesmind.net/_GenDev/forum/viewtopic.php?t=464
  *  - CAMTRIG, a remote Camera Trigger device: http://code.astraw.com/projects/motmot/camtrig
+ *  - Opendous-JTAG, an open source JTAG device: http://code.google.com/p/opendous-jtag/
  */
\ No newline at end of file
diff --git a/Projects/Magstripe/Descriptors.c b/Projects/Magstripe/Descriptors.c
index 785f8495161b9ecda3a73653e805d485526f089b..139789352972e88c618923d0481b5b4d9ca8c66d 100644
--- a/Projects/Magstripe/Descriptors.c
+++ b/Projects/Magstripe/Descriptors.c
@@ -190,7 +190,7 @@ USB_Descriptor_String_t PROGMEM ProductString =
 	.UnicodeString          = L"Magnetic Card Reader"
 };
 
-/** This function is called by the library when in device mode, and must be overridden (see StdDescriptors.h
+/** This function is called by the library when in device mode, and must be overridden (see library "USB Descriptors"
  *  documentation) by the application code so that the address and size of a requested descriptor can be given
  *  to the USB library. When the device receives a Get Descriptor request on the control endpoint, this function
  *  is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the
diff --git a/Projects/Magstripe/makefile b/Projects/Magstripe/makefile
index 5d474cdba3d6b1950315bcc27a23611ca43f8aa2..1e314ec2de9bb071bb77028eee4653167bc53640 100644
--- a/Projects/Magstripe/makefile
+++ b/Projects/Magstripe/makefile
@@ -63,7 +63,7 @@
 MCU = at90usb1287
 
 
-# Target board (see library BoardTypes.h documentation, USER or blank for projects not requiring
+# Target board (see library "Board Types" documentation, USER or blank for projects not requiring
 # LUFA board drivers). If USER is selected, put custom board drivers in a directory called 
 # "Board" inside the application directory.
 BOARD  = USER