1 votes

Configuration automatique du réseau ifcfg-eth0 ?

Après avoir connecté un adaptateur réseau USB au téléphone, je peux le configurer en utilisant ifconfig :

ifconfig eth0 up 192.168.1.2

Le problème est que eth0 n'est pas disponible tant que le périphérique USB n'est pas connecté. Comment stocker la configuration réseau ou l'appliquer dès qu'elle est montée ?

Ou y a-t-il un moyen de définir la configuration dans le processus de construction du noyau ?

Je sais que c'est normalement défini in ifcfg-eth0 que l'on peut trouver dans /etc/sysconfig/network-scripts/ o /etc/network/interfaces mais il semble qu'Android n'en dispose pas. Comme nous utilisons netcfg dans Android, j'ai cherché le fichier manuel des profils netcfg mais /etc/network.d/${profile_name} n'existe pas non plus.

2voto

Guðmundur H Points 3323

Je pense que ça va marcher :

En /init.rc ajouter

service ethernet /eth0.sh

et créer /eth0.sh

#!/system/bin/sh

netcfg eth0 up 192.168.0.2

J'ai toujours des problèmes pour attacher le disque RAM mais ça devrait marcher.

Voir http://elinux.org/Android_Networking


Je n'ai pas été en mesure de modifier le disque RAM, j'ai donc créé une application simple qui exécute la commande netcfg après le démarrage et après la connexion du périphérique USB.

Voici les points essentiels à cet égard :

<manifest ...
  <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
  <uses-feature android:name="android.hardware.usb.host" />
  <uses-permission android:name="android.permission.USB_PERMISSION" />
  <application ... >
    <receiver
        android:name=".MyBroadcastReceiver"
        android:enabled="true"
        android:exported="true" >
        <intent-filter>
            <action android:name="android.intent.action.BOOT_COMPLETED" />
            <action android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" />
        </intent-filter>
    </receiver>
...

et la fonction sudo dans le récepteur :

public static void sudo(String...strings) {
    try{
        Process su = Runtime.getRuntime().exec("su");
        DataOutputStream outputStream = new DataOutputStream(su.getOutputStream());

        for (String s : strings) {
            outputStream.writeBytes(s+"\n");
            outputStream.flush();
        }

        outputStream.writeBytes("exit\n");
        outputStream.flush();
        try {
            su.waitFor();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        outputStream.close();
    }catch(IOException e){
        e.printStackTrace();
    }
}

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X