Как сделать работу Ethernet на Android через OTG? -- networking поле с участием usb-connection-mode поле с участием kernel поле с участием usb-on-the-go поле с участием usb-drivers пол android Связанный проблема

How to make Ethernet work on Android over OTG?


2
vote

проблема

русский

Я пытаюсь использовать модем LTE, подключенный к устройству Android 7 по кабелю OTG. Ядро распознает устройство и регистрирует его с помощью <код> cdc_ether , но я не могу использовать соединение с устройства. Это потому, что впоследствии устанавливается как USB-накопитель?

Устройство не отображается как устройство в строке Android UI / состояния.

Если я отключаю поддержку MTP, то устройство не будет зарегистрироваться <код> cdc_ether вообще.

<Код> dmesg :

 <код> [10946.408785] usb 1-1.3: new high-speed USB device number 21 using msm_hsusb_host [10946.525287] usb 1-1.3: New USB device found, idVendor=19d2, idProduct=1225 [10946.525306] usb 1-1.3: New USB device strings: Mfr=1, Product=2, SerialNumber=3 [10946.525316] usb 1-1.3: Product: ZTE Mobile Broadband [10946.525325] usb 1-1.3: Manufacturer: ZTE,Incorporated [10946.525335] usb 1-1.3: SerialNumber: MF8610ZTED000000 [10946.529662] usb-storage 1-1.3:1.0: USB Mass Storage device detected [10946.532702] scsi host19: usb-storage 1-1.3:1.0 [10947.538579] scsi 19:0:0:0: CD-ROM            ZTE      USB SCSI CD-ROM  2.31 PQ: 0 ANSI: 2 [10952.740595] usb 1-1.3: USB disconnect, device number 21 [10953.087891] usb 1-1.3: new high-speed USB device number 22 using msm_hsusb_host [10953.232955] usb 1-1.3: New USB device found, idVendor=19d2, idProduct=1405 [10953.232969] usb 1-1.3: New USB device strings: Mfr=1, Product=2, SerialNumber=3 [10953.232977] usb 1-1.3: Product: ZTE Mobile Broadband [10953.232984] usb 1-1.3: Manufacturer: ZTE,Incorporated [10953.232991] usb 1-1.3: SerialNumber: MF8610ZTED000000 [10953.260856] cdc_ether 1-1.3:1.0 usb0: register 'cdc_ether' at usb-msm_hsusb_host-1.3, CDC Ethernet Device, 36:4b:50:b7:ef:da [10953.262322] usb-storage 1-1.3:1.2: USB Mass Storage device detected [10953.262652] scsi host20: usb-storage 1-1.3:1.2 [10954.261139] scsi 20:0:0:0: CD-ROM            ZTE      USB SCSI CD-ROM  2.31 PQ: 0 ANSI: 2   

<Код> dmesg с MTP отключен:

 <код> [10664.987934] usb 1-1.3: new high-speed USB device number 19 using msm_hsusb_host [10665.105272] usb 1-1.3: New USB device found, idVendor=19d2, idProduct=1225 [10665.105291] usb 1-1.3: New USB device strings: Mfr=1, Product=2, SerialNumber=3 [10665.105301] usb 1-1.3: Product: ZTE Mobile Broadband [10665.105310] usb 1-1.3: Manufacturer: ZTE,Incorporated [10665.105320] usb 1-1.3: SerialNumber: MF8610ZTED000000 [10665.110339] usb-storage 1-1.3:1.0: USB Mass Storage device detected [10665.111320] scsi host17: usb-storage 1-1.3:1.0 [10666.110748] scsi 17:0:0:0: CD-ROM            ZTE      USB SCSI CD-ROM  2.31 PQ: 0 ANSI: 2 [10671.223090] usb 1-1.3: USB disconnect, device number 19 [10671.407859] msm_otg 78db000.usb: OTG runtime idle [10671.407887] msm_otg 78db000.usb: OTG runtime suspend   

<Код> ifconfig :

 <код> adb push0  

<Код> adb push1 :

 <код> adb push2  

Устройство отображается как <код> adb push3 с MAC-адресом, который был указан в adb push4 .

Английский оригинал

I am trying to use an LTE modem connected to an Android 7 device over an OTG cable. The kernel recognizes the device and registers it with cdc_ether, but I am unable to use the connection from the device. Is this because it is subsequently mounted as USB storage?

The device does not show up as a device in the Android UI / status bar.

If I disable MTP support, then the device wont register cdc_ether at all.

dmesg:

[10946.408785] usb 1-1.3: new high-speed USB device number 21 using msm_hsusb_host [10946.525287] usb 1-1.3: New USB device found, idVendor=19d2, idProduct=1225 [10946.525306] usb 1-1.3: New USB device strings: Mfr=1, Product=2, SerialNumber=3 [10946.525316] usb 1-1.3: Product: ZTE Mobile Broadband [10946.525325] usb 1-1.3: Manufacturer: ZTE,Incorporated [10946.525335] usb 1-1.3: SerialNumber: MF8610ZTED000000 [10946.529662] usb-storage 1-1.3:1.0: USB Mass Storage device detected [10946.532702] scsi host19: usb-storage 1-1.3:1.0 [10947.538579] scsi 19:0:0:0: CD-ROM            ZTE      USB SCSI CD-ROM  2.31 PQ: 0 ANSI: 2 [10952.740595] usb 1-1.3: USB disconnect, device number 21 [10953.087891] usb 1-1.3: new high-speed USB device number 22 using msm_hsusb_host [10953.232955] usb 1-1.3: New USB device found, idVendor=19d2, idProduct=1405 [10953.232969] usb 1-1.3: New USB device strings: Mfr=1, Product=2, SerialNumber=3 [10953.232977] usb 1-1.3: Product: ZTE Mobile Broadband [10953.232984] usb 1-1.3: Manufacturer: ZTE,Incorporated [10953.232991] usb 1-1.3: SerialNumber: MF8610ZTED000000 [10953.260856] cdc_ether 1-1.3:1.0 usb0: register 'cdc_ether' at usb-msm_hsusb_host-1.3, CDC Ethernet Device, 36:4b:50:b7:ef:da [10953.262322] usb-storage 1-1.3:1.2: USB Mass Storage device detected [10953.262652] scsi host20: usb-storage 1-1.3:1.2 [10954.261139] scsi 20:0:0:0: CD-ROM            ZTE      USB SCSI CD-ROM  2.31 PQ: 0 ANSI: 2 

dmesg with MTP disabled:

[10664.987934] usb 1-1.3: new high-speed USB device number 19 using msm_hsusb_host [10665.105272] usb 1-1.3: New USB device found, idVendor=19d2, idProduct=1225 [10665.105291] usb 1-1.3: New USB device strings: Mfr=1, Product=2, SerialNumber=3 [10665.105301] usb 1-1.3: Product: ZTE Mobile Broadband [10665.105310] usb 1-1.3: Manufacturer: ZTE,Incorporated [10665.105320] usb 1-1.3: SerialNumber: MF8610ZTED000000 [10665.110339] usb-storage 1-1.3:1.0: USB Mass Storage device detected [10665.111320] scsi host17: usb-storage 1-1.3:1.0 [10666.110748] scsi 17:0:0:0: CD-ROM            ZTE      USB SCSI CD-ROM  2.31 PQ: 0 ANSI: 2 [10671.223090] usb 1-1.3: USB disconnect, device number 19 [10671.407859] msm_otg 78db000.usb: OTG runtime idle [10671.407887] msm_otg 78db000.usb: OTG runtime suspend 

ifconfig:

TB-8504F:/ # ifconfig                                                                                                                   wlan0     Link encap:Ethernet  HWaddr 40:a1:08:36:5b:0d           inet addr:192.168.1.133  Bcast:192.168.1.255  Mask:255.255.255.0            inet6 addr: 2605:a601:ab2b:9900:b19e:4f2e:5d28:5fa9/64 Scope: Global           inet6 addr: fe80::42a1:8ff:fe36:5b0d/64 Scope: Link           inet6 addr: 2605:a601:ab2b:9900:42a1:8ff:fe36:5b0d/64 Scope: Global           UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1           RX packets:27906 errors:0 dropped:4 overruns:0 frame:0            TX packets:17795 errors:0 dropped:0 overruns:0 carrier:0            collisions:0 txqueuelen:1000            RX bytes:14342222 TX bytes:8697917   dummy0    Link encap:Ethernet  HWaddr c6:b9:c8:82:8f:7e           inet6 addr: fe80::c4b9:c8ff:fe82:8f7e/64 Scope: Link           UP BROADCAST RUNNING NOARP  MTU:1500  Metric:1           RX packets:0 errors:0 dropped:0 overruns:0 frame:0            TX packets:3 errors:0 dropped:0 overruns:0 carrier:0            collisions:0 txqueuelen:0            RX bytes:0 TX bytes:210   p2p0      Link encap:Ethernet  HWaddr 42:a1:08:36:5b:0d           UP BROADCAST MULTICAST  MTU:1500  Metric:1           RX packets:0 errors:0 dropped:0 overruns:0 frame:0            TX packets:0 errors:0 dropped:0 overruns:0 carrier:0            collisions:0 txqueuelen:1000            RX bytes:0 TX bytes:0   lo        Link encap:Local Loopback             inet addr:127.0.0.1  Mask:255.0.0.0            inet6 addr: ::1/128 Scope: Host           UP LOOPBACK RUNNING  MTU:65536  Metric:1           RX packets:0 errors:0 dropped:0 overruns:0 frame:0            TX packets:0 errors:0 dropped:0 overruns:0 carrier:0            collisions:0 txqueuelen:0            RX bytes:0 TX bytes:0  

ip l:

255|TB-8504F:/ # ip l 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default      link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 2: dummy0: <BROADCAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN mode DEFAULT group default      link/ether c6:b9:c8:82:8f:7e brd ff:ff:ff:ff:ff:ff 3: sit0@NONE: <NOARP> mtu 1480 qdisc noop state DOWN mode DEFAULT group default      link/sit 0.0.0.0 brd 0.0.0.0 20: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DORMANT group default qlen 1000     link/ether 40:a1:08:36:5b:0d brd ff:ff:ff:ff:ff:ff 21: p2p0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN mode DORMANT group default qlen 1000     link/ether 42:a1:08:36:5b:0d brd ff:ff:ff:ff:ff:ff 31: usb0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000     link/ether 36:4b:50:b7:ef:da brd ff:ff:ff:ff:ff:ff 

The device does show up as usb0 with the MAC address that was listed in dmesg.

              
       
       

Список ответов

3
 
vote
vote
Лучший ответ
 

Есть длинный список вопросов, связанных с Ethernet, но не имеет всесторонний ответ, охватывающий все аспекты. Я обобщаю ваш вопрос, чтобы поделиться своими знаниями на этом.

Это то, что вам нужно сделать, чтобы сделать работу Ethernet на Android:

    .
  • Убедитесь, что поддержка OTG доступен
  • ядро ​​должно быть построено с помощью поддержки Ethernet (и USB Ethernet)
  • Ручка переключатель USB-переключателя USB и модуль ядра (если применимо)
  • Сделать Android Framework Do Configuration или сделать его вручную

Примечание: все описано ниже, требует укорениваемого устройства или, по меньшей мере, один с разблокированным загрузчиком.
Вы должны быть знакомы с интерфейсом CommandLine.


поддержка OTG

Ваше устройство должно быть в состоянии работать в режиме USB-хоста. <Код> EthernetService - начал только в том случае, если устройство поддерживает функцию хоста USB (<код> android.hardware.usb.host ) или Ethernet (<код> android.hardware.ethernet ). Вам также может потребоваться использовать интенсивный ступиц USB с питанием, если для подключенного устройства не хватает питания USB. Похожие вопросы:

    .
  • Есть ли определенный способ узнать, поддерживает ли мой телефон USB-OTG или нет?

Конфигурация ядра

Для использования Ethernet Over USB (адаптеры или модемические устройства) ядро ​​должны Быть построен с <код> CONFIG_USB_USBNET / код> и другие конфигурации, такие как <код> USB_NET_CDCETHER , <код> adb install [apkfile] 0 , <код> adb install [apkfile] 1 и т. Д. В зависимости от типа подключенного устройства и протокола это Переговоры. Связанные вопросы:

    .
  • Где установлены модули ядра?
  • Добавить драйвер в ядро ​​без мигания нового ядра
  • Загрузите модуль unsigned ядра для подписи для подписи к ядру

Переключатель USB-режима и модуль загрузки ядра

Многие сетевые устройства USB являются многорежимными или Flip Flop устройства. Они отображаются как запоминающее устройство USB (также называемое Zerocd режим) при вступлении и надо быть переключенным на режим Ethernet / PPP. usb_modeswitch - это инструмент Linux, обычно используемый для этой цели. Смотрите некоторые подробности Здесь Как это работает. Вам нужно построить этот инструмент для вашего устройства, или может загрузить Это двоичный для <код> adb install [apkfile] 2 / код>. Получите базу данных устройств из Здесь .

Чтобы автоматически переключать режим всякий раз, когда устройство подключено к Android, нам нужно прослушивать usb usb usb uevents , либо через HOTPLUG HELPER или демон пользователей (например, <Код> adb install [apkfile] 3 на Linux и <Код> adb install [apkfile] 4 на Android). Кроме того, модуль ядра также может быть загружен / выгружен автоматически. Я Определение adb install [apkfile] 5 Service здесь, чтобы добиться этого, вы можете сделать это вручную тоже.

Примечание: есть приложение для Android Виджет PPP (У разработчика USB_ModeSwitch у меня нет аффилированности), которое обрабатывает переключение режима автоматически и потребности «Нет модулей драйверов ядра, реализация« драйвера »основана на API Android USB-API« <код> adb install [apkfile] 6

* В случае hotplug нужно определить пользовательские политики SELinux, чтобы ядро внести изменения (см. Это ответ < / a> Для деталей).

 <код> adb install [apkfile] 7  

Сеть Configurat На

Android Framework имеет жесткое имя интерфейса Ethernet ( по умолчанию это <код> adb install [apkfile] 8 , <код> adb install [apkfile] 9 , ...). Всякий раз, когда появится интерфейс Ethernet, его Соответствует названию с жестким кодированным значением. Переименованный интерфейс впоследствии не работает, потому что только Ядро, предоставленное имя интерфейса Отслеживается .

Поэтому вам нужно сделать эту конвенцию именования, согласуемой между ядром и AOSP, изменяя один из обоих (при необходимости). При условии, что имя ядра можно увидеть с помощью /data/app/0 Tool (как в вашем случае это <код> /data/app/1 ). Используйте <Код> /data/app/2 или de-compile <код> /data/app/3 с использованием apktool , чтобы увидеть значение AOSP.

 <код> /data/app/4  

Как только появится интерфейс Ethernet, Android конфигурирует его автоматически, <код> /data/app/5 проверяет подключение и <код> /data/app/6 отключает Wi-Fi и мобильные данные (если он включен). Другие услуги и компоненты, участвующие в конфигурации, включают <код> /data/app/7 , <код> /data/app/8 , <код> /data/app/9 , <код> adb push0 , <код> adb push1 код>, <код> adb push2 и <код> adb push3 .

Ethernetservice был добавлен в Android 5. До этого AOSP был исправлен, чтобы сделать работу Ethernet (например, см. Это и Это ). Натюрморт Android предоставляет настройки GUI для Ethernet, но некоторые пользовательские разработчики ROM и OEMS DO (например, см. это ). <Код> adb push4 класса, который используется для Установите и сохранить ручной конфигурации IP (для <код> adb push5 ) скрыт . По умолчанию используется значение жестко закодированная конфигурация (см. Использование adb push6 под" конфигурации IP: ") или DHCP предоставлена ​​конфигурация < / a>.

<Сильная> Ручная конфигурация

Возможно, вы захотите выполнить ручную конфигурацию сети E.g. Если:

    .
  • android framework не настраивает интерфейс Ethernet (на более старых устройствах или из-за непоследовательности имени интерфейса).
  • Вы хотите установить статический IP-адрес или другой DNS-сервер.
  • Вы хотите использовать Ethernet наряду с Wi-Fi или мобильными данными или хотите поделиться Интернетом среди любого из них.

Но в этом случае стек Java Android остается вниз, поэтому некоторые приложения в зависимости от Android API могут не вести себя нормально. Для получения дополнительных деталей см. Подключение к WiFi через adb shell .

 <код> adb push7  
 <код> adb push8  

Не забудьте установить правильные разрешения на <код> adb push9 файловых сценариев. После настройки Ethernet работает, как только вы подключаете адаптер USB.

 

There is a long list of Ethernet related questions but none has a comprehensive answer covering all aspects. I'm generalizing your question in order to share my knowledge on this.

This is what you need to do in order to make Ethernet work on Android:

  • Make sure OTG support is available
  • Kernel must be built with Ethernet (and USB Ethernet) support
  • Handle USB mode switch and kernel module loading (if applicable)
  • Make Android framework do network configuration or do it manually

Note: Everything described below requires a rooted device, or at least the one with unlocked bootloader.
You should be familiar with commandline interface.


OTG SUPPORT

Your device must be able to operate in USB host mode.EthernetService is started only if device supports feature USB host (android.hardware.usb.host) or Ethernet (android.hardware.ethernet). You may also need to use a powered USB hub if Android's USB power supply is not enough for connected device. Related question:

  • Is there a definite way to know if my phone supports USB-OTG or not?

KERNEL CONFIGURATION

In order to use Ethernet over USB (adapters or modem-like devices) kernel must be built with CONFIG_USB_USBNET and other configurations like USB_NET_CDCETHER, USB_NET_HUAWEI_CDC_NCM, USB_NET_CDC_MBIM etc. depending on the type of connected device and the protocol it talks. Related questions:

  • Where kernel modules are installed?
  • Add a driver to kernel without flashing a new kernel
  • Load an unsigned Kernel Module to signature enforcing Kernel

USB MODE SWITCH AND LOADING KERNEL MODULE

Many USB network devices are multi-mode or flip flop devices. They appear as USB Mass Storage device (also called ZeroCD mode) when inserted and need to be switched to Ethernet/PPP mode. USB_ModeSwitch is a Linux tool commonly used for this purpose. See some details here how it works. You need to build this tool for your device, or may download this binary for aarch64. Get device database from here.

In order to automatically switch mode whenever the device is connected to Android, we need to listen to kernel USB uevents, either through hotplug helper or a userspace daemon (like udev on Linux and ueventd on Android). Additionally the kernel module can also be loaded/unloaded automatically. I'm defining an init service here to achieve this, you can do it manually too.

Note: There is an Android app PPP Widget (by the developer of USB_ModeSwitch, I have no affiliation) which handles mode switching automatically and needs "no kernel driver modules, the 'driver' implementation is based on the Android USB host API". You might be interested in that too.

# /system/etc/init/custom.rc  # kernel hotplug or uevent daemon service service cust.udevd /system/sbin/busybox uevent /system/sbin/udev.sh     seclabel u:r:magisk:s0     disabled     writepid /dev/cpuset/system-background/tasks  # set kernel hotplug helper or start uevent daemon on boot on property:sys.boot_completed=1     #write /proc/sys/kernel/hotplug /system/sbin/udev.sh     start cust.udevd 

* In case of hotplug you need to define custom SELinux policies to let kernel make changes (see this answer for details).

#!/system/bin/sh  # /system/sbin/udev.sh script is executed from kernel hotplug or uevent daemon  # set PATH where you placed binaries export PATH=/system/bin  # save log exec >>/dev/udev.log 2>&1  # don't execute multiple instances exec 200<>/dev/udev.lock flock 200  VID="12d1"          # USB vendor ID of a Huawei devcie PID_UMS="1f01"      # product ID in ZeroCD mode PID_ETH="14db"      # product ID in Ethernet mode MODULE="cdc_ether"  # kernel module for USB Ethernet IFACE="usb0"        # Ethernet interface name  matches() {     [ -e "/sys/$DEVPATH/$1" ] || return 1     [ "$(cat "/sys/$DEVPATH/$1")" = "$2" ] || return 1     return 0 }  # check if a new USB device is added or removed if [ "$SUBSYSTEM" = "usb" ] then     # check if a USB device is added, then match VID and PID for mode switching     # also device must belong to UMS class: https://www.usb.org/defined-class-codes#anchor_BaseClass08h     if [ "$ACTION" = "add" ] && echo "$PRODUCT" | grep -q "$VID/$PID_UMS/" &&         matches bInterfaceClass 08 && matches bInterfaceNumber 00     then         echo "Switching USB mode..."          # USB mode switching of flip flop devices (USB modems, routers etc.)         # usb_modeswitch_dispatcher needs /system/sbin/usb_modeswitch binary and configuration files in /etc         # so you need to modify the hard-coded paths in source code as per your requirement         usb_modeswitch_dispatcher --switch-mode "$(basename "$DEVPATH")"     fi      # match VID and PID for module loading     # modprobe should be built with the hard-coded path to where you place modules e.g. /system/lib     if echo "$PRODUCT" | grep -q "$VID/$PID_ETH/"     then         if [ "$ACTION" = "add" ] && ! grep -q "^$MODULE " /proc/modules         then             echo "Loading $MODULE module..."             modprobe "$MODULE"          elif [ "$ACTION" = "remove" ] && grep -q "^$MODULE " /proc/modules         then             echo "Removing $MODULE module..."             modprobe -r "$MODULE"         fi     fi fi  # on network interface event if [ "$SUBSYSTEM" = "net" ] && [ "$INTERFACE" = "$IFACE" ] then     if [ "$ACTION" = "add" ]     then         echo "Starting cust.eth_config service..."         #start cust.eth_config    # uncomment if you want to do manual network configuration     fi      if [ "$ACTION" = "remove" ]     then         echo "Stopping cust.eth_config service..."         #stop cust.eth_config    # uncomment if you want to do manual network configuration     fi fi 

NETWORK CONFIGURATION

Android framework has a hard-coded name for Ethernet interface (default is eth0, eth1, ...). Whenever an Ethernet interface appears, its name is matched with the hard-coded value. Renaming interface afterwards doesn't work because only kernel provided interface name is tracked.

So you need to make this naming convention consistent between kernel and AOSP by modifying one of the both (if needed). Kernel provided name can be seen using ip tool (as in your case it's usb0). Use dumpsys or de-compile /system/framework/framework-res.apk using apktool to see the AOSP value.

~$ dumpsys ethernet ...   Ethernet interface name filter: eth\d ... 

As soon as an Ethernet interface appears, Android configures it automatically, NetworkMonitor validates the connectivity and ConnectivityService turns off WiFi and Mobile Data (if it's ON). Other services and components involved in configuration include UsbHostManager, EthernetTracker, EthernetNetworkFactory, IpClient.eth0, DhcpClient, DnsManager and Netd.

EthernetService was added in Android 5. Before that AOSP was patched to make Ethernet work (e.g. see this and this). Still stock Android provides no GUI settings for Ethernet, but some custom ROM developers and OEMs do (e.g. see this). EthernetManager class which is used to set and save manual IP configuration (to /data/misc/ethernet/ipconfig.txt) is hidden. Default is to use a hard-coded configuration (see using dumpsys ethernet under "IP Configurations:") or DHCP provided configuration.

MANUAL CONFIGURATION

You might want to do manual network configuration e.g. if:

  • Android framework doesn't configure the Ethernet interface (on older devices or due to interface name inconsistency).
  • You want to set static IP address or different DNS server.
  • You want to use Ethernet along with WiFi or Mobile Data, or want to share internet among any of these.

But in this case Android's Java network stack remains down, so some apps depending on Android APIs may not behave normally. For related details see Connecting to WiFi via ADB Shell.

# /system/etc/init/custom.rc  # Ethernet IP configuration service service cust.eth_config /system/sbin/eth_config.sh     seclabel u:r:magisk:s0     disabled     writepid /dev/cpuset/system-background/tasks  # clear routing and DNS on property:init.svc.cust.eth_config=stopped     exec u:r:magisk:s0 -- /system/sbin/eth_config.sh stop 
#!/system/bin/sh  # /system/sbin/eth_config.sh script is executed from eth_config init service  # set PATH where you placed binaries export PATH=/system/bin  IFACE=usb0                    # Ethernet interface name DIR=/data/local/tmp/ethernet  # temporary directory mkdir -p $DIR  # save log exec >$DIR/eth_config.log 2>&1  if [ "$1" = stop ] then     echo "Clearing configuration..."     ip ru del lookup main     ip r f table main     ndc resolver setnetdns 0 '' 0.0.0.0     exit fi  # destroy set network if any ndc network default set 0  # turn WiFi and Mobile Data off svc wifi disable svc data disable  # set interfaces up ip link set dev lo up ip link set dev $IFACE up  # Android doesn't use main table by default ip rule add lookup main  # set IP, route and DNS manually here # or add any other IP/routing configuration # or run a minimal DHCP client as follows  # create 'udhcpc' script <<-'SCRIPT' cat >$DIR/udhcpc_default.script #!/system/bin/sh  case $1 in     bound|renew)         echo "Setting IP address, gateway route and DNS for $interface..."         ip address f dev $interface         ip route f table main         ip address add $ip/$mask dev $interface         ip route add default via $router dev $interface         ndc resolver setnetdns 0 '' $dns     ;;     *)         echo "Ignoring $1"     ;; esac SCRIPT  # start DHCP client to obtain IP from server chmod 0755 $DIR/udhcpc_default.script exec busybox udhcpc -v -f -i $IFACE -s $DIR/udhcpc_default.script 

Do not forget to set proper permissions on .rc file and shell scripts. Once setup, Ethernet works as soon as you connect USB adapter.

 
 
 
 

Связанный проблема

23  Послушайте, какие URL-адреса приложение пытается подключиться  ( Listen which urls an app tries to connect ) 
Можно ли слушать / отслеживать сетевую деятельность приложения? У меня есть это одно приложение, и я не мог выяснить, где он получает изображения. Я пытался...

6  Как я могу настроить свой роутер WiFi для моего Android-устройства?  ( How do i set up my wifi router for my android device ) 
У меня есть беспроводная сеть, установленная маршрутизатором Sweex LC000070, шифрование WEP, и пока мой HTC Hero может подключиться к сети, Интернет не работа...

29  У Android поддерживает IPv6?  ( Does android have support for ipv6 ) 
Интересно, имеет ли Android поддержать IPv6? Я слышал, что телефонная компания, которую я использую, имеет поддержку IPv6, и у меня есть адрес IPv6, если я по...

5  Как установить статический IP в командной строке или оболочке ADB?  ( How to set static ip on command line or adb shell ) 
Я не могу использовать <код> netcfg на нуга. Если я использую <код> ifconfig ip не обновляется. Если есть другой метод для изменения IP в командной строке ...

1  Android и Windows 7 HomeGroup  ( Android and windows 7 homegroup ) 
У меня есть планшет Android и мой компьютер работает Windows 7 Pro. Я использую ES File Explorer на Android, чтобы увидеть общие папки. Я добавил несколько ...

1  Как сделать сетевые звонки на Android с приложением на заднем плане [закрыто]  ( How to make network calls on android with an app in the background ) 
<в сторону CLASS = "S-NEWACTS S-WELTIVE__info JS-Post-New Imide MB16« Роль = «Статус»> закрыт. Этот вопрос Off-Topic . В настоящее время он не принимае...

7  Как изменить файл «Хосты» на Redirect URL?  ( How to change the hosts file to redirect urls ) 
для Windows Machine Мы получили файл Hosts для редактирования для перенаправления URL-адреса к другим доменам. Есть ли такой файл на Android? Я ищу перенапр...

2  Я уконул свой телефон, но почему я не могу телнет?  ( I have rooted my phone but why cant i telnet ) 
У меня есть T-Mobile G1 и укоренив его, используя androot. Я подтвердил, что у меня есть root, используя беспроводные привязки, я получаю все необходимые диал...

132  Как настроить обратный привязку через USB?  ( How to set up reverse tethering over usb ) 
мой телефон htc g2 укоренился и работает цианогенмод 7 у меня нет плана данных. Иногда я хочу подключить телефон к Интернету, когда нет Wi-Fi, чтобы обно...

6  Могу ли я переопределить настройки DNS по умолчанию на HTC EVO без доступа к корню?  ( Can i override the default dns settings on an htc evo without root access ) 
Есть ли способ переопределить Sprint DNS-сервер (S), используемый по умолчанию на подключении HTC EVO, работает Froyo без корневого доступа? Причина, по кот...

0  Можно поделиться мобильным Интернетом (Tether) при подключении к существующей сети WiFi?  ( Possible to share mobile internet tether while connected to existing wifi netw ) 
У меня есть существующая сеть Wi-Fi и Google Nexus 5 (Un-racked, Stative Android) с подключением к данным 3G. Я хотел бы сеть мою мобильную связь, чтобы под...

0  Установка динамического IP-адреса из командной строки  ( Setting dynamic ip address from command line ) 
Я работаю с Android, я подключил кабель Ethernet к порту Ethernet моего оборудования. Я не получаю никакой сети. Я использую Android O. В Linux я могу исп...

2  Где найти IP-адрес в файловой системе (например, proc или sys)  ( Where to find ip address in file system e g proc or sys ) 
Есть ли способ получить адрес IP (v4) интерфейса в файловой системе Android? Я знаю, что я мог бы использовать ifconfig или netcfg, но я хотел бы использовать...

2  Настройка статического IP для Android Hotspot  ( Setting static ip for android hotspot ) 
Я подключаюсь к точке Hotspot мой Android. Я вижу, что IP 192.168.43.0/24, поэтому любой IP в 192.168.43.x будет зарезервирован для DHCP-сервера Android. Но м...

3  Как настроить VLAN на Android?  ( How to setup vlan on android ) 
Может ли кто-нибудь дать мне представление, как настроить то, как настроить VLAN на Android. Я получаю VLAN 200 помеченного трафика с некоторых устройств. И...

Связанный проблема

23  Послушайте, какие URL-адреса приложение пытается подключиться 
6  Как я могу настроить свой роутер WiFi для моего Android-устройства? 
29  У Android поддерживает IPv6? 
5  Как установить статический IP в командной строке или оболочке ADB? 
1  Android и Windows 7 HomeGroup 
1  Как сделать сетевые звонки на Android с приложением на заднем плане [закрыто] 
7  Как изменить файл «Хосты» на Redirect URL? 
2  Я уконул свой телефон, но почему я не могу телнет? 
132  Как настроить обратный привязку через USB? 
6  Могу ли я переопределить настройки DNS по умолчанию на HTC EVO без доступа к корню? 
0  Можно поделиться мобильным Интернетом (Tether) при подключении к существующей сети WiFi? 
0  Установка динамического IP-адреса из командной строки 
2  Где найти IP-адрес в файловой системе (например, proc или sys) 
2  Настройка статического IP для Android Hotspot 
3  Как настроить VLAN на Android?