0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0
設定
接上一個 USB 裝置,查看它宣告的全部資訊:供應商 ID 與產品 ID、製造商、產品、序號,以及設定、介面與端點的完整樹狀結構,含各自的類別與傳輸類型。本工具只讀取描述元,從不開啟裝置,也不會向它傳送資料。
可選裝置

運作方式

顯示 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 號替代設定。