diff --git a/src/usb/setup.c b/src/usb/setup.c index 8b800ea..624f301 100644 --- a/src/usb/setup.c +++ b/src/usb/setup.c @@ -138,8 +138,9 @@ static void write_configuration_descriptor(int wLength) { usb_interface_t const * const *interfaces = usb_configure_interfaces(); size_t total_length = sizeof(usb_dc_configuration_t); + size_t interface_count = 0; - for(int i = 0; interfaces[i]; i++) + for(int i = 0; interfaces[i]; i++, interface_count++) for(int k = 0; interfaces[i]->dc[k]; k++) { uint8_t const *dc = interfaces[i]->dc[k]; @@ -149,6 +150,7 @@ static void write_configuration_descriptor(int wLength) /* Write the configuration descriptor */ dc_configuration.wTotalLength = htole16(total_length); + dc_configuration.bNumInterfaces = interface_count; dcp_write(&dc_configuration, dc_configuration.bLength); /* For the first call, the host usually wants only this */ if(wLength <= dc_configuration.bLength) return;