Qu'est-ce que et comment augmenter le nombre maximum de périphériques USB?

7

Je me demande quel est le nombre maximal de périphériques USB que le noyau Linux peut gérer? Est-ce que cela dépend aussi du root-Hub ou de quelque chose d'autre?

Y a-t-il un moyen d'augmenter ce nombre maximum?

Je dois le faire car j'ai eu des problèmes en essayant d'écrire sur une grande quantité de clés USB. Pour ce faire, j'ai une configuration comme suit:

Il y a 1 ordinateur sous Ubuntu Linux, avec 3 HUB (actifs) connectés à 3 ports USB de cette machine. Tous ces trois concentrateurs sont des concentrateurs à 7 ports. À 6 de ces 7 ports, plusieurs hubs sont connectés. Cela me donne le nombre de 3 * 6 = 18 HUB dans la "deuxième" couche. Chacun de ces concentrateurs est également un concentrateur actif à 7 ports. Une clé USB est connectée à chaque port de ces concentrateurs de deuxième couche. Au total, j'ai 126 clés USB connectées à l'ordinateur.

J'ai un script qui recherche tous les périphériques de disque USB (en listant / dev / disk / by-path /). Chacun des périphériques de disque USB est ensuite d'abord partitionné, écrit avec cp, puis amorçable avec syslinux. Ceci n'est pas fait en parallèle!

Le problème: Je ne reçois que 105 disques durs USB avec

ls -la /dev/disk/by-path | grep usb | grep -v part | wc -l

Les voyants des bâtons de 3 rangées (une rangée correspond à un concentrateur dans la deuxième couche) sont également éteints.

Comment puis-je obtenir tous ces bâtons au travail? (Ou peut-être même plus?)

Daniel Jour
la source
6
Les hubs sont-ils alimentés (avec leurs propres adaptateurs d’alimentation, pas seulement via la connexion USB)? Si ce n'est pas le cas, vous êtes probablement à court d'alimentation sur votre connexion USB.
music2myear
Oui, tous les concentrateurs sont alimentés.
Daniel Jour
Avez-vous déplacé le hub qui n'alimente pas les sticks? Il peut être défectueux. Essayez-le directement dans un port de la boîte.
CharlieRB
Le nombre de périphériques manquants dans / dev / disk correspond-il exactement aux sticks éteints?
Paul
@Paul: Oui, le nombre de bâtons manquants (21) correspond exactement au nombre de bâtons éteints.
Daniel Jour

Réponses:

3

C'est par défaut comme expliqué ici: https://en.wikipedia.org/wiki/USB_device#System_design

Vous ne pouvez pas avoir plus de 127 périphériques (concentrateur inclus) connectés à un seul contrôleur hôte.

Maintenant: le contrôleur hôte + 3 concentrateurs (1ère couche) +18 concentrateurs (2ème couche) = 22 périphériques n'apparaissant pas comme des périphériques de disque.

127 moins ces 22 périphériques USB = 105 périphériques pouvant être gérés par le noyau en tant que disques.

127 périphériques est une limite stricte du protocole USB (voir ici: http://www.beyondlogic.org/usbnutshell/usb3.shtml#USBProtocols ) car le champ d’adresse ADDR a une longueur de sept bits.

Donc, par logiciel, il n'y a aucun moyen de l'augmenter. Vous pouvez peut-être essayer avec plus d'une interface de contrôleur hôte ou modifier la topologie en réduisant le nombre de concentrateurs (augmentant ainsi le nombre de disques vus par le système).

David Costa
la source
Peut-être que vous pouvez désactiver temporairement certains périphériques, en permettant à d’autres d’être connectés, ce qui signifie que vous pouvez travailler avec 105 disques à la fois. Mais je ne sais pas comment débrancher et reconnecter les périphériques USB via un logiciel.
David Costa
S'agit-il de 127 périphériques globalement pour l'hôte? On dirait que le contrôleur lui-même ferait partie de l'adressage, c'est-à-dire la carte ou la puce avec les ports USB connectés.
Arran Cudbard-Bell