UDP-связь между ПК и Android через Ethernet

1. Я тестирую рутированный Nexus 5, работающий на Lollipop 5.1.

2. Это все без подключения к Wi-Fi.

Я пытаюсь отправить пакеты UDP между ПК и устройством Android с помощью кабеля otg и ключа Ethernet. При подключении ПК считает, что андроид является неопознанной сетью (нет доступа в Интернет), и андроид распознает устройство как eth0 с IP-адресом 0.0.0.0.

eth0   UP   0.0.0.0

Я добавляю IP к eth0, запустив следующий 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

После запуска скрипта eth0 появляется в командной строке как:

eth0   UP   192.168.1.200

Я использую wireshark для отслеживания пакетов, и когда я пытаюсь открыть интерфейс между ПК и Android, я получаю следующее сообщение об ошибке:

(Ошибка открытия адаптера: Система не может найти указанное устройство. (20)).

Кроме того, когда я пытаюсь пропинговать компьютер с Android, я теряю 100% пакетов.

Так что похоже, что у меня нет связи между ПК и Android. Любая информация по теме будет очень полезна.

Вы соединяете N5 и ПК напрямую или через маршрутизатор? Информация об IP-адресе ПК также будет полезна, например, его IP-адрес, сетевая маска, а также будет ли это DHCP или статический.
N5 и ПК подключены напрямую. Конечная цель — использовать его в качестве аппаратного интерфейса, ничем не отличающегося от, скажем, I2C или RX. DHCP включен, IP 169.254.57.56, сетевая маска 255.255.255.0
Я использовал 169.254.57.55 в скрипте.
Имеет смысл, хотя, если вы хотите соединить их через IP-сеть, они должны находиться в одной подсети. Ваш компьютер самостоятельно назначает IP-адрес, поскольку не может найти DHCP-сервер. Попробуйте статически назначить вашему компьютеру адрес 192.168.1.1 с той же подсетью 255.255.255.0.
Да! Просто нужно было правильно установить IP-адреса и шлюзы по умолчанию. Спасибо за помощь, у меня нет большого опыта работы с сетями. Больше аппаратный парень.
Рад, что это работает! Я скопировал свой комментарий к ответу - если это завершает ваш вопрос, не могли бы вы его принять?

Ответы (2)

[Из комментариев:] Если вы хотите соединить их по IP-сети, они должны находиться в одной подсети. Ваш компьютер самостоятельно назначает IP-адрес, поскольку не может найти DHCP-сервер. Попробуйте статически назначить вашему компьютеру адрес 192.168.1.1 с той же подсетью 255.255.255.0.

Я думаю, что обратная привязка решит вашу проблему.

Шаги обратной привязки Android:

Примечание. Работает только на рутированном телефоне Android.

  1. Подключите Android-устройство через USB.
  2. Включите USB-модем. Для этого перейдите в «Настройки» → «Дополнительно…» → «Модем и мобильная точка доступа» → «Модем через USB» .

  3. На хост-машине введите:

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

    Команда для sudo будет:

    $ sudo 'echo 1 > /proc/sys/net/ipv4/ip_forward' 
    
  4. На устройстве Android (для этого шага вы должны установить ADB на хост-компьютере) введите:

    $ adb shell 
    $ su 
    $ netcfg rndis0 dhcp
    

    Если он не получает IP-адрес, назначьте его вручную:

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

Теперь интернет будет работать в телефоне Android.

Для проверки попробуйте команду ping www.google.com.

Меня устраивает.

Android не дает возможности включить USB-модем с помощью комбинации Ethernet-ключ/кабель otg, т. е. это не соединение типа USB.
Я пробовал с рутированным телефоном и ПК с Ethernet-подключением, и у меня все работает нормально.
Вы используете otg с сетевым адаптером? Вот пример plugable.com/products/usb2-otge100 . И интернета не будет. UDP используется в качестве аппаратного интерфейса.
Я подключил свой телефон к ПК через usb
О 4. Не должно быть "На ПК", потому что вы запускаете оболочку ADB с ПК.