diff --git a/LUFA/Drivers/USB/Class/Device/HID.c b/LUFA/Drivers/USB/Class/Device/HID.c
index 0cbd50afcc39d109e3fc931ff26636abc1e09489..b44d4db63cfa35956cf6a166bc8a28477667e708 100644
--- a/LUFA/Drivers/USB/Class/Device/HID.c
+++ b/LUFA/Drivers/USB/Class/Device/HID.c
@@ -168,12 +168,12 @@ void HID_Device_USBTask(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo)
 			HIDInterfaceInfo->State.IdleMSRemaining = HIDInterfaceInfo->State.IdleCount;
 
 			if (ReportID)
-			  Endpoint_Write_Stream_LE(&ReportID, sizeof(ReportID), NO_STREAM_CALLBACK);
+			  Endpoint_Write_Byte(ReportID);
 
 			Endpoint_Write_Stream_LE(ReportINData, ReportINSize, NO_STREAM_CALLBACK);
+			
+			Endpoint_ClearIN();
 		}
-		
-		Endpoint_ClearIN();
 	}
 }
 
diff --git a/LUFA/ManPages/ChangeLog.txt b/LUFA/ManPages/ChangeLog.txt
index 61485a0dd461390b4066e9589f6876914999f2e4..42b78ef0fdedc9446cdbdc8452b9ff5d496f8bf0 100644
--- a/LUFA/ManPages/ChangeLog.txt
+++ b/LUFA/ManPages/ChangeLog.txt
@@ -39,6 +39,7 @@
   *  - Fixed invalid data being returned when a GetStatus request is issued in Device mode with an unhandled data recipient
   *  - Added hardware USART receive interrupt and software buffering to the Benito project to ensure received data is not
   *    missed or corrupted
+  *  - Fixed Device mode HID Class driver always sending IN packets, even when nothing to report
   *
   *
   *  \section Sec_ChangeLog090810 Version 090810