Eu tenho um telefone celular conectado ao meu PC via USB.
Ao visualizar as informações do dispositivo usando
sudo udevadm info --attribute-walk
os IDs do produto e do fornecedor aparecem bem, mas não há ATTR {serial} . Um aplicativo que estou usando (Android adb) precisa que o dispositivo relate 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 é sobre 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 por USB, e a ferramenta adb não gostou muito disso. Até agora, parece não haver uma solução simples para isso. No entanto, há dias em que é muito fácil comprar um telefone Android adequado para desenvolvimento.
Respostas:
Primeiro, verifique se o dispositivo que não está relatando 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 de que o adb inicia um servidor; talvez seja necessário eliminá-lo para que ele seja analisado novamente.Supondo que realmente seja um problema com o dispositivo, verifiquei rapidamente o código-fonte adb. Aparece
register_device
emcore/adb/usb_linux.c
lê o número de série diretamente do dispositivo.core/adb/usb_libusb.c
chamadaslibusb_get_device_descriptor
para fazer isso, que (verificando o código-fonte libusb) o agarra do sysfs ou diretamente do dispositivo. Infelizmente, nenhum truque do udev vai ajudar.Suas escolhas parecem ser:
adb
(é de código aberto). Esta é uma pergunta mais para Stack Overflow, eu acho.fonte
Se você conhece o nó do dispositivo específico (por exemplo, / dev / sdb), pode procurar com o seguinte comando:
udevadm info -a -p $(udevadm info -q path -n /dev/sdb)
Normalmente, se você está tentando criar uma regra personalizada no /etc/udev/rules.d/51-android.rules para dispositivos Android, escrever
lsusb
no seu terminal exibirá algo comoBus 002 Device 004: ID 062a:3270 Creative Labs
. Os quatro caracteres após "ID" - nesse caso, seriam - são062a
usados para indicar o específicoidVendor
nesse arquivo.fonte
adb start-server
como root ou usando o sudo), o adb poderá ler o número de série por conta própria.Provavelmente não é serial, mas FTDI, então você pode tentar desta maneira:
1) Obter o serial
2) Crie a regra e substitua o XXXXXXXX pelo serial encontrado ou pelo serial FAKE
3) Recarregar as regras
.
No caso, tente entrar em contato com o autor deste artigo .
fonte