Saltar al contenido

Conexión a WiFi usando adb shell

Solución:

Puede agregar una entrada de red en wpa_supplicant.conf usted mismo (o dentro de su secuencia de comandos). Esencialmente, 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 secuencia de comandos para la automatización. Ejemplo de secuencia de comandos simple:

#!/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 para la fiesta, pero se me ocurrió una forma de lograrlo en un dispositivo sin raíz.

Puede que no sea bonito, 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 luego se proporcionan utilizando el am comando -e <KEY> <VALUE> parámetro.

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

Una vez que la aplicación está instalada, se puede unir un punto de acceso wifi usando lo siguiente ADB mando:

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 archivo README de 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 a través de

svc wifi disable
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *