Isoler les données RGB dans les captures USB
Ce tutoriel vous montrera comment décoder des données USB pour implémenter des appareils dans SignalRGB.
Tri des données
Section intitulée « Tri des données »Avant de tenter d’interpréter la capture de données USB, nous allons vouloir la trier pour trouver certains paquets spécifiques.
Dans Wireshark :
- Ouvrez la capture de données USB
- Cliquez sur l’en-tête ‘Info’ pour trier par type de paquet
- Faites défiler jusqu’à trouver un type URB_INTERRUPT OUT ou SET_REPORT Request
Si vous ne trouvez aucune de ces commandes, vous travaillez peut-être avec un appareil RAWUSB ou la capture n’a pas été effectuée correctement. Si vous avez un appareil RAWUSB, vous verrez des commandes URBBULK_OUT ou URB_CONTROL OUT. Si vous avez un appareil RAWUSB, rejoignez ce serveur Discord pour obtenir de l’aide au développement.
Recherche des paquets RGB
Section intitulée « Recherche des paquets RGB »Les premiers paquets que nous allons chercher sont ceux qui contiennent les valeurs RGB que nous avons définies lors de la prise de nos captures de paquets USB.
Remarque : Nous allons intentionnellement ignorer les paquets d’initialisation de l’appareil pour l’instant. Ceux-ci pourraient être nécessaires ultérieurement.
Les données envoyées dans chaque paquet viennent après toutes les informations d’en-tête du protocole USB. Pour les voir, nous devons trouver la section Data Fragment.
- Sélectionnez un paquet
- Sélectionnez le champ HID Data ou développez la section Setup Data et sélectionnez le champ Data Fragment
- Cliquer sur le champ devrait également surligner la section de données en bleu en bas de Wireshark
- Le champ sélectionné affichera également les données envoyées sans espacement. Chaque 2 caractères représente un seul octet dans cette vue.

Remarque : Les valeurs que nous examinons sont en HEX (base 16), un format de données qui représente les valeurs 0 à 255 en décimal sous forme de 0x00 à 0xFF.
Structure des paquets
Section intitulée « Structure des paquets »Puisque nous avons défini le rouge, le vert et le bleu à leurs valeurs maximales dans notre guide Capture de données USB, nous allons chercher des valeurs de 0xFF dans notre capture de paquets. Si vous avez utilisé des couleurs différentes dans votre capture, vous devrez connaître la couleur HEX spécifique utilisée ou recapturer avec des couleurs connues.
Traditionnellement, les paquets d’éclairage d’un appareil contiennent un en-tête qui indique à quelle commande le paquet correspond et quelle zone d’éclairage de l’appareil nous adressons, suivi des données RGB et rarement de données de pied de page comme un checksum CRC.
Les données RGB suivent généralement quelques formats que nous pouvons vérifier en cherchant les couleurs que nous avons définies dans notre capture :
- R, G, B, R, G, B, R, G, B (Rouge -> Vert -> Bleu -> Répéter)
- RRR, GGG, BBB (Plusieurs Rouge -> Plusieurs Vert -> Plusieurs Bleu -> Répéter)
- Br, R, G, B (Luminosité -> Rouge -> Vert -> Bleu -> Répéter)
Remarque : Certains appareils utilisent un ordre de couleurs différent. Bien que la plupart utilisent RGB, vous pouvez trouver que votre appareil utilise GBR, BGR, ou une autre combinaison.
Dans notre cas, les valeurs que nous cherchons seront :
- 0xff, 0x00, 0x00 | 0x00, 0xff, 0x00 | 0x00, 0x00, 0xff (si l’appareil utilise l’ordre de paquets R,G,B).
- 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 (si l’appareil utilise l’ordre de paquets RRR,GGG,BBB).
- 0xff, 0xff, 0x00, 0x00 | 0xff, 0x00, 0xff, 0x00 | 0xff, 0x00, 0x00, 0xff (si l’appareil utilise l’ordre de paquets Br,R,G,B)
Remarque : Les exemples ci-dessus ne sont que quelques structures de paquets courantes pour les appareils et ne s’appliquent pas toujours. Vous devrez comparer et chercher des similitudes.
Vérification des paquets
Section intitulée « Vérification des paquets »En faisant défiler les paquets, nous trouvons que le paquet 271 dans notre capture contient des octets qui ressemblent à la structure de paquets R,G,B.
Remarque : Certains appareils peuvent utiliser plusieurs paquets pour définir les couleurs sur l’ensemble de l’appareil. Assurez-vous d’examiner les paquets suivants et de trouver où le paquet initial se répète.

Nous allons marquer ce paquet en utilisant la fonction MARK/UNMARK Packet dans Wireshark, ce qui peut être fait en appuyant simultanément sur les touches CTRL + M ou en faisant un clic droit sur le paquet et en cliquant sur MARK/UNMARK Packet.
Pour confirmer que ce paquet est bien l’un de nos paquets de données de couleur, nous allons continuer à défiler vers le bas pour chercher d’autres paquets correspondant à notre structure R,G,B. Nous allons également vérifier si ces paquets suivent l’ordre dans lequel nous avons défini les couleurs dans le logiciel original. C’est un bon moment pour examiner les en-têtes des paquets et voir s’ils changent. S’ils changent selon un motif, il est très probable que vous aurez besoin de plusieurs paquets pour définir toutes les LEDs de l’appareil.
En examinant les paquets 271, 273 et 275 côte à côte, nous pouvons voir que les données RGB semblent être uniquement Rouge sur le paquet 271 (0xFF, 0x00, 0x00), uniquement Vert sur le paquet 273 (0x00, 0xFF, 0x00), et uniquement Bleu sur le paquet 275 (0x00, 0x00, 0xFF). En regardant les données d’en-tête au-dessus de la section RGB, nous pouvons voir que ces données ne changent pas entre les trois paquets. Cela signifie très probablement que nous modifions les mêmes zones de couleur dans ces paquets.
- À noter également, nous pouvons utiliser les paquets de couleurs pour déterminer combien de zones contient un appareil. Nous pouvons trouver cela en vérifiant combien de fois nos valeurs connues apparaissent dans les paquets de données RGB. En regardant l’exemple ci-dessous, nous voyons que l’appareil a 4 zones que nous pouvons définitivement adresser.


Nous allons continuer à parcourir nos paquets jusqu’à trouver tous ceux qui contiennent des données de couleur et les avoir tous marqués. Après cela, nous passerons à la création de notre fichier de plugin.