Определение типа устройства
Экспорт Type() сообщает SignalRGB, какой протокол USB-связи использовать для вашего плагина. Неправильный выбор типа — одна из наиболее частых причин, по которым плагин не может установить связь с устройством.
export function Type() { return "hid"; }Доступные типы
Заголовок раздела «Доступные типы»| Строка типа | Протокол | Типичные устройства |
|---|---|---|
"hid" | HID (Human Interface Device) | Клавиатуры, мыши, гарнитуры, большинство потребительских периферийных устройств |
"rawusb" | Прямые bulk/interrupt-передачи через libusb | AIO-кулеры, ЖК-экраны, пользовательское оборудование, контроллеры освещения |
"hybrid" | Одновременно HID и Raw USB | Устройства, использующие HID для управляющих команд, но bulk USB для больших данных (например, мониторы Alienware, AIO Ryuo от ASUS) |
"serial" | Последовательный/COM-порт | Контроллеры на базе Arduino, Hyte CNVS |
"smbus" | SMBus / I²C | Планки RAM, GPU, заголовки материнской платы через SMBus |
"network" | Сетевой сокет (TCP или UDP) | Контроллеры с Wi-Fi или Ethernet-подключением |
Строки типа нечувствительны к регистру — "HID", "Hid" и "hid" работают одинаково, но строчные буквы являются конвенцией.
HID — наиболее распространённый тип. Операционная система предоставляет SignalRGB прямой доступ к устройству без необходимости пользовательского драйвера. Используйте его для клавиатур, мышей, гарнитур и большинства потребительских периферийных устройств.
export function Type() { return "hid"; }При использовании HID для записи применяются device.write() / device.send_report(), для чтения — device.read() / device.get_report(). Подробнее см. в разделе Записи и чтения.
Raw USB
Заголовок раздела «Raw USB»Raw USB обходит уровень HID и напрямую взаимодействует с устройством через libusb. Он нужен в следующих случаях:
- Устройство не является HID-устройством
- Требуются bulk-передачи, превышающие ограничение размера HID-пакета
- Устройству необходим доступ на уровне libusb (например, для потоковой передачи изображений на ЖК-дисплей)
export function Type() { return "rawusb"; }При использовании Raw USB применяются те же функции device.write() и device.read(), но теперь они соответствуют bulk/interrupt-передачам libusb, а не HID. Для более точного управления можно также использовать device.bulk_transfer() и device.control_transfer(). См. Расширенная связь.
Используйте "hybrid", когда устройство использует HID для одних команд (например, аутентификации или конфигурации) и Raw USB bulk-передачи для других (например, потоковой передачи изображений на ЖК-дисплей). Конечные точки HID и Raw USB открываются одновременно.
export function Type() { return "hybrid"; }Для устройств, подключённых через COM-порт. Импортируйте @SignalRGB/serial и используйте его методы чтения/записи. Полное описание API Serial см. в разделе Расширенная связь.
import { serial } from "@SignalRGB/serial";export function Type() { return "serial"; }Как определить правильный тип
Заголовок раздела «Как определить правильный тип»Если вы не уверены, какой тип нужен устройству, начните отсюда:
Перечисляет ли Windows его как HID-устройство?├─ Да → начните с "hid"│ Если команды записи завершаются с ошибкой → попробуйте "rawusb"│ Если устройство также нуждается в больших bulk-передачах → используйте "hybrid"│├─ Нет, это COM/последовательный порт → "serial"│├─ Нет, это сетевое устройство → "network"│└─ Нет, это SMBus-устройство (RAM, GPU) → "smbus"Наиболее надёжный способ проверить — открыть USBDeview или Диспетчер устройств и посмотреть на класс устройства. Класс HID означает "hid". Класс USB или libusb означает "rawusb". Если вы видите оба — может потребоваться "hybrid".
При сомнениях сначала попробуйте "hid". Если device.write() возвращает ошибку или устройство не отвечает, переключитесь на "rawusb".