diff --git a/Demos/Host/ClassDriver/AudioInputHost/AudioInputHost.c b/Demos/Host/ClassDriver/AudioInputHost/AudioInputHost.c
index 93c1e72a3b510760112803cf7bfb3efa262525ff..35a4ef90ae613666b97d5113a2c905d1d0947993 100644
--- a/Demos/Host/ClassDriver/AudioInputHost/AudioInputHost.c
+++ b/Demos/Host/ClassDriver/AudioInputHost/AudioInputHost.c
@@ -104,7 +104,7 @@ int main(void)
 					USB_HostState = HOST_STATE_WaitForDeviceRemoval;
 					break;
 				}
-				
+			
 				USB_Audio_SampleFreq_t SampleRate = AUDIO_SAMPLE_FREQ(48000);
 				if (Audio_GetSetEndpointProperty(&Microphone_Audio_Interface, Microphone_Audio_Interface.Config.DataINPipeNumber,
 				                                 AUDIO_REQ_SetCurrent, AUDIO_EPCONTROL_SamplingFreq,
diff --git a/LUFA/Drivers/USB/Class/Host/Audio.c b/LUFA/Drivers/USB/Class/Host/Audio.c
index 5760b6af8244754da642d3af76e350d479bbe5c5..238091321ad7fa72e03c66edf62594a29206a2c0 100644
--- a/LUFA/Drivers/USB/Class/Host/Audio.c
+++ b/LUFA/Drivers/USB/Class/Host/Audio.c
@@ -51,7 +51,8 @@ uint8_t Audio_Host_ConfigurePipes(USB_ClassInfo_Audio_Host_t* const AudioInterfa
 	if (DESCRIPTOR_TYPE(ConfigDescriptorData) != DTYPE_Configuration)
 	  return AUDIO_ENUMERROR_InvalidConfigDescriptor;
 
-	while (!(DataINEndpoint) || !(DataOUTEndpoint))
+	while ((AudioInterfaceInfo->Config.DataINPipeNumber  && !(DataINEndpoint)) ||
+	       (AudioInterfaceInfo->Config.DataOUTPipeNumber && !(DataOUTEndpoint)))
 	{
 		if (!(AudioControlInterface) ||
 		    USB_GetNextDescriptorComp(&ConfigDescriptorSize, &ConfigDescriptorData,
@@ -77,6 +78,9 @@ uint8_t Audio_Host_ConfigurePipes(USB_ClassInfo_Audio_Host_t* const AudioInterfa
 			}
 
 			AudioStreamingInterface = DESCRIPTOR_PCAST(ConfigDescriptorData, USB_Descriptor_Interface_t);
+			
+			DataINEndpoint  = NULL;
+			DataOUTEndpoint = NULL;
 
 			continue;
 		}
@@ -195,7 +199,7 @@ static uint8_t DComp_NextAudioInterfaceDataEndpoint(void* CurrentDescriptor)
 }
 
 uint8_t Audio_Host_StartStopStreaming(USB_ClassInfo_Audio_Host_t* const AudioInterfaceInfo,
-			                          bool EnableStreaming)
+			                          const bool EnableStreaming)
 {
 	if (!(AudioInterfaceInfo->State.IsActive))
 	  return HOST_SENDCONTROL_DeviceDisconnected;
@@ -208,7 +212,7 @@ uint8_t Audio_GetSetEndpointProperty(USB_ClassInfo_Audio_Host_t* const AudioInte
 			                         const uint8_t DataPipeIndex,
 			                         const uint8_t EndpointProperty,
 			                         const uint8_t EndpointControl,
-			                         uint16_t const DataLength,
+			                         const uint16_t DataLength,
 			                         void* const Data)
 {
 	if (!(AudioInterfaceInfo->State.IsActive))
diff --git a/LUFA/Drivers/USB/Class/Host/Audio.h b/LUFA/Drivers/USB/Class/Host/Audio.h
index 26d537614c5ffecffb5641961ce1b5fab78440de..91ea0e265014d24cbfc9b2cafddbe6e31ba36a84 100644
--- a/LUFA/Drivers/USB/Class/Host/Audio.h
+++ b/LUFA/Drivers/USB/Class/Host/Audio.h
@@ -145,7 +145,7 @@
 			 *  \return A value from the \ref USB_Host_SendControlErrorCodes_t enum.
 			 */
 			uint8_t Audio_Host_StartStopStreaming(USB_ClassInfo_Audio_Host_t* const AudioInterfaceInfo,
-			                                      bool EnableStreaming);
+			                                      const bool EnableStreaming);
 
 			/** Gets or sets the specified property of a streaming audio class endpoint that is bound to a pipe in the given
 			 *  class instance.
@@ -165,7 +165,7 @@
 			                                     const uint8_t DataPipeIndex,
 			                                     const uint8_t EndpointProperty,
 			                                     const uint8_t EndpointControl,
-			                                     uint16_t const DataLength,
+			                                     const uint16_t DataLength,
 			                                     void* const Data);
 
 		/* Inline Functions: */