¿Qué son los restablecimientos de dispositivos USB?

20

Tengo este nuevo software RAID-1 construido con dos unidades USB externas WD Elements, y puedo ver que Linux repite bastante el siguiente mensaje:

...
[302148.036912] usb 1-3.1: reset high-speed USB device number 19 using ehci_hcd
[302153.052029] usb 1-3.3: reset high-speed USB device number 20 using ehci_hcd
[302186.031481] usb 1-3.3: reset high-speed USB device number 20 using ehci_hcd
[302217.050210] usb 1-3.3: reset high-speed USB device number 20 using ehci_hcd
[302281.043543] usb 1-3.3: reset high-speed USB device number 20 using ehci_hcd
[302312.090158] usb 1-3.3: reset high-speed USB device number 20 using ehci_hcd
[302351.076851] usb 1-3.1: reset high-speed USB device number 19 using ehci_hcd
...

¿Entonces, qué dice? ¿Esto es normal? ¿Es este un problema que debería intentar solucionar?

Actualización
En realidad, estos mensajes no son para las unidades que pensé que eran. También tengo un montón de otras unidades USB conectadas a esta computadora a través de un concentrador USB. De todos modos, mi pregunta es básicamente ¿qué significa este mensaje en inglés simple?

YO LIV
fuente
3
Hacer RAID desde unidades USB no parece una buena idea. RAID se trata de tener todas sus unidades de manera confiable, y el USB se trata de conectar y desconectar dispositivos en caliente. Como está utilizando RAID-1, no es tan malo, pero tampoco es una muy buena idea.
mvp
1
No hay nada de malo en usar dispositivos USB en la configuración RAID. Es una idea perfectamente acertada, más aún cuando se considera que es una computadora doméstica, no un servidor empresarial. Podría argumentar limitaciones de rendimiento de USB, pero eso no es una preocupación personal para mí. Esta redada es un enfoque perezoso para la solución de respaldo más que cualquier otra cosa.
ILIV
1
Usted indicó que sus unidades están conectadas a los puertos USB de la computadora portátil. Di lo que quieras, pero esto es simplemente una bomba de tiempo esperando a explotar. Además, si sus dispositivos son USB3, el núcleo debe usar xhci_hcd. Si está utilizando ehci_hcd, eso significa que sus dispositivos se ejecutan a velocidades USB2.
mvp
1
¿Por qué es una "bomba de tiempo"?
ILIV
2
Ya veo, la próxima vez, por favor, intenta encontrar razones reales para llamar a algo bomba de tiempo. Solo para que conste, no tengo un gato, ni ninguna otra mascota, nunca he tirado de cables, este portátil se ha mantenido estacionario durante un par de años, las posibilidades de que se quemen los puertos USB son casi iguales a la posibilidad de tener la conexión directa se rompe, "algo más" es gracioso, podría suceder incluso al servidor empresarial más configurado e instalado. Entonces, deja de ser tan paranoico. Esto es RAID-1. Tener 2 discos apagados al mismo tiempo, es muy poco probable. Esta es una solución sólida. Período.
ILIV

Respuestas:

22

Déjame intentarlo.

Literalmente, el mensaje dice que la pila USB de Linux ha emitido "USB_RESET" a su dispositivo en particular (dispositivos # 19 y # 20, cualesquiera que sean). El error parece ocurrir una vez cada 10-30 segundos. Después del reinicio, el registro debe tener mensajes de enumeración nuevos, ya que el reinicio del USB forzará al dispositivo conectado a "estado predeterminado". Parece que la verbosidad de su registro es muy reducida.

Restablecer un dispositivo USB en medio de la operación es una situación bastante drástica. El controlador recurre a este restablecimiento de "puerto" si encuentra un "error de transacción". El error de transacción ocurre cuando el enlace no completa todas las fases requeridas de la transacción USB, o tiene un error CRC. En USB normal, el controlador EHCI volverá a intentar automáticamente la transacción fallida (típicamente un máximo de 3 veces), y luego establecerá una interrupción XACT_ERROR. Estadísticamente, según la teoría del error, si un enlace no responde correctamente a tres intentos seguidos, hay un problema con el segmento USB en particular, principalmente de forma eléctrica. Por lo tanto, el error de transacción se considera fatal y el software intenta recuperar el enlace. Si el árbol cuatro intentos de recuperar el enlace falla, el host considera este puerto como muerto y se cierra.

Sin embargo, en Linux, alguien ha decidido que 3 intentos teóricos no son suficientes, y el software de Linux realiza 32 intentos adicionales (treinta y dos), lo que lo convierte en 96 (!!!) en total. Si el enlace de hardware es eléctricamente marginal, los 96 intentos podrían tener éxito en el 99.99% del tiempo. Los gurús del software de Linux afirman que esto ayuda a mejorar la operatividad de los dispositivos / cables cuestionables. En esencia, esta técnica oculta un problema grave con esta conexión USB en particular, que no ayuda a los usuarios a largo plazo.

El problema podría estar en el suministro de voltaje marginal (VBUS) a las unidades, o fallas de VBUS o degradación de la señal en los cables de señal. Primero probaría cables certificados de alta calidad extremadamente cortos y verificaría si las estadísticas de error cambian.

Ale..chenski
fuente
Super resumen, gracias! Algunas fuentes adicionales serían geniales.
Christian Benke
1
¿Sabes si eso es posible aumentar el número de reintentos realizados por ehci_hcdmódulo? ¿O es posible forzar ohci_hcdpara un dispositivo en particular (por ejemplo, /dev/sdaes manejado por ehci_hcdy "problemático" /dev/sdbes manejado por ohci_hcd)?
dma_k
5

Este error se describe en el artículo Linux: restablezca el dispositivo USB de alta velocidad con el error y la solución ehci_hcd :

Este error indica que USB 2.0 puede no funcionar en su sistema, o puede funcionar solo a velocidades de USB 1.1. Para solucionar este problema:

  1. Reemplazar hardware: en la mayoría de los casos, debe reemplazar la placa base.
  2. Eliminar el controlador ehci_hcd
  3. Desactive la interfaz ehci_hcd drive USB 2.0 y úsela como USB 1.1. En resumen, deshabilite el ehci_hcd.

Si no desea reemplazar la placa base, para eliminar el controlador ehci_hcd edite el archivo /etc/modprobe.d/blacklist.conf y agregue la línea:

blacklist ehci_hcd

Finalmente, use el script mkinitrd para construir una estructura de directorio que pueda servir como un sistema de archivos raíz initrd sin ehci_hcd:

# mkinitrd -o /boot/initrd.$(uname -r).img $(uname -r)

Reiniciar como prueba.

Un artículo con instrucciones similares es: ¿Por qué se escribe el error "kernel: usb 1-2.2: restablecer dispositivo USB de alta velocidad usando ehci_hcd y dirección 6" en el archivo / var / log / messages?

harrymc
fuente