Start · Sprachen · JavaScript · Referenz · USBDevice.deviceVersionMinor

USBDevice.deviceVersionMinor

Eigenschaft

Schreibgeschützte Eigenschaft, die die Nebenversion (Minor) der Geräteversion eines USB-Geräts als Zahl von 0 bis 15 liefert.

seit JavaScript Chrome 61+, Edge 79+, Opera 48+ (nicht in Firefox Kategorie: webapi

Signatur

USBDevice.deviceVersionMinor

Beschreibung

deviceVersionMinor ist eine schreibgeschützte Eigenschaft des USBDevice-Interfaces aus der WebUSB-API. Sie enthält die Nebenversion der vom Hersteller festgelegten Geräteversion. Zusammen mit deviceVersionMajor und deviceVersionSubminor ergibt sich eine Versionsangabe nach dem Schema Major.Minor.Subminor, zum Beispiel 2.1.3.

Der Wert stammt aus dem Feld bcdDevice des USB-Gerätedeskriptors. Dieses Feld ist BCD-kodiert im Format 0xJJMN: JJ ist die Hauptversion, M die Nebenversion und N die Subversion. deviceVersionMinor entspricht also genau einem Halbbyte (Nibble) und liegt immer zwischen 0 und 15.

Typische Anwendungsfälle sind die Anzeige der Firmware- bzw. Hardware-Revision in einer Web-Oberfläche, das Prüfen einer Mindestversion vor dem Aufruf bestimmter Gerätefunktionen sowie die Entscheidung, ob ein Firmware-Update angeboten werden soll. Die Eigenschaft ist verfügbar, sobald man ein USBDevice-Objekt hat, zum Beispiel über navigator.usb.requestDevice() oder navigator.usb.getDevices(). Das Gerät muss dafür nicht vorher mit open() geöffnet werden.

Rückgabewert

Typ
number
Beschreibung
Eine Ganzzahl (Oktett) zwischen 0 und 15, die die Nebenversion des Geräts angibt.

Beispiele

Geräteversion nach Benutzerauswahl anzeigen

// Muss durch eine Benutzeraktion (z. B. Klick) ausgelöst werden
const button = document.querySelector('#connect');

button.addEventListener('click', async () => {
  try {
    const device = await navigator.usb.requestDevice({ filters: [] });
    const { deviceVersionMajor, deviceVersionMinor, deviceVersionSubminor } = device;
    console.log(`${device.productName}: Version ${deviceVersionMajor}.${deviceVersionMinor}.${deviceVersionSubminor}`);
  } catch (err) {
    console.warn('Kein Gerät ausgewählt:', err.message);
  }
});
Arduino Leonardo: Version 1.0.0

Bereits freigegebene Geräte auflisten

const listDevices = async () => {
  if (!('usb' in navigator)) {
    console.log('WebUSB wird nicht unterstützt.');
    return;
  }
  const devices = await navigator.usb.getDevices();
  for (const d of devices) {
    console.log(`${d.productName ?? 'Unbekannt'} – Minor: ${d.deviceVersionMinor}`);
  }
};

listDevices();
Mein Messgerät – Minor: 4

Mindestversion der Firmware prüfen

// Liefert true, wenn die Geräteversion >= der geforderten Version ist
const isAtLeast = (device, major, minor = 0, subminor = 0) => {
  const current = [device.deviceVersionMajor, device.deviceVersionMinor, device.deviceVersionSubminor];
  const required = [major, minor, subminor];
  for (let i = 0; i < 3; i++) {
    if (current[i] !== required[i]) return current[i] > required[i];
  }
  return true;
};

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

// Wichtig · Fallstricke

  • Browser-Kompatibilität: WebUSB gibt es nur in Chromium-basierten Browsern (Chrome, Edge, Opera). Firefox und Safari unterstützen die API nicht. Prüfe deshalb vorher mit 'usb' in navigator, ob sie vorhanden ist.
  • Die API funktioniert nur in einem sicheren Kontext (HTTPS oder localhost). Über eine Permissions-Policy (usb) lässt sie sich zum Beispiel in iframes sperren.
  • Der Wertebereich liegt nur bei 0–15, weil die Nebenversion aus einem einzelnen BCD-Halbbyte stammt. Nebenversionen wie „10“ in der Hersteller-Dokumentation werden deshalb oft anders kodiert. Verlass dich also nicht darauf, dass die Hersteller-Nummerierung genau übereinstimmt.
  • Die Geräteversion (bcdDevice) ist nicht dasselbe wie die unterstützte USB-Protokollversion. Die findest du in usbVersionMajor, usbVersionMinor und usbVersionSubminor.
  • Die Semantik legt der Hersteller fest. Manche Geräte setzen die Geräteversion gar nicht sinnvoll und liefern immer 0.