Start · Sprachen · JavaScript · Referenz · USBDevice.manufacturerName

USBDevice.manufacturerName

Eigenschaft

Schreibgeschützte Eigenschaft, die den Herstellernamen des USB-Geräts als <code>string</code> liefert oder <code>null</code>, wenn das Gerät keinen angibt.

seit JavaScript WebUSB: Chrome/Edge 61+, Opera 48+ (kein Firefox, Kategorie: webapi

Signatur

USBDevice.manufacturerName

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

Typ
string | null
Beschreibung
Der vom Gerät gemeldete Herstellername. 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);
  }
});
Verbunden mit: Arduino LLC – Arduino Uno

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();
2341:0043 Arduino LLC 1050:0407 Yubico

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');
});
Gerät angeschlossen: Arduino LLC

// Wichtig · Fallstricke

  • Kann null sein: 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 vendorId und productId nutzen.
  • Nicht ungeprüft als HTML einfügen: Der Wert stammt vom Gerät. Für die Ausgabe textContent statt innerHTML verwenden, 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 usb gesperrt sein.
  • Die Eigenschaft ist schreibgeschützt. Eine Zuweisung wird ignoriert und löst im strikten Modus einen TypeError aus.