GNU/Linux >> Tutoriales Linux >  >> Linux

Nuestro sistema Linux integrado no reconocerá un dispositivo USB si está enchufado antes del encendido. ¿Sugerencias?

Traer esto de vuelta de entre los muertos para completarlo.

Los detalles son confusos, pero resulta que el dispositivo en sí se bloqueaba al arrancar. Creo que tuvo que ver con la charla generada por uBoot en la línea USB. Esencialmente, uBoot sondeó todas las líneas de hardware (incluido el USB) para encontrar una imagen de arranque. Este sondeo debería ser inofensivo, pero el firmware de nuestro dispositivo USB no pudo manejarlo y se bloqueó de inmediato, dejándolo inoperable hasta un restablecimiento completo (desenchufando físicamente el dispositivo y volviéndolo a enchufar).

Informamos este error al fabricante del dispositivo, pero no recibimos ninguna indicación de que la solución del problema (que aparentemente solo nos afectaba a nosotros) sería una prioridad, por lo que recurrimos a una solución de $ 0,50.

La forma en que resolvimos esto fue bastante creativa, pero funcionó a la perfección. Construimos un relé simple controlado por GPIO y empalmamos la línea de alimentación USB a través de este relé. Esencialmente, el sistema se inició con el relé "apagado" y, por lo tanto, sin energía para el dispositivo USB. El sistema se inició normalmente y en nuestro script de inicio simplemente cambiamos la línea GPIO para activar el relé. El dispositivo USB pudo iniciarse normalmente, sin interferencias de uBoot.


Parece que el dispositivo intentó chatear con el sistema operativo en el primer arranque y, dado que la pila no estaba lista en ese momento, "se desconectó" del concentrador. Considere agregar una sección al final del proceso de inicio para soltar el controlador y forzar una recarga. (modprobe -vr ehci_hcd; modprobe -v ehci_hcd si USB2.0, uhci_hcd si USB1.x)

Otra posibilidad es que cuando el Gumstix se apagó, le indicó al dispositivo que entrara en modo de ahorro de energía, lo que podría no ser compatible con el dispositivo. Windows puede hacer cosas diferentes allí que Windows, que puede ser todo lo que probó el proveedor. Para probar esto, es posible que deba decirle al controlador del dispositivo que no suspenda ni apague los dispositivos durante el reinicio del sistema. Consulte la documentación del kernel de Linux sobre ahorro de energía en la sección USB para comenzar.


Linux
  1. 4 formas útiles de saber el nombre del dispositivo USB conectado en Linux

  2. ¿Cómo obtener información del proveedor y del producto USB mediante programación en Linux?

  3. Control de una fuente de alimentación USB (encendido/apagado) con Linux

  4. ¿Por qué necesitamos un gestor de arranque en un dispositivo integrado?

  5. ¿Cómo puedo estar seguro de haber conectado un dispositivo a un puerto USB 3?

Cómo encontrar el uso de ancho de banda del dispositivo USB en Linux

Creación de un sistema de escritorio Linux de arranque múltiple

Cómo agregar un nuevo dispositivo al sistema de archivos BTRFS en Linux

Cómo saber si su sistema tiene un puerto USB 3.0 en Linux [Consejo rápido]

Banda ancha USB:cómo conectar dispositivos de módem USB en Linux

Linux:no queda espacio en el dispositivo mientras que el comando df muestra mucho espacio libre