@@ -233,16 +233,22 @@ static void usb_event_cb(const usb_host_client_event_msg_t *event_msg, void *arg
233233 }
234234 assert (current_device );
235235
236+ const usb_device_desc_t * device_desc ;
237+ ESP_ERROR_CHECK (usb_host_get_device_descriptor (current_device , & device_desc ));
238+
239+ if (device_desc -> bDeviceClass == USB_CLASS_HUB ) {
240+ ESP_LOGI (TAG , "Detect hub device, skip" );
241+ usb_host_device_close (p_usbh_cdc_obj -> cdc_client_hdl , current_device );
242+ return ;
243+ }
244+
236245 new_dev_cb_t * new_dev_cb ;
237246 SLIST_FOREACH (new_dev_cb , & p_usbh_cdc_obj -> new_dev_cb_list , list_entry ) {
238247 if (new_dev_cb -> cb ) {
239248 new_dev_cb -> cb (current_device , new_dev_cb -> user_data );
240249 }
241250 }
242251
243- const usb_device_desc_t * device_desc ;
244- ESP_ERROR_CHECK (usb_host_get_device_descriptor (current_device , & device_desc ));
245-
246252 usbh_cdc_t * cdc ;
247253 bool if_opened = false;
248254 SLIST_FOREACH (cdc , & p_usbh_cdc_obj -> cdc_devices_list , list_entry ) {
@@ -707,6 +713,12 @@ static esp_err_t _cdc_find_and_open_usb_device(usbh_cdc_t *cdc)
707713 const usb_device_desc_t * device_desc ;
708714 ESP_ERROR_CHECK (usb_host_get_device_descriptor (current_device , & device_desc ));
709715
716+ if (device_desc -> bDeviceClass == USB_CLASS_HUB ) {
717+ ESP_LOGD (TAG , "Detect hub device, skip" );
718+ usb_host_device_close (p_usbh_cdc_obj -> cdc_client_hdl , current_device );
719+ continue ;
720+ }
721+
710722 if ((cdc -> vid == device_desc -> idVendor || cdc -> vid == CDC_HOST_ANY_VID ) &&
711723 (cdc -> pid == device_desc -> idProduct || cdc -> pid == CDC_HOST_ANY_PID )) {
712724 // Return path 2:
0 commit comments