¿Cómo cambiar la interfaz de red utilizada por Android?

Cuando inicio mi dispositivo Android y voy a la configuración de WiFi, el estado de WiFi sigue siendo "Encender Wi-Fi" para siempre. Lo busqué en los registros de logcat, y debajo está el error que veo.

E/wpa_supplicant( 1713): nl80211: Could not set interface 'wlan0' UP
E/wpa_supplicant( 1713): wlan0: Failed to initialize driver interface
E/wpa_supplicant( 1713): Could not read interface wlan0 flags: No such device

A continuación encontrará información útil.

root@android:/ # netcfg
netcfg    
lo       UP     127.0.0.1/8   0x00000049 00:00:00:00:00:00
gannet0  DOWN     0.0.0.0/0   0x00001082 1e:e9:6e:bf:45:f7
dummy0   DOWN     0.0.0.0/0   0x00000082 ba:ad:f6:ae:6a:09
rmnet0   DOWN     0.0.0.0/0   0x00000000 00:00:00:00:00:00
rmnet1   DOWN     0.0.0.0/0   0x00000000 00:00:00:00:00:00
rmnet2   DOWN     0.0.0.0/0   0x00000000 00:00:00:00:00:00
rmnet3   DOWN     0.0.0.0/0   0x00000000 00:00:00:00:00:00
rmnet4   DOWN     0.0.0.0/0   0x00000000 00:00:00:00:00:00
rmnet5   DOWN     0.0.0.0/0   0x00000000 00:00:00:00:00:00
rmnet6   DOWN     0.0.0.0/0   0x00000000 00:00:00:00:00:00
rmnet7   DOWN     0.0.0.0/0   0x00000001 00:00:00:00:00:00
sit0     DOWN     0.0.0.0/0   0x00000080 00:00:00:00:00:00
ip6tnl0  DOWN     0.0.0.0/0   0x00000080 00:00:00:00:00:00

Contenido de /system/etc/wifi/wpa_supplicant.conf:

update_config=1
ctrl_interface=wlan0
eapol_version=1
ap_scan=1
fast_reauth=1

Pregunta : ¿Cómo puedo permitir que Android use alguna otra interfaz que no sea wlan0?

Cosas probadas:

  1. Traté de editar ctrl_interfaceel parámetro en /system/etc/wifi/wpa_supplicant.confel uso adb pully adb pushen otras interfaces mostradas por netcfg, pero Android aún intenta usar wlan0.

  2. También traté de iniciar wpa_supplicantdaemon usando el siguiente comando.

    /system/bin/wpa_supplicant -Dnl80211 -idummy0 -c/system/etc/wifi/wpa_supplicant.conf
    

    pero esto da un error.

    E/wpa_supplicant( 5390): dummy0: Failed to initialize driver interface
    
También debe cambiar el archivo init.{hardware}.rc con el nombre de socket correcto (wpa_dummy0)

Respuestas (2)

¿ Estás seguro dummyde que es una interfaz WiFi? El nombre típico de la interfaz WiFi es wlan0.

Si está 100% seguro de que es la interfaz WiFi correcta, es posible que también deba cambiar el wlan0interior del wpa_supplicant.confarchivo.

Si eso aún falla, ejecute el wpa_supplicantcomando debajo stracee intente obtener más información desde allí.

Ejecutar en un shell ADB:

wpa_cli

Se abrirá un nuevo tipo de shell en el que:

  • Comando helple dará todos los comandos posibles.

  • El comando interfacele mostrará todas sus interfaces activadas.

  • El comando interface_addagregará una nueva interfaz para usar, con los siguientes parámetros

    interface_add <ifname> <confname> <driver> <ctrl_interface> <driver_param> <bridge_name>
    

    ifnamesiendo el único parámetro opcional.