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
Configuração
Conecte um dispositivo USB e veja tudo o que ele declara: o Vendor ID e o Product ID, o fabricante, o produto, o número de série e a árvore completa de configurações, interfaces e endpoints com suas classes e tipos de transferência. A ferramenta apenas lê descritores; nunca abre o dispositivo nem envia dados para ele.
Dispositivos oferecidos

Como funciona

Mostra o que um dispositivo USB declara sobre si mesmo assim que é conectado. O descritor de dispositivo traz o Vendor ID atribuído pelo USB-IF, o Product ID escolhido pelo fabricante, a versão da especificação USB que ele diz cumprir, a versão do próprio produto e, se o dispositivo os expõe, os textos de fabricante, produto e número de série.

Abaixo aparece a árvore completa: cada configuração com suas interfaces, cada interface com seu trio de classe, subclasse e protocolo traduzido para o nome oficial do USB-IF, e cada endpoint com seu endereço, seu sentido, seu tipo de transferência e o tamanho máximo de pacote. As interfaces com várias configurações alternativas —comum em câmeras e placas de som— são listadas à parte.

A ferramenta só lê descritores: nunca abre uma sessão com o dispositivo, nunca reivindica uma interface e nunca envia um byte a ele, então não interfere no driver que está usando o aparelho. Todo o percurso pode ser exportado em JSON para anexar a um relatório ou comparar com o de outro equipamento.

Exemplos

046D:C52B0x00 / 0x00 / 0x00 → 3 × HID (0x03)Um receptor sem fio de teclado e mouse declara a classe 0x00 no dispositivo, então o tipo real é definido interface por interface: aqui, três interfaces HID com um endpoint de entrada por interrupção cada uma.
0x08 / 0x06 / 0x50Mass Storage · SCSI transparent command set · Bulk-Only TransportO trio típico de um pendrive ou de um disco externo: dois endpoints em massa, um de entrada e um de saída, pelos quais viajam os comandos SCSI.
0x02 / 0x02 / 0x01Communications and CDC Control · Abstract Control Model · AT Commands (ITU-T V.250)É a porta serial virtual de uma placa de desenvolvimento ou de um modem: uma interface de controle com um endpoint por interrupção e uma interface CDC-Data com os dois endpoints em massa que levam os dados.

Casos de uso

  • Descobrir o Vendor ID e o Product ID exatos de um dispositivo para procurar o driver dele ou para escrever uma regra udev no Linux.
  • Ver o número de série de um pendrive, de um leitor ou de um adaptador quando o sistema operacional não o mostra à primeira vista.
  • Confirmar durante o desenvolvimento de firmware que o dispositivo publica as interfaces, as alternativas e os endpoints esperados, com as classes corretas.
  • Descobrir em qual endpoint e com qual tipo de transferência é preciso falar com um dispositivo antes de programar para ele.
  • Distinguir dois dispositivos aparentemente iguais comparando a versão, as interfaces e os tamanhos de pacote.
  • Documentar a configuração USB de um equipamento exportando a árvore completa em JSON.

Perguntas frequentes

Por que não funciona no meu iPhone nem no Firefox?

A API WebUSB está implementada em navegadores baseados em Chromium —Chrome, Edge e Opera— para Windows, macOS, Linux, ChromeOS e Android. Firefox e Safari não a implementam, e no iOS todos os navegadores usam o motor do sistema, então também não está disponível ali. Além disso é preciso HTTPS e que a página não esteja incorporada dentro de outro site.

O dispositivo está conectado mas não aparece no seletor.

Pode ser que o filtro escolhido seja estreito demais: teste a opção que oferece todos os dispositivos. Se mesmo assim não aparecer, é provável que esteja na lista de bloqueio do navegador, que exclui por segurança certos produtos —entre eles as chaves de segurança FIDO— para que nenhuma página web possa tocá-los. No Linux também pode faltar a permissão do sistema sobre o nó do dispositivo.

Por que o dispositivo diz classe 0x00?

A classe 0x00 no descritor de dispositivo significa «olhe as interfaces». Quase todos os dispositivos compostos a usam, combinando funções diferentes no mesmo cabo: um teclado com hub embutido, uma câmera que também expõe um microfone ou uma impressora multifuncional. Nesses casos o tipo real de cada função está na classe de cada interface, não na do dispositivo.

O que é um endpoint e o que significa um endereço como 0x81?

Um endpoint é cada uma das caixas por onde entram ou saem dados de uma interface. Os sete bits baixos do endereço são o número do endpoint e o bit mais alto indica o sentido, então 0x81 é o endpoint 1 de entrada —do dispositivo para o equipamento— e 0x01 seria o endpoint 1 de saída. O tipo de transferência define o tratamento que ele recebe: em massa para volumes grandes sem prazo, por interrupção para eventos pequenos e frequentes como uma tecla, e isócrona para áudio e vídeo, que preferem perder um pacote a chegar atrasados.

A ferramenta pode modificar ou quebrar algo no dispositivo?

Não. Ela só lê os descritores que o navegador já obteve ao enumerar o dispositivo; nunca abre uma sessão, nunca reivindica uma interface e nunca escreve. Por isso você pode inspecionar até um teclado ou um pendrive que o sistema operacional está usando naquele momento, mesmo que uma página web não tenha permissão para se comunicar com eles.

Por que o fabricante ou o produto aparecem vazios?

Esses textos são descritores opcionais: muitos dispositivos baratos simplesmente não os gravam, e alguns sistemas operacionais não os entregam ao navegador. Para esses casos a ferramenta busca o Vendor ID e o Product ID no catálogo usb.ids do projeto Linux USB, que registra sim o nome oficial do fabricante e, muitas vezes, o do produto.

Os dados do dispositivo saem do meu equipamento?

Os descritores são lidos no seu navegador e não são enviados a nenhum servidor. A única exceção é a busca no catálogo usb.ids, que consulta o Vendor ID e o Product ID —dois números que identificam o modelo, não o seu equipamento nem a sua unidade— e que você pode desativar antes de escolher o dispositivo. O número de série nunca é enviado.

O que são as configurações alternativas de uma interface?

Uma mesma interface pode declarar vários conjuntos de endpoints e manter apenas um ativo. As câmeras e as placas de som os usam para oferecer combinações diferentes de resolução ou de qualidade: cada alternativa reserva uma largura de banda distinta no barramento, e o sistema operacional escolhe a adequada ao começar a transmitir. A alternativa 0 é a que fica ativa enquanto o dispositivo está ocioso.