Mapa USB

Mapeie as portas USB e os dispositivos conectados

USBMap é uma função do SerialTool que lista informações básicas sobre os controladores host USB, hubs USB e dispositivos USB conectados.

Ele também recupera informações dos dispositivos a partir do registro do sistema e por meio de solicitações USB para os próprios dispositivos. A janela principal do USBMap está dividida em dois painéis: o painel esquerdo mostra uma visualização em árvore orientada para conexão, permitindo selecionar qualquer dispositivo USB; o painel direito exibe as estruturas de dados USB relacionadas ao dispositivo USB selecionado.
Essas estruturas incluem os descritores de dispositivo, configuração, interface e endpoint, além da configuração atual do dispositivo.

USBMap é compatível com Windows, macOS e Linux e é muito útil para visualizar quais dispositivos USB estão conectados às várias portas do PC. Ele permite diferenciar entre Interface de Controlador de Host (USB, Firewire), Hub USB, Hubs USB Externos, dispositivos gerais e Portas Seriais. Em relação às portas seriais, USBMap também mostra quais portas seriais estão disponíveis para um adaptador USB específico, sendo especialmente útil quando um único dispositivo USB-serial é capaz de criar várias portas seriais, que de outra forma seriam difíceis de identificar.

As informações detalhadas que o USBMap fornece são essenciais para desenvolvedores e técnicos, permitindo que analisem as características específicas dos dispositivos USB conectados. O nível de detalhe da informação pode variar de acordo com o sistema operacional, mas o USBMap sempre garante uma análise completa e precisa dos dispositivos.

Uma característica distintiva do USBMap é que esta função, normalmente reservada para desenvolvedores em vários sistemas operacionais, está integrada no SerialTool sem necessidade de instalação de pacotes ou ferramentas adicionais, oferecendo acesso direto e simplificado.

As informações exibidas podem ser copiadas diretamente para a área de transferência, e o mapa das portas USB pode ser exportado em formato ASCII, facilitando o compartilhamento e a documentação dos resultados da análise.

Nota 1: USBMap exibe os dispositivos USB conectados e não as portas seriais virtuais, caso estejam presentes.
Nota 2: Algumas funcionalidades desta ferramenta podem estar limitadas na versão GRATUITA do SerialTool. Obtenha agora a versão PRO do SerialTool!



USBMap - Escaneamento das portas USB conectadas

Exemplo de um conversor USB Serial com múltiplas portas seriais.

A seguir está um exemplo de um conversor USB Serial CH 347, fabricado pela Nanjing Qinherg Electronics Co., que cria duas portas seriais em uma única conexão USB.

Screenshot of USBMap displaying detailed information about a USB device

USBMap - Detalhes do Conversor USB Serial com múltiplas portas seriais


[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

Estrutura das informações fornecidas pelo Windows

Detalhes das portas seriais:

A porta USB (Port12) é usada para gerenciar o dispositivo como um Dispositivo Composto USB, o que significa que possui várias interfaces e pode gerenciar diferentes canais de comunicação.
Cada porta serial virtual criada pelo dispositivo tem sua própria designação:

- COM9 com o nome "USB-HiSpeed-SERIAL-B CH347"
- COM10 com o nome "USB-HiSpeed-SERIAL-A CH347"

Cada porta serial possui:

Um Nome Amigável que permite identificar a porta no sistema.
Um Caminho de Localização (Location Path) que indica onde a conexão do dispositivo está fisicamente.
Uma Chave de Driver e ID de Hardware, que são informações únicas do dispositivo e ajudam o sistema operacional a identificar corretamente o tipo de hardware e o driver necessário.

Conexão e Tipo de Transferência:

Este dispositivo é compatível com USB 1.1 e USB 2.0, mas não é compatível com USB 3.0. Isso é especificado na seção "Protocolos Suportados". Cada porta usa endpoints de Bulk (para grandes volumes de dados) e Interrupção (para sinais mais rápidos e constantes) para transferência de dados, permitindo transmitir dados seriais de maneira eficiente.

Descritores do Dispositivo:

A seção de descritores fornece detalhes sobre o tipo de dispositivo USB, suas classes de função (por exemplo, Comunicações (CDC Controle - Classe de Dispositivo de Comunicação USB) ) para dispositivos de comunicação, e como as interfaces estão organizadas. A descrição completa da configuração também é mostrada, incluindo informações como a potência máxima requerida pelo dispositivo (200 mA neste caso) e os valores associados às várias interfaces e endpoints.

Capacidade de Criar Múltiplas Portas Seriais:

Este dispositivo tem a capacidade de criar várias portas seriais utilizando uma única conexão USB física. Isso é especialmente útil quando se possui um dispositivo com múltiplos canais seriais, como no caso de uma interface de controle múltipla ou para equipamentos que exigem múltiplas conexões de comunicação.

Utilidade no USBMap:

Com o USBMap, é possível visualizar detalhes precisos para cada uma das portas criadas, associando facilmente cada porta serial virtual ao dispositivo físico que as disponibiliza. Isso é particularmente útil para distinguir diferentes conversores e portas seriais em sistemas complexos. O USBMap também permite verificar qual porta (ou portas) está associada a cada dispositivo e exportar essas informações para documentação ou diagnóstico.

Este exemplo demonstra como um conversor USB-serial de múltiplas portas pode gerenciar várias conexões através de uma única porta USB. Com a ajuda de ferramentas como o USBMap, é possível obter uma visão detalhada e profunda das conexões, facilitando o monitoramento, a configuração e a resolução de problemas relacionados às conexões USB-serial. Isso é uma grande vantagem para desenvolvedores, técnicos e integradores de sistemas que trabalham com dispositivos de comunicação complexos.