Hay miles de dispositivos USB en el mercado:teclados, escáneres, impresoras, ratones y muchos otros que funcionan en Linux. Los detalles de su proveedor se almacenan en el repositorio de ID de USB.
lsusb
El lsusb
de Linux El comando enumera información sobre los dispositivos USB conectados a un sistema, pero a veces la información está incompleta. Por ejemplo, recientemente noté que la marca de uno de mis dispositivos USB no fue reconocida. el dispositivo funcionaba, pero enumerar los detalles de mis dispositivos USB conectados no proporcionó información de identificación. Aquí está la salida de mi lsusb
comando:
$ lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 004: ID 046d:082c Logitech, Inc.
Bus 001 Device 003: ID 0951:16d2 Kingston Technology
Bus 001 Device 002: ID 18f8:1486
Bus 001 Device 005: ID 051d:0002 American Power Conversion Uninterruptible Power Supply
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Como puede ver en la última columna, hay un dispositivo sin descripción del fabricante. Para determinar cuál es el dispositivo, tendría que hacer una inspección más profunda de mi árbol de dispositivos USB. Afortunadamente, el lsusb
El comando tiene más opciones. Uno es -D device
, para obtener detalles por dispositivo, como explica la página man:
"No escanee el directorio /dev/bus/usb, en su lugar, muestre solo información sobre el dispositivo cuyo archivo de dispositivo se proporciona. El archivo del dispositivo debe ser algo así como /dev/bus/usb/001/001. Esta opción muestra información detallada como la v opción; debes ser root para hacer esto".
No pensé que fuera evidente cómo pasar la ruta del dispositivo al comando lsusb, pero después de leer detenidamente la página del manual y el resultado inicial, pude determinar cómo construirlo. Los dispositivos USB residen en el sistema de archivos UDEV. La ruta de su dispositivo comienza en el directorio del dispositivo USB /dev/bus/usb/
. El resto de la ruta se compone de la ID de bus y la ID de dispositivo del dispositivo. Mi dispositivo anónimo es Bus 001, Device 002, que se traduce como 001/002 y completa la ruta /dev/bus/usb/001/002
. Ahora puedo pasar esta ruta a lsusb
. También canalizaré a more
ya que a menudo hay bastante información allí:
$ lsusb -D /dev/bus/usb/001/002 |more
Device: ID 18f8:1486
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 1.10
bDeviceClass 0 (Defined at Interface level)
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 8
idVendor 0x18f8
idProduct 0x1486
bcdDevice 1.00
iManufacturer 0
iProduct 1
iSerial 0
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 59
bNumInterfaces 2
bConfigurationValue 1
iConfiguration 0
bmAttributes 0xa0
(Bus Powered)
Remote Wakeup
MaxPower 100mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 1
bInterfaceClass 3 Human Interface Device
bInterfaceSubClass 1 Boot Interface Subclass
bInterfaceProtocol 2 Mouse
iInterface 0
HID Device Descriptor:
Desafortunadamente, esto no proporcionó el detalle que esperaba encontrar. Los dos campos que aparecen en la salida inicial, idVendor
y idProduct
, ambos están vacíos. Hay algo de ayuda, ya que escanear un poco hacia abajo revela la palabra Ratón . ¡A-JA! Entonces, este dispositivo es mi mouse.
El repositorio de ID USB
Esto me hizo preguntarme cómo podría completar estos campos, no solo para mí, sino también para otros usuarios de Linux. Resulta que ya existe un proyecto de código abierto para esto:el repositorio de ID USB. Es un repositorio público de todas las identificaciones conocidas utilizadas en dispositivos USB. También se usa en varios programas, incluidas las utilidades USB, para mostrar nombres de dispositivos legibles por humanos.
Puede explorar el repositorio en busca de dispositivos particulares, ya sea desde el sitio web o descargando la base de datos. Los usuarios también pueden enviar nuevos datos. Esto es lo que hice con mi ratón, que estaba ausente.
Actualice sus ID de USB
La base de datos de ID USB se almacena en un archivo llamado usb.ids
. Esta ubicación puede variar según la distribución de Linux.
En Ubuntu 18.04, este archivo se encuentra en /var/lib/usbutils
. Para actualizar la base de datos, use el comando update-usbids
, que debe ejecutar con privilegios de root o con sudo
:
$ sudo update-usbids
Si hay un nuevo archivo disponible, se descargará. Se realizará una copia de seguridad del archivo actual y se reemplazará por uno nuevo:
$ ls -la
total 1148
drwxr-xr-x 2 root root 4096 Jan 15 00:34 .
drwxr-xr-x 85 root root 4096 Nov 7 08:05 ..
-rw-r--r-- 1 root root 614379 Jan 9 15:34 usb.ids
-rw-r--r-- 1 root root 551472 Jan 15 00:34 usb.ids.old
Las versiones recientes de Fedora Linux almacenan el archivo de la base de datos en /usr/share/hwdata
. Además, no hay un script de actualización. En cambio, la base de datos se mantiene en un paquete llamado hwdata
.
# dnf info hwdata
Installed Packages
Name : hwdata
Version : 0.332
Release : 1.fc31
Architecture : noarch
Size : 7.5 M
Source : hwdata-0.332-1.fc31.src.rpm
Repository : @System
From repo : updates
Summary : Hardware identification and configuration data
URL : https://github.com/vcrhonek/hwdata
License : GPLv2+
Description : hwdata contains various hardware identification and configuration data,
: such as the pci.ids and usb.ids databases.
Ahora mi lista de dispositivos USB muestra un nombre junto a este dispositivo sin nombre anterior. Compare esto con el resultado anterior:
$ lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 004: ID 046d:082c Logitech, Inc. HD Webcam C615
Bus 001 Device 003: ID 0951:16d2 Kingston Technology
Bus 001 Device 014: ID 18f8:1486 [Maxxter]
Bus 001 Device 005: ID 051d:0002 American Power Conversion Uninterruptible Power Supply
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Más recursos de Linux
- Hoja de trucos de los comandos de Linux
- Hoja de trucos de comandos avanzados de Linux
- Curso en línea gratuito:Descripción general técnica de RHEL
- Hoja de trucos de red de Linux
- Hoja de trucos de SELinux
- Hoja de trucos de los comandos comunes de Linux
- ¿Qué son los contenedores de Linux?
- Nuestros últimos artículos sobre Linux
Puede notar que otras descripciones de dispositivos cambian a medida que el repositorio se actualiza regularmente con nuevos dispositivos y detalles sobre los existentes.
Enviar nuevos datos
Hay dos formas de enviar nuevos datos:utilizando la interfaz web o enviando por correo electrónico un archivo de parche con formato especial. Antes de comenzar, leí las pautas de presentación. Primero, tenía que registrar una cuenta y luego necesitaba usar el sistema de envío del proyecto para proporcionar el ID y el nombre de mi ratón. El proceso es el mismo para agregar cualquier dispositivo USB.
¿Ha utilizado el repositorio de ID USB? Si es así, comparte tu reacción en los comentarios.