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.