Como fazer o trabalho Ethernet no Android sobre OTG? -- networking campo com usb-connection-mode campo com kernel campo com usb-on-the-go campo com usb-drivers camp android Relacionado O problema

How to make Ethernet work on Android over OTG?


2
vote

problema

português

Eu estou tentando usar um modem LTE conectado a um dispositivo Android 7 sobre um cabo OTG. O kernel reconhece o dispositivo e registra-o com cdc_ether , mas não consigo usar a conexão do dispositivo. É isso porque é subseqüentemente montado como armazenamento USB?

O dispositivo não aparece como um dispositivo na barra UI / Status do Android.

Se eu desabilitar o suporte a MTP, o dispositivo não será registrado cdc_ether em tudo.

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 com MTP desativado:

  [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   

O dispositivo aparece como adb push3 com o endereço MAC listado em adb push4 .

Inglês Original

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.

              
       
       

Lista de respostas

3
 
vote
vote
Melhor resposta
 

Há uma longa lista de perguntas relacionadas à Ethernet, mas nenhuma tem uma resposta abrangente cobrindo todos os aspectos. Eu estou generalizando sua pergunta para compartilhar meu conhecimento sobre isso.

É isso que você precisa fazer para fazer o trabalho Ethernet no Android:

  • Certifique-se de que o suporte OTG esteja disponível
  • kernel deve ser construído com suporte Ethernet (e USB Ethernet)
  • lidar com o modo de modo USB e o módulo do kernel carregamento (se aplicável)
  • fazer a estrutura do Android fazer configuração de rede ou fazer manualmente

nota: Tudo descrito abaixo requer um dispositivo enraizado , ou pelo menos aquele com bootloader desbloqueado.
Você deve estar familiarizado com a interface de linha de comando.


suporte OTG

O seu dispositivo deve ser capaz de operar no modo Host USB. ABCDEFGHIJKLMNABCDEFGHIJKLMN0 é Iniciado apenas se o dispositivo suporta o recurso USB host ( ABCDEFGHIJKLMNABCDEFGHIJKLMN1 ) ou Ethernet ( android.hardware.ethernet ). Você também pode precisar usar um hub USB alimentado se a fonte de alimentação USB do Android não for suficiente para o dispositivo conectado. Pergunta relacionada:

  • Existe uma maneira definida de saber se meu telefone suporta USB-Otg ou não?

Configuração do kernel

Para usar ethernet sobre USB (adaptadores ou dispositivos semelhantes a modem) o kernel deve ser construído com ABCDEFGHIJKLMNABCDEFGHIJKLMN3 < / Código> e outras configurações como USB_NET_CDCETHER , USB_NET_HUAWEI_CDC_NCM , USB_NET_CDC_MBIM etc. Dependendo do tipo de dispositivo conectado e do protocolo fala. Perguntas relacionadas:

  • onde os módulos do kernel estão instalados?
  • Adicione um driver ao kernel sem piscar um novo kernel
  • carregar um módulo de kernel não assinado para assinatura impor kernel

Switch do modo USB e carregando o módulo do kernel

Muitos dispositivos de rede USB são dispositivos multi-modo ou flip flip . Eles aparecem como dispositivo de armazenamento de massa USB (também chamado Zerocd modo) quando inserido e precisa ser comutado para o modo Ethernet / PPP. usb_modeswitch é uma ferramenta Linux comumente usada para esta finalidade. Veja alguns detalhes Aqui Como funciona. Você precisa construir esta ferramenta para o seu dispositivo, ou pode baixar Este binário para abcdefghijklmn7 < / código>. Obtenha o banco de dados do dispositivo de aqui .

Para alternar automaticamente o modo sempre que o dispositivo estiver conectado ao Android, precisamos ouvir o kernel USB uevents , seja através de helper hotplug ou um daemon de espaço de usuário (como udev no Linux e ueventd no Android). Além disso, o módulo do kernel também pode ser carregado / descarregado automaticamente. Eu sou definindo um android.hardware.usb.host0 serviço aqui para conseguir isso, você pode fazer isso manualmente também.

Nota: há um aplicativo Android widget PPP (pelo desenvolvedor de USB_Modeswitch, eu não tenho nenhuma afiliação) que lida com o modo de mudança automaticamente e precisa "sem módulos do driver do kernel, a implementação 'driver' é baseada na API do Android USB Host" . Você pode estar interessado nisso também.

  android.hardware.usb.host1   

* no caso de hotpl G Você precisa definir políticas de selinux personalizadas para permitir que o kernel faça alterações (consulte Esta resposta para detalhes).

  android.hardware.usb.host2   

Configuração de rede

estrutura do Android tem um nome codificado por interface Ethernet ( Padrão ABCDEFGHIJKLMNABCDEFGHIJKLMN13 , ABCDEFGHIJKLMNABCDEFGHIJKLMN14 , ...). Sempre que uma interface Ethernet aparecer, é O nome é correspondido com o valor codificado. Renomear a interface depois não funciona porque apenas kernel fornecido nome da interface é rastreado .

Então você precisa fazer essa convenção de nomenclatura consistente entre o kernel e o AOSP, modificando um dos dois (se necessário). O kernel forneceu nome pode ser visto usando android.hardware.usb.host5 ferramenta (como no seu caso é android.hardware.usb.host6 ). Use android.hardware.usb.host7 ou de-compile android.hardware.usb.host8 usando APKTOOL Para ver o valor do AOSP.

  android.hardware.usb.host9   

Assim que uma interface Ethernet aparecer, o Android configura automaticamente, ABCDEFGHIJKLMNABCDEFGHIJKLMN20 Valida a Conectividade e ABCDEFGHIJKLMNABCDEFGHIJKLMN21 Desativa o WiFi e os dados móveis (se estiver ligado). Outros serviços e componentes envolvidos na configuração incluem android.hardware.ethernet2 , android.hardware.ethernet3 , android.hardware.ethernet4 , android.hardware.ethernet5 , android.hardware.ethernet6 , android.hardware.ethernet7 e android.hardware.ethernet8 .

ethernetservice foi adicionado no Android 5. Antes que esse AOSP tenha sido corrigido para fazer o trabalho Ethernet (por exemplo, ver este e este ). O Android ainda não fornece configurações de GUI para Ethernet, mas alguns desenvolvedores e OEMs personalizados da ROM fazem (por exemplo, ver este ). ABCDEFGHIJKLMNABCDEFGHIJKLMN29 Classe usado para Definir e salvar Configuração IP manual (para CONFIG_USB_USBNET0 ) está oculto . O padrão é usar um Configuração codificada por disco (consulte Usando ABCDEFGHIJKLMNABCDEFGHIJKLMN31 em" Configurações IP: ") ou DHCP Fornecido configuração < / a>.

Configuração manual

Você pode querer fazer a configuração de rede manual e. Se:

  • estrutura do Android não configura a interface Ethernet (em dispositivos mais antigos ou devido à inconsistência de nome de interface).
  • Você deseja definir endereço IP estático ou servidor DNS diferente.
  • Você deseja usar Ethernet junto com WiFi ou dados móveis, ou deseja compartilhar internet entre qualquer um deles.

Mas nesta caixa, a pilha de rede Java do Android permanece para baixo, então alguns aplicativos dependendo da APIs Android podem não se comportar normalmente. Para detalhes relacionados, consulte Conectando a Wi-Fi via shell adb .

  CONFIG_USB_USBNET2   
  CONFIG_USB_USBNET3   

Não se esqueça de definir permissões adequadas sobre CONFIG_USB_USBNET4 scripts de arquivo e shell. Depois que a instalação, a Ethernet funciona assim que você conectar o adaptador 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.

 
 
 
 

Perguntas relacionadas

1  QUALCOMM HSUSB DISPOSITIVO DO DRIVER  ( Qualcomm hsusb device driver issue ) 
Eu tenho um dispositivo Qualcomm HS-USB no qual eu quero testar meu aplicativo desenvolvido. O problema que estou enfrentando é que os drivers de dispositivo ...

1  Dispositivos ADB não lista Samsung Galaxy S CyanogenMod 7.1  ( Adb devices doesnt list samsung galaxy s cyanogenmod 7 1 ) 
Não consigo listar o meu dispositivo em ABCDEFGHIJKLMNABCDEFGHIJKLMN3 e meu problema é semelhante ao de cientista louco Exceto que em seu caso, o Windows ...

-1  Como conectar um Motorola Xoom 2 Me (MZ607) no modo Fastboot para um PC?  ( How to connect a motorola xoom 2 me mz607 on fastboot mode to a pc ) 
Eu estou tentando conectar um Motorola Xoom 2 Me (MZ607) no modo Fastboot ao meu laptop executando o Windows 10 como por descrito aqui: https://goo.gl/ln57...

2  Como fazer o trabalho Ethernet no Android sobre OTG?  ( How to make ethernet work on android over otg ) 
Eu estou tentando usar um modem LTE conectado a um dispositivo Android 7 sobre um cabo OTG. O kernel reconhece o dispositivo e registra-o com cdc_ether , mas...

4  Drivers USB para usar ADB com Samsung Galaxy S no CyanogenMod 7.1?  ( Usb drivers for using adb with samsung galaxy s on cyanogenmod 7 1 ) 
Eu instalei recentemente cyanogenmod 7.1 no meu samsung galaxy s i9000 e tenho alguns problemas agora para obter adb no meu computador Windows 7 64 bits...

0  O Android Studio não vê o dispositivo  ( Android studio doesnt see device ) 
Eu sei que esta questão foi solicitada por várias vezes, mas eu tentei quase todas as soluções que foi sugerido e o Android Studio ainda não vê meu dispositiv...

5  Como posso obter adb para reconhecer adequadamente um dispositivo Alcatel One Touch 995 no Windows / Ubuntu?  ( How can i get adb to properly recognize an alcatel one touch 995 device on windo ) 
o problema Estou tentando implantar um aplicativo personalizado para um Alcatel One Touch 995 executando Android 2.3.6. Eu uso o Eclipse para compilar o cód...

14  Não consigo ver meu dispositivo na lista de adb Android  ( I cant see my device in android adb list ) 
Eu tenho Open with View contact [JUST ONCE] [ALWAYS] Use a different app Contacts 1 com Open with View contact [JUST ON...

1  Todos os dispositivos Android têm suporte USB OTG?  ( Do all android devices have usb otg support ) 
Eu estou usando celkon A98 . A especificação do meu dispositivo diz que não possui suporte de OTG .. Eu tentei solução de problemas de solução de problema...

-1  Aoson M19 - Drivers de dispositivo [duplicado]  ( Aoson m19 device drivers ) 
. Esta pergunta já tem uma resposta aqui : fechado 8 anos atrás . . Duplicado possível: Aoson...

2  Android Chroot Ubuntu - é possível obter o Ubuntu para reconhecer dispositivos USB  ( Android chroot ubuntu is it possible to get ubuntu to recognise usb devices ) 
Eu consegui configurar o chroot, mas não tenho certeza de como obter o chroot reconhecer dispositivos USB. Eu estarei fazendo isso funcionar com microcontrola...

13  Como faço para obter o meu Nexus 7 para aparecer na lista de dispositivos ADB?  ( How do i get my nexus 7 to show up in the adb devices list ) 
Então eu tenho um Nexus 7 que estou tentando se conectar ao meu computador Windows para depurar o ADB. ADB funciona bem com o meu telefone, mas quando eu cone...

3  Aoson M19 - Precisa de drivers de dispositivo  ( Aoson m19 need device drivers ) 
Eu e alguns outros têm um tablet Android extra Aoson M19 na mão, mas não consegue encontrar nenhum driver de dispositivo USB para ele. Eu suponho que isso é p...

0  Como funciona o aplicativo OTG Enabler?  ( How does otg enabler app work ) 
Há um dispositivo não tem nenhum sinal de OTG USB, mas o Cheker diz: "O sistema operacional do dispositivo possui USB OTG API, verifique se há sinais de drive...

1  Como conectar o SuperPad II P041 ao PC  ( How to connect superpad ii p041 to pc ) 
Eu tenho um superpad II P041 e gostaria de conectar-o ao meu PC. Eu gostaria de usar o logcat para verificar a exceção lançada pelo meu aplicativo. O proble...

1  O LG Nexus 5 não é detectado apesar de ter instalado os drivers móveis LG Universal  ( Lg nexus 5 is not detected despite having installed lg universal mobile drivers ) 
Eu uso o Windows 8, e o ADB parece não ser capaz de encontrar meu LG Nexus 5 (D821) Apesar de ter instalado LG Universal Mobile Drivers (LGunitedMobileDriver_...

8  Nexus 5 não se conectará ao PC  ( Nexus 5 wont connect to pc ) 
Eu tenho um Nexus 5. É bastante novo - eu comprei cerca de 2 semanas atrás. Eu já conectou anteriormente ao meu Windows 7 PC e consegui acessar os arquivos ...

10  Problemas de motorista ao usar o Samsung Galaxy SIII via USB para desenvolvimento  ( Driver issues when using samsung galaxy siii via usb for development ) 
O telefone está conectado via USB para o Windows 7 64-bit. O ABCDEFGHIJKLMNABCDEFGHIJKLMN0 opção ativada. Quando eu conecto o telefone ao computador, sou n...

22  Como instalar drivers de ADB no Windows 10 (OPO)  ( How to install adb drivers on windows 10 opo ) 
Problema: instalar drivers adb (google_usb_drivers) em um cliente do Windows 10 para ativar a depuração para o meu oneplus um (OPO). o que eu tentei: De...

1  Como obter drivers para o suporte ao Android de usb webcameras para streaming apps?  ( How to get drivers for android support of usb webcameras for streaming apps ) 
Eu sei que há aplicativos que permitem que você faça vídeos por meio de aplicativos, por exemplo Câmera USB - conectar easyCap ou webcam USB , mas não permit...

1  Sony Xperia U com meu laptop do Windows XP  ( Sony xperia u with my windows xp laptop ) 
Eu tenho o Windows XP e toda vez que eu conecto minha xperia u, o computador acha que uma câmera. Eu acho que é um problema de motorista, então encontrei os d...

1  Drivers USB OEM Lenovo [Fechado]  ( Oem usb drivers lenovo ) 
. FECHADO. Esta questão é off-tópico . Atualmente não está aceitando respostas. Quer melh...

2  Liveduit (ou outras ferramentas semelhantes) para Linux ou BSD  ( Livesuit or other similar tools for linux or bsd ) 
Eu preciso piscar uma nova ROM para um Allwinner A13 tablet . Mas eu não tenho acesso a uma caixa do Windows. Existe alguma ferramenta como vidas para Linux...

-2  Os fabricantes escrevem os drivers para seus novos dispositivos Android?  ( Do manufacturers write the drivers for their new android runned devices ) 
Você note que a Samsung Galaxy S4 é diferente do MetroPCS Z500. O fabricante atualiza os drivers, dependendo do hardware, seu sistema operacional Android é ...

0  Usando um dongle WiFi para monitorar a rede  ( Using a wifi dongle to monitor network ) 
Eu tenho uma caixa inteligente Android com um wifi interno e quero adicionar um dongle à caixa para que eu possa monitorar a rede. Eu encontrei uma pergunta s...

Perguntas relacionadas

1  QUALCOMM HSUSB DISPOSITIVO DO DRIVER 
1  Dispositivos ADB não lista Samsung Galaxy S CyanogenMod 7.1 
-1  Como conectar um Motorola Xoom 2 Me (MZ607) no modo Fastboot para um PC? 
2  Como fazer o trabalho Ethernet no Android sobre OTG? 
4  Drivers USB para usar ADB com Samsung Galaxy S no CyanogenMod 7.1? 
0  O Android Studio não vê o dispositivo 
5  Como posso obter adb para reconhecer adequadamente um dispositivo Alcatel One Touch 995 no Windows / Ubuntu? 
14  Não consigo ver meu dispositivo na lista de adb Android 
1  Todos os dispositivos Android têm suporte USB OTG? 
-1  Aoson M19 - Drivers de dispositivo [duplicado] 
2  Android Chroot Ubuntu - é possível obter o Ubuntu para reconhecer dispositivos USB 
13  Como faço para obter o meu Nexus 7 para aparecer na lista de dispositivos ADB? 
3  Aoson M19 - Precisa de drivers de dispositivo 
0  Como funciona o aplicativo OTG Enabler? 
1  Como conectar o SuperPad II P041 ao PC 
1  O LG Nexus 5 não é detectado apesar de ter instalado os drivers móveis LG Universal 
8  Nexus 5 não se conectará ao PC 
10  Problemas de motorista ao usar o Samsung Galaxy SIII via USB para desenvolvimento 
22  Como instalar drivers de ADB no Windows 10 (OPO) 
1  Como obter drivers para o suporte ao Android de usb webcameras para streaming apps? 
1  Sony Xperia U com meu laptop do Windows XP 
1  Drivers USB OEM Lenovo [Fechado] 
2  Liveduit (ou outras ferramentas semelhantes) para Linux ou BSD 
-2  Os fabricantes escrevem os drivers para seus novos dispositivos Android? 
0  Usando um dongle WiFi para monitorar a rede 



© 2021 pergunte.org All Rights Reserved. Casa de perguntas e respostas todos os direitos reservados


Licensed under cc by-sa 3.0 with attribution required.