Signatur
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
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);
}
});
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();
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.');
}
// 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 inusbVersionMajor,usbVersionMinorundusbVersionSubminor. - Die Semantik legt der Hersteller fest. Manche Geräte setzen die Geräteversion gar nicht sinnvoll und liefern immer
0.