Выделение RGB-данных из USB-захватов
Это руководство покажет, как расшифровать USB-данные для реализации устройств в SignalRGB.
Сортировка данных
Заголовок раздела «Сортировка данных»Прежде чем пытаться интерпретировать захват USB-данных, необходимо отсортировать его для поиска конкретных пакетов.
В Wireshark:
- Откройте захват USB-данных
- Нажмите на заголовок «Info» для сортировки по типу пакета
- Прокручивайте, пока не найдёте пакеты типа URB_INTERRUPT OUT или SET_REPORT Request
Если ни одна из перечисленных выше команд не найдена, возможно, вы работаете с RAWUSB-устройством или захват был выполнен некорректно. Для RAWUSB-устройств вы увидите команды URB_BULK_OUT или URB_CONTROL OUT. Если у вас RAWUSB-устройство, присоединитесь к серверу Discord для помощи по разработке.
Поиск RGB-пакетов
Заголовок раздела «Поиск RGB-пакетов»Первые пакеты, которые мы ищем, — те, что содержат RGB-значения, установленные при создании захвата USB-пакетов.
Примечание: Пакеты инициализации устройства намеренно игнорируются на данном этапе. Они могут потребоваться позже.
Данные, передаваемые в каждом пакете, следуют после всей информации заголовка протокола USB. Чтобы увидеть их:
- Выберите пакет
- Выберите поле HID Data или разверните раздел Setup Data и выберите поле Data Fragment
- Нажатие на поле также выделит раздел данных синим цветом в нижней части Wireshark
- Выбранное поле также покажет отправленные данные без пробелов. В этом виде каждые 2 символа — один байт.

Примечание: Рассматриваемые значения представлены в HEX (шестнадцатеричном формате, основание 16) — формате данных, представляющем значения от 0 до 255 в десятичной форме как значения от 0x00 до 0xFF.
Структура пакета
Заголовок раздела «Структура пакета»Поскольку в руководстве по захвату USB-данных мы устанавливали красный, зелёный и синий на максимальные значения, мы будем искать значения 0xFF в захвате пакетов. Если вы использовали другие цвета, вам нужно знать конкретный HEX-цвет или сделать повторный захват с известными цветами.
Традиционно пакеты освещения устройства содержат заголовок, указывающий команду и зону освещения устройства, за которым следуют 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.
Примечание: Некоторые устройства могут использовать несколько пакетов для установки цветов на всём устройстве. Обязательно посмотрите следующие пакеты и убедитесь, что находите место повтора начального пакета.

Пометим этот пакет с помощью функции MARK/UNMARK Packet в Wireshark, которую можно вызвать одновременным нажатием CTRL + M или правой кнопкой мыши на пакете и выбором MARK/UNMARK Packet.
Чтобы убедиться, что пакет действительно является пакетом цветовых данных, продолжайте прокрутку в поисках дополнительных пакетов со структурой R,G,B. Также проверяйте, следуют ли эти пакеты порядку, в котором устанавливались цвета в исходном программном обеспечении. Это хорошее время для изучения заголовков пакетов: если они изменяются по шаблону, скорее всего потребуется несколько пакетов для установки всех светодиодов устройства.
Сравнивая пакеты 271, 273 и 275 рядом, мы видим, что RGB-данные выглядят как только красный в пакете 271 (0xFF, 0x00, 0x00), только зелёный в пакете 273 (0x00, 0xFF, 0x00) и только синий в пакете 275 (0x00, 0x00, 0xFF). Глядя на данные заголовка выше RGB-секции, видим, что эти данные не изменяются между тремя пакетами. Скорее всего это означает, что мы изменяем одни и те же цветовые зоны в этих пакетах.
- Также заметим, что цветовые пакеты можно использовать для определения количества зон устройства. Это делается путём подсчёта количества вхождений известных значений в RGB-пакетах. Глядя на пример ниже, видим, что устройство имеет 4 зоны, которыми мы определённо можем управлять.


Продолжайте прокрутку пакетов, пока не найдёте и не пометите все пакеты с цветовыми данными. После этого перейдём к созданию файла плагина.