Acabo de recibir mi nuevo y brillante Wileyfox Swift - y antes de ponerla en uso Quiero oem unlock
y raíz de ella (como suelo hacer con los nuevos dispositivos;) El problema es que, aunque USB-depuración está activado en el dispositivo, y una línea correspondiente en /etc/udev/rules.d/51-android.rules
existe , el dispositivo no es visto por adb devices
.
Sé que hay varias respuestas dispersas en este sitio, pero son difíciles de encontrar, solo cubren un dispositivo específico o no cubren todos los pasos que finalmente necesité. Así que aprovecho esto como una oportunidad para una pregunta canónica independiente del dispositivo y le doy una respuesta detallada a continuación:
¿Cómo puedo ver y usar mi dispositivo Android adb
en Linux?
Respuestas:
Habilite la depuración de USB en el dispositivo
Esto se hace en Configuración ›Desarrollo . Si no tiene esa entrada en su menú de configuración, vaya a Configuración ›Acerca de , desplácese hasta el" Número de compilación "y martillee como un mono hasta que su dispositivo lo felicite por haberse convertido en desarrollador. Regrese a la página principal del menú de Configuración y cerca de la parte inferior debería ver la configuración de "Desarrollo" (o "Desarrolladores") ahora. Ingrese y habilite la depuración de USB aquí.
Identifica el dispositivo
Primero necesitamos saber cómo se identifica el dispositivo en el bus USB. Para eso, con el dispositivo Android NO conectado, tome un shell y ejecute el comando
lsusb
. Luego conecte el dispositivo y ejecute el comando nuevamente. Encuentra la nueva línea. Para el Wileyfox Swift este es un "dispositivo sin nombre":Establecer las reglas para ADB
Ahora necesitamos los números al final de la línea anterior:
2970:2282
. Estos especifican el proveedor (2970) y el dispositivo en sí (2282). Teniendo esos detalles, necesitamos un shell raíz en nuestra máquina Linux para editar (o crear, si aún no existe) el/etc/udev/rules.d/51-android.rules
archivo. Ahí, agregue una línea para su dispositivo. La siguiente línea de ejemplo muestra cómo se ve el Wileyfox Swift: ¹Si tiene un dispositivo diferente, reemplace las ID del proveedor y del producto con lo que encontró anteriormente cuando se ejecuta
lsusb
. Una breve explicación de la línea:SUBSYSTEMS=="usb"
: obviamente esta regla es solo para USB;)ATTRS{idVendor}=="2970"
: el ID del proveedor del dispositivo para el que es esta reglaATTRS{idProduct}=="2282"
: la ID del dispositivoMODE="0666"
: permisos que obtendrá el nodo del dispositivo.0666
es bastante laxo, ya que le da permiso de lectura y escritura a todos los usuarios de su sistema, por lo que si le preocupa, puede intentar reemplazarlo con un0660
(dando solo lectura y escritura de grupo y propietario, y negar todo a los demás).GROUP="androiddev"
: a qué grupo debe pertenecer el nodo del dispositivo. Este debe ser un grupo al que pertenezcan los usuarios destinados a trabajar con el dispositivo.SYMLINK+="android%n"
: solo para darle un nombre agradable al nodo, para que pueda encontrarlo más fácilmente/dev
(en mi caso, luego apareció allí como/dev/android5
)Esa regla entró
/etc/udev/rules.d/51-android.rules
, debemos decirudev
que la usemos. La forma más segura (junto a un reinicio;) es reiniciando eludev
servicio. Dependiendo de su distribución de Linux, esto se puede hacer a través deservice udev restart
o/etc/init.d/udev restart
.Hecho eso, deja la cáscara de la raíz. Desconecte y vuelva a conectar su dispositivo Android, intente
adb devices
nuevamente. La mayoría de los dispositivos aparecieron ahora, pero no el Wileyfox Swift , que obviamente quiere algunos mimos adicionales. Si se encuentra en esa situación, abra (o cree si no existe) el archivo~/.android/adb_usb.ini
y agregue una sola línea, nombrando al proveedor con el que se enterólsusb
anteriormente; para el Swift que sería0x2970
(sí, aquí debe prefijarlo0x
para señalar que es un número hexadecimal). A continuación, reinicie el servidor ADB:adb kill-server && adb start-server
. Desconecte y vuelva a conectar el dispositivo nuevamente. Ahoraadb devices
debería verlo.Conectando el dispositivo
Es posible que haya notado que
adb devices
le dije algo así0123456789ABCDEF unauthorized
. Eso está bien y para su seguridad (dispositivos): su computadora debe estar autorizada primero para poder acceder al dispositivo. Así que simplemente emitaadb shell
ahora, que se cerrará con unerror: device unauthorized. Please check the confirmation dialog on your device.
Seguir ese consejo (opcionalmente marque la casilla de verificación para autorizar permanentemente su computadora), y ya está: ahora puede usar adb para acceder a su dispositivo.Actualizaciones:
¹ Tenga en cuenta que en versiones posteriores de Linux, la sintaxis de las reglas UDEV ha cambiado ligeramente, como, por ejemplo, jcomeau_ictx señaló en su comentario. Para los valores que encontramos arriba eso sería:
Dos diferencias: ahora
SUBSYSTEM
(no en plural), y el grupo ha cambiado deandroiddev
aplugdev
(el primero no existe en los sistemas recientes, el último sí y generalmente se asigna al menos al primer usuario).Además, es posible que deba agregar el ID del proveedor a su
~/.android/adb_usb.ini
(una ID por línea, en notación hexadecimal):fuente
jcomeau@aspire:~$ tail -n 1 /etc/udev/rules.d/99-android.rules SUBSYSTEM=="usb", ATTR{idVendor}=="0e8d", ATTR{idProduct}=="201d", MODE="0666", GROUP="plugdev", SYMLINK+="android%n" jcomeau@aspire:~$ cat ~/.android/adb_usb.ini # ANDROID 3RD PARTY USB VENDOR ID LIST -- DO NOT EDIT. # USE 'android update adb' TO GENERATE. # 1 USB VENDOR ID PER LINE. 0x0e8d
tuve que ignorar el consejo para ejecutarloandroid update adb
e ingresarlo manualmente como dijiste.plugdev
lugar deandroiddev
). No verificado, pero diría que la parte importante aquí es que es un grupo que también tiene su usuario (con el que desea usar USB).SUBSYSTEM
lugar deSUBSYSTEMS
, enATTR
lugar deATTRS
, coma después deMODE="0666"
no estar seguro de si todos esos cambios fueron necesarios, pero eso fue lo que funcionó.sudo wget -O /etc/udev/rules.d/51-android.rules
de aquí trabajó para mí para mi Xiaomi Mi A1. Por supuesto, es mejor aprender, pero es bueno ser perezoso :)Algunos comentarios de una nueva distribución de Linux. Fedora 29 con un Nexus 5X o el teléfono Nokia 7.1 (Android One).
Primero desconecte el teléfono, si ya está conectado.
sudo dnf install android-tools
)sudo cp /usr/share/doc/android-tools/51-android.rules /etc/udev/rules.d
)sudo udevadm control --reload-rules
)sudo systemctl restart adb
)Ahora conecta el teléfono y corre
adb devices
desde la línea de comandos. Probablemente verá un dispositivo en la lista con "sin permisos". Esto esta bien.SI no está en la lista, tendrá que agregar su dispositivo al archivo de reglas de udev, pero para mí, los dispositivos probados simplemente funcionaron con las reglas predefinidas.
Ejecute
adb shell
y, con suerte, recibirá una notificación de seguridad en el teléfono preguntándole si desea confiar en la computadora, seleccione sí.En cambio, si su computadora dice "error: permisos insuficientes para el dispositivo", debe asegurarse de que en el teléfono haya configurado su puerto USB en el modo "Transferir archivos" y no "Cargue este dispositivo". En Android 8.1, esto se encuentra en la configuración en "Dispositivos conectados"> "USB".
Me he dado cuenta de que incluso si tienes todo funcionando hoy, que mañana puede romperse repentinamente sin razón aparente. Si eso sucede, primero verifique la configuración del puerto USB en el dispositivo, que puede haber cambiado nuevamente al modo de carga, y si eso falla, revoque las autorizaciones de depuración USB en el dispositivo (en la configuración en Opciones del desarrollador), y con suerte debería obtener el pop de nuevo cuando corres
adb shell
.Con esto, puedo ejecutar Android Studio y ejecutarlo en el dispositivo conectado.
fuente