บน Linux สามารถตรวจสอบสถานะความเร็วและการเจรจาโปรโตคอล (Negotiated Speed) ของอุปกรณ์ USB ได้อย่างละเอียดผ่าน Kernel Sysfs, เครื่องมือกลุ่ม usbutils และ Kernel Log โดยไม่ต้องติดตั้งซอฟต์แวร์เสริมขนาดใหญ่
วิธีที่ 1: ตรวจสอบผ่าน lsusb -t (เร็วและเห็นภาพลำดับ Tree ชัดเจนที่สุด)
คำสั่ง lsusb -t แสดงแผนผังโครงสร้างพอร์ต (Topology Tree) พร้อมบอกค่าความเร็วในการทำงานจริงของแต่ละอุปกรณ์ทันที
- เปิด Terminal แล้วรันคำสั่ง
Bash
BASH / Shell
lsusb -t
- สังเกตเอาต์พุตที่แสดงผล
Plaintext
Plain Text
Plain Text
/: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/6p, 10000M
|__ Port 1: Dev 2, If 0, Class=Mass Storage, Driver=usb-storage, 5000M
/: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/12p, 480M
|__ Port 2: Dev 3, If 0, Class=Human Interface Device, Driver=usbhid, 12M
- สังเกตตัวเลขความเร็วด้านหลังสุด
480M
USB 2.0 (High-Speed)5000M
USB 3.0 / USB 3.1 Gen 1 (SuperSpeed – 5 Gbps)10000M
USB 3.1 Gen 2 / USB 3.2 (SuperSpeedPlus – 10 Gbps)20000M
USB 3.2 2×2 (20 Gbps)
หากอุปกรณ์ของคุณรองรับ 5000M แต่ขึ้นโชว์ว่าวิ่งอยู่ที่ 480M แสดงว่าตัวอุปกรณ์ตกไปจับคู่ที่โปรโตคอล USB 2.0 เรียบร้อยแล้ว
วิธีที่ 2: อ่านค่าตรงจาก Virtual Filesystem (/sys/bus/usb/devices/)
วิธีนี้ไม่ต้องพึ่งพาแพ็กเกจภายนอก เหมาะสำหรับนำไปเขียน Bash Script อัตโนมัติ โดยเคอร์เนลของ Linux จะจัดเก็บความเร็วลิงก์จริงไว้ในไฟล์ speed
รันคำสั่ง One-liner เพื่อดึงรายชื่ออุปกรณ์พร้อมความเร็ว
Bash
BASH / Shell
for dev in /sys/bus/usb/devices/*; do
if [ -f "$dev/product" ]; then
echo "$(cat "$dev/product" 2>/dev/null) [$(basename "$dev")]: $(cat "$dev/speed" 2>/dev/null) Mbps"
fi
done
ผลลัพธ์ที่ได้
Plaintext
Plain Text
Plain Text
USB SanDisk 3.2Gen1 [2-1]: 5000 Mbps
USB Optical Mouse [1-2]: 1.5 Mbps
Generic USB Hub [1-4]: 480 Mbps
ค่าที่อ่านได้จะแสดงเป็น Mbps โดยตรง เช่น 480 (USB 2.0) หรือ 5000 / 10000 (USB 3.x)
วิธีที่ 3: ตรวจสอบ Log การเสียบสด ๆ ผ่าน dmesg
วิธีนี้ช่วยวิเคราะห์จังหวะที่เสียบสายได้ดีที่สุด ว่าคอนโทรลเลอร์ตรวจจับพินและเจรจาความเร็วได้เท่าใดในเสี้ยววินาทีแรก
- เปิด Terminal แล้วสั่งมอนิเตอร์ Log ล่วงหน้า
Bash
BASH / Shell
sudo dmesg -w
- ทำการเสียบอุปกรณ์ USB เข้ากับพอร์ต แล้วสังเกตข้อความบรรทัดใหม่ที่ปรากฏขึ้น:
- กรณีเสียบติดเป็น USB 3.0 (SuperSpeed)
usb 2-1: new SuperSpeed USB device number 2 using xhci_hcd usb-storage 2-1:1.0: USB Mass Storage device detected - กรณีเสียบช้าแล้วตกไปเป็น USB 2.0 (High-Speed)
usb 1-1: new high-speed USB device number 3 using xhci_hcd - หากขึ้นข้อความ
SuperSpeedPlusแสดงว่าเชื่อมต่อได้ในระดับ 10 Gbps ขึ้นไป
- กรณีเสียบติดเป็น USB 3.0 (SuperSpeed)
วิธีที่ 4: ตรวจสอบ Descriptor เชิงลึกผ่าน lsusb -v
หากต้องการตรวจสอบว่าตัวอุปกรณ์เองรองรับความเร็วสูงสุดเท่าใด (Hardware Capability) เทียบกับที่ระบบมองเห็น
- หา Device ID ก่อนด้วยคำสั่ง
lsusbทั่วไป
Bash
Plain Text
Plain Text
lsusb
(สมมติได้ ID เช่น 0781:5583)
- ดึงข้อมูล Descriptor เฉพาะอุปกรณ์นั้น:
Bash
Plain Text
Plain Text
sudo lsusb -d 0781:5583 -v | grep -E "bcdUSB|wSpeedSupported"
bcdUSB 3.20(หรือ 3.00, 2.10)
คือมาตรฐานฮาร์ดแวร์สูงสุดที่ตัวอุปกรณ์ถูกสร้างมารองรับ- หากตัวอุปกรณ์ระบุ
bcdUSB 3.xแต่เมื่อเช็กในlsusb -tได้เพียง480Mแสดงว่าเกิดปัญหาการ Handshake จากการเสียบช้า สายสัญญาณมีปัญหา หรือพอร์ตต้นทางไม่รองรับ
สรุปค่าเปรียบเทียบใน Linux
| ตัวเลขใน lsusb -t | ข้อความใน dmesg | ค่าใน Sysfs (/sys) | มาตรฐาน USB |
| 480M | high-speed | 480 | USB 2.0 |
| 5000M | SuperSpeed | 5000 | USB 3.0 / USB 3.1 Gen 1 |
| 10000M | SuperSpeedPlus | 10000 | USB 3.1 Gen 2 / USB 3.2 |
| 20000M | SuperSpeedPlus | 20000 | USB 3.2 Gen 2×2 |