Cos'è l'API WebUSB?

L'API WebUSB è uno standard del browser che consente alle pagine web di comunicare direttamente con dispositivi USB — senza installare driver nativi o applicazioni desktop. È stata introdotta in Chrome 61 e offre ai siti web accesso controllato e autorizzato a hardware come microcontroller, schede di sviluppo, interfacce MIDI e altre periferiche USB.

A differenza dell'accesso USB tradizionale (che richiede driver a livello kernel), WebUSB funziona interamente nella sandbox del browser. Gli utenti devono concedere esplicitamente il permesso per ogni dispositivo tramite il selettore di dispositivi integrato nel browser, il che garantisce che nessun sito web possa leggere o scrivere silenziosamente sul vostro hardware.

Descrizione dello strumento

Questo strumento consente di enumerare i dispositivi USB che sono stati concessi al browser tramite l'API WebUSB. Al caricamento, elenca automaticamente tutti i dispositivi precedentemente autorizzati. Puoi anche aprire il selettore USB nativo del browser per concedere l'accesso a un dispositivo appena collegato, oppure aggiornare l'elenco in qualsiasi momento.

Per ogni dispositivo, lo strumento visualizza il nome del prodotto, il produttore, l'ID fornitore, l'ID prodotto, il numero di serie e la versione del protocollo USB.

Funzionalità

  • Carica automaticamente i dispositivi USB precedentemente autorizzati all'apertura della pagina
  • Apre il selettore nativo dei dispositivi USB del browser per concedere l'accesso a nuovi dispositivi
  • Visualizza l'ID fornitore e l'ID prodotto in notazione esadecimale standard (ad es. 0x1A2B)
  • Mostra la versione del protocollo USB (ad es. 2.0, 3.1) insieme ai campi di identità del dispositivo
  • Tabella dei risultati ordinabile con esportazione in CSV e JSON

Come funziona

Quando fai clic su Aggiungi dispositivo, il browser chiama navigator.usb.requestDevice() e visualizza un selettore a livello di sistema che elenca i dispositivi USB collegati. Se ne selezioni uno, il browser memorizza il permesso per quella origine. Nelle visite successive (o dopo aver fatto clic su Aggiorna), navigator.usb.getDevices() restituisce tutti i dispositivi precedentemente autorizzati senza richiedere nuovamente il permesso.

L'ID fornitore e l'ID prodotto sono visualizzati in esadecimale maiuscolo a 4 cifre (ad es. 0x04D8) — il formato standard utilizzato nei registri USB e nei fogli dati.

Casi d'uso

  • Gli sviluppatori di firmware possono confermare rapidamente che un microcontroller o una scheda di sviluppo collegata (Arduino, STM32, RP2040, ecc.) sia correttamente enumerata dal browser prima di scrivere uno strumento di flashing basato su WebUSB.
  • Gli sviluppatori di app web possono verificare che la loro applicazione abilitata per WebUSB visualizzerà i campi di identità del dispositivo previsti durante la prototipazione in fase iniziale.

Limitazioni

  • WebUSB è supportato solo nei browser basati su Chromium (Chrome, Edge, Opera). Firefox e Safari non implementano questa API.
  • La pagina deve essere servita tramite HTTPS (o localhost) — WebUSB è bloccato su origini HTTP semplici.
  • Alcune combinazioni di sistema operativo e browser limitano l'accesso a determinate classi di dispositivi (ad es. HID, archiviazione di massa) anche quando i permessi sono concessi.
  • Questo strumento legge solo i metadati del dispositivo; non apre alcuna interfaccia USB né trasferisce dati da/verso il dispositivo.