4

I'm trying to launch Android tethering settings from adb shell. The main purpose of doing so is to enable USB tethering mode by running a shell script. I'm using the following set of commands on my Ubuntu Terminal (12.04):

adb shell
am start -n com.android.settings/.TetherSettings
sleep 7
input tap 162 159
input tap 385 607

This method works fine when the commands are executed one by one, but I'm not able to run them as normal shell script. Please help! Here is the complete script:

#!/bin/sh
adb shell
am start -n com.android.settings/.TetherSettings
sleep 7
input tap 162 159
input tap 385 607

I guess, it can't find the path to adb in my system. I've tried replacing the first line with the actual path to adb tool in SDK directory. That didn't work either. Any work around for this? (Sorry if the question seems silly. I'm really new to bash scripting!)

EDIT: Updated script:-

#!/bin/sh
cd /home/evinish/Documents/Android/adt-bundle-linux-x86_64-20130219/sdk/platform-tools
adb shell "
am start -n com.android.settings/.TetherSettings
sleep 7
input tap 162 159
input tap 385 607
"
Vinit Shandilya
  • 1,643
  • 5
  • 24
  • 44

2 Answers2

14

adb shell opens a shell on your Android device. The subsequent commands are entered in the context of that shell. Add quotes around the remote commands:

adb shell "
am start -n com.android.settings/.TetherSettings
sleep 7
input tap 162 159
input tap 385 607
"
Stephen Niedzielski
  • 2,497
  • 1
  • 28
  • 34
  • I don't understand why, as I've already provided full path to adb. Please refer to EDIT section. – Vinit Shandilya Dec 24 '13 at 19:00
  • You're missing a leading `./` on your ADB command. If adb is not in your path, you have to run it from the install directory. Either `cd /home/evinish/Documents/Android/adt-bundle-linux-x86_64-20130219/sdk/platform-tools && ./adb shell` or `/home/evinish/Documents/Android/adt-bundle-linux-x86_64-20130219/sdk/platform-tools/adb shell`. – Stephen Niedzielski Apr 22 '15 at 22:39
2

Thanks everybody! I finally solved the problem. Here is the updated script:

    #!/bin/sh
    cd /home/evinish/Documents/Android/adt-bundle-linux-x86_64-20130219/sdk/platform-tools
    ./adb start-server
    ./adb devices
    ./adb shell "
    am start -n com.android.settings/.TetherSettings
    sleep 15
    input tap 162 159
    input tap 385 607
    "
    sleep 10

The only problem was missing "./" before adb.

EDIT: also why not check to see if the server is running first?

Jenea Vranceanu
  • 4,530
  • 2
  • 18
  • 34
Vinit Shandilya
  • 1,643
  • 5
  • 24
  • 44