Conexión a wi-fi con shell adb

Tengo todos los detalles para conectarme a un punto de acceso particular. Tengo que usar ese punto de acceso solamente, así que todo lo que necesito es el comando para hacerlo.

Puede agregar una entrada de red en wpa_supplicant.conf usted mismo (o dentro de su secuencia de comandos). En esencia, conéctese manualmente una vez, luego haga lo siguiente:

adb pull /data/misc/wifi/wpa_supplicant.conf 

e integre la entrada de red en su script para la automatización. Script simple de ejemplo:

 #!/bin/bash # # Get this information by connecting manually once, and do # adb pull /data/misc/wifi/wpa_supplicant.conf ADB_PULL="adb pull /data/misc/wifi/wpa_supplicant.conf" WIRELESS_CTRL_INTERFACE=wlan0 WIRELESS_SSID=Gondolin WIRELESS_KEY_MGMT="WPA-EAP IEEE8021X" WIRELESS_EAP=PEAP WIRELESS_USER=Turgon WIRELESS_PASSWORD=IdrilCelebrindal adb start-server adb wait-for-device echo "adb connection....[CONNECTED]" adb root adb wait-for-device adb remount adb wait-for-device pushd /tmp rm wpa_supplicant.conf 2>/dev/null # Remove any old one adbpull_status=`$ADB_PULL 2>&1` echo -e "\nAttempting: $ADB_PULL" if [ `echo $adbpull_status | grep -wc "does not exist"` -gt 0 ]; then echo " wpa_supplicant.conf does not exist yet on your device yet." echo "This means you have not used your wireless yet." echo "" echo "Taking our best shot at creating this file with default config.." echo "ctrl_interface=$WIRELESS_CTRL_INTERFACE" >> wpa_supplicant.conf echo "update_config=1" >> wpa_supplicant.conf echo "device_type=0-00000000-0" >> wpa_supplicant.conf else echo $adbpull_status echo " wpa_supplicant.conf exists!" fi echo "" echo "Add network entry for wpa_supplicant.conf.." echo "" >> wpa_supplicant.conf echo "network={" >> wpa_supplicant.conf echo " ssid=\"$WIRELESS_SSID\"" >> wpa_supplicant.conf echo " key_mgmt=$WIRELESS_KEY_MGMT" >> wpa_supplicant.conf echo " eap=$WIRELESS_EAP" >> wpa_supplicant.conf echo " identity=\"$WIRELESS_USER\"" >> wpa_supplicant.conf echo " password=\"$WIRELESS_PASSWORD\"" >> wpa_supplicant.conf echo " priority=1" >> wpa_supplicant.conf echo "}" >> wpa_supplicant.conf echo "Pushing wpa_supplicant.conf.." adb push wpa_supplicant.conf /data/misc/wifi/wpa_supplicant.conf popd #/tmp adb shell chown system.wifi /data/misc/wifi/wpa_supplicant.conf adb shell chmod 660 /data/misc/wifi/wpa_supplicant.conf echo "" echo "Finished!" adb shell am start -a android.intent.action.MAIN -n com.android.settings/.Settings echo "Please toggle wifi off/on now.. (ifconfig not sufficient, monkey this)" 

Tarde en la fiesta, pero se me ocurrió una manera de lograr esto en un dispositivo sin raíz .

Puede que no sea lindo, pero funciona.

Básicamente lo que propongo es crear una aplicación que se una a un punto de acceso basado en EXTRAS dado al iniciar la aplicación. Los EXTRAS se proporcionan utilizando el parámetro -e am comando am .

Ya construí una aplicación que lo hace y está disponible aquí: https://github.com/steinwurf/adb-join-wifi

Una vez que se instala la aplicación, se puede unir un punto de acceso wifi usando el siguiente comando ADB :

 adb shell am start -n com.steinwurf.adbjoinwifi/com.steinwurf.adbjoinwifi.MainActivity -e ssid [SSID] -e password_type [PASSWORD_TYPE] -e password [WIFI PASSWORD] 

Hay más información en el README en Github.

Espero que ayude a alguien.

Como complemento: puede habilitar wifi a través de svc como root en el dispositivo

 svc wifi enable 

y deshabilitar vía

 svc wifi disable 

Como otro complemento: aunque mi dispositivo fue rooteado, obtuve remote object ''/data/misc/wifi/wpa_supplicant.conf'' does not exist error remote object ''/data/misc/wifi/wpa_supplicant.conf'' does not exist error al intentar ejecutar adb pull . Sucede porque adb sí mismo no se ejecuta en modo RAÍZ. Para solucionar esto, puedes ejecutar algo como esto

 adb shell "su -c 'cp -R /data/misc/wifi/wpa_supplicant.conf /data/misc/wpa_supplicant.conf'" adb shell "su -c 'chmod -R 777 /data/misc/wpa_supplicant.conf'" adb pull /data/misc/wpa_supplicant.conf adb shell "su -c 'rm /data/misc/wpa_supplicant.conf'" 

muy tarde, pero espero que esto ayude a cualquiera que pueda tropezar con este hilo.

Si está probando el método de extracción de adb pero recibió “el objeto remoto no existe”, intente esto:

en el mismo cuadro de diálogo de comando,

  • escriba adb root para reiniciar adb como root. haga clic en entrar.
  • Ahora escriba adb shell , haga clic en entrar. se asegura de que el mensaje muestre root@[device]:
  • En el indicador # escriba cd /data/misc/wifi haga clic en entrar.
  • Por último, escribe cat wpa_supplicant.conf clic en enter.

esto debería volcar los datos de WiFi a los que se había conectado anteriormente en su teléfono, a la pantalla de su PC.

Estos comandos funcionaron en mi dispositivo sin raíz después de ejecutar el problema “el objeto remoto no existe”.

adb pull /data/misc/wifi/wpa_supplicant.conf ~/Desktop el problema con esto: adb pull /data/misc/wifi/wpa_supplicant.conf ~/Desktop , y luego edito el archivo, agrego el módulo de red, mi archivo conf completo es:

 ##### wpa_supplicant configuration file template ##### update_config=1 ctrl_interface=DIR=/data/system/wpa_supplicant GROUP=wifi eapol_version=1 ap_scan=1 fast_reauth=1 network={ ssid="your ssid" psk="your pswd" key_mgmt=WPA-PSK priority=241 } 

A continuación, registre el archivo de origen, agréguelo a la carpeta /data/misc/wifi , reinicie su dispositivo. Tenga en cuenta que los diferentes dispositivos tienen contenido diferente por encima de la línea de red, no modifique esa parte.