How to setup and use ADB (Android Debug Bridge)

August 21, 2011
18 13 4 5

    The Android Debug Bridge (ADB) is a versatile command line tool that lets you communicate with and control an Android-powered device over a USB link from a computer. It comes along with other useful tools and code bundled with the Android Software Development Kit (SDK).

    The ADB program includes three components:

    • A client, which runs on your development machine. You can invoke a client from a shell by issuing an adb command. Other Android tools such as the ADT plugin and DDMS also create adb clients.
    • A server, which runs as a background process on your development machine. The server manages communication between the client and the adb daemon running on an emulator or device.
    • A daemon, which runs as a background process on each emulator or device instance.

    Setting Up ADB

    On Windows and Linux

    If you installed the Android SDK, the Android Debug Bridge will already be installed along with it. Otherwise, follow our guide on installing the Android SDK.

    On Mac

    If you have already downloaded the Android SDK, launch the SDK Manager by typing into a Terminal window:


    where <sdk> is the path to the tools directory. For example, if the Android SDK is located on the desktop, then you have to type into the terminal window:


    As soon as the SDK Manager is launched, click “Available packages”, then “Android Repository.” When the list of available packages pops up, choose the offered revision of “Android SDK Platform-tools”. Click “Install Selected.” If it is installed, the adb executable binary will be located in the platform-tools subdirectory.

    If you don’t have the Android SDK installed yet, download its latest version and unzip it into an appropriate destination folder then follow the instructions above.

    Testing If ADB Works

    We want to make sure that ADB is now working. First, see to it that your Android device is set up for debugging. On your Android device running Gingerbread, go to the Settings > Applications > Development screen and make sure “USB Debugging” is checked. If you’re already on Ice Cream Sandwich, go to Settings > Developer options and tick “Android debugging” or “USB debugging.”

    Connect your computer and Android device with a USB cable. Then, open a terminal on your computer and run the following command:

    adb devices

    You should see something like this:

    List of devices attached

    A result like that (where the X’s represent your device’s actual serial number) confirms that your ADB is set up and working.

    Learning the Codes

    Now that ADB is already set up on your machine, you might want to know how to use its various flags and command options.


    directs command to the only connected USB device; returns an error if more than one USB device is present.
    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 environment 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.
    list all connected devices
    connect <host>:<port>
    connect to a device via TCP/IP
    disconnect <host>:<port>
    disconnect from a TCP/IP device


    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] [-s] <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
    • -s means install on SD card instead of internal storage
    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

    Data Options


    (no option)
    don’t touch the data partition
    wipe the data partition
    flash the data partition


    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 reboot-bootloader
    reboots the device into the bootloader
    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


    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 [ <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.

    Once you already have ADB set up and functioning on your computer, you can start using it for a lot of important Android-related tasks, such as creating Android apps, debugging Android apps, and rooting your Android phone. Check out our how-to guides for rooting your Android phones.


    • 1


    • kanama

      what is wrong when devices list is empty and i can’t go settings because my screen is f**ked?

      • V3nomZtriker

        You have not enabled the developer settings on the phone

    • time wasted

      Title says ”
      How to setup and use ADB”

      should say how to download and unzip, does nothing else.

    • Jacob Lane

      There is no need to setup adb now with my new tool that comes as a zip with adb and fastboot included:) its on xda as adbclient if you search through the forums