Número de série falso do dispositivo USB

9

Eu tenho um celular conectado ao meu PC via USB.

Ao visualizar as informações do dispositivo usando

sudo udevadm info --attribute-walk

O produto e o ID do fornecedor aparecem bem, mas não há ATTR {serial} . Um aplicativo que estou usando (Android adb) precisa que o dispositivo informe um número de série para funcionar corretamente.

Existe alguma maneira de falsificar o número de série do dispositivo, por exemplo, usando uma regra do udev?

Esclarecimento: A questão não é como obter o número de série do dispositivo USB, mas como definir o número de série .

Eu tinha um telefone Android que não informava um número de série via USB, e a ferramenta adb não gostava muito disso. Até agora não parece haver uma solução simples para isso. No entanto, há dias em que é muito fácil comprar apenas um telefone Android adequado para o desenvolvimento.

    
por Ralf 03.12.2010 / 14:03

3 respostas

1

Primeiro, verifique se o dispositivo não está reportando um número de série é realmente o problema. adb devices listará o número de série como todos os pontos de interrogação se ele não tiver permissão para acessar o dispositivo correspondente em /dev/bus/usb/ . Lembre-se também que o adb inicia um servidor, você pode precisar matar isso para fazê-lo reavaliar.

Supondo que realmente seja um problema com o dispositivo, verifiquei rapidamente o código-fonte adb. Parece que register_device in core/adb/usb_linux.c lê o número de série diretamente do dispositivo. core/adb/usb_libusb.c chama libusb_get_device_descriptor para fazer isso, o qual (verificando o código-fonte da libusb) o pega do sysfs ou diretamente do dispositivo. Portanto, nenhum truque do udev ajudará, infelizmente.

Suas escolhas parecem ser:

  • descubra como fazer o adb funcionar sem um número de série. Possivelmente, remendo adb (é código aberto). Esta é mais uma pergunta para o Stack Overflow, eu acho.
  • patch para o driver usbfs do kernel para falsificar uma resposta ao pedido do adb. Isso soa muito mais difícil do que remendar o adb para mim.
  • corrige o kernel para permitir falsificar o serial # em syfs, supondo que adb esteja usando a libusb.
  • corrija o hardware quebrado.
por 02.01.2013 / 17:29
1

Se você conhece o nó do dispositivo específico (por exemplo, / dev / sdb), pode consultá-lo com o seguinte comando: udevadm info -a -p $(udevadm info -q path -n /dev/sdb)

Normalmente, se você está tentando criar uma regra personalizada em /etc/udev/rules.d/51-android.rules para dispositivos Android, escrever lsusb no seu terminal exibirá algo como Bus 002 Device 004: ID 062a:3270 Creative Labs . Os quatro caracteres depois de "ID" - nesse caso, seria 062a - são usados para indicar o idVendor específico desse arquivo.

    
por 01.01.2013 / 20:48
0

Provavelmente não é serial, mas FTDI, então você pode tentar desta forma:

1) Obtenha o serial

sudo udevadm info --attribute-walk -n /dev/ttyUSB0  | sed -n '/FTDI/,/serial/p'

2) Crie a regra e substitua o XXXXXXXX pela série que você encontrou ou por uma série FAKE

sudo echo 'SUBSYSTEM=="tty", ATTRS{serial}=="XXXXXXXX", GROUP="users", MODE="0660", SYMLINK+="myusbphone"' | sudo tee /etc/udev/rules.d/99-myusbphone.rules

3) Recarregue as regras

sudo udevadm control --reload-rules

Espero que ajude ...

No caso, tente entrar em contato com o autor deste artigo .

    
por 27.01.2011 / 09:29

Tags