Est-il possible d'activer le paramètre Android "USB Tethering" de la ligne de commande? -- settings domaine et adb domaine et shell domaine et command-line domaine et bash domain android en relation problème

Is it possible to activate the “USB Tethering” Android setting from the command line?



24
vote

problème

français

J'aimerais activer "Téléparation USB" à partir d'un script Bash, il y a donc une possibilité d'exécuter une ligne de commande avec adb shell pour modifier certains paramètres Android?

EDIT1 :

La commande suivante ouvre les paramètres nécessaires mais ne changez rien seul:

am start -n com.android.settings/.TetherSettings

J'ai trouvé Tethersettings nom d'action de

aapt dump xmltree com.android.settings.apk AndroidManifest.xml | less +/ether

liée, mais le controver est-ce possible de désactiver la connexion USB de la ligne de commande?

langue Anglaise

I would like to activate "USB tethering" from within a bash script, so is there any possibility to run a command line with adb shell to change some Android settings ?

Edit1:

The following command open the needed settings but don't change anything alone :

am start -n com.android.settings/.TetherSettings 

I've found TetherSettings action name from

aapt dump xmltree com.android.settings.apk AndroidManifest.xml | less +/ether 

Related, but the opposite Is it possible to disable USB tethering from command line?

              
   
   

Liste de réponses

1
 
vote
vote
Meilleure réponse
 

Si votre version Android a 9988777661 Utilitaire inBuilt, exécutez cette commande:

adb shell svc usb setFunctions rndis

Cela permettrait une attache USB. Pour voir quelles sont les autres fonctions USB disponibles, exécutez:

adb shell svc usb
 

If your Android version has svc inbuilt utility, run this command:

adb shell svc usb setFunctions rndis 

This would enable USB tethering. To see what other USB functions are available, run:

adb shell svc usb 
 
 
17
 
vote

Exécution de la commande suivante en tant que root doit permettre à USB Tethering:

  • service call connectivity 32 i32 1 Sandwich à la crème glacée (4.0)
  • service call connectivity 33 i32 1 sur gelée haricot (4.1 à 4.3)
  • service call connectivity 34 i32 1 sur Kitkat (4.4)
  • service call connectivity 30 i32 1 sur lollipop (5.0)
  • service call connectivity 31 i32 1 sur sucette (5.1) selon une réponse par firelord
  • service call connectivity 30 i32 1 sur gushmallow (6.0), non testé
  • svc0 sur Samsung Marshmallow (6.0)
  • svc1 sur Nougat (7.0)
  • svc2 sur Samsung Nougat (7.0)

Le premier numéro que vous voyez dans les commandes est le numéro de méthode 99887776613 dans svc4 (cela dépend de la version Android et n'existe pas sur le pain d'épice).

(Astuce: Pour vérifier ce fichier pour une version Android particulière, sélectionnez la branche appropriée.)

Alors, quelle est cette commande appelle svc5 et passez soit 1 (activer la touche USB) ou 0 (pour le désactiver).

Pour plus d'informations, voir cette question connexe sur le débordement de pile .

Si vous activez l'attachement USB dans le cadre d'une configuration d'appoint inversée USB, svc6 devrait être plus que suffisant pour obtenir la configuration de l'interface configurée.

 

Running the following command as root should enable USB tethering:

  • service call connectivity 32 i32 1 on Ice Cream Sandwich (4.0)
  • service call connectivity 33 i32 1 on Jelly Bean (4.1 to 4.3)
  • service call connectivity 34 i32 1 on KitKat (4.4)
  • service call connectivity 30 i32 1 on Lollipop (5.0)
  • service call connectivity 31 i32 1 on Lollipop (5.1) according to an answer by Firelord
  • service call connectivity 30 i32 1 on Marshmallow (6.0), untested
  • service call connectivity 41 i32 1 on Samsung Marshmallow (6.0)
  • service call connectivity 33 i32 1 on Nougat (7.0)
  • service call connectivity 39 i32 1 on Samsung Nougat (7.0)

The first number you see in the commands is the setUsbTethering() method's number in IConnectivityManager.aidl (this depends on the Android version and doesn't exist on Gingerbread).

(Tip: to check this file for a particular Android version, select the appropriate branch.)

So what this command does is call setUsbTethering() and pass either 1 (enable USB tethering) or 0 (to disable it).

For more information, see this related question on Stack Overflow.


If you're enabling USB tethering as part of a USB reverse tethering setup, setprop sys.usb.config rndis,adb should be more than enough to get the rndis0 interface set up.

 
 
         
         
7
 
vote

Il y a une méthode assez mauvaise utilisation en utilisant svc8 , obtenez les coordonnées pour activer l'attache et substituer

svc9

ou naviguer pour activer la radio en utilisant adb shell svc usb setFunctions rndis 0 . Il suffit de regarder,

adb shell svc usb setFunctions rndis 1

Encore une fois cette confine à un dispositif particulier.

 

There is a pretty bad method using adb shell input tap, Get the coordinates for enable tethering and substitute

adb shell input tap <x> <y> 

Or navigate to enable radio using adb shell input keyevent. Just have a look at,

adb shell input  

Again this confines to a particular device.

 
 
       
       
6
 
vote

Essayez la commande 99887776622 ci-dessous:

adb shell svc usb setFunctions rndis 3
 

Try the setprop command below:

setprop sys.usb.config rndis,adb 
 
 
 
 
2
 
vote

modifié pour utiliser la commande Timeout Windows au lieu de votre écran de veille, réveil d'abord et appuyer une seule fois. Deux fois sur la touche wifi activée sur mon téléphone.

adb shell svc usb setFunctions rndis 4
 

Modified to use windows timeout command instead of sleep, wake screen first, and only press down once. Twice down enabled wifi tethering on my phone.

adb shell input keyevent KEYCODE_WAKEUP && adb shell am start -n com.android.settings/.TetherSettings && adb shell input keyevent KEYCODE_DPAD_DOWN && adb shell input keyevent KEYCODE_ENTER && timeout 2 && adb shell input keyevent KEYCODE_BACK 
 
 
1
 
vote

La méthode service ne fonctionnait pas pour moi sur mon appareil Samsung. Je pensais comment le faire en configurant l'interface réseau directement, cependant. Voici un script qui configure une machine Linux et un dispositif Android enraciné par une USB pour attacher USB. Cela ne configure pas le DNS ou la masquage de NAT, mais suffit à rendre l'appareil accessible à 192.168.42.129:

#!/bin/bash set -euo pipefail # Set up USB tethering for an Android device. # Usage: adb-usb-tether [USB-VENDOR USB-PRODUCT] # If USB vendor/product is unspecified, use first USB network interface. # On the Android side, tethering is enabled via adb shell. if [[ $# -eq 2 ]] then any=false vendor=$1 product=$2 else any=true fi function find_if() { local path if for path in /sys/class/net/* do if=$(basename "$path") if [[ "$(readlink "$path")" == */usb* ]] then local ifproduct ifvendor ifproduct=$(cat "$(realpath "$path")/../../../idProduct") ifvendor=$(cat "$(realpath "$path")/../../../idVendor") if $any || [[ "$ifproduct" == "$product" && "$ifvendor" == "$vendor" ]] then echo "Found interface: $if" 1>&2 echo "$if" return fi fi done } function adb_shell() { adb shell "$(printf " %q" "$@")" } function adb_su() { local quoted quoted="$(printf " %q" "$@")" adb shell su -c "$(printf %q "$quoted")" } if=$(find_if) if [[ -z "$if" ]] then echo "Requesting interface:" 1>&2 adb_su setprop sys.usb.config rndis,adb echo " >> OK" 1>&2 fi while [[ -z "$if" ]] do echo "Waiting for network device..." 1>&2 sleep 1 if=$(find_if) done while ! ( ip link | grep -qF "$if" ) do echo "Waiting for interface..." 1>&2 sleep 1 done function configure_net() { local name="$1" local if="$2" local ip="$3" local table="$4" local cmdq="$5" # Query command local cmdx="$6" # Configuration command if ! ( "$cmdq" ip addr show dev "$if" | grep -qF 192.168.42."$ip" ) then echo "Configuring $name interface address:" 1>&2 "$cmdx" ip addr add 192.168.42."$ip"/24 dev "$if" echo " >> OK" 1>&2 fi if ( "$cmdq" ip addr show dev "$if" | grep -qF 'state DOWN' ) then echo "Bringing $name interface up:" 1>&2 "$cmdx" ip link set dev "$if" up sleep 1 echo " >> OK" 1>&2 fi if ! ( "$cmdq" ip route show table "$table" | grep -qF "192.168.42.0/24 dev $if" ) then echo "Configuring $name route:" 1>&2 "$cmdx" ip route add table "$table" 192.168.42.0/24 dev "$if" echo " >> OK" 1>&2 fi } configure_net local "$if" 128 main command sudo configure_net device rndis0 129 local adb_shell adb_su

Pour activer le transfert (c.-à-d. Connectez-vous à Internet à partir du PC via le périphérique Android), voir ma question et réponses ici .

 

The service method did not work for me on my Samsung device. I figured out how to do it by configuring the network interface directly, though. Here is a script that sets up a Linux machine and a USB-connected rooted Android device for USB tethering. This does not set up DNS or NAT masquerading, but is sufficient to make the device accessible at 192.168.42.129:

#!/bin/bash set -euo pipefail  # Set up USB tethering for an Android device. # Usage: adb-usb-tether [USB-VENDOR USB-PRODUCT] # If USB vendor/product is unspecified, use first USB network interface. # On the Android side, tethering is enabled via adb shell.  if [[ $# -eq 2 ]] then     any=false     vendor=$1     product=$2 else     any=true fi  function find_if() {     local path if     for path in /sys/class/net/*     do         if=$(basename "$path")         if [[ "$(readlink "$path")" == */usb* ]]         then             local ifproduct ifvendor             ifproduct=$(cat "$(realpath "$path")/../../../idProduct")             ifvendor=$(cat "$(realpath "$path")/../../../idVendor")             if $any || [[ "$ifproduct" == "$product" && "$ifvendor" == "$vendor" ]]             then                 echo "Found interface: $if" 1>&2                 echo "$if"                 return             fi         fi     done }  function adb_shell() {     adb shell "$(printf " %q" "$@")" }  function adb_su() {     local quoted     quoted="$(printf " %q" "$@")"     adb shell su -c "$(printf %q "$quoted")" }  if=$(find_if) if [[ -z "$if" ]] then     echo "Requesting interface:" 1>&2     adb_su setprop sys.usb.config rndis,adb     echo " >> OK" 1>&2 fi  while [[ -z "$if" ]] do     echo "Waiting for network device..." 1>&2     sleep 1     if=$(find_if) done  while ! ( ip link | grep -qF "$if" ) do     echo "Waiting for interface..." 1>&2     sleep 1 done  function configure_net() {     local name="$1"     local if="$2"     local ip="$3"     local table="$4"     local cmdq="$5" # Query command     local cmdx="$6" # Configuration command      if ! ( "$cmdq" ip addr show dev "$if" | grep -qF 192.168.42."$ip" )     then         echo "Configuring $name interface address:" 1>&2         "$cmdx" ip addr add 192.168.42."$ip"/24 dev "$if"         echo " >> OK" 1>&2     fi      if ( "$cmdq" ip addr show dev "$if" | grep -qF 'state DOWN' )     then         echo "Bringing $name interface up:" 1>&2         "$cmdx" ip link set dev "$if" up         sleep 1         echo " >> OK" 1>&2     fi      if ! ( "$cmdq" ip route show table "$table" | grep -qF "192.168.42.0/24 dev $if" )     then         echo "Configuring $name route:" 1>&2         "$cmdx" ip route add table "$table" 192.168.42.0/24 dev "$if"         echo " >> OK" 1>&2     fi }  configure_net local  "$if"   128 main  command   sudo configure_net device rndis0  129 local adb_shell adb_su 

To enable forwarding (i.e. connect to the Internet from the PC via the Android device), see my question and answer here.

 
 
1
 
vote

Ceci est Indépendante du périphérique (Talgles Tethering USB)

adb shell am start -n com.android.settings/.TetherSettings && adb shell input keyevent 20 && adb shell input keyevent 20 && adb shell input keyevent KEYCODE_ENTER && sleep 2 && adb shell input keyevent 4
 

this is device independent (toggles USB tethering)

adb shell am start -n com.android.settings/.TetherSettings && adb shell input keyevent 20 && adb shell input keyevent 20 && adb shell input keyevent KEYCODE_ENTER && sleep 2 && adb shell input keyevent 4 
 
 

Questions connexes

0  Addon.d Bash Script pour supprimer des APKS après la nuit de reflash sur Android 5.1 cm12.1 ne fonctionne pas  ( Addon d bash script for removing apks after nightly reflash on android 5 1 cm12 ) 
J'essaie d'avoir un script Bash dans /system/addon.d/ qui supprime les puits indésirables d'une installation d'une installation nocturne Android 5.1 (CM12.1) ...

5  Bash - Comment puis-je vérifier si un ordinateur existe sur mon réseau sans IP (c'est-à-dire par nom de périphérique uniquement)?  ( Bash how can i check if a computer exists on my network without ip i e by de ) 
J'aimerais que mon téléphone exécute certains scripts shell via un groupe de travail si mon téléphone est sur le même réseau WiFi que mon ordinateur portable....

8  Exécution d'applications à partir d'un émulateur de terminal [fermé]  ( Running applications from a terminal emulator ) 
fermé. Cette question est off-sujet . Il n'accepte pas actuellement les réponses. Voulez...

11  Comment définir Bash comme coquille par défaut?  ( How to set bash as default shell ) 
Lorsque je adbis dans un appareil avec CyanogenMod, je suis présenté avec une jolie coquille Bash, une invite de couleur et Bashrc. Je ne vois pas un symbole ...

1  Bash-shell sur tablette Android (Pad de transformateur TF701T)  ( Bash shell on android tablet transformer pad tf701t ) 
Y a-t-il un moyen d'obtenir une coque Bash entièrement fonctionnelle sur Android avec un émulateur de terminal, qui prend en charge un clavier matériel (mise ...

1  Comment modifier l'invite de Shell Bash en cyanogenmod?  ( How to modify bash shell prompt in cyanogenmod ) 
Quelqu'un a-t-il eu un succès en modifiant l'invite de Shell en Cyanogenmod? Actuellement, # est assez inutile, il serait beaucoup plus agréable d'afficher au...

4  Est-il possible de démarrer une session FTP via Bash?  ( Is it possible to start an ftp session via bash ) 
est-il possible de démarrer une session avec un smartphone Android Samsung Galaxy via une coquille Bash pour accéder à des fichiers à distance? ...

1  Terminal Bash sur les comprimés  ( Bash terminal on tablets ) 
J'aimerais acheter une tablette et l'utiliser comme un netbook pour travailler à l'aide d'un quai de clavier (j'aime toujours les options tactiles et stylet s...

0  Changer de fichier (images, vidéos) horodatage du nom de fichier  ( Change file pictures videos timestamp from filename ) 
Lorsque vous déplacez des fichiers autour de Tru différents DirS et sur PC / Smartphone, l'horodatage pour la dernière date modifiée est généralement réinitia...

24  Est-il possible d'activer le paramètre Android "USB Tethering" de la ligne de commande?  ( Is it possible to activate the usb tethering android setting from the command ) 
J'aimerais activer "Téléparation USB" à partir d'un script Bash, il y a donc une possibilité d'exécuter une ligne de commande avec adb shell pour modifier c...




© 2022 www.demandez.top All Rights Reserved. Questions et réponses Accueil Tous les droits sont réservés