USB Map

Mappa le porte USB ed i dispositivi collegati

USBMap è una funzione di SerialTool che elenca le informazioni di base sui controller host USB, sugli hub USB e sui dispositivi USB collegati.

Interroga anche informazioni sui dispositivi dal registro di sistema e tramite richieste USB ai dispositivi stessi. La finestra principale di USBMap è suddivisa in due pannelli: il pannello a sinistra mostra una vista ad albero orientata alla connessione, che consente di selezionare qualsiasi dispositivo USB; il pannello a destra visualizza le strutture dati USB relative al dispositivo USB selezionato.
Queste strutture includono i descrittori di Dispositivo, Configurazione, Interfaccia ed Endpoint, e la configurazione corrente del dispositivo.

USBMap è compatibile con Windows, macOS e Linux, ed è molto utile per visualizzare quali dispositivi USB sono collegati alle varie porte del PC. Permette di distinguere tra Host Controller Interface (USB, Firewire), USB Hub, USB Hub Esterni, dispositivi generici e Porte Seriali . Con riferimento alle porte seriali, USBMap consente di visualizzare anche quale porta o più porte seriali sono disponibili per uno specifico convertitore USB, un aspetto particolarmente utile quando un singolo dispositivo USB-seriale è in grado di creare più porte seriali, che altrimenti potrebbero risultare difficili da identificare.

Le informazioni dettagliate che USBMap fornisce sono indispensabili per sviluppatori e tecnici, consentendo loro di analizzare le caratteristiche specifiche dei dispositivi USB collegati. Il livello di dettaglio delle informazioni può variare a seconda del sistema operativo, ma USBMap garantisce sempre un’analisi esaustiva e precisa dei dispositivi.

Un aspetto distintivo di USBMap è che questa funzionalità, tipicamente riservata agli sviluppatori sui vari sistemi operativi, è integrata in SerialTool senza bisogno di installare pacchetti o strumenti aggiuntivi, offrendo un accesso diretto e semplificato.

Le informazioni visualizzate possono essere copiate direttamente negli appunti e la mappa delle porte USB può essere esportata in formato ASCII, facilitando la condivisione e la documentazione dell’analisi effettuata.

Nota 1: USBMap visualizza i dispositivi USB collegati e non le porte seriali virtuali qualora fossero presenti.
Nota 2: Alcune funzionalità di questa utility potrebbero essere limitate nella versione FREE di SerialTool. Ottieni ora la versione PRO di SerialTool!



USBMap - Scan delle porta USB collegate

Esempio di convertitore USB Seriale con seriali multiple.

Ecco un esempio di un convertitore USB Seriale CH 347 prodotto dalla Nanjing Qinherg Electronics Co. che crea due porte seriali in una singola connessione USB.

Screenshot of USBMap displaying detailed information about a USB device

USBMap - Dettagli Convertitore USB Seriale con porte seriali multiple


[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

Struttura delle informazioni fornite da Windows

Dettagli delle Porte Seriali:

La porta USB (Port12) è utilizzata per gestire il dispositivo come USB Composite Device, il che significa che ha più interfacce e può gestire diversi canali di comunicazione.
Ogni porta seriale virtuale creata dal dispositivo ha una propria designazione:

- COM9 con il nome "USB-HiSpeed-SERIAL-B CH347"
- COM10 con il nome "USB-HiSpeed-SERIAL-A CH347"

Ogni porta seriale ha:

Un Friendly Nameche consente di identificare la porta nel sistema.
Un Percorso di Posizione (Location Path) che indica dove si trova fisicamente la connessione del dispositivo.
Un Driver Key e Hardware ID, che sono informazioni uniche del dispositivo e aiutano il sistema operativo a identificare correttamente il tipo di hardware e il driver richiesto.

Connessione e Tipologia di Trasferimento:

Questo dispositivo supporta USB 1.1 e USB 2.0, ma non è compatibile con USB 3.0. Ciò è specificato sotto la sezione "Protocols Supported". Ogni porta utilizza sia endpoint Bulk (per grandi quantità di dati) che Interrupt (per segnali più rapidi e costanti) per il trasferimento dei dati, il che permette di trasmettere i dati seriali in modo efficiente.

Descrittori del Dispositivo:

La sezione dei descrittori fornisce dettagli sul tipo di dispositivo USB, le sue classi di funzione (ad esempio, Communications (CDC Control - Universal Serial Bus device class ) per i dispositivi di comunicazione), e il modo in cui le interfacce sono organizzate. Viene mostrata anche la descrizione completa della configurazione, che include informazioni come la potenza massima richiesta dal dispositivo (200 mA in questo caso) e i valori associati alle varie interfacce e endpoint.

Capacità di Creare Porte Seriali Multiple:

Questo dispositivo ha la capacità di creare più porte seriali utilizzando una sola connessione fisica USB. Questo è particolarmente utile quando si dispone di un dispositivo con più canali seriali, come nel caso di un'interfaccia di controllo multipla o per apparecchiature che necessitano di più connessioni di comunicazione.

Utilità in USBMap:

Con l'utilizzo di USBMap, è possibile visualizzare dettagli precisi per ciascuna delle porte create, associando facilmente ciascuna porta seriale virtuale al dispositivo fisico che le mette a disposizione. Questo è particolarmente utile per distinguere i vari convertitori e porte seriali in sistemi complessi. USBMap consente anche di verificare quale porta (o porte) è associata a ciascun dispositivo e di esportare queste informazioni per documentazione o diagnostica.

Questo esempio dimostra come un convertitore USB-seriale multi-porta possa gestire più connessioni attraverso un’unica porta USB. Con l'aiuto di strumenti come USBMap, è possibile ottenere una visione dettagliata e approfondita delle connessioni, facilitando il monitoraggio, la configurazione e la risoluzione di problemi legati alle comunicazioni USB-seriali. Questo è un grande vantaggio per sviluppatori, tecnici e integratori di sistemi che lavorano con dispositivi di comunicazione complessi.