¿Qué es y cómo aumentar la cantidad máxima de dispositivos usb?

7

Me pregunto cuál es la cantidad máxima de dispositivos USB que el kernel de Linux puede administrar. ¿Depende esto del root-Hub o de otra cosa también?

¿Hay alguna manera de aumentar este número máximo?

Necesito hacer esto, porque me he encontrado con problemas al intentar escribir en una gran cantidad de memorias USB. Para hacer esto, tengo una configuración de la siguiente manera:

Hay 1 computadora con Ubuntu Linux, con 3 HUB (activos) conectados a 3 puertos USB de esta máquina. Todos esos tres HUB son HUB de 7 puertos. A 6 de esos 7 puertos, se conectan más HUB. Esto me da el número de 3 * 6 = 18 HUB en la "segunda" capa. Cada uno de estos HUB también es un HUB activo de 7 puertos. Hay una memoria USB conectada a cada puerto de esos HUB de segunda capa. En total tengo 126 memorias USB conectadas a la computadora.

Tengo un script que busca todos los dispositivos de disco USB (a través de listado / dev / disk / by-path /). Cada uno de los dispositivos de disco USB se particiona primero, se escribe en cp y luego se inicia con syslinux. ¡Esto NO se hace en paralelo!

El problema: solo obtengo 105 dispositivos de disco USB usando

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

Los LED de los palos en 3 filas (una fila corresponde a un HUB en la segunda capa) también están apagados.

¿Cómo hago para que funcionen todos esos palos? (¿O posiblemente incluso más?)

Daniel Jour
fuente
66
¿Están alimentados los hubs (como en, con sus propios adaptadores de corriente, no solo a través de la conexión USB)? Si no, probablemente se esté quedando sin energía a través de su conexión USB.
music2myear
Sí, todos los HUB están alimentados.
Daniel Jour
¿Ha movido el centro que no está alimentando los palos? Puede estar defectuoso. Pruébelo directamente en un puerto de la caja.
CharlieRB
¿El número faltante de dispositivos en / dev / disk se corresponde exactamente con los sticks apagados?
Paul
@Paul: Sí, la cantidad de barras faltantes (21) corresponde exactamente a la cantidad de barras apagadas.
Daniel Jour

Respuestas:

3

Es estándar como se explica aquí: https://en.wikipedia.org/wiki/USB_device#System_design

No puede tener más de 127 dispositivos (concentrador incluido) conectados a un único controlador de host.

Ahora: el controlador de host + 3 hub (1.a capa) +18 hub (2.a capa) = 22 dispositivos que NO aparecen como dispositivos de disco.

127 menos estos 22 dispositivos USB = 105 dispositivos que el núcleo puede administrar como discos.

127 dispositivos es un límite estricto del protocolo USB (ver aquí: http://www.beyondlogic.org/usbnutshell/usb3.shtml#USBProtocols ) porque el campo de dirección ADDR es de siete bits de largo.

Entonces, por software no hay forma de aumentarlo. Quizás pueda intentar con más de una interfaz de controlador de host, o cambiar la topología reduciendo la cantidad de concentradores (aumentando así la cantidad de discos que ve el sistema).

David Costa
fuente
Quizás pueda deshabilitar temporalmente algunos dispositivos, permitiendo que otros se conecten, lo que significa que puede trabajar con 105 discos a la vez. Pero no sé cómo desconectar y volver a conectar dispositivos USB a través del software.
David Costa
¿Son 127 dispositivos a nivel mundial para el host? Parece que el controlador en sí mismo formaría parte del direccionamiento, es decir, la tarjeta o el chip con los puertos USB conectados.
Arran Cudbard-Bell