USB Device Info Viewer: ดู VID, PID และข้อมูล WebUSB ในเบราว์เซอร์
คู่มือใช้ USB Device Info Viewer กับ WebUSB API เพื่อดู vendor ID, product ID และ device class แบบประมวลผลในเครื่องบน Chrome, Edge หรือ Opera
Table of Contents
อุปกรณ์ USB ดูคล้ายกันจนกว่าจะต้องใช้ตัวเลขจริง: vendor ID, product ID, ชื่อผู้ผลิต และ device class เครื่องมือ USB Device Info Viewer เป็นตัวตรวจในเบราว์เซอร์ที่ใช้ WebUSB API ให้คุณขอสิทธิ์เข้าถึงอุปกรณ์ อ่านรหัสเหล่านี้ และเก็บ session ไว้ในเครื่อง
ไม่ต้องติดตั้ง Device Manager แบบเดสก์ท็อป และไม่ต้องให้เว็บสุ่มเข้าถึงไฟล์ หน้าเว็บขอ USB จากเบราว์เซอร์ คุณเลือกอุปกรณ์จาก chooser แล้ว descriptor อยู่แค่ในแท็บนั้น เหมาะตอนต่อ firmware, เขียน HID report parser หรือตรวจว่าดongle ปลอมไม่ใช่ชิปที่สั่งไว้
WebUSB ยังเป็น experimental platform API ใช้ได้ในเบราว์เซอร์ตระกูล Chromium ผ่าน HTTPS ต้องมี user gesture และ gadget ทั่วไปหลายชนิดไม่ขึ้นใน picker เพราะ OS หรือผู้ขายบล็อก คู่มือนี้สรุปว่า viewer แสดงอะไรได้ ทำไม hex ID สำคัญ และจะใช้อย่างไรโดยไม่สับสนกับ lsusb บนทุกเครื่อง
Why Use USB Device Info Viewer?
- VID และ PID โดยไม่ต้องเปิดเทอร์มินัล Vendor ID กับ product ID คือค่า 16-bit สองตัวที่โฮสต์ใช้โหลดไดรเวอร์ การ์ด hex ในหน้าเว็บเร็วกว่าการไล่ Device Manager บน Windows หรือ system_profiler บน macOS
- เข้าถึงแบบขออนุญาต Browser chooser คือประตู ไม่มี enumeration เงียบเบื้องหลัง คุณเลือกเองว่าเพจจะเปิดอุปกรณ์ใด
- ประมวลผลในเครื่อง ฟิลด์ descriptor ไม่ต้องส่งขึ้นเซิร์ฟเวอร์ สำคัญเมื่อมี serial number หรือชื่อผู้ผลิตบนฮาร์ดแวร์ในแล็บ
- แท็บเดียวกับเอกสาร firmware เปิดคู่ว่ากับ datasheet หรือสเก็ตช์ Arduino แทนการเปิด USB analyzer หนัก ๆ แค่เพื่อเช็ก ID บรรทัดเดียว
- จำกัดเบราว์เซอร์ชัดเจน เครื่องมือบอก Chromium, HTTPS และสถานะ WebUSB ตั้งแต่ต้น จะได้ไม่มา debug แท็บ Safari ที่ไม่มี navigator.usb
- คู่กับเครื่องมือฮาร์ดแวร์อื่น ใช้ร่วมกับตัวตรวจกล้อง, เกมแพด, NFC เมื่อต้องตรวจทั้งโต๊ะ ไม่ใช่แค่ USB
Key Features
| ฟีเจอร์ | สิ่งที่ได้ |
|---|---|
| ตรวจ WebUSB | เช็ก navigator.usb ก่อนสแกน |
| การ์ดข้อมูลอุปกรณ์ | Vendor ID, product ID, ผู้ผลิต, ชื่อสินค้า |
| Descriptor เพิ่มเติม | Serial, device class, subclass, protocol, เวอร์ชัน USB เมื่ออุปกรณ์เปิดเผย |
| Configurations และ interfaces | โครงระดับสูงสำหรับอุปกรณ์ composite |
| บริบท vendor lookup | Hex ID ที่เทียบกับตาราง usb.org หรือ linux-usb.org ได้ |
| ความเป็นส่วนตัว | ทำงานฝั่งไคลเอนต์ ไม่อัปโหลดรายการอุปกรณ์ |
- Enumerate หลังยินยอม เส้นทางสแกนคือ requestDevice กับอ็อบเจ็กต์ USBDevice ที่ผู้ใช้เลือก ไม่ใช่ดัมพ์ทุกพอร์ตฮับเงียบ ๆ
- ป้าย Experimental คีย์บอร์ด เมาส์ และแฟลชไดรฟ์บางรุ่นมักถูกกรอง ถ้าอุปกรณ์ไม่ขึ้น ให้คิดถึงกฎแพลตฟอร์มก่อนคิดว่าสายพัง จนกว่าจะยืนยันว่าเข้าเกณฑ์ WebUSB
- HTTPS หรือ localhost หน้า HTTP ธรรมดาเปิด USB stack ใน Chrome รุ่นใหม่ไม่ได้
How to Use
- เปิด USB Device Info Viewer ใน Chrome, Edge หรือ Opera บน origin ที่ปลอดภัย
- ตรวจว่าหน้ารายงานว่ารองรับ WebUSB ถ้าขึ้นแผงไม่รองรับ ให้เปลี่ยนเบราว์เซอร์หรือใช้ HTTPS Firefox กับ Safari ไม่มี WebUSB
- เสียบอุปกรณ์ที่ต้องการ เน้นบอร์ดพัฒนา, อะแดปเตอร์ USB-CDC หรือ gadget ที่ผู้ขายเอกสารว่าใช้ WebUSB ได้ อย่าคาดหวังคีย์บอร์ดบูตที่ OS ครองอยู่จะขึ้นรายการ
- กดปุ่มขอสิทธิ์/สแกน แล้วเลือกอุปกรณ์ใน chooser ของเบราว์เซอร์ สิทธิ์ผูกกับ origin และเพิกถอนใน site settings ได้
- อ่านการ์ด: vendor ID กับ product ID เป็น hex, ชื่อผู้ผลิตและสินค้า แล้วดู class/protocol ถ้ามี คัดลอกคู่ค่าไปใส่ BOARD_VID/BOARD_PID ใน firmware หรือกฎ udev
ถ้าถูกปฏิเสธสิทธิ์ แปลว่ายกเลิก chooser หรือ origin ถูกบล็อก ลองใหม่จากคลิกของผู้ใช้ WebUSB จะไม่เปิดเองจาก timer
Understanding WebUSB, VID, and Device Class
อัตลักษณ์ USB คือจำนวนเต็ม 16-bit สองตัว Vendor ID (VID) เป็นของบริษัท (หรือยืมมา) Product ID (PID) แยก SKU ภายใต้ vendor นั้น คู่มักเขียนแบบ 2341:8036 สำหรับบอร์ดตระกูล Arduino Leonardo Viewer พิมพ์เป็น hex เพราะ datasheet, lsusb และ hardware ID ของ Windows เขียนแบบนั้น
Device class เป็นแกนที่สาม Class 03 คือ HID, 08 คือ mass storage, 02 คือ CDC (serial เสมือน), 09 คือฮับ, E0 คือ wireless controller และ FF คือ vendor-specific อุปกรณ์ composite มีหลาย interface แต่ละอันมี class ของตัวเอง คนเขียน firmware สนใจเพราะบอร์ดที่ enumerate เป็น CDC คือพอร์ตซีเรียล ชิปเดียวกันถ้าเป็น HID คือคีย์บอร์ด ถ้าเป็น FF ต้องมีไดรเวอร์เฉพาะหรือเคลมผ่าน WebUSB
WebUSB อยู่เหนือต้นไม้ descriptor ไซต์เรียก navigator.usb.requestDevice({ filters }) ได้โดยใส่ฟิลเตอร์ vendorId/productId แล้วอ่าน device.vendorId, device.productId, device.manufacturerName, device.productName, device.serialNumber และรายการ configuration การเปิด interface เพื่อ bulk transfer เป็นขั้นสิทธิ์สูงกว่า Viewer ชั้นนี้คือชั้นระบุตัวตน: ชื่อกับตัวเลข ไม่ใช่ packet sniffer เต็มรูปแบบ
ความปลอดภัยคือเหตุผลที่มี chooser หน้าเว็บสุ่มเคลม YubiKey, ดิสก์ หรือ webcam USB endpoint โดยไม่คลิกไม่ได้ Chromium ยังบล็อก HID และ mass storage จำนวนมากจาก WebUSB เพื่อไม่ให้เว็บเลียนแบบคีย์บอร์ดหรืออ่านแฟลชไดรฟ์ ถ้า Arduino ขึ้นแต่เมาส์ Logitech ไม่ขึ้น นั่นตั้งใจไว้
เทียบ WebUSB กับ WebHID และ Web Serial HID เหมาะกับเกมแพดและ custom report descriptor Serial เหมาะกับอะแดปเตอร์ USB-CDC ที่เป็น /dev/tty อยู่แล้ว WebUSB คืออ็อบเจ็กต์ USBDevice ทั่วไปเมื่อต้องการ VID/PID และ configuration ที่ API ชั้นบนซ่อนไว้
Practical Use Cases
Firmware และ bootloader ID
แฟลช Pro Micro โคลนแล้ว IDE ยังรอ COM port ผิด เปิด viewer ขอสิทธิ์ทั้งโหมด bootloader กับโหมดแอป แล้วจด VID/PID ทั้งสองคู่ Bootloader มักใช้ PID คนละตัวกับสเก็ตช์ ใส่ทั้งคู่ใน upload_flags ของ platformio.ini หรือ boards.txt ของ Arduino ให้ reset-to-bootloader ตรงของจริง
QA ฮาร์ดแวร์ที่เพิ่งเข้า
กล่องสาย “FT232” จากตลาดมาถึง ขอสิทธิ์แต่ละอะแดปเตอร์ แล้วเทียบ VID 0403 (FTDI) กับของปลอมที่ใช้ vendor อื่น สตริงผู้ผลิตที่เขียน “FTDI” แต่ VID ไม่ใช่ 0403 คือธงแดง ก่อนติดตั้งไดรเวอร์บนโน้ตบุ๊กโปรดักชัน
สอน USB โดยไม่ต้อง root
ในห้องเรียน นักเรียนรัน lsusb แบบ root บนพีซีล็อกไม่ได้ Chromebook หรือ Windows ล็อกยังมี Chrome อยู่ Viewer โชว์ VID, PID และ class บนดongle ที่อนุญาต โดยไม่ต้องติดตั้ง USBView.exe
ดีบัก “device not found” ในเว็บแอป
ถ้าคุณมีหน้าเว็บสินค้าที่ใช้ WebUSB ให้จำลองเครื่องลูกค้า: เบราว์เซอร์เดียวกัน, HTTPS และ chooser Viewer ยืนยันว่ามี navigator.usb และอุปกรณ์เลือกได้หรือไม่ ถ้า chooser ว่าง JavaScript ในแลนดิงเพจยังไม่ใช่บั๊กแรกที่ต้องแก้
Best Practices
- ใช้ Chrome, Edge หรือ Opera บน HTTPS อย่าเสียเวลาบน Firefox หรือ Safari กับ API นี้
- คาดการณ์ฟิลเตอร์ เอกสารว่าแอปขอ VID/PID ใด เพื่อผู้ใช้จะไม่ไปหาเมาส์ที่ WebUSB ไม่มีทางลิสต์
- ถือ serial number เป็นความลับ ใช้ระบุบอร์ดเฉพาะได้ เก็บไว้ในแท็บ อย่าวางในทิกเก็ตสาธารณะ
- เพิกถอนสิทธิ์เมื่อเสร็จ Site settings ของเบราว์เซอร์เก็บ USB permission ล้างบนเครื่องแล็บที่ใช้ร่วมกัน
- เทียบกับ OS เมื่อ ID ดูเป็นไปไม่ได้ คู่ 0000:0000 หรือสตริงว่างมักแปลว่าอุปกรณ์ไม่ให้ string descriptor ไม่ใช่ viewer สร้างศูนย์เอง
- อย่าสับสนกับ protocol analyzer ถ้าต้องการจังหวะแพ็กเก็ตและ SOF ใช้ Wireshark กับ USBPcap หรือฮาร์ดแวร์ sniffer
พร้อมอ่านคู่ VID/PID จริงหรือยัง เปิด USB Device Info Viewer ให้สิทธิ์บอร์ดที่รองรับ WebUSB แล้วคัดลอก hex ID ไปใส่ firmware หรือกฎ udev
Related Tools You Might Like:
สุขสันต์กับการตรวจอุปกรณ์.