1 votos

¿Automáticamente configurar la red ifcfg-eth0?

Después de conectar un adaptador de red USB al teléfono puedo configurarlo con ifconfig:

ifconfig eth0 up 192.168.1.2

El problema es que eth0 no está disponible hasta que se conecta el dispositivo USB. ¿Cómo se puede almacenar la configuración de red o aplicarla tan pronto como se monta?

¿O hay alguna forma de establecer la configuración en el proceso de construcción del núcleo?

Sé que esto es normalmente definido en ifcfg-eth0 que se puede encontrar en /etc/sysconfig/network-scripts/ o /etc/network/interfaces pero parece que Android no tiene esto. Como usamos netcfg en Android he buscado el manual de perfiles netcfg pero /etc/network.d/${profile_name} tampoco existe.

2voto

Guðmundur H Puntos 3323

Creo que esto funcionará:

En /init.rc añadir

service ethernet /eth0.sh

y crear /eth0.sh

#!/system/bin/sh

netcfg eth0 up 192.168.0.2

Todavía tengo problemas para encajar el ramdisk pero debería funcionar.

Ver http://elinux.org/Android_Networking


No pude cambiar el ramdisk así que hice una simple aplicación que ejecuta el comando netcfg después del arranque y después de que el dispositivo USB está conectado.

Estos son los puntos clave para ello:

<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>
...

y la función sudo en el receptor:

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();
    }
}

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X