USB Map

Mapear los puertos USB y los dispositivos conectados

USBMap es una función de SerialTool que enumera la información básica sobre los controladores de host USB, los hubs USB y los dispositivos USB conectados.

También recupera información de los dispositivos desde el registro del sistema y a través de solicitudes USB a los propios dispositivos. La ventana principal de USBMap está dividida en dos paneles: el panel izquierdo muestra una vista de árbol orientada a la conexión, lo que permite seleccionar cualquier dispositivo USB; el panel derecho muestra las estructuras de datos USB relacionadas con el dispositivo USB seleccionado.
Estas estructuras incluyen los descriptores de dispositivo, configuración, interfaz y punto final, así como la configuración actual del dispositivo.

USBMap es compatible con Windows, macOS y Linux y es muy útil para ver qué dispositivos USB están conectados a los diversos puertos del PC. Permite diferenciar entre Interfaz del Controlador de Host (USB, Firewire), Hub USB, Hubs USB Externos, dispositivos generales y Puertos Seriales. En lo que respecta a los puertos seriales, USBMap también muestra qué puerto o puertos seriales están disponibles para un adaptador USB específico, lo cual es especialmente útil cuando un solo dispositivo USB-serial es capaz de crear múltiples puertos seriales, que de otra manera serían difíciles de identificar.

La información detallada que proporciona USBMap es esencial para desarrolladores y técnicos, permitiéndoles analizar las características específicas de los dispositivos USB conectados. El nivel de detalle de la información puede variar según el sistema operativo, pero USBMap siempre garantiza un análisis exhaustivo y preciso de los dispositivos.

Una característica distintiva de USBMap es que esta función, típicamente reservada para desarrolladores en varios sistemas operativos, está integrada en SerialTool sin necesidad de instalar paquetes o herramientas adicionales, ofreciendo un acceso directo y simplificado.

La información mostrada puede copiarse directamente al portapapeles y el mapa de puertos USB puede exportarse en formato ASCII, facilitando el intercambio y la documentación de los resultados del análisis.

Nota 1: USBMap muestra los dispositivos USB conectados y no los puertos seriales virtuales si están presentes.
Nota 2: Algunas funciones de esta utilidad pueden estar limitadas en la versión GRATUITA de SerialTool. ¡Obtén ahora la versión PRO de SerialTool!



USBMap - Escaneo de los puertos USB conectados

Ejemplo de un convertidor USB Serial con múltiples puertos seriales.

A continuación se muestra un ejemplo de un convertidor USB Serial CH 347, fabricado por Nanjing Qinherg Electronics Co., que crea dos puertos seriales en una sola conexión USB.

Screenshot of USBMap displaying detailed information about a USB device

USBMap - Detalles del Convertidor USB Serial con múltiples puertos seriales


[Port12] : USB Composite Device
Type: Serial Port
[Multiple Serial Port 1]Serial Port Number: COM9
[Multiple Serial Port 1]Device Description: USB-HiSpeed-SERIAL-B CH347
[Multiple Serial Port 1]Friendly Name: USB-HiSpeed-SERIAL-B CH347 (COM9)
[Multiple Serial Port 1]Manufacturer: wch.cn
[Multiple Serial Port 1]Location Path: PCIROOT(0)#PCI(1400)#USBROOT(0)#USB(12)#USBMI(2)
[Multiple Serial Port 1]USB Parent: USB\VID_1A86&PID_55DA\0123456789
[Multiple Serial Port 1]Driver Key: {4d36e978-e325-11ce-bfc1-08002be10318}\0011
[Multiple Serial Port 1]Hardware ID: USB\VID_1A86&PID_55DA&REV_0441&MI_02
Type: Serial Port
[Multiple Serial Port 2]Serial Port Number: COM10
[Multiple Serial Port 2]Device Description: USB-HiSpeed-SERIAL-A CH347
[Multiple Serial Port 2]Friendly Name: USB-HiSpeed-SERIAL-A CH347 (COM10)
[Multiple Serial Port 2]Manufacturer: wch.cn
[Multiple Serial Port 2]Location Path: PCIROOT(0)#PCI(1400)#USBROOT(0)#USB(12)#USBMI(0)
[Multiple Serial Port 2]USB Parent: USB\VID_1A86&PID_55DA\0123456789
[Multiple Serial Port 2]Driver Key: {4d36e978-e325-11ce-bfc1-08002be10318}\0012
[Multiple Serial Port 2]Hardware ID: USB\VID_1A86&PID_55DA&REV_0441&MI_00

Is Port User Connectable: yes
Is Port Debug Capable: no
Companion Port Number: 22
Companion Hub Symbolic Link Name: USB#ROOT_HUB30#4&3783c1a5&0&0#{f18a0e88-c30c-11d0-8815-00a0c906bed8}
Protocols Supported:
USB 1.1: yes
USB 2.0: yes
USB 3.0: no

---===>Device Information<===---
English product name: "USB Dual_Serial"

ConnectionStatus:
Current Config Value: 0x01
-> Device Bus Speed: High
(is not SuperSpeed or higher capable)
Device Address: 0x29
Open Pipes: 6

===>Device Descriptor<===
bLength: 0x12
bDescriptorType: 0x01
bcdUSB: 0x0200
bDeviceClass: 0xEF
-> This is a Multi-interface Function Code Device
bDeviceSubClass: 0x02
-> This is the Common Class Sub Class
bDeviceProtocol: 0x01
-> This is the Interface Association Descriptor protocol
bMaxPacketSize0: 0x40
= (64) Bytes
idVendor: 0x1A86
= Nanjing Qinherg Electronics Co., Ltd.
idProduct: 0x55DA
bcdDevice: 0x0441
iManufacturer: 0x01
English (United States) "wch.cn"
iProduct: 0x02
English (United States) "USB Dual_Serial"
iSerialNumber: 0x03
English (United States) "0123456789"
bNumConfigurations: 0x01

---===>Open Pipes<===---

===>Endpoint Descriptor<===
bLength: 0x07
bDescriptorType: 0x05
bEndpointAddress: 0x81
-> Direction: IN - EndpointID: 1
bmAttributes: 0x03
-> Interrupt Transfer Type
wMaxPacketSize: 0x0040
= 1 transactions per microframe, 0x40 max bytes
bInterval: 0x01

===>Endpoint Descriptor<===
bLength: 0x07
bDescriptorType: 0x05
bEndpointAddress: 0x02
-> Direction: OUT - EndpointID: 2
bmAttributes: 0x02
-> Bulk Transfer Type
wMaxPacketSize: 0x0200
= 0x200 max bytes
bInterval: 0x00

===>Endpoint Descriptor<===
bLength: 0x07
bDescriptorType: 0x05
bEndpointAddress: 0x82
-> Direction: IN - EndpointID: 2
bmAttributes: 0x02
-> Bulk Transfer Type
wMaxPacketSize: 0x0200
= 0x200 max bytes
bInterval: 0x00

===>Endpoint Descriptor<===
bLength: 0x07
bDescriptorType: 0x05
bEndpointAddress: 0x83
-> Direction: IN - EndpointID: 3
bmAttributes: 0x03
-> Interrupt Transfer Type
wMaxPacketSize: 0x0040
= 1 transactions per microframe, 0x40 max bytes
bInterval: 0x01

===>Endpoint Descriptor<===
bLength: 0x07
bDescriptorType: 0x05
bEndpointAddress: 0x04
-> Direction: OUT - EndpointID: 4
bmAttributes: 0x02
-> Bulk Transfer Type
wMaxPacketSize: 0x0200
= 0x200 max bytes
bInterval: 0x00

===>Endpoint Descriptor<===
bLength: 0x07
bDescriptorType: 0x05
bEndpointAddress: 0x84
-> Direction: IN - EndpointID: 4
bmAttributes: 0x02
-> Bulk Transfer Type
wMaxPacketSize: 0x0200
= 0x200 max bytes
bInterval: 0x00

---===>Full Configuration Descriptor<===---

===>Configuration Descriptor<===
bLength: 0x09
bDescriptorType: 0x02
wTotalLength: 0x008D
-> Validated
bNumInterfaces: 0x04
bConfigurationValue: 0x01
iConfiguration: 0x00
bmAttributes: 0x80
-> Bus Powered
MaxPower: 0x64
= 200 mA

===>IAD Descriptor<===
bLength: 0x08
bDescriptorType: 0x0B
bFirstInterface: 0x00
bInterfaceCount: 0x02
bFunctionClass: 0x02
-> This is Communications (CDC Control) USB Device Interface Class
bFunctionSubClass: 0x02
bFunctionProtocol: 0x01
iFunction: 0x00

===>Interface Descriptor<===
bLength: 0x09
bDescriptorType: 0x04
bInterfaceNumber: 0x00
bAlternateSetting: 0x00
bNumEndpoints: 0x01
bInterfaceClass: 0x02
-> This is Communications (CDC Control) USB Device Interface Class
bInterfaceSubClass: 0x02
bInterfaceProtocol: 0x01
iInterface: 0x00
-> This is a Communications (CDC Control) USB Device Interface Class

===>Descriptor Hex Dump<===
bLength: 0x05
bDescriptorType: 0x24
05
24
00
10
01
-> This is a Communications (CDC Control) USB Device Interface Class

===>Descriptor Hex Dump<===
bLength: 0x05
bDescriptorType: 0x24
05
24
01
00
01
-> This is a Communications (CDC Control) USB Device Interface Class

===>Descriptor Hex Dump<===
bLength: 0x04
bDescriptorType: 0x24
04
24
02
02
-> This is a Communications (CDC Control) USB Device Interface Class

===>Descriptor Hex Dump<===
bLength: 0x05
bDescriptorType: 0x24
05
24
06
00
01

===>Endpoint Descriptor<===
bLength: 0x07
bDescriptorType: 0x05
bEndpointAddress: 0x81
-> Direction: IN - EndpointID: 1
bmAttributes: 0x03
-> Interrupt Transfer Type
wMaxPacketSize: 0x0040
= 1 transactions per microframe, 0x40 max bytes
bInterval: 0x01

===>Interface Descriptor<===
bLength: 0x09
bDescriptorType: 0x04
bInterfaceNumber: 0x01
bAlternateSetting: 0x00
bNumEndpoints: 0x02
bInterfaceClass: 0x0A
-> This is a CDC Data USB Device Interface Class
bInterfaceSubClass: 0x00
bInterfaceProtocol: 0x00
iInterface: 0x00

===>Endpoint Descriptor<===
bLength: 0x07
bDescriptorType: 0x05
bEndpointAddress: 0x02
-> Direction: OUT - EndpointID: 2
bmAttributes: 0x02
-> Bulk Transfer Type
wMaxPacketSize: 0x0200
= 0x200 max bytes
bInterval: 0x00

===>Endpoint Descriptor<===
bLength: 0x07
bDescriptorType: 0x05
bEndpointAddress: 0x82
-> Direction: IN - EndpointID: 2
bmAttributes: 0x02
-> Bulk Transfer Type
wMaxPacketSize: 0x0200
= 0x200 max bytes
bInterval: 0x00

===>IAD Descriptor<===
bLength: 0x08
bDescriptorType: 0x0B
bFirstInterface: 0x02
bInterfaceCount: 0x02
bFunctionClass: 0x02
-> This is Communications (CDC Control) USB Device Interface Class
bFunctionSubClass: 0x02
bFunctionProtocol: 0x01
iFunction: 0x00

===>Interface Descriptor<===
bLength: 0x09
bDescriptorType: 0x04
bInterfaceNumber: 0x02
bAlternateSetting: 0x00
bNumEndpoints: 0x01
bInterfaceClass: 0x02
-> This is Communications (CDC Control) USB Device Interface Class
bInterfaceSubClass: 0x02
bInterfaceProtocol: 0x01
iInterface: 0x00
-> This is a Communications (CDC Control) USB Device Interface Class

===>Descriptor Hex Dump<===
bLength: 0x05
bDescriptorType: 0x24
05
24
00
10
01
-> This is a Communications (CDC Control) USB Device Interface Class

===>Descriptor Hex Dump<===
bLength: 0x05
bDescriptorType: 0x24
05
24
01
00
01
-> This is a Communications (CDC Control) USB Device Interface Class

===>Descriptor Hex Dump<===
bLength: 0x04
bDescriptorType: 0x24
04
24
02
02
-> This is a Communications (CDC Control) USB Device Interface Class

===>Descriptor Hex Dump<===
bLength: 0x05
bDescriptorType: 0x24
05
24
06
02
03

===>Endpoint Descriptor<===
bLength: 0x07
bDescriptorType: 0x05
bEndpointAddress: 0x83
-> Direction: IN - EndpointID: 3
bmAttributes: 0x03
-> Interrupt Transfer Type
wMaxPacketSize: 0x0040
= 1 transactions per microframe, 0x40 max bytes
bInterval: 0x01

===>Interface Descriptor<===
bLength: 0x09
bDescriptorType: 0x04
bInterfaceNumber: 0x03
bAlternateSetting: 0x00
bNumEndpoints: 0x02
bInterfaceClass: 0x0A
-> This is a CDC Data USB Device Interface Class
bInterfaceSubClass: 0x00
bInterfaceProtocol: 0x00
iInterface: 0x00

===>Endpoint Descriptor<===
bLength: 0x07
bDescriptorType: 0x05
bEndpointAddress: 0x04
-> Direction: OUT - EndpointID: 4
bmAttributes: 0x02
-> Bulk Transfer Type
wMaxPacketSize: 0x0200
= 0x200 max bytes
bInterval: 0x00

===>Endpoint Descriptor<===
bLength: 0x07
bDescriptorType: 0x05
bEndpointAddress: 0x84
-> Direction: IN - EndpointID: 4
bmAttributes: 0x02
-> Bulk Transfer Type
wMaxPacketSize: 0x0200
= 0x200 max bytes
bInterval: 0x00

Estructura de la información proporcionada por Windows

Detalles de los puertos seriales:

El puerto USB (Port12) se utiliza para gestionar el dispositivo como un dispositivo USB compuesto, lo que significa que tiene múltiples interfaces y puede gestionar diferentes canales de comunicación.
Cada puerto serial virtual creado por el dispositivo tiene su propia designación:

- COM9 con el nombre "USB-HiSpeed-SERIAL-B CH347"
- COM10 con el nombre "USB-HiSpeed-SERIAL-A CH347"

Cada puerto serial tiene:

Un Nombre Amigable que permite identificar el puerto en el sistema.
Una Ruta de Ubicación (Location Path) que indica dónde se encuentra físicamente la conexión del dispositivo.
Una Clave de Controlador e ID de Hardware, que son informaciones únicas del dispositivo y ayudan al sistema operativo a identificar correctamente el tipo de hardware y el controlador requerido.

Conexión y Tipo de Transferencia:

Este dispositivo es compatible con USB 1.1 y USB 2.0, pero no es compatible con USB 3.0. Esto se especifica en la sección "Protocolos Soportados". Cada puerto utiliza endpoints de tipo Bulk (para grandes cantidades de datos) e Interrupt (para señales más rápidas y constantes) para la transferencia de datos, lo que permite transmitir datos seriales de manera eficiente.

Descriptores del Dispositivo:

La sección de descriptores proporciona detalles sobre el tipo de dispositivo USB, sus clases de función (por ejemplo, Comunicaciones (Control CDC - Clase de dispositivo de comunicación USB) ) para dispositivos de comunicación, y cómo están organizadas las interfaces. También se muestra la descripción completa de la configuración, que incluye información como la potencia máxima requerida por el dispositivo (200 mA en este caso) y los valores asociados a las diversas interfaces y endpoints.

Capacidad para Crear Múltiples Puertos Seriales:

Este dispositivo tiene la capacidad de crear múltiples puertos seriales utilizando una sola conexión física USB. Esto es particularmente útil cuando se dispone de un dispositivo con múltiples canales seriales, como en el caso de una interfaz de control múltiple o para equipos que requieren múltiples conexiones de comunicación.

Utilidad en USBMap:

Con USBMap, es posible visualizar detalles precisos para cada uno de los puertos creados, asociando fácilmente cada puerto serial virtual al dispositivo físico que los pone a disposición. Esto es particularmente útil para distinguir los diferentes convertidores y puertos seriales en sistemas complejos. USBMap también permite verificar qué puerto (o puertos) está asociado a cada dispositivo y exportar esta información para documentación o diagnóstico.

Este ejemplo demuestra cómo un convertidor USB-serial multi-puerto puede gestionar múltiples conexiones a través de un solo puerto USB. Con la ayuda de herramientas como USBMap, se puede obtener una visión detallada y profunda de las conexiones, facilitando el monitoreo, la configuración y la resolución de problemas relacionados con las conexiones USB-seriales. Esto es de gran ventaja para desarrolladores, técnicos e integradores de sistemas que trabajan con dispositivos de comunicación complejos.