0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0
Impostazioni
Collega un dispositivo USB e guarda tutto quello che dichiara: il suo Vendor ID e il suo Product ID, il produttore, il prodotto, il numero di serie e l'albero completo di configurazioni, interfacce ed endpoint con le loro classi e i tipi di trasferimento. Lo strumento legge soltanto i descrittori; non apre mai il dispositivo né gli invia dati.
Dispositivi proposti

Come funziona

Mostra quello che un dispositivo USB dichiara di sé appena viene collegato. Il descrittore di dispositivo porta il Vendor ID assegnato dall'USB-IF, il Product ID scelto dal produttore, la versione della specifica USB che dichiara di rispettare, la versione del prodotto stesso e, se il dispositivo li espone, i testi di produttore, prodotto e numero di serie.

Sotto compare l'albero completo: ogni configurazione con le sue interfacce, ogni interfaccia con la sua terna di classe, sottoclasse e protocollo tradotta nel nome ufficiale dell'USB-IF, e ogni endpoint con il suo indirizzo, il suo verso, il suo tipo di trasferimento e la dimensione massima del pacchetto. Le interfacce con più impostazioni alternative —comuni in videocamere e schede audio— sono elencate a parte.

Lo strumento legge soltanto i descrittori: non apre mai una sessione con il dispositivo, non riserva mai un'interfaccia e non gli invia mai un byte, quindi non interferisce con il driver che lo sta usando. Tutto il percorso si può esportare in JSON per allegarlo a un report o confrontarlo con quello di un altro computer.

Esempi

046D:C52B0x00 / 0x00 / 0x00 → 3 × HID (0x03)Un ricevitore wireless di tastiera e mouse dichiara la classe 0x00 nel dispositivo, quindi il tipo reale si definisce interfaccia per interfaccia: qui, tre interfacce HID con un endpoint di ingresso a interruzione ciascuna.
0x08 / 0x06 / 0x50Mass Storage · SCSI transparent command set · Bulk-Only TransportLa terna tipica di una chiavetta USB o di un disco esterno: due endpoint di massa, uno di ingresso e uno di uscita, sui quali viaggiano i comandi SCSI.
0x02 / 0x02 / 0x01Communications and CDC Control · Abstract Control Model · AT Commands (ITU-T V.250)È la porta seriale virtuale di una scheda di sviluppo o di un modem: un'interfaccia di controllo con un endpoint a interruzione e un'interfaccia CDC-Data con i due endpoint di massa che trasportano i dati.

Casi d'uso

  • Scoprire il Vendor ID e il Product ID esatti di un dispositivo per cercarne il driver o per scrivere una regola udev su Linux.
  • Vedere il numero di serie di una chiavetta, di un lettore o di un adattatore quando il sistema operativo non lo mostra a colpo d'occhio.
  • Verificare durante lo sviluppo del firmware che il dispositivo pubblichi le interfacce, le alternative e gli endpoint attesi, con le classi corrette.
  • Scoprire su quale endpoint e con quale tipo di trasferimento bisogna parlare a un dispositivo prima di programmarci contro.
  • Distinguere due dispositivi apparentemente uguali confrontando la versione, le interfacce e le dimensioni dei pacchetti.
  • Documentare la configurazione USB di un computer esportando l'albero completo in JSON.

Domande frequenti

Perché non funziona sul mio iPhone né su Firefox?

L'API WebUSB è implementata nei browser basati su Chromium —Chrome, Edge e Opera— per Windows, macOS, Linux, ChromeOS e Android. Firefox e Safari non la implementano, e su iOS tutti i browser usano il motore di sistema, quindi non è disponibile nemmeno lì. Servono inoltre HTTPS e che la pagina non sia incorporata dentro un altro sito.

Il dispositivo è collegato ma non compare nel selettore.

Può darsi che il filtro scelto sia troppo stretto: prova con l'opzione che propone tutti i dispositivi. Se ancora non compare, probabilmente è nella lista di blocco del browser, che esclude per sicurezza certi prodotti —tra cui le chiavi di sicurezza FIDO— perché nessuna pagina web possa toccarli. Su Linux può anche mancare il permesso di sistema sul nodo del dispositivo.

Perché il dispositivo indica la classe 0x00?

La classe 0x00 nel descrittore di dispositivo significa «guarda le interfacce». La usano quasi tutti i dispositivi compositi, che combinano funzioni diverse sullo stesso cavo: una tastiera con hub incorporato, una videocamera che espone anche un microfono o una stampante multifunzione. In questi casi il tipo reale di ogni funzione sta nella classe di ciascuna interfaccia, non in quella del dispositivo.

Che cos'è un endpoint e cosa significa un indirizzo come 0x81?

Un endpoint è ognuna delle caselle attraverso cui i dati entrano o escono da un'interfaccia. I sette bit bassi dell'indirizzo sono il numero dell'endpoint e il bit più alto indica il verso, quindi 0x81 è l'endpoint 1 di ingresso —dal dispositivo verso il computer— e 0x01 sarebbe l'endpoint 1 di uscita. Il tipo di trasferimento definisce il trattamento che riceve: di massa per volumi grandi senza scadenza, a interruzione per eventi piccoli e frequenti come un tasto, e isocrona per audio e video, che preferiscono perdere un pacchetto piuttosto che arrivare tardi.

Lo strumento può modificare o rompere qualcosa nel dispositivo?

No. Legge solo i descrittori che il browser ha già ottenuto enumerando il dispositivo; non apre mai una sessione, non riserva mai un'interfaccia e non scrive mai. Per questo puoi ispezionare perfino una tastiera o una chiavetta che il sistema operativo sta usando in quel momento, anche se a una pagina web non è permesso comunicare con loro.

Perché il produttore o il prodotto risultano vuoti?

Quei testi sono descrittori opzionali: molti dispositivi economici semplicemente non li scrivono, e alcuni sistemi operativi non li consegnano al browser. Per questi casi lo strumento cerca il Vendor ID e il Product ID nel catalogo usb.ids del progetto Linux USB, che registra il nome ufficiale del produttore e, spesso, anche quello del prodotto.

I dati del dispositivo escono dal mio computer?

I descrittori si leggono nel tuo browser e non vengono inviati a nessun server. L'unica eccezione è la ricerca nel catalogo usb.ids, che consulta il Vendor ID e il Product ID —due numeri che identificano il modello, non il tuo computer né il tuo esemplare— e che puoi disattivare prima di scegliere il dispositivo. Il numero di serie non viene mai inviato.

Cosa sono le impostazioni alternative di un'interfaccia?

Una stessa interfaccia può dichiarare più gruppi di endpoint e tenerne attivo uno solo. Le videocamere e le schede audio le usano per offrire combinazioni diverse di risoluzione o di qualità: ogni alternativa riserva una banda diversa sul bus, e il sistema operativo sceglie quella giusta quando inizia a trasmettere. L'alternativa 0 è quella che resta attiva mentre il dispositivo è inattivo.