Numero di serie falso del dispositivo USB


9

Ho un telefono cellulare collegato al mio PC tramite USB.

Quando si visualizzano le informazioni sul dispositivo utilizzando

sudo udevadm info --attribute-walk

l'id prodotto e il fornitore vengono visualizzati correttamente, ma non è presente ATTR {seriale} . Un'applicazione che sto usando (Android adb) ha bisogno che il dispositivo riporti un numero seriale per funzionare correttamente.

Esiste un modo per simulare il numero seriale del dispositivo, ad esempio utilizzando una regola udev?

Chiarimento: la domanda non è su come ottenere il numero seriale del dispositivo USB, ma su come impostare il numero seriale.

Avevo un telefono Android che non riporta un numero seriale su USB e allo strumento adb non piaceva troppo. Finora non sembra esserci alcuna soluzione semplice per questo. Tuttavia, in questi giorni è molto semplice acquistare un telefono Android adeguato per lo sviluppo.


È un telefono Android? In caso contrario, adb non funzionerà, comunque.
Keith il

Sto indovinando che adb in realtà non ottenere queste informazioni da udev. Probabilmente invece da sysfs o direttamente dal dispositivo. Considera l'applicazione di patch adb, probabilmente l'approccio più semplice.
derobert,

Risposte:


1

Innanzitutto, assicurati che il problema non sia il dispositivo che non segnala un numero di serie. adb deviceselencherà il numero seriale come tutti i punti interrogativi se non dispone dell'autorizzazione per accedere al dispositivo corrispondente in /dev/bus/usb/. Ricorda inoltre che l'adb avvia un server, potrebbe essere necessario ucciderlo per farlo sondare nuovamente.

Supponendo che sia davvero un problema con il dispositivo, ho controllato rapidamente il codice sorgente di adb. Appare register_devicein core/adb/usb_linux.clegge il numero seriale direttamente dal dispositivo. core/adb/usb_libusb.cchiama libusb_get_device_descriptorper farlo, che (controllando il codice sorgente di libusb) lo prende da sysfs o direttamente dal dispositivo. Sfortunatamente, nessun trucco di udev sarà di aiuto.

Le tue scelte sembrano essere:

  • capire come far funzionare adb senza un numero seriale. Forse, patch adb(è open source). Questa è una domanda in più per Stack Overflow, credo.
  • patch al driver usbfs del kernel per falsare una risposta alla richiesta di adb. Questo suona molto più difficile del patching adb per me.
  • patch il kernel per consentire di falsificare il serial # in syfs, supponendo che adb stia usando libusb.
  • riparare l'hardware rotto.

Grazie - questo lo spiega. Nel mio caso, riparare l'hardware rotto era più semplice (acquistare hardware migliore).
Ralf,

1

Se conosci il nodo del dispositivo specifico (ad es. / Dev / sdb), puoi cercarlo con il seguente comando: udevadm info -a -p $(udevadm info -q path -n /dev/sdb)

Di solito, se stai cercando di creare una regola personalizzata in /etc/udev/rules.d/51-android.rules per dispositivi Android, la scrittura lsusbnel tuo terminale mostrerà qualcosa di simile Bus 002 Device 004: ID 062a:3270 Creative Labs . I quattro caratteri dopo "ID" - in questo caso sarebbe - 062avengono utilizzati per indicare lo specifico idVendorall'interno di quel file.


Questo aiuta a scrivere regole udev, ma c'è un modo per scrivere una regola che cambia il numero seriale?
Ralf,

Non lo so per il tuo particolare telefono, ma nella mia esperienza una volta impostate le regole udev (ed esegui adb start-servercome root o usando sudo), adb sarà in grado di leggere il numero seriale da solo.
Drake Clarris,

0

Probabilmente non è seriale ma FTDI, quindi puoi provare in questo modo:

1) Ottieni il seriale

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

2) Creare la regola e sostituire XXXXXXXX con il seriale trovato o un seriale FALSO

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

3) Ricarica le regole

sudo udevadm control --reload-rules

.

Nel caso, prova a contattare l'autore di questo articolo .


Non credo che OP stia parlando del protocollo seriale ma del numero seriale del dispositivo USB. Questo è un campo poco usato nel descrittore del dispositivo insieme a ID fornitore e prodotto. Dovrebbe essere unico per ogni dispositivo ma non è obbligatorio nelle specifiche USB. Nessuna risposta su come falsificarlo, scusa. Probabilmente avrei
patchato
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.