Se eu executar um lsusb -v
comando, recebo um campo chamado idProduct
e um campo chamado iProduct
.
Para muitos dispositivos, iProduct é definido como 0, mas para outros, é definido como um nome de produto.
Por que existem duas entradas de produtos e como elas diferem?
O que determina se o iProduct é 0 ou uma string?
O
idProduct
valor vem da identificação do SO do dispositivo, enquanto oiProduct
(produto de interface) é a identificação autorrelatada do dispositivo. Se o valoriProduct
(ouiSerial
/iManufacturer
) não for definido pelo fornecedor, ele ficará em branco e você verá apenas uma posição de índice0
próxima ao espaço vazio onde se espera que um valor esteja. Você pode ver isso mais claramente com a ajuda degrep
:Isso lhe dará algo como:
Observe como quando os valores de
iManufacturer
,iProduct
eiSerial
são definidos, há um número diferente de zero. Isso vem da ordem das informações fornecidas pelo cabeçalho de identificação do dispositivo quando o dispositivo USB é descoberto pelo sistema operacional. Não há ordem imposta, portanto, os valores1
,2
,3
podem ser atribuídos a qualquer um dos valoresiManufacturer
,iProduct
, ouiSerial
.