Start · Sprachen · JavaScript · Referenz · USBDevice.deviceVersionSubminor

USBDevice.deviceVersionSubminor

Eigenschaft

Schreibgeschützte Ganzzahl mit der Patch-Versionsnummer (Subminor) des USB-Geräts, entnommen aus dem Feld <code>bcdDevice</code> des Gerätedeskriptors.

seit JavaScript Chrome/Edge 61+, Opera 48+ (WebUSB, nur Chromium-B Kategorie: webapi

Signatur

USBDevice.deviceVersionSubminor

Beschreibung

Die Eigenschaft deviceVersionSubminor eines USBDevice-Objekts gibt den dritten Teil der vom Hersteller festgelegten Geräteversion zurück, also die Patch- bzw. Subminor-Nummer. Zusammen mit deviceVersionMajor und deviceVersionMinor ergibt sich eine Versionsangabe in der Form Major.Minor.Subminor, z. B. 2.1.3.

Der Wert kommt aus dem 16-Bit-Feld bcdDevice des USB-Gerätedeskriptors. Dieses Feld ist BCD-codiert (0xJJMN): Das obere Byte ist die Hauptversion, das nächste Halbbyte die Nebenversion und das unterste Halbbyte die Subminor-Version. Deshalb liegt deviceVersionSubminor immer im Bereich 0 bis 15.

Brauchbar ist die Eigenschaft vor allem, um den Firmware-Stand eines angeschlossenen Geräts zu prüfen, z. B. um vor einem Update Kompatibilitätsprüfungen zu machen, bekannte Fehler bestimmter Firmware-Versionen zu umgehen oder die Version in einer Diagnoseoberfläche anzuzeigen. Die Eigenschaft lässt sich lesen, ohne das Gerät vorher mit open() zu öffnen.

Rückgabewert

Typ
number
Beschreibung
Ganzzahl von 0 bis 15: das unterste Halbbyte von bcdDevice, also die Patch-Version des Geräts.

Beispiele

Vollständige Geräteversion nach Nutzeraktion anzeigen

const button = document.querySelector('#connect');

button.addEventListener('click', async () => {
  try {
    // requestDevice braucht eine Nutzeraktion (Klick)
    const device = await navigator.usb.requestDevice({ filters: [] });
    const version = `${device.deviceVersionMajor}.${device.deviceVersionMinor}.${device.deviceVersionSubminor}`;
    console.log(`${device.productName}: Firmware ${version}`);
  } catch (err) {
    console.warn('Kein Gerät ausgewählt:', err.message);
  }
});
Mein USB-Gerät: Firmware 2.1.3

Bereits freigegebene Geräte auflisten

const devices = await navigator.usb.getDevices();

for (const d of devices) {
  console.log(
    d.vendorId.toString(16).padStart(4, '0'),
    d.productId.toString(16).padStart(4, '0'),
    `v${d.deviceVersionMajor}.${d.deviceVersionMinor}.${d.deviceVersionSubminor}`
  );
}
2341 0043 v1.0.1

Mindest-Firmware prüfen

const toTuple = (d) => [d.deviceVersionMajor, d.deviceVersionMinor, d.deviceVersionSubminor];

const isAtLeast = (device, [maj, min, sub]) => {
  const [a, b, c] = toTuple(device);
  if (a !== maj) return a > maj;
  if (b !== min) return b > min;
  return c >= sub;
};

const [device] = await navigator.usb.getDevices();
if (device && !isAtLeast(device, [1, 4, 2])) {
  console.log('Bitte Firmware auf mindestens 1.4.2 aktualisieren.');
}
Bitte Firmware auf mindestens 1.4.2 aktualisieren.

// Wichtig · Fallstricke

  • Browser-Kompatibilität: WebUSB gibt es nur in Chromium-Browsern (Chrome, Edge, Opera). Firefox und Safari unterstützen die API nicht. Prüfe das vorher mit 'usb' in navigator.
  • Die API ist nur in einem sicheren Kontext (HTTPS oder localhost) verfügbar und lässt sich per Permissions-Policy (usb) sperren, z. B. in iframes.
  • Wegen der BCD-Codierung ist der Wert höchstens 15. Versionen wie „1.0.23“ lassen sich über bcdDevice nicht darstellen.
  • Die Bedeutung der Versionsnummer legt allein der Hersteller fest. Viele Geräte setzen bcdDevice nicht sinnvoll (oft einfach 0x0100), deshalb liefert die Eigenschaft häufig 0.
  • Die Eigenschaft ist schreibgeschützt. Zuweisungen werden stillschweigend ignoriert (im Strict Mode gibt es einen TypeError).