Wie ändere ich die von Android verwendete Netzwerkschnittstelle?

Wenn ich mein Android-Gerät hochfahre und zu den WLAN-Einstellungen gehe, bleibt der WLAN-Status für immer „WLAN wird eingeschaltet“. Ich habe es in Logcat-Protokollen nachgeschlagen, und unten ist der Fehler, den ich sehe.

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

Nachfolgend finden Sie einige nützliche Informationen.

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

Inhalt von /system/etc/wifi/wpa_supplicant.conf:

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

Frage : Wie kann ich es Android ermöglichen, eine andere Schnittstelle als zu verwenden wlan0?

Dinge ausprobiert:

  1. Ich habe versucht, ctrl_interfaceParameter in /system/etc/wifi/wpa_supplicant.confusing adb pullund adb pushauf anderen von angezeigten Schnittstellen zu bearbeiten netcfg, aber Android versucht immer noch zu verwenden wlan0.

  2. Ich habe auch versucht, wpa_supplicantden Daemon mit dem folgenden Befehl zu starten.

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

    aber das gibt einen Fehler.

    E/wpa_supplicant( 5390): dummy0: Failed to initialize driver interface
    
Sie müssen auch die Datei init.{hardware}.rc mit dem korrekten Socket-Namen (wpa_dummy0) ändern.

Antworten (2)

Sind Sie sicher, dummydass es sich um eine WiFi-Schnittstelle handelt? Der typische Name der WiFi-Schnittstelle ist wlan0.

Wenn Sie sich zu 100 % sicher sind, dass es sich um die richtige WLAN-Schnittstelle handelt, müssen Sie möglicherweise auch die wlan0in der wpa_supplicant.confDatei ändern.

Wenn das immer noch fehlschlägt, führen Sie den wpa_supplicantBefehl unter aus straceund versuchen Sie, weitere Informationen von dort zu erhalten.

In einer ADB-Shell ausführen:

wpa_cli

Es wird eine neue Art von Shell geöffnet, in der:

  • Command helpgibt Ihnen alle möglichen Befehle.

  • Command interfacezeigt Ihnen alle Ihre aktivierten Schnittstellen.

  • Der Befehl interface_addfügt eine neue zu verwendende Schnittstelle mit den folgenden Parametern hinzu

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

    ifnameist der einzige optionale Parameter.