USB Map

USB 포트 및 연결된 장치 맵핑

USBMap은 SerialTool의 기능으로, USB 호스트 컨트롤러, USB 허브 및 연결된 USB 장치의 기본 정보를 나열합니다.

또한 시스템 레지스트리와 장치에 대한 USB 요청을 통해 장치 정보를 조회합니다. USBMap의 메인 창은 두 개의 패널로 나뉘어 있습니다: 왼쪽 패널은 연결 지향 트리 뷰를 보여주며, USB 장치를 선택할 수 있습니다. 오른쪽 패널은 선택한 USB 장치와 관련된 USB 데이터 구조를 표시합니다.
이 구조에는 장치, 구성, 인터페이스 및 엔드포인트 설명자, 그리고 현재 장치 구성이 포함됩니다.

USBMap은 Windows, macOS 및 Linux와 호환되며, PC의 다양한 포트에 연결된 USB 장치를 시각화하는 데 매우 유용합니다. 호스트 컨트롤러 인터페이스 (USB, Firewire), USB 허브, 외부 USB 허브, 일반 장치 및 시리얼 포트를 구분할 수 있습니다. 시리얼 포트와 관련하여, USBMap은 특정 USB 컨버터에 대해 사용할 수 있는 포트 또는 여러 포트를 표시하여, 하나의 USB-시리얼 장치로 여러 포트를 생성할 수 있는 경우 이를 식별하는 데 특히 유용합니다.

USBMap이 제공하는 자세한 정보는 개발자와 기술자에게 필수적이며, 연결된 USB 장치의 특정 특성을 분석할 수 있도록 합니다. 정보의 세부 수준은 운영 체제에 따라 다를 수 있지만, USBMap은 항상 장치에 대한 철저하고 정확한 분석을 보장합니다.

USBMap의 독특한 특징은, 다양한 운영 체제에서 일반적으로 개발자 전용 기능으로 제공되는 이 기능이 SerialTool에 통합되어 별도의 패키지나 도구를 설치할 필요가 없다는 것입니다.

표시된 정보는 클립보드에 직접 복사할 수 있으며, USB 포트 맵은 ASCII 형식으로 내보내 분석 결과를 공유하고 문서화하기가 용이합니다.

참고 1: USBMap은 연결된 USB 장치만 표시하며, 가상 시리얼 포트가 존재하는 경우에는 표시하지 않습니다.
참고 2: 이 유틸리티의 일부 기능은 SerialTool의 무료 버전에서 제한될 수 있습니다. 지금 SerialTool의 PRO 버전을 얻으세요!



USBMap - 연결된 USB 포트 스캔

다중 시리얼 포트를 가진 USB 시리얼 컨버터의 예

다음은 Nanjing Qinherg Electronics Co.에서 제조한 CH 347 USB 시리얼 컨버터의 예시로, 단일 USB 연결을 통해 두 개의 시리얼 포트를 생성합니다.

USBMap - 다중 시리얼 포트가 있는 USB 시리얼 컨버터의 세부 사항


[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

Windows에서 제공하는 정보의 구조

시리얼 포트 세부 정보:

USB 포트 (Port12)는 USB 복합 장치로서 여러 인터페이스를 갖추고 다양한 통신 채널을 관리할 수 있습니다.
장치가 생성한 각 가상 시리얼 포트에는 고유한 지정이 있습니다:

- COM9 "USB-HiSpeed-SERIAL-B CH347"이라는 이름으로
- COM10 "USB-HiSpeed-SERIAL-A CH347"이라는 이름으로

각 시리얼 포트에는 다음이 포함됩니다:

친숙한 이름으로 시스템에서 포트를 식별할 수 있습니다.
장치 연결의 물리적 위치를 나타내는 위치 경로가 있습니다.
고유한 드라이버 키 및 하드웨어 ID로, 운영 체제가 하드웨어 유형과 필요한 드라이버를 정확히 식별하는 데 도움이 됩니다.

연결 및 전송 유형:

이 장치는 USB 1.1 및 USB 2.0을 지원하지만 USB 3.0은 지원하지 않습니다. 이는 "지원되는 프로토콜" 섹션에 명시되어 있습니다. 각 포트는 대량 데이터 전송을 위한 Bulk 엔드포인트와 빠르고 지속적인 신호를 위한 Interrupt 엔드포인트를 사용하여 데이터를 효율적으로 전송합니다.

장치 설명자:

설명자 섹션은 USB 장치 유형, 기능 클래스(예: 통신용 CDC 제어 - USB 통신 장치 클래스 장치)의 세부 정보를 제공하며, 인터페이스가 어떻게 구성되는지에 대한 정보를 제공합니다. 또한 장치가 요구하는 최대 전력(이 경우 200 mA)과 다양한 인터페이스 및 엔드포인트와 관련된 값이 포함된 전체 구성 설명도 표시됩니다.

다중 시리얼 포트를 생성할 수 있는 기능:

이 장치는 단일 USB 연결을 통해 여러 시리얼 포트를 생성할 수 있습니다. 이는 여러 시리얼 채널을 갖춘 장치나 여러 통신 연결이 필요한 장비에 특히 유용합니다.

USBMap의 유용성:

USBMap을 사용하면 생성된 각 포트에 대한 세부 정보를 시각화하고, 각 가상 시리얼 포트를 물리적 장치와 쉽게 연결할 수 있습니다. 이는 복잡한 시스템에서 다양한 컨버터와 시리얼 포트를 구별하는 데 특히 유용합니다. USBMap은 각 장치에 연결된 포트를 확인하고 이를 문서화 또는 진단 목적으로 내보내는 기능도 제공합니다.

이 예시는 멀티포트 USB-시리얼 컨버터가 단일 USB 포트를 통해 여러 연결을 관리하는 방법을 보여줍니다. USBMap과 같은 도구를 사용하면 연결 상태를 자세히 살펴보고 USB-시리얼 연결 문제를 해결할 수 있습니다. 이는 복잡한 통신 장비와 함께 작업하는 개발자, 기술자 및 시스템 통합자에게 큰 이점이 됩니다.