運作方式
顯示 USB 裝置一接上就對外宣告的自身資訊。裝置描述元包含 USB-IF 指派的供應商 ID、製造商選定的產品 ID、它宣稱遵循的 USB 規範版本、產品本身的版本,以及裝置若有提供的製造商、產品與序號文字。
下方會列出完整的樹狀結構:每個設定與它的介面,每個介面的類別、子類別與協定三元組並轉換成 USB-IF 官方名稱,以及每個端點的位址、方向、傳輸類型與最大封包大小。具有多組替代設定的介面——在攝影機與音效卡上很常見——會另外列出。
本工具只讀取描述元:從不與裝置建立工作階段,從不佔用介面,也從不向它傳送任何一個位元組,因此不會干擾正在使用它的驅動程式。整棵樹可以匯出成 JSON,方便附在報告中或與另一台電腦的結果比較。
範例
046D:C52B0x00 / 0x00 / 0x00 → 3 × HID (0x03)鍵盤滑鼠無線接收器在裝置層宣告類別 0x00,因此真正的類型由各個介面決定:這裡是三個 HID 介面,每個各有一個中斷輸入端點。0x08 / 0x06 / 0x50Mass Storage · SCSI transparent command set · Bulk-Only Transport隨身碟或外接硬碟的典型三元組:兩個大量端點,一進一出,SCSI 指令就在上面傳輸。0x02 / 0x02 / 0x01Communications and CDC Control · Abstract Control Model · AT Commands (ITU-T V.250)這是開發板或數據機的虛擬序列埠:一個帶中斷端點的控制介面,加上一個帶兩個大量端點、負責傳輸資料的 CDC-Data 介面。使用情境
- 查出裝置準確的供應商 ID 與產品 ID,以便尋找驅動程式或在 Linux 上撰寫 udev 規則。
- 當作業系統沒有直接顯示時,查看隨身碟、讀卡機或轉接器的序號。
- 在開發韌體時確認裝置發布了預期的介面、替代設定與端點,而且類別正確。
- 在為裝置寫程式之前,弄清楚該透過哪個端點、用哪種傳輸類型與它溝通。
- 比較版本、介面與封包大小,分辨兩台看起來一樣的裝置。
- 把整棵樹匯出成 JSON,為一台電腦的 USB 設定留下文件。
常見問題
為什麼在我的 iPhone 和 Firefox 上不能用?
WebUSB API 在以 Chromium 為基礎的瀏覽器——Chrome、Edge 與 Opera——的 Windows、macOS、Linux、ChromeOS 和 Android 版本中實作。Firefox 與 Safari 沒有實作,而在 iOS 上所有瀏覽器都使用系統引擎,所以那裡同樣無法使用。此外還需要 HTTPS,而且頁面不能被嵌在另一個網站裡。
裝置已經接上,但選擇視窗裡看不到它。
可能是所選的篩選條件太窄:試試列出全部裝置的選項。若仍未出現,很可能它在瀏覽器的封鎖清單中;基於安全考量,該清單排除了某些產品——其中包括 FIDO 安全金鑰——以免任何網頁碰到它們。在 Linux 上也可能缺少對裝置節點的系統權限。
為什麼裝置顯示類別 0x00?
裝置描述元中的類別 0x00 意思是「請看介面」。幾乎所有複合裝置都用它,因為它們把不同功能合在同一條線上:內建集線器的鍵盤、同時提供麥克風的攝影機,或是多功能事務機。這種情況下,每個功能的真正類型在各個介面的類別裡,而不在裝置的類別裡。
什麼是端點?像 0x81 這樣的位址代表什麼?
端點就是資料進出某個介面的一個個信箱。位址的低七位是端點編號,最高位表示方向,所以 0x81 是輸入端點 1——從裝置到電腦——而 0x01 則是輸出端點 1。傳輸類型決定它得到的待遇:大量傳輸適合沒有時限的大批資料,中斷適合按鍵這類頻繁的小事件,等時傳輸適合影音,它們寧可掉一個封包也不願遲到。
這個工具會不會更動或弄壞裝置?
不會。它只讀取瀏覽器在列舉裝置時已經取得的描述元;從不建立工作階段,從不佔用介面,也從不寫入。正因如此,即使是作業系統此刻正在使用的鍵盤或隨身碟也能檢查,儘管網頁並不被允許與它們通訊。
為什麼製造商或產品是空的?
這些文字是選用的描述元:很多平價裝置根本沒有寫入,有些作業系統也不會交給瀏覽器。遇到這種情況,工具會到 Linux USB 專案的 usb.ids 目錄中查詢供應商 ID 與產品 ID,那裡記錄著製造商的官方名稱,很多時候也有產品名稱。
裝置的資料會離開我的電腦嗎?
描述元在你的瀏覽器中讀取,不會傳送到任何伺服器。唯一的例外是 usb.ids 目錄查詢,它只查詢供應商 ID 與產品 ID——這兩個數字標示型號,而不是你的電腦或你手上的這一台——而且你可以在選擇裝置之前關閉它。序號從不傳送。
介面的替代設定是什麼?
同一個介面可以宣告多組端點,但只保留一組處於使用中。攝影機與音效卡用它來提供不同的解析度或音質組合:每組替代設定在匯流排上保留的頻寬不同,作業系統會在開始傳輸時挑選合適的那一組。裝置閒置時保持使用中的是 0 號替代設定。