J'ai un téléphone portable connecté à mon PC via USB.
Lors de l'affichage des informations sur l'appareil à l'aide de
sudo udevadm info --attribute-walk
les identifiants produit et fournisseur s'affichent correctement, mais il n'y a pas d' ATTR {série} . Une application que j'utilise (Android adb) a besoin que l'appareil signale un numéro de série pour fonctionner correctement.
Existe-t-il un moyen de truquer le numéro de série de l'appareil, par exemple en utilisant une règle udev?
Clarification: la question n'est pas de savoir comment obtenir le numéro de série du périphérique USB, mais comment définir le numéro de série.
J'avais un téléphone Android qui ne rapporte pas de numéro de série via USB, et l'outil adb n'aimait pas trop ça. Jusqu'à présent, il ne semble pas y avoir de solution simple à cela. Cependant, certains jours, il est très facile d'acheter simplement un téléphone Android approprié pour le développement.
Réponses:
Tout d'abord, assurez-vous que l'appareil ne signale pas de numéro de série est vraiment le problème.
adb devices
listera le numéro de série comme tous les points d'interrogation s'il n'a pas la permission d'accéder au périphérique correspondant sous/dev/bus/usb/
. Rappelez-vous également que l'adb démarre un serveur, vous devrez peut-être le tuer pour le ré-analyser.En supposant que c'est vraiment un problème avec l'appareil, j'ai rapidement vérifié le code source adb. Il apparaît
register_device
danscore/adb/usb_linux.c
lit le numéro de série directement à partir de l'appareil.core/adb/usb_libusb.c
appellelibusb_get_device_descriptor
pour le faire, qui (en vérifiant le code source libusb) le récupère à partir de sysfs ou directement à partir du périphérique. Aucune astuce udev ne va donc aider, malheureusement.Vos choix semblent être:
adb
(c'est open source). C'est une question plus pour Stack Overflow, je pense.la source
Si vous connaissez le nœud de périphérique du périphérique spécifique (par exemple / dev / sdb), vous pouvez le rechercher avec la commande suivante:
udevadm info -a -p $(udevadm info -q path -n /dev/sdb)
Habituellement, si vous essayez de créer une règle personnalisée dans /etc/udev/rules.d/51-android.rules pour les appareils Android, l'écriture
lsusb
dans votre terminal affichera quelque chose commeBus 002 Device 004: ID 062a:3270 Creative Labs
. Les quatre caractères après "ID" - dans ce cas, ce serait - sont062a
utilisés pour indiquer le spécifiqueidVendor
dans ce fichier.la source
adb start-server
tant que root ou en utilisant sudo), adb sera capable de lire le numéro de série par lui-même.Ce n'est probablement pas de série mais FTDI, vous pouvez donc essayer de cette façon:
1) Obtenez la série
2) Créez la règle et remplacez le XXXXXXXX par la série que vous avez trouvée ou une série FAKE
3) Recharger les règles
.
Dans le cas, essayez de contacter l'auteur de cet article .
la source