Windows 11 : y a-t-il une limite au nombre de périphériques USB ?

Pardonnez-moi si le titre prend la forme d’un problème XY, mais :

J’ai un système Windows avec beaucoup de périphériques USB connectés. (Je suis développeur embarqué avec un tas de clients, et le plus souvent, j’ai besoin d’exécuter des tests longitudinaux sur un tas de périphériques embarqués.) J’observe le phénomène suivant :

Mon ensemble par défaut de périphériques USB ressemble à ceci :

Cependant, dans ce cas, mon périphérique OSBOT TinyCam est indisponible. (« Il semble qu’une autre application utilise déjà la caméra. Code d’erreur de l’application Caméra Windows 0xA00F4243 »)

Si j’éjecte (ou débranche simplement) N’IMPORTE QUELS quatre périphériques EDBG CMSIS-DAP et/ou Atmel-ICE CMSIS-DAP, la TinyCam fonctionne normalement.

Ce qui m’amène aux questions :

  • Y a-t-il une limite au nombre de périphériques que le système peut gérer sur le bus USB ?

  • Y a-t-il des informations supplémentaires que je peux collecter pour mieux diagnostiquer le problème ?

De plus, je ne pense pas que ce soit spécifique à l’OSBOT TinyCam. Par exemple, si je débranche tous les périphériques USB CMSIS-DAP et que je branche l’OSBOT TinyCam et que je lance l’application Caméra, la caméra fonctionne bien. Mais si je branche ensuite tous les périphériques CMSIS-DAP APRÈS avoir branché la TinyCam, mon IDE Microchip ne peut plus accéder à tous les périphériques CMSIS-DAP :

Donc dans ce cas, il semble que « le premier arrivé » est celui qui fonctionne, et les autres sont exclus.

Il se pourrait que vous rencontriez la limitation de votre contrôleur hôte USB racine en ce qui concerne les points de terminaison. C’est une limitation matérielle qui n’est pas liée à votre système d’exploitation.

Chaque périphérique USB peut définir jusqu’à 32 points de terminaison (16 entrées et 16 sorties, dont l’un doit être un point de terminaison de contrôle), mais la plupart des périphériques n’en définissent que 2 ou 3 (par exemple, données entrantes, données sortantes et un point de terminaison de contrôle). Les concentrateurs eux-mêmes définissent également au moins un point de terminaison de contrôle. Chaque implémentation de contrôleur USB peut avoir ses propres limites de couches ou de points de terminaison.

Dans votre cas, certains de vos périphériques peuvent nécessiter plus de points de terminaison que d’autres. Votre contrôleur hôte USB racine peut également avoir sa propre limite quant au nombre de points de terminaison qu’il peut prendre en charge.

Pour augmenter le nombre de points de terminaison pris en charge par votre ordinateur, vous avez besoin de plus de contrôleurs hôtes USB racines. Chaîner des concentrateurs USB n’ajoute pas plus de points de terminaison, mais réduit plutôt le nombre, car les concentrateurs eux-mêmes utilisent des points de terminaison du contrôleur racine.

Bien que la spécification USB permette un nombre théorique énorme de périphériques sur un seul contrôleur racine, les limitations pratiques inhérentes à l’implémentation des contrôleurs USB contraignent davantage le maximum possible à un nombre bien inférieur.

Un outil pour examiner le nombre de points de terminaison (et tout le reste) de vos périphériques USB est l’outil open-source USB Device Tree Viewer. Il peut montrer les points de terminaison utilisés par un périphérique, mais ne montre pas la limite du contrôleur racine.

Par exemple, ici il montre 3 points de terminaison pour un disque USB connecté :

Quelques sources sur le sujet :