Tutoriel Linux

Puertos USB en Linux: comandos que muestran qué dispositivos están conectados.

Débutant5 min de lecture
À retenirLinux n'est pas réservé aux experts. Le bon point de départ : une distribution accessible, une sauvegarde propre et quelques commandes comprises.

Cuando una unidad USB, un disco duro externo o un adaptador serie deja de responder en Linux, lo primero que hay que hacer no es reiniciar el equipo. Primero, conviene comprobar si el dispositivo es reconocido por el kernel, por el bus USB y, posteriormente, por el sistema.

Para ello, basta con unos pocos comandos: lsusb, lsusb -t, dmesg Y journalctl -kNo todas cuentan la misma historia. Si las usas en el orden correcto, puedes ahorrar tiempo rápidamente en un dispositivo no reconocido.

Comience por enumerar los dispositivos USB.

El comando más simple es lsusbMuestra los dispositivos detectados en los buses USB:

lsusb

Te encuentras con frases como esta:

Bus 002 Dispositivo 003: ID 0781:5581 SanDisk Corp. Ultra
Bus 001 Dispositivo 004: ID 046d:c52b Logitech, Inc. Receptor Unifying

La parte importante suele ser el identificador. proveedor: producto, Por ejemplo 0781:5581Aunque Linux no haya cargado el controlador correcto o no haya montado el disco, este identificador ya demuestra que el dispositivo está respondiendo en el bus USB.

Si el comando no existe, instale el paquete. usbutils :

sudo apt update
sudo apt install usbutils

En otras distribuciones, el nombre del paquete a menudo permanece usbutilsLa pagina del manual lsusb(8) detalla las opciones útiles.

Visualice el árbol de directorios con lsusb -t

lsusb Te indica qué se ha detectado. lsusb -t Te muestra lo de moda que está:

lsusb -t

Esta vista es muy útil con concentradores USB, estaciones de acoplamiento y puertos del panel frontal. Ejemplo:

/: Bus 02.Puerto 1: Dispositivo 1, Clase=root_hub, Controlador=xhci_hcd/4p, 5000M
    Puerto 2: Dispositivo 3, Si 0, Clase=Almacenamiento masivo, Controlador=almacenamiento USB, 5000M

Aquí vemos un dispositivo de almacenamiento USB en 5000 metros, por lo tanto, usando USB 3.x. Si aparece una unidad rápida en 480MPuede conectarse a un puerto USB 2.0, mediante un cable limitado o detrás de un concentrador que limita la velocidad.

También fíjese en la columna. ConductorSi está vacío o es inesperado, el dispositivo se detecta, pero el controlador no necesariamente se carga como se espera.

Supervise lo que sucede en el punto de conexión.

Para diagnosticar correctamente el problema, abra una terminal, inicie la monitorización del kernel y, a continuación, conecte el dispositivo:

sudo dmesg -w

También puedes usar diarioctl Si su distribución centraliza los registros mediante systemd:

sudo journalctl -k -f

En el punto de conexión, debería ver líneas que se refieren a USB, Nuevo dispositivo USB de alta velocidad, almacenamiento USB, ttyUSB O SDX dependiendo del equipo. A menudo es más revelador que lsusb solo, porque los errores aparecen en el momento exacto de la conexión.

Para releer los últimos mensajes sin estar al tanto de las actualizaciones en tiempo real:

sudo dmesg | tail -80
sudo journalctl -k -n 80 --no-pager

Si quieres profundizar en la lectura de los registros al iniciar el sistema o después de un incidente, he detallado el método en la guía sobre… journalctl y los registros del último arranque de Linux.

Cómo identificar una unidad USB que no se monta.

Es posible que se detecte una unidad USB, pero que no se monte automáticamente. En ese caso, compruebe los bloques de almacenamiento:

lsblk -o NOMBRE,TAMAÑO,TIPO DE SISTEMA,ETIQUETA,PUNTOS DE MONTAJE,MODELO
sudo blkid

Si el disco aparece en lsblkEl problema no es el puerto USB. Debes verificar el sistema de archivos, los permisos, el montaje automático o los errores de partición. Si no aparece nada en lsblk, volver a los registros del kernel.

En una unidad USB o disco sospechoso, evite intentar repararlo inmediatamente. Primero, lea los mensajes:

Líneas con Reiniciar dispositivo USB de alta velocidad, error de E/S O lectura del descriptor del dispositivo Apuntan más bien a un cable, caja, fuente de alimentación o periférico inestable.

Identifique un adaptador serie, de red o Bluetooth.

Para un adaptador USB a serie, busque los periféricos. ttyUSB O ttyACM :

ls -l /dev/ttyUSB* /dev/ttyACM* 2>/dev/null
sudo dmesg | grep -Ei 'ttyUSB|ttyACM|ch341|cp210|ftdi'

Para un adaptador de red USB, combine lsusb con interfaces de red:

enlace ip
nmcli estado del dispositivo 2>/dev/null

Si el adaptador es visto por lsusb pero no en enlace ipProbablemente se trate de un problema con el controlador o el firmware. En ese caso, anote el identificador USB exacto antes de buscar una solución. Buscar 0bda:8153 Linux es mucho más efectivo que simplemente buscar “adaptador Ethernet USB”.

La solución rápida cuando un dispositivo USB no responde

Cuando necesito diagnosticar rápidamente, utilizo esta secuencia:

lsusb
lsusb -t
sudo journalctl -k -f

A continuación, desconecto y vuelvo a conectar el dispositivo. Si no hay cambios en los registros, pruebo con otro puerto, cable o fuente de alimentación. Si los registros muestran actividad, pero el dispositivo sigue sin funcionar, reviso el controlador y el almacenamiento. lsblk, o la interfaz creada en /desarrollador.

No es la solución definitiva, pero evita que el problema se disperse en todas direcciones. Primero el bus USB, luego los registros del kernel y solo después el montaje, el controlador o la aplicación que necesita usar el hardware.

Esto debe verificarse antes de concluir que el puerto está inactivo.

Antes de culpar al puerto USB, como mínimo realice una prueba:

  • otro cable, especialmente para discos duros externos y teléfonos inteligentes;
  • un puerto directamente en la máquina, sin concentrador;
  • otro dispositivo en el mismo puerto;
  • los mensajes dmesg O journalctl -k en el momento de la conexión;
  • la fuente de alimentación del dispositivo si se trata de una unidad de 2,5 pulgadas, una carcasa o una estación de acoplamiento.

Si lsusb Si el dispositivo se detecta en un puerto pero no en otro, ya tienes un cable de hardware. Si ningún puerto lo detecta, pruébalo en otra máquina antes de modificar tu configuración de Linux.

Para comandos relacionados con registros, consulte las referencias. dmesg(1) Y journalctl(1) Siguen siendo útiles cuando se quiere comprobar una opción específica.

sudo apt update && sudo apt upgrade