GNU/Linux >> Tutoriales Linux >  >> Linux

Reconozca más dispositivos en Linux con este repositorio de ID USB

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.


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

  2. Cómo cifrar una partición con DM-Crypt LUKS en Linux

  3. Linux:¿cómo volver a conectar un dispositivo USB desconectado lógicamente?

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

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

Comando Linux more explicado con ejemplos

Comando Lsblk en Linux (Lista de dispositivos de bloque)

Cómo crear unidades USB de arranque múltiple con Ventoy en Linux

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

Cree una unidad USB de arranque con USBImager en Linux

Cómo detectar y administrar dispositivos en Linux