Signatur
Beschreibung
Die Eigenschaft manufacturerName eines USBDevice-Objekts enthält den Namen des Herstellers, den das Gerät selbst meldet. Der Wert kommt aus dem String-Deskriptor, auf den das Feld iManufacturer im USB-Geräte-Deskriptor verweist, zum Beispiel "Arduino LLC" oder "Yubico".
Typische Einsatzzwecke sind die Anzeige in der Oberfläche (etwa „Verbunden mit: Arduino LLC – Arduino Uno“), Protokollierung und Fehlersuche. Der Wert steht direkt nach navigator.usb.requestDevice() oder navigator.usb.getDevices() bereit. Das Gerät muss dafür nicht mit open() geöffnet werden.
Zur eindeutigen Erkennung eines Geräts ist manufacturerName nicht geeignet. Das Feld ist optional, frei wählbar und nicht standardisiert. Für Filter und Zuordnung sollte man vendorId und productId verwenden und den Herstellernamen nur zur Anzeige nutzen.
Rückgabewert
null, wenn das Gerät keinen Hersteller-String-Deskriptor hat (iManufacturer ist 0) oder der Wert nicht gelesen werden konnte.Beispiele
Hersteller nach Geräteauswahl anzeigen
// Muss durch eine Nutzeraktion ausgelöst werden (z. B. Klick)
const button = document.querySelector('#connect');
button.addEventListener('click', async () => {
try {
const device = await navigator.usb.requestDevice({
filters: [{ vendorId: 0x2341 }] // Arduino
});
const hersteller = device.manufacturerName ?? 'Unbekannter Hersteller';
console.log(`Verbunden mit: ${hersteller} – ${device.productName ?? 'Unbekanntes Produkt'}`);
} catch (err) {
console.warn('Keine Auswahl getroffen:', err.message);
}
});
Bereits freigegebene Geräte auflisten
const listeGeraete = async () => {
if (!('usb' in navigator)) {
console.log('WebUSB wird nicht unterstützt.');
return;
}
const devices = await navigator.usb.getDevices();
for (const d of devices) {
const vid = d.vendorId.toString(16).padStart(4, '0');
const pid = d.productId.toString(16).padStart(4, '0');
console.log(`${vid}:${pid} ${d.manufacturerName ?? '(kein Herstellername)'}`);
}
};
listeGeraete();
Hersteller beim Anstecken protokollieren
navigator.usb.addEventListener('connect', (event) => {
const { device } = event;
console.log('Gerät angeschlossen:', device.manufacturerName ?? 'unbekannt');
});
navigator.usb.addEventListener('disconnect', (event) => {
console.log('Gerät getrennt:', event.device.manufacturerName ?? 'unbekannt');
});
// Wichtig · Fallstricke
- Kann
nullsein: Viele günstige oder selbstgebaute Geräte melden keinen Herstellernamen. Deshalb immer einen Ersatzwert vorsehen, z. B. mit??. - Nicht zur Identifikation verwenden: Der String ist frei gewählt und kann sich zwischen Firmware-Versionen ändern. Für Filter und Zuordnung
vendorIdundproductIdnutzen. - Nicht ungeprüft als HTML einfügen: Der Wert stammt vom Gerät. Für die Ausgabe
textContentstattinnerHTMLverwenden, damit keine XSS-Lücke entsteht. - Browser-Unterstützung: WebUSB gibt es nur in Chromium-Browsern (Chrome, Edge, Opera), nicht in Firefox oder Safari. Die API ist nur in sicheren Kontexten (HTTPS) verfügbar und kann per Permissions-Policy
usbgesperrt sein. - Die Eigenschaft ist schreibgeschützt. Eine Zuweisung wird ignoriert und löst im strikten Modus einen
TypeErroraus.