Ga naar inhoud

Apparaattype bepalen

De export Type() vertelt SignalRGB welk USB-communicatieprotocol voor uw plugin moet worden gebruikt. Het kiezen van het verkeerde type is een van de meest voorkomende redenen waarom een plugin er niet in slaagt met een apparaat te communiceren.

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

Type-tekenreeksProtocolTypische apparaten
"hid"HID (Human Interface Device)Toetsenborden, muizen, headsets, de meeste consumentenrandapparatuur
"rawusb"Ruwe USB bulk/interrupt-overdrachten via libusbAIO-koelers, LCD-schermen, aangepaste hardware, verlichtingscontrollers
"hybrid"Zowel HID als ruwe USB tegelijkertijdApparaten die HID gebruiken voor bedieningsopdrachten maar bulk-USB voor grote gegevens (bijv. Alienware-monitors, ASUS Ryuo AIO’s)
"serial"Serieel/COM-poortOp Arduino gebaseerde controllers, Hyte CNVS
"smbus"SMBus / I²CRAM-sticks, GPU’s, moederbordheaders toegankelijk via SMBus
"network"Netwerksocket (TCP of UDP)Via wifi of Ethernet verbonden controllers

Type-tekenreeksen zijn niet hoofdlettergevoelig — "HID", "Hid" en "hid" werken allemaal, maar kleine letters is de conventie.


HID is het meest voorkomende type. Het besturingssysteem geeft SignalRGB directe toegang tot het apparaat zonder dat een aangepast stuurprogramma nodig is. Gebruik dit voor toetsenborden, muizen, headsets en de meeste consumentenrandapparatuur.

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

Met HID gebruikt u device.write() / device.send_report() voor schrijfbewerkingen en device.read() / device.get_report() voor leesbewerkingen. Zie Schrijven en lezen voor details.


Ruwe USB omzeilt de HID-laag en communiceert rechtstreeks met het apparaat via libusb. U heeft dit nodig wanneer:

  • Het apparaat geen HID-klasse-apparaat is
  • U bulk-overdrachten nodig heeft die groter zijn dan de HID-pakketgroottegrens
  • Het apparaat libusb-niveau toegang vereist (bijv. voor LCD-afbeeldingsstreaming)
export function Type() { return "rawusb"; }

Met ruwe USB gebruikt u dezelfde device.write()- en device.read()-functies, maar deze worden nu gekoppeld aan libusb bulk/interrupt-overdrachten in plaats van HID. U kunt ook device.bulk_transfer() en device.control_transfer() gebruiken voor meer controle. Zie Geavanceerde communicatie.


Gebruik "hybrid" wanneer een apparaat HID gebruikt voor sommige opdrachten (bijv. authenticatie of configuratie) en ruwe USB bulk-overdrachten voor andere (bijv. afbeeldingsgegevens streamen naar een LCD). Zowel HID-eindpunten als ruwe USB-eindpunten worden tegelijkertijd geopend.

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

Voor apparaten verbonden via een COM-poort. Importeer @SignalRGB/serial en gebruik de lees-/schrijfmethoden. Zie Geavanceerde communicatie voor de volledige seriële API.

import { serial } from "@SignalRGB/serial";
export function Type() { return "serial"; }

Als u niet zeker weet welk type uw apparaat nodig heeft, begin hier:

Wordt het door Windows als HID-apparaat herkend?
├─ Ja → begin met "hid"
│ Als schrijfopdrachten mislukken → probeer "rawusb"
│ Als het apparaat ook grote bulk-overdrachten nodig heeft → gebruik "hybrid"
├─ Nee, het is een COM/seriële poort → "serial"
├─ Nee, het zit op het netwerk → "network"
└─ Nee, het is een SMBus-apparaat (RAM, GPU) → "smbus"

De meest betrouwbare manier om dit te controleren is USBDeview of Apparaatbeheer te openen en de apparaatklasse te bekijken. Een klasse van HID betekent "hid". Een klasse van USB of libusb betekent "rawusb". Als u beide ziet, is "hybrid" mogelijk nodig.

Probeer bij twijfel eerst "hid". Als device.write() een fout retourneert of het apparaat niet reageert, schakel dan over naar "rawusb".