Start · Sprachen · JavaScript · Referenz · USBDevice.usbVersionMinor

USBDevice.usbVersionMinor

Eigenschaft

Schreibgeschützte Zahl mit der Nebenversion (Minor) des USB-Protokolls, das ein <code>USBDevice</code> laut Geräte-Deskriptor unterstützt, z. B. <code>1</code> bei USB 2.1.

seit JavaScript Chrome/Edge 61+ (WebUSB, nicht Baseline) Kategorie: webapi

Signatur

USBDevice.usbVersionMinor

Beschreibung

Die Eigenschaft usbVersionMinor eines USBDevice-Objekts gibt die Nebenversion der USB-Spezifikation an, die das Gerät unterstützt. Zusammen mit usbVersionMajor und usbVersionSubminor ergibt sie die vollständige Protokollversion, z. B. 2.1.0 oder 3.2.0.

Der Wert stammt aus dem Feld bcdUSB des USB-Geräte-Deskriptors. Dieses Feld ist im BCD-Format (Binary Coded Decimal) kodiert: 0x0210 steht für USB 2.1.0. Den Wert entschlüsselt der Browser bereits für dich. usbVersionMinor enthält also direkt die Ziffer nach dem ersten Punkt, bei 0x0210 also 1.

Typische Einsatzfälle sind Diagnose- und Debug-Oberflächen, Protokolle zur Geräteerkennung und Fallunterscheidungen im Code. Ein Beispiel: Ab USB 2.1 muss ein Gerät einen BOS-Deskriptor (Binary Object Store) bereitstellen. Über diesen werden WebUSB-Plattform-Fähigkeiten und Microsoft-OS-2.0-Deskriptoren angekündigt. Die Eigenschaft kann schon gelesen werden, bevor das Gerät mit open() geöffnet wurde.

Rückgabewert

Typ
number
Beschreibung
Ganze Zahl (Oktett, 0–15 bei gültiger BCD-Kodierung) mit der Nebenversion des USB-Protokolls, z. B. 0 für USB 2.0, 1 für USB 2.1 oder 2 für USB 3.2.

Beispiele

USB-Version eines ausgewählten Geräts anzeigen

// Muss durch eine Nutzeraktion ausgelöst werden (z. B. Klick)
document.querySelector('#verbinden').addEventListener('click', async () => {
  try {
    const device = await navigator.usb.requestDevice({ filters: [] });
    const version = `${device.usbVersionMajor}.${device.usbVersionMinor}.${device.usbVersionSubminor}`;
    console.log(`${device.productName ?? 'Unbekanntes Gerät'} unterstützt USB ${version}`);
  } catch (err) {
    console.warn('Kein Gerät ausgewählt:', err.message);
  }
});
Arduino Leonardo unterstützt USB 2.1.0

Bereits freigegebene Geräte auflisten

const listeGeraete = async () => {
  const devices = await navigator.usb.getDevices();
  return devices.map((d) => ({
    name: d.productName,
    vendorId: d.vendorId.toString(16).padStart(4, '0'),
    usb: `${d.usbVersionMajor}.${d.usbVersionMinor}`
  }));
};

listeGeraete().then(console.table);
┌─────────┬──────────────────┬──────────┬───────┐ │ (index) │ name │ vendorId │ usb │ ├─────────┼──────────────────┼──────────┼───────┤ │ 0 │ 'WebUSB Demo' │ '2341' │ '2.1' │ └─────────┴──────────────────┴──────────┴───────┘

Mindestversion prüfen (z. B. USB ≥ 2.1 für BOS-Deskriptor)

const unterstuetztBOS = (device) =>
  device.usbVersionMajor > 2 ||
  (device.usbVersionMajor === 2 && device.usbVersionMinor >= 1);

const [device] = await navigator.usb.getDevices();
if (device) {
  console.log(unterstuetztBOS(device)
    ? 'BOS-Deskriptor verfügbar'
    : 'Altes Gerät (USB < 2.1), keine BOS-Fähigkeiten');
}
BOS-Deskriptor verfügbar

// Wichtig · Fallstricke

  • Browser-Unterstützung: WebUSB gibt es nur in Chromium-basierten Browsern wie Chrome, Edge und Opera, und zwar auf dem Desktop und unter Android. Firefox und Safari unterstützen die API nicht. Prüfe deshalb vorher mit 'usb' in navigator, ob sie verfügbar ist.
  • Sicherer Kontext: Die API steht nur unter HTTPS oder localhost zur Verfügung. Sie kann außerdem per Permissions-Policy (usb) gesperrt werden, etwa in iframes.
  • Nur lesbar: Wenn du der Eigenschaft einen Wert zuweist, wird das stillschweigend ignoriert (im Strict Mode gibt es einen TypeError).
  • Nicht mit der Geräteversion verwechseln: usbVersionMinor beschreibt das USB-Protokoll, nicht die Firmware des Geräts. Die Firmware-Version (bcdDevice) steht in deviceVersionMajor, deviceVersionMinor und deviceVersionSubminor.
  • Angabe des Herstellers: Der Wert ist das, was das Gerät selbst im Deskriptor meldet. Er sagt nichts über die tatsächlich ausgehandelte Verbindungsgeschwindigkeit aus. Ein USB-3.x-Gerät an einem USB-2-Anschluss kann trotzdem 3/2 melden, und manche billigen Geräte machen falsche Angaben.