跳到內容

確定裝置類型

Type() 匯出告訴 SignalRGB 您的外掛程式要使用哪種 USB 通訊協定。選擇錯誤的類型是外掛程式無法與裝置通訊的最常見原因之一。

export function Type() { return "hid"; }

類型字串協定典型裝置
"hid"HID(人機介面裝置)鍵盤、滑鼠、耳機、大多數消費性周邊設備
"rawusb"通過 libusb 進行原始 USB 批量/中斷傳輸AIO 冷卻器、LCD 螢幕、自訂硬體、燈光控制器
"hybrid"同時使用 HID 和原始 USB使用 HID 進行控制命令但使用批量 USB 進行大型資料的裝置(例如 Alienware 顯示器、ASUS Ryuo AIO)
"serial"串列/COM 埠基於 Arduino 的控制器、Hyte CNVS
"smbus"SMBus / I²CRAM 條、GPU、通過 SMBus 存取的主機板插針
"network"網路通訊端(TCP 或 UDP)Wi-Fi 或乙太網路連接的控制器

類型字串不區分大小寫——"HID""Hid""hid" 都可以使用,但慣例是使用小寫


HID 是最常見的類型。作業系統給予 SignalRGB 對裝置的直接存取權限,無需自訂驅動程式。用於鍵盤、滑鼠、耳機和大多數消費性周邊設備。

export function Type() { return "hid"; }

使用 HID 時,您可以使用 device.write() / device.send_report() 進行寫入,以及 device.read() / device.get_report() 進行讀取。有關詳細資訊,請參閱寫入和讀取


原始 USB 繞過 HID 層,使用 libusb 直接與裝置通訊。在以下情況需要使用此方式:

  • 裝置不是 HID 類別裝置
  • 您需要超過 HID 封包大小限制的批量傳輸
  • 裝置需要 libusb 級別的存取(例如 LCD 影像串流)
export function Type() { return "rawusb"; }

使用原始 USB 時,您使用相同的 device.write()device.read() 函式,但它們現在映射到 libusb 批量/中斷傳輸,而不是 HID。您也可以使用 device.bulk_transfer()device.control_transfer() 以獲得更多控制。請參閱進階通訊


當裝置對某些命令使用 HID(例如認證或設定),對其他命令使用原始 USB 批量傳輸(例如將影像資料串流到 LCD)時,使用 "hybrid"。HID 端點和原始 USB 端點同時開啟。

export function Type() { return "hybrid"; }

用於通過 COM 埠連接的裝置。匯入 @SignalRGB/serial 並使用其讀取/寫入方法。有關完整的串列 API,請參閱進階通訊

import { serial } from "@SignalRGB/serial";
export function Type() { return "serial"; }

如果您不確定您的裝置需要哪種類型,從這裡開始:

Windows 是否將其列舉為 HID 裝置?
├─ 是 → 從 "hid" 開始
│ 如果寫入命令失敗 → 嘗試 "rawusb"
│ 如果裝置還需要大型批量傳輸 → 使用 "hybrid"
├─ 否,是 COM/串列埠 → "serial"
├─ 否,是網路裝置 → "network"
└─ 否,是 SMBus 裝置(RAM、GPU)→ "smbus"

最可靠的檢查方法是開啟 USBDeview裝置管理員,並查看裝置類別。HID 類別意味著 "hid"USBlibusb 類別意味著 "rawusb"。如果兩者都有,則可能需要 "hybrid"

如有疑問,先嘗試 "hid"。如果 device.write() 返回錯誤或裝置沒有響應,則切換到 "rawusb"