Comunicación UDP entre PC y Android vía ethernet

1. Estoy probando con un nexus 5 rooteado que funciona con lollipop 5.1.

2. Todo esto sin conexión wifi.

Estoy tratando de enviar paquetes UDP entre una PC y un dispositivo Android con un cable otg y un dongle ethernet. Cuando está conectado, la PC piensa que Android es una red no identificada (sin acceso a Internet) y Android reconoce el dispositivo como eth0 con una IP de 0.0.0.0.

eth0   UP   0.0.0.0

Agrego una IP al eth0 ejecutando el siguiente script de Unix:

#!/bin/sh
netcfg eth0 up
ifconfig eth0 192.168.1.200 netmask 255.255.255.0
route add default gw 192.168.1.1 dev eth0
ping -c 1 192.168.1.1

Después de ejecutar el script, eth0 aparece en la línea de comando como:

eth0   UP   192.168.1.200

Estoy usando wireshark para rastrear paquetes y cuando trato de abrir una interfaz entre la PC y Android, aparece el siguiente error:

(Error al abrir el adaptador: El sistema no puede encontrar el dispositivo especificado. (20)).

Además, cuando trato de hacer PING a la PC desde Android, se pierde el 100% del paquete.

Entonces parece que no tengo una conexión entre PC y Android. Cualquier aporte sobre el tema sería de gran ayuda.

¿Está conectando el N5 y la PC directamente o a través de un enrutador? La información de IP sobre la PC también sería útil, como su IP, máscara de red y si es DHCP o estático.
N5 y PC están conectados directamente. El juego final es usarlo como una interfaz de hardware, no diferente a decir I2C o RX. DHCP está habilitado, IP 169.254.57.56, máscara de red 255.255.255.0
Usé 169.254.57.55 en el script.
Tiene sentido, aunque si está buscando conectar los dos a través de una red IP, deberán estar en la misma subred. Su PC se está autoasignando una dirección IP porque no puede encontrar un servidor DHCP. Intente asignar estáticamente su PC 192.168.1.1 con la misma subred 255.255.255.0.
¡Sí! Solo tenía que configurar correctamente las IP y las puertas de enlace predeterminadas. Gracias por la ayuda, no tengo mucha experiencia en redes. Más de un tipo de hardware.
¡Me alegro de que funcione! He copiado mi comentario en una respuesta. Si eso concluye su pregunta, ¿le importaría aceptarla?

Respuestas (2)

[De los comentarios:] Si desea conectar los dos a través de una red IP, deberán estar en la misma subred. Su PC se está autoasignando una dirección IP porque no puede encontrar un servidor DHCP. Intente asignar estáticamente su PC 192.168.1.1 con la misma subred 255.255.255.0.

Creo que el tethering inverso resolvería tu problema.

Pasos de anclaje inverso de Android:

Nota: Funciona solo en un teléfono Android rooteado.

  1. Conecte el dispositivo Android a través de USB.
  2. Habilite la conexión USB. Para hacerlo, vaya a Configuración → Más... → Anclaje a red y punto de acceso móvil → Anclaje a red USB .

  3. En la máquina host, escriba:

    $ ifconfig usb0 10.42.0.1 netmask 255.255.255.0 
    $ echo 1 > /proc/sys/net/ipv4/ip_forward 
    

    El comando para sudo será:

    $ sudo 'echo 1 > /proc/sys/net/ipv4/ip_forward' 
    
  4. En el dispositivo Android (para este paso debe instalar ADB en la PC host), escriba:

    $ adb shell 
    $ su 
    $ netcfg rndis0 dhcp
    

    Si no obtiene la dirección IP, asígnela manualmente:

    $ netcfg rndis0 10.42.0.2 netmask 255.255.255.0 
    $ route add default gw 10.42.0.1 dev rndis0 
    

Ahora Internet estaría funcionando en el teléfono Android.

Para verificar, pruebe el comando ping www.google.com.

Esto funciona para mi.

Android no ofrecerá la opción de activar el anclaje de USB con las combinaciones de dongle Ethernet/cable otg, es decir, no es una conexión de tipo USB.
Probé con un teléfono rooteado y una PC con conexión Ethernet y me funcionó bien.
¿Está utilizando un otg con un adaptador de ethernet? Aquí hay un ejemplo plugable.com/products/usb2-otge100 . Y no habrá conexión a internet. UDP se utiliza como interfaz de hardware.
Conecté mi teléfono con PC usando usb
Acerca de 4. , ¿no debería ser "En PC" porque ejecuta ADB shell desde la PC?