Перейти к содержимому

Определение типа устройства

Экспорт Type() сообщает SignalRGB, какой протокол USB-связи использовать для вашего плагина. Неправильный выбор типа — одна из наиболее частых причин, по которым плагин не может установить связь с устройством.

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

Строка типаПротоколТипичные устройства
"hid"HID (Human Interface Device)Клавиатуры, мыши, гарнитуры, большинство потребительских периферийных устройств
"rawusb"Прямые bulk/interrupt-передачи через libusbAIO-кулеры, ЖК-экраны, пользовательское оборудование, контроллеры освещения
"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 обходит уровень 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".