How To Use ADB: All Commands and Options

Discussion in 'Android Hacks and Help' started by alquimista, Dec 5, 2009.

  1. alquimista
    Offline

    alquimista New Member

    Joined:
    Dec 5, 2009
    Messages:
    31
    Likes Received:
    0
    Trophy Points:
    0
    ADB stands for "Android Debug Bridge". It comes with the android 2.0 sdk and can be run from the windows command prompt or a mac/linux terminal.

    In order to run ADB from your machine, you will need to set up the following in your Droid "Settings".
    Settings -> Application Settings -> Developement
    Then check all of the boxes. Really, you only need the "USB Debugging" box checked, but I checked em all cause I'm cool like that.​

    Once you have ADB and have your Droid set for developement, you can plud your Droid into your machine with the USB cable supplied with the device.

    On a Mac or Linux machine, you will have to "cd" to the "Tools" directory, under where ever you put the the "android-sdk-(mac or linux)" folder.
    EX. On a mac you would do the following:
    Code:
    cd /Users/[I]yourusername[/I]/android-sdk-mac/tools
    (Its prettty much the same on a PC, but there are .bat files to run ADB for you in the "tools" folder)

    Now that you can start adb here is how you can use it. I pulled the following from my terminal:
    Code:
     Android Debug Bridge version 1.0.25
    
     -d                            - directs command to the only connected USB device
                                     returns an error if more than one USB device is present.
     -e                            - directs command to the only running emulator.
                                     returns an error if more than one emulator is running.
     -s <serial number>            - directs command to the USB device or emulator with
                                     the given serial number. Overrides ANDROID_SERIAL
                                     envivornment variable.
     -p <product name or path>     - simple product name like 'sooner', or
                                     a relative/absolute path to a product
                                     out directory like 'out/target/product/sooner'.
                                     If -p is not specified, the ANDROID_PRODUCT_OUT
                                     environment variable is used, which must
                                     be an absolute path.
     devices                       - list all connected devices
     connect <host>:<port>         - connect to a device via TCP/IP 
     disconnect <host>:<port>      - disconnect from a TCP/IP device
    
    device commands:
      adb push <local> <remote>    - copy file/dir to device
      adb pull <remote> <local>    - copy file/dir from device
      adb sync [ <directory> ]     - copy host->device only if changed
                                     (see 'adb help all')
      adb shell                    - run remote shell interactively
      adb shell <command>          - run remote shell command
      adb emu <command>            - run emulator console command
      adb logcat [ <filter-spec> ] - View device log
      adb forward <local> <remote> - forward socket connections
                                     forward specs are one of: 
                                       tcp:<port>
                                       localabstract:<unix domain socket name>
                                       localreserved:<unix domain socket name>
                                       localfilesystem:<unix domain socket name>
                                       dev:<character device name>
                                       jdwp:<process pid> (remote only)
      adb jdwp                     - list PIDs of processes hosting a JDWP transport
      adb install [-l] [-r] <file> - push this package file to the device and install it
                                     ('-l' means forward-lock the app)
                                     ('-r' means reinstall the app, keeping its data)
      adb uninstall [-k] <package> - remove this app package from the device
                                     ('-k' means keep the data and cache directories)
      adb bugreport                - return all information from the device
                                     that should be included in a bug report.
    
      adb help                     - show this help message
      adb version                  - show version num
    
    DATAOPTS:
     (no option)                   - don't touch the data partition
      -w                           - wipe the data partition
      -d                           - flash the data partition
    
    scripting:
      adb wait-for-device          - block until device is online
      adb start-server             - ensure that there is a server running
      adb kill-server              - kill the server if it is running
      adb get-state                - prints: offline | bootloader | device
      adb get-serialno             - prints: <serial-number>
      adb status-window            - continuously print device status for a specified device
      adb remount                  - remounts the /system partition on the device read-write
      adb reboot [bootloader|recovery] - reboots the device, optionally into the bootloader or recovery program
      adb root                     - restarts the adbd daemon with root permissions
      adb usb                      - restarts the adbd daemon listening on USB  
      adb tcpip <port>             - restarts the adbd daemon listening on TCP on the specified port
    
    networking:
      adb ppp <tty> [parameters]   - Run PPP over USB.
     Note: you should not automatically start a PPP connection.
     <tty> refers to the tty for PPP stream. Eg. dev:/dev/omap_csmi_tty1
     [parameters] - Eg. defaultroute debug dump local notty usepeerdns
    
    adb sync notes: adb sync [ <directory> ]
      <localdir> can be interpreted in several ways:
    
      - If <directory> is not specified, both /system and /data partitions will be updated.
    
      - If it is "system" or "data", only the corresponding partition
        is updated.
    
    From the above, you should be able to see that you can send adb commands from your machine to your Droid using the following:
    Code:
    adb -s [yourdeviceserialnumberhere] shell
    The above will start an interactive shell from your machine, but running on your device. So if you "cd" to a directory, it will be on your device. Use "ls" or "ls -l" to see what is in the directory that your are currently in. NOTE: Runing the adb shell directly has gotten me nowhere as far as rooting the device, but its a good place to start learning.

    Now for the fun part!! You can "pull" some data from your device using:
    Code:
    adb -s [yourdeviceserialnumberhere] pull /system /somedirectoryonyourmachine
    This will try and write all the files and folders from the "/system" directory on your Droid, to wherever you decide you want it on you machine.

    I did the "pull" on a mac and I was able to get about 140mb of the data from the following directories on my Droid:
    /dev
    /proc
    /sys
    /system​
    I did it both as an admin and a super user on the mac and I got about the same results. My Droid was in the regular boot mode. I have not tried booting into the restore or safe modes and tried a "pull" ... yet.

    One last thing. I noticed the "adb root" command too, but I get an error back saying that you can not root on a production build of android. Perhaps there is a way to fool adb into thinking you have a developer device/build, maybe by altering the "build.properties" file. I haven't looked into that, nor do I really know if it would work. I'm really not an android developer, but if anyone out there is, maybe they could tell us what lets the adb shell know that a device is a production build, rather than a development build.

    I better get going now. Have fun hacking your Droid!! :icon_ banana:
  2. Corinacakes
    Offline

    Corinacakes DF Super Moderator Theme Developer

    Joined:
    Nov 17, 2009
    Messages:
    5,031
    Likes Received:
    3
    Trophy Points:
    0
    Location:
    Maine
    omg lol if i didn't feel dumb before i sure do now!!!! wowzers!! lol are you rich too?:)
  3. bots
    Offline

    bots New Member

    Joined:
    Nov 26, 2009
    Messages:
    169
    Likes Received:
    0
    Trophy Points:
    0
    Location:
    Austin, Texas
    Good post. People please be CAREFUL while experimenting with these commands. You shouldn't really be able to mux things up too bad without root, but that doesn't mean to just start randomly rm'ing files and such.
  4. Aaron636r
    Offline

    Aaron636r New Member

    Joined:
    Nov 15, 2009
    Messages:
    403
    Likes Received:
    0
    Trophy Points:
    0
    Location:
    So California
    When I run "SDK Setup.exe" dos window appears than closes. Wont stay open. Debugging on the phone is on.

    Any ideas? First time doing this
  5. boristhebladexx
    Offline

    boristhebladexx New Member

    Joined:
    Nov 26, 2009
    Messages:
    116
    Likes Received:
    0
    Trophy Points:
    0
    Location:
    Connecticut

    assuming you're on a windows machine, go to start>run type cmd then hit enter, then following to instructions to cd to the adb directory
  6. boristhebladexx
    Offline

    boristhebladexx New Member

    Joined:
    Nov 26, 2009
    Messages:
    116
    Likes Received:
    0
    Trophy Points:
    0
    Location:
    Connecticut
    so my problem is that now that adb is up in the DOS window, i can't get ride of the C:\ to the far left right by where you would type the commands, so i can't get any of the commands to work, like the one to see if i could send adb commands to my phone. what am i missing here?
  7. Bear in NM
    Offline

    Bear in NM Active Member

    Joined:
    Nov 12, 2009
    Messages:
    1,389
    Likes Received:
    1
    Trophy Points:
    38
    At the c:\> prompt you need to path your way to the subdirectory where the adb is installed. something like;

    cd \sdk-windows\tools where sdk-widows is the name of the subdirectory (folder) where you installed the program, and tools is the subdirectory where the adb commands should reside.

    Craig
  8. boristhebladexx
    Offline

    boristhebladexx New Member

    Joined:
    Nov 26, 2009
    Messages:
    116
    Likes Received:
    0
    Trophy Points:
    0
    Location:
    Connecticut
    well here's my current situation. if it helps you to know, my adb directory is C:\Android\android-sdk-windows\tools\adb. Here's what i put into the msdos window (black is what was there, red is what i typed):

    C:\Documents and Settings\Owner> cd\
    C:\>Android\android-sdk-windows\tools\adb
    Android Debug Bridge version 1.0.25
    (plus crapload of adb stuff here)
    C:\>Android\android-sdk-windows\tools\adb shell
    $ adb -s [my serial number] shell
    adb -s [my serial number] shell
    adb: permission denied
    $

    so how do i get permission allowed? i tried it a couple times, change things up, added or removed the [ ] on either end of the serial number, tried the super user (su) command. nothing!
  9. Bear in NM
    Offline

    Bear in NM Active Member

    Joined:
    Nov 12, 2009
    Messages:
    1,389
    Likes Received:
    1
    Trophy Points:
    38
    Here is what works for me. make sure that you have usb debugging enabled in your settings on the phone, and my phone is unmounted. I have changed my directory structure to match yours.

    at the c:\, type

    cd \Android\android-sdk-windows\tools\

    this should give you

    c:\android\android-sdk-windows\tools>

    at this point I just type: adb shell (no switches)

    This is what I see after: adb shell
    * daemon not running. starting it now*
    * daemon started successfully *
    $

    then I type: su

    this should give you the #

    Then you should be in.

    Not sure if you need to physically be in the tools subdirectory when invoking the shell, or it is the switch, or perhaps the debugging switch on the phone, but the above always works for me. Sorry man, I'm trying.

    Craig
  10. boristhebladexx
    Offline

    boristhebladexx New Member

    Joined:
    Nov 26, 2009
    Messages:
    116
    Likes Received:
    0
    Trophy Points:
    0
    Location:
    Connecticut
    you don't have to apologize, you been a fantastic help actually! i'm alot farther than when i started, thanks to you.

    so i tried this a few times, and the first time i did it, it didn't give me the #, so i tried it again, and now it is displaying it, but that code to see if i can send commands to my phone stopped, and i didn't get anything about the daemon not running then starting up. but the pop up window came up on my phone to confirm superuser access, so i guess that's good. now to try something to confirm this...
  11. Bear in NM
    Offline

    Bear in NM Active Member

    Joined:
    Nov 12, 2009
    Messages:
    1,389
    Likes Received:
    1
    Trophy Points:
    38
    Boris,

    the daemon thing is likley a new thing on my computer likley indicating that sdk/adb is starting the communication with my phone as to the comlink being properly established when I plug in my phone. You may not see this.

    If you are getting the "#" in your command line, then methinks you are off to the pony races. Now whip them ponies, and try not to brick anything.

    Craig
  12. harpua
    Offline

    harpua New Member

    Joined:
    Nov 7, 2009
    Messages:
    69
    Likes Received:
    2
    Trophy Points:
    0
    Location:
    hbg./chocolatetown USA
    hahaha. i got the # in my command line, and my ponies are staying put until i see some more feedback! :reddroid:

    i don't know what i did, but i looked at my phone and it said something like % e yadda yadda < (i know that's all very important, but anyway) mms. stopped. had to force close. so i tried to open messaging and it kept force closing..so for some brilliant reason i chose to reboot the phone. now i'm stuck at the Motorola logo, (stuck in boot loader) any help?
    Last edited: Dec 25, 2009
  13. mammlouk
    Offline

    mammlouk New Member

    Joined:
    Dec 13, 2009
    Messages:
    316
    Likes Received:
    0
    Trophy Points:
    0
    You need to use forward slashes for navigating your directory structure, backslash is the escape character, you use it before spaces or other special character to make sure they are interpreted correctly.
  14. miamidroid
    Offline

    miamidroid New Member

    Joined:
    Dec 29, 2009
    Messages:
    89
    Likes Received:
    0
    Trophy Points:
    0
    ok so im new to mac, and im trying to get this to work on my computer.

    This is the command I type
    /Users/martinllanos/Desktop/android-sdk-mac/tools/adb

    that gives me the screen with all the commands

    but when I type a command it tells me command not recognized for example

    Martin:~ martinllanos$ adb -s [0403699b03011021] shell
    -bash: adb: command not found

    I tried a few comands and none of them work
    any help will be appreciated
  15. Drukan
    Offline

    Drukan Member

    Joined:
    Nov 18, 2009
    Messages:
    70
    Likes Received:
    0
    Trophy Points:
    6
    Location:
    Phx, AZ
    OK so im getting something completely out there.... DEVICE NOT FOUND error.... any help would be appreciated .. thanx...

    EDIT: Ok so i was missing a driver... that solved...

    Now i too am getting the Permission denied line ...
    Last edited: Dec 30, 2009
Search tags for this page
adb command
,

adb commands

,
adb permission denied
,
adb reboot
,
adb reboot bootloader
,

adb reboot recovery

,
adb shell commands
,

how to use adb

,
how to use adb shell
,
using adb