在 USB 擷取中隔離 RGB 資料
本教學將向您展示如何解碼 USB 資料以在 SignalRGB 中實作裝置。
在嘗試解釋 USB 資料擷取之前,我們需要先對其進行排序以找到一些特定的封包。
在 Wireshark 中:
- 開啟 USB 資料擷取
- 點擊「Info」表頭按封包類型排序
- 滾動直到找到 URB_INTERRUPT OUT 或 SET_REPORT Request 類型
如果您找不到上述任何命令,您可能正在處理 RAWUSB 裝置,或者您的擷取可能不正確。如果您有 RAWUSB 裝置,您將看到 URB_BULK_OUT 或 URB_CONTROL OUT 命令。如果您有 RAWUSB 裝置,請加入這個 Discord 伺服器以獲取開發協助。
尋找 RGB 封包
Section titled “尋找 RGB 封包”我們首先要尋找的封包是包含我們在進行 USB 封包擷取時設定的 RGB 值的封包。
注意:我們現在故意忽略裝置初始化封包。這些可能在稍後需要。
每個封包中發送的資料在所有 USB 協定標頭資訊之後。要查看這個,我們需要找到 Data Fragment 部分。
- 選擇一個封包
- 選擇 HID Data 欄位,或展開 Setup Data 部分並選擇 Data Fragment 欄位
- 點擊該欄位應該也會在 Wireshark 底部以藍色高亮顯示資料部分
- 選定的欄位還將顯示不帶間距的發送資料。在此視圖中,每 2 個字元是一個位元組。

注意:我們正在查看的值將以十六進位(base 16)表示,這是一種將十進位的 0 到 255 表示為 0x00 到 0xFF 的資料格式。
由於我們在擷取 USB 資料指南中將紅色、綠色和藍色設定為最大值,我們將在封包擷取中尋找 0xFF 的值。如果您在擷取中使用了不同的顏色,您需要知道使用的特定十六進位顏色,或者用已知顏色重新擷取。
傳統上,裝置的燈光封包包含一個標頭,用於表示封包針對哪個命令以及我們正在處理的裝置的哪個燈光區域,後面跟著 RGB 資料,以及像 CRC 校驗碼之類的頁腳資料(較少見)。
RGB 資料通常遵循幾種格式,我們可以通過在擷取中尋找我們設定的顏色來檢查:
- R, G, B, R, G, B, R, G, B(紅色 → 綠色 → 藍色 → 重複)
- RRR, GGG, BBB(多個紅色 → 多個綠色 → 多個藍色 → 重複)
- Br, R, G, B(亮度 → 紅色 → 綠色 → 藍色 → 重複)
注意:某些裝置將使用不同的顏色順序。雖然大多數使用 RGB,但您可能會發現您的裝置使用 GBR、BGR 或其他組合。
在我們的情況下,我們要尋找的值將是:
- 0xff, 0x00, 0x00 | 0x00, 0xff, 0x00 | 0x00, 0x00, 0xff(如果裝置使用 R,G,B 封包順序)
- 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00(如果裝置使用 RRR,GGG,BBB 封包順序)
- 0xff, 0xff, 0x00, 0x00 | 0xff, 0x00, 0xff, 0x00 | 0xff, 0x00, 0x00, 0xff(如果裝置使用 Br,R,G,B 封包順序)
注意:上述範例只是裝置的一些常見封包結構,可能並不總是適用。您需要比較並尋找相似之處。
滾動查看封包時,我們發現擷取中的封包 271 包含看起來類似於 R,G,B 封包結構的位元組。
注意:某些裝置可能使用多個封包來設定整個裝置上的顏色。確保您查看下一個封包,並確保找到初始封包重複的位置。

我們將使用 Wireshark 中的 MARK/UNMARK Packet 功能來標記此封包,可以通過同時按 CTRL + M 鍵或右鍵點擊封包並點擊 MARK/UNMARK Packet 來完成。
為了確認此封包確實是我們的顏色資料封包之一,我們將繼續滾動以尋找更多符合 R,G,B 結構的封包。我們還將查看這些封包是否按照我們在原始軟體中設定顏色的順序排列。這是查看封包標頭並確認它們是否發生變化的好時機。如果它們以某種模式變化,很可能您需要多個封包來設定裝置上的所有 LED。
並排查看封包 271、273 和 275,我們可以看到 RGB 資料在封包 271 中似乎只有紅色(0xFF, 0x00, 0x00),在封包 273 中只有綠色(0x00, 0xFF, 0x00),在封包 275 中只有藍色(0x00, 0x00, 0xFF)。查看 RGB 部分上方的標頭資料,我們可以看到這三個封包之間的資料沒有變化。這很可能意味著我們在這些封包中更改的是同一個顏色區域。
- 另外值得注意的是,我們可以使用顏色封包來確定裝置包含多少個區域。我們可以通過檢查我們的已知值在 RGB 資料封包中出現多少次來找到這個數字。查看下面的範例,我們看到裝置有 4 個我們可以確定定址的區域。


我們將繼續查看封包,直到找到所有包含顏色資料的封包並將它們全部標記。之後,我們將繼續創建我們的外掛程式檔案。