Signatur
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
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);
}
});
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);
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');
}
// 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
localhostzur 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:
usbVersionMinorbeschreibt das USB-Protokoll, nicht die Firmware des Geräts. Die Firmware-Version (bcdDevice) steht indeviceVersionMajor,deviceVersionMinorunddeviceVersionSubminor. - 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/2melden, und manche billigen Geräte machen falsche Angaben.