Tengo un teléfono móvil conectado a mi PC a través de USB.
Al ver la información del dispositivo usando
sudo udevadm info --attribute-walk
el producto y la identificación del proveedor se muestran bien, pero no hay ATTR {serial} . Una aplicación que estoy usando (adb de Android) necesita que el dispositivo informe un número de serie para que funcione correctamente.
¿Hay alguna forma de falsificar el número de serie del dispositivo, por ejemplo, usando una regla udev?
Aclaración: la pregunta no es cómo obtener el número de serie del dispositivo USB, sino cómo establecer el número de serie.
Tenía un teléfono Android que no informa un número de serie a través de USB, y la herramienta adb no me gustó demasiado. Hasta ahora no parece haber una solución simple para esto. Sin embargo, hay días en que es muy fácil comprar un teléfono Android apropiado para el desarrollo.
Respuestas:
Primero, asegúrese de que el dispositivo que no informa un número de serie es realmente el problema.
adb devices
enumerará el número de serie como todos los signos de interrogación si no tiene permiso para acceder al dispositivo correspondiente en/dev/bus/usb/
. También recuerde que el adb inicia un servidor, es posible que deba eliminarlo para que vuelva a sondear.Asumiendo que realmente es un problema con el dispositivo, rápidamente verifiqué el código fuente de adb. Aparece
register_device
encore/adb/usb_linux.c
lee el número de serie directamente desde el dispositivo.core/adb/usb_libusb.c
llamalibusb_get_device_descriptor
para hacerlo, que (verificando el código fuente de libusb) lo toma de sysfs o directamente del dispositivo. Así que desafortunadamente ningún truco de udev va a ayudar.Sus elecciones parecerían ser:
adb
(es de código abierto). Esta es una pregunta más para Stack Overflow, creo.fuente
Si conoce el nodo del dispositivo específico (p. Ej. / Dev / sdb), puede buscarlo con el siguiente comando:
udevadm info -a -p $(udevadm info -q path -n /dev/sdb)
Por lo general, si está intentando crear una regla personalizada en /etc/udev/rules.d/51-android.rules para dispositivos Android, escribir
lsusb
en su terminal mostrará algo asíBus 002 Device 004: ID 062a:3270 Creative Labs
. Los cuatro caracteres después de "ID" - en este caso sería - se062a
usan para indicar el específicoidVendor
dentro de ese archivo.fuente
adb start-server
como root o usando sudo), adb podrá leer el número de serie por sí solo.Probablemente no sea serial sino FTDI, por lo que puede intentarlo de esta manera:
1) Obtenga el serial
2) Cree la regla y sustituya la XXXXXXXX con la serie que encontró o una serie FALSA
3) Recargar las reglas
.
En el caso, intente contactar al autor de este artículo .
fuente