Isolera RGB-data i USB-inspelningar
Den här handledningen visar hur du tolkar USB-data för att lägga till en enhet i SignalRGB.
Sortera data
Section titled “Sortera data”Innan vi försöker tolka USB-datainspelningen vill vi sortera den för att hitta specifika paket.
I Wireshark:
- Öppna USB-datainspelningen
- Klicka på ‘Info’-rubriken för att sortera efter pakettyp
- Bläddra ned tills du hittar typen URB_INTERRUPT OUT eller SET_REPORT Request
Om du inte kan hitta något av ovanstående kommandon kan du antingen arbeta med en RAWUSB-enhet eller ha gjort inspelningen på fel sätt. Om du har en RAWUSB-enhet ser du kommandon av typen URB_BULK_OUT eller URB_CONTROL OUT. Om du har en RAWUSB-enhet, gå med i den här discord-servern för hjälp med utvecklingen.
Hitta RGB-paket
Section titled “Hitta RGB-paket”De paket vi letar efter först är de som innehåller RGB-värdena vi ställde in när vi gjorde våra USB-paketinspelningar.
Obs: Vi ignorerar medvetet enhetsinitieringspaket för tillfället. Dessa kan behövas senare.
Data som skickas i varje paket kommer efter all USB-protokollhuvudinformation. För att se det behöver vi hitta Data Fragment-sektionen.
- Välj ett paket
- Välj fältet HID Data eller expandera sektionen Setup Data och välj fältet Data Fragment
- Att klicka på fältet ska markera datasektionen i blått längst ned i Wireshark
- Det valda fältet visar också data som skickas utan mellanslag. I den här vyn är varje 2 tecken en byte.

Obs: Värdena vi tittar på kommer att vara i HEX-format (bas 16); ett dataformat som representerar värden från 0 till 255 i decimal som värden 0x00 till 0xFF.
Paketstruktur
Section titled “Paketstruktur”Eftersom vi ställde in rött, grönt och blått på sina maxvärden i vår USB-datainspelning kommer vi att leta efter 0xFF-värden i paketinspelningen. Om du använde olika färger i din inspelning behöver du antingen känna till den specifika HEX-färgen som används eller göra en ny inspelning med kända färger.
Traditionellt sett innehåller en enhets belysningspaket ett huvud som identifierar vilket kommando paketet tillhör och vilken belysningszon på en enhet som adresseras, följt av RGB-data och sällan sidfotdata som CRC-kontrollsummor.
RGB-data följer vanligtvis ett av några format som vi kan kontrollera genom att titta på de färger vi ställde in i inspelningen:
- R, G, B, R, G, B, R, G, B (Röd -> Grön -> Blå -> Upprepa)
- RRR, GGG, BBB (Flera Röda -> Flera Gröna -> Flera Blå -> Upprepa)
- Br, R, G, B (Ljusstyrka -> Röd -> Grön -> Blå -> Upprepa)
Obs: Vissa enheter använder en annan färgordning. Medan de flesta använder RGB kan du se att din enhet använder GBR, BGR eller någon annan kombination.
Värdena vi letar efter i vårt fall är:
- 0xff, 0x00, 0x00 | 0x00, 0xff, 0x00 | 0x00, 0x00, 0xff (om enheten använder R,G,B-paketordning).
- 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 (om enheten använder RRR,GGG,BBB-paketordning).
- 0xff, 0xff, 0x00, 0x00 | 0xff, 0x00, 0xff, 0x00 | 0xff, 0x00, 0x00, 0xff (om enheten använder Br,R,G,B-paketordning)
Obs: Exemplen ovan är bara några vanliga paketstrukturer för enheter och kanske inte alltid stämmer. Du behöver jämföra och leta efter likheter.
Kontrollera paket
Section titled “Kontrollera paket”När vi bläddrar igenom paketen ser vi att paket 271 innehåller bytes som liknar R,G,B-paketstrukturen.
Obs: Vissa enheter kan använda flera paket för att ställa in färger på hela enheten. Se till att titta på efterföljande paket och hitta var det första paketet upprepas.

Vi markerar det här paketet med MARK/UNMARK Packet-funktionen i Wireshark; det kan göras genom att trycka CTRL + M samtidigt, eller högerklicka på paketet och klicka på MARK/UNMARK Packet.
För att bekräfta att det här paketet verkligen är ett av våra färgdatapaket fortsätter vi att bläddra nedåt för att leta efter fler paket som passar vår R,G,B-struktur. Vi tittar också på om dessa paket följer ordningen i vilken vi ställde in färgerna i originalprogramvaran. Det är ett bra tillfälle att titta på dessa pakethuvuden och se om de ändras. Om de ändras i ett mönster behövs troligtvis flera paket för att ställa in alla lysdioder på enheten.
Om vi tittar på paket 271, 273 och 275 sida vid sida ser vi att RGB-data i paket 271 är bara Rött (0xFF, 0x00, 0x00), i paket 273 bara Grönt (0x00, 0xFF, 0x00) och i paket 275 bara Blått (0x00, 0x00, 0xFF). Om vi tittar på huvud-datan ovanför RGB-sektionen ser vi att den inte ändras mellan de tre paketen. Det innebär sannolikt att vi ändrade samma färgzoner i dessa paket.
- Något annat att notera: vi kan använda färgpaketen för att bestämma hur många zoner en enhet har. Vi kan hitta det genom att kontrollera hur många gånger kända värden förekommer i RGB-datapaketen. Om vi tittar på exemplet nedan ser vi tydligt en enhet med 4 adresserbara zoner.


Vi fortsätter att granska paketen nedåt tills vi har hittat och markerat alla paket som innehåller färgdata. Därefter går vi vidare till att skapa vår plugin-fil.