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":
Bus 004 Device 003: ID 2970:2282
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: ¹
SUBSYSTEMS=="usb", ATTRS{idVendor}=="2970", ATTRS{idProduct}=="2282", MODE="0666" GROUP="androiddev", SYMLINK+="android%n"
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 regla
ATTRS{idProduct}=="2282"
: la ID del dispositivo
MODE="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 un 0660
(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 decir udev
que la usemos. La forma más segura (junto a un reinicio;) es reiniciando el udev
servicio. Dependiendo de su distribución de Linux, esto se puede hacer a través de service 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ía 0x2970
(sí, aquí debe prefijarlo 0x
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. Ahora adb 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 emita adb shell
ahora, que se cerrará con un error: 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:
SUBSYSTEM=="usb", ATTR{idVendor}=="2970", ATTR{idProduct}=="2282", MODE="0666", GROUP="plugdev", SYMLINK+="android%n"
Dos diferencias: ahora SUBSYSTEM
(no en plural), y el grupo ha cambiado de androiddev
a plugdev
(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):
# ANDROID 3RD PARTY USB VENDOR ID LIST
# 1 USB VENDOR ID PER LINE.
0x2970