- ADB and Fastboot allow debugging, installing apps and flash from PC with USB or Wi‑Fi connection.
- Install the official Platform‑Tools and, on Windows, the drivers OEM; add adb to PATH.
- Commandos key: devices, shell, push/pull, install/uninstall, reboot and fastboot flash.
- Advanced features: wireless debugging, port forwarding, am/pm, screencap/record, and Burst Mode.

If you work with Android On a slightly more technical level, sooner or later you will come across ADB (Android Debug Bridge) and FastbootThese tools allow you to communicate with your phone to debug, install apps, flash partitions, uninstall bloatware and much more without the need for rootIn this guide you will learn how to Install, configure, and use ADB on Windows, Linux and macOS step by step, including advanced features such as Wi-Fi debugging, port forwarding, screen captures and recordings.
Let's explain it clearly and without beating around the bush: ADB is a client-server with three parts. On one hand, the client on your computer that sends commands; on the other, an intermediate server that manages connections; and finally, the adbd daemon that runs on the Android device. In addition, we will review Fastboot for bootloader and flashing tasks. All with real commands, useful shortcuts, and Tricks so that you feel comfortable from the first minute.
What is ADB and what is it for?

ADB, or Android Debug Bridge, is a command line tool that connects your computer to an Android device via USB or TCP/IP. It is used to install and debug apps, run a Unix shell, transfer files, manage packages, take screenshots, record screens, and automate workflows.
Its architecture is of type client-server: You invoke the client with the adb command; the server listens on port 5037 and orchestrates connections; and on the phone, adbd runs as a background process. The server also detects emulators on odd ports in the range 5555‑5585 and associates each instance with a serial number (for example, emulator-5554).
Beyond USB debugging, ADB supports wireless debugging on Android 11+ by pairing by QR or code, and in previous versions you can use the classic scheme of adbtcpip 5555 after an initial cable connection.
Preparations: Developer options and USB debugging
Before issuing commands, enable the Developer options On your phone: Settings > About phone > tap Build number 7-10 times. Then go to Developer options and turn on USB debugging. When connecting the mobile to the PC, accept the RSA key notice to authorize debugging from that computer.
For a first check, connect the device with a data cable and run adb devices. If everything is OK, you will see the serial with the status device; if it appears an on-screen notification, tap “Allow” and list devices again.
Installing ADB and Fastboot on Windows
On Windows the most practical thing is to download the official package Android SDK Platform‑Tools (includes adb and fastboot). Unzip the ZIP to a simple path (e.g. C:\Android\platform-tools) and remember that in Windows needs the manufacturer's drivers for the device to recognize the phone: you can get them from Android Developers or OEMs like OnePlus, Xiaomi, etc.
To open a console in the tools folder, go to that path and use Shift + right click > “Open window of PowerShell here” (or CMD). From there, test adb devices with the phone connected and debugging enabled.
If you want to run adb from any folder, add platform-tools to the PATH: Control Panel > System > Advanced Settings > Environment Variables > edit “Path” and add the path to platform-tools. This allows you to type adb in any terminal without navigating to the folder.
Once you have installed the Platform‑Tools, you also have FastbootIf your workflow includes unlocking the bootloader or flashing partitions, you'll be ready to go without any additional installations.
Installing ADB and Fastboot on macOS
On macOS it also downloads Android SDK Platform‑Tools, unzip the ZIP and create, if you want, an “Android” folder in your User to keep it organized, or you can also Install ADB with Homebrew. On macOS you don't need additional drivers for mobile, which greatly simplifies the process.
Open Terminal, navigate to the path where you unzipped the tools (for example, cd ~/Desktop/Android/platform-tools) and executes ./adb devices. If you prefer, add platform-tools to the PATH in your shell (bash/zsh) to invoke adb from any directory.
Installing ADB and Fastboot on Linux
In Linux you can choose install from repositories or by downloading Google Platform Tools. Most distributions don't require smartphone drivers, so it's plug and play.
Debian/Ubuntu/Linux Mint based distributions: install with sudo apt install android-tools-adb android-tools-fastboot. On classic Debian, it also works sudo apt-get install with the same packages.
Fedora and derivatives: install with sudo dnf install android-tools. In openSUSE, the equivalent is usually sudo zypper install adb or the android‑tools metapackage.
Arch Linux: usa sudo pacman -S android-tools. In other families, there are also packages: sudo emerge -a dev-util/android-tools in Gentoo or sudo apk add adb in Alpine.
If you prefer the latest official version, download the Platform‑Tools ZIP, unzip it and run ./adb version to check the version; you can leave the folder wherever you want and add it to the PATH from the shell in ~/.bashrc or ~/.zshrc.
Getting Started with ADB: Basic Checks and Uses
Connect the mobile via USB, enable debugging and run adb devices to list equipment. Add -l to view details such as product, model, and transport_id, useful when working with multiple devices or emulators at once.
Main everyday ADB commands: adb shell to open a shell on the device; adb push file path to send files to the phone; adb pull route to bring them to the computer; adb install file.apk y adb uninstall package to install and uninstall apps.
Quick status management: adb reboot restart Android; adb reboot-bootloader puts into fastboot mode; adb reboot recovery boot into recovery. If anything hangs, reboot the server with adb kill-server and repeat.
When you have more than one device connected, specify destination with adb -s SERIAL command, or use -e to send to the only emulator or -d for the single physical device. You can also define the variable ANDROID_SERIAL in your environment.
Fastboot: Installation and Key Commands
Fastboot comes included in the Platform Tools from Google. On Linux it is also in the android‑tools repos. It is the tool to interact with the bootloader and flash partitions.
Essential Commands: fastboot devices to verify connection in bootloader mode; fastboot oem unlock (o FastBoot Flashing Unlock on many models) to unlock the charger Boot —this may delete all your data, make a backup and consult How to format a phone from a PC—.
Usual Flashing: fastboot flash recovery recovery.img to install a custom recovery; fastboot flash boot boot.img for kernel/ramdisk; fastboot flash system system.img for the system; and fastboot flashall to flash all .img files present in the tools folder.
Remove bloatware without root with ADB
ADB allows you to uninstall apps from the current user without root access, ideal for remove bloatwareThe typical flow is to locate the package name and uninstall for user 0.
Procedure: open shell with adb shell, then list packages with pm list packages | grep "word" To find the package name. Finally, run pm uninstall -k –user 0 package.nameFor example, for Google Maps: pm uninstall -k –user 0 com.google.android.apps.maps.
Installing and managing apps, files, and ports
Install APK: launch adb install path/to.apk; for test APKs add -tIf your app is distributed in several APKs (splits), use adb install-multiple providing all the files.
Copy content: adb push local remote upload files or folders to the phone; adb pull remote local does the opposite. A quick example would be adb push myfile.txt /sdcard/myfile.txt to place it in the storage procedure.
Port Forwarding: With adb forward You forward traffic from the host to the device. For example, adb forward tcp: tcp 6100: 7100 or to an internal endpoint such as adb forward tcp:6100 local:logd to dump data to the system registry.
Device Selection: If there are multiple devices available, ADB will prompt you to specify destination. Use -s with the serial number as it appears in adb devices -l.
Wireless debugging (Android 11+) and TCP/IP connection
With Android 11 and later you can use Wi‑Fi debugging Wireless. Requirements: Device and computer on the same network, updated Platform‑Tools, and, if using an IDE, the latest version of Android Studio.
Paired from Android Studio: Enable Wireless Debugging on the phone, open “Pair Devices Using Wi‑Fi” in the IDE and choose QR or pairing codeAfter pairing, the device will appear ready for deployment and debugging.
Paired by command line: Enable Wireless Debugging on mobile, find out the IP:port and the linking code, go to platform-tools on your computer and run adb pair ip:port, enter the code and then, adb connect ip:port if required.
Android 10 and earlier: Connect via USB, run adbtcpip 5555, disconnect the cable, locate the phone's IP and use adb connect IP:5555. Check with adb devices that the state is device.
Troubleshooting: Some corporate networks block p2p, in which case use a cable or a different network. If the device stops being seen when you switch Wi-Fi, pair again. If your network doesn't support mDNS, connect with adb connect ip:port manually.
Shell, Activity Manager (am) and Package Manager (pm)
The command adb shell puts you into a command line environment of the device; see the shell command for Android If you need a reference. Android Platform‑Tools 23+ handles arguments as in ssh, so if you send metacharacters or quotation marks, remember that you may need double quotes to get them to the remote shell correctly.
Activity Manager (am): allows start activities, send broadcasts, force stops, profile, modify screen density and size, etc. Typical examples: adb shell am start -a android.intent.action.VIEW or adjust screen with am display-size 1280×800 y am display-density 480.
When launching am start You can use options like -D (debug), -W (wait for startup), –start-profiler, -S (force stop before opening), –user to choose user, and build intent with -a action, -d data, -t mime, -n component and extras (for example, -e key value o –ez for booleans).
Package Manager (pm): List and manage packages. Common commands: pm list packages with filters (-f, -d, -e, -s, -3, –user), pm path package To see the path to the APK, pm clear package to erase data, pm enable/disable to activate/deactivate components and pm grant/revoke for runtime permissions.
Policy Management (DPM), Screenshots, and Screen Recording
For business testing, dpm allows you to activate profile/device administrators and owners: adb shell dpm set-active-admin component o set-device-owner. You can also force logs network and security on Android 9+ with force-network-logs y force-security-logs.
Screenshot: with adb shell screencap /sdcard/screen.png you take the image and then bring it with adb pull /sdcard/screen.pngIt's fast and doesn't require third-party apps.
Screen Recording: Use adb shell screenrecord /sdcard/demo.mp4. Useful options: –size widthXheight, –bit-rate in bps (e.g. 6000000 for ~6 Mbps), –time-limit in seconds, –rotate y -verbose. Remember that it doesn't capture audio and the default maximum is 3 minutes.
If you need a clean environment for testing, enable adb shell cmd testharness enable: The device is reset while retaining the RSA key for debugging, disables the screen lock and startup wizards, and adjusts options to facilitate automation.
Advanced queries, SQLite, USB/mDNS backends, and Burst Mode
To inspect databases On emulators or systems with root access, you can use sqlite3 from the shell: commands like .schema o .dump They help you review table structures and content.
USB Backends: The server can use the native OS backend or libus b. Some features (attach/detach, USB speed) are only in libusb. Control the backend with ADB_LIBUSB=1/0; as of ADB 34, libusb is default except on Windows, where the native backend remains.
mDNS Backends: ADB discovers devices using Hello or Openscreen. On macOS, the Apple daemon is always active; on Windows/Linux, you may need mdnsd. You can toggle it with ADB_MDNS_OPENSCREEN=1/0 if you need to get rid of the daemon.
Burst Mode (ADB ≥ 36.0.0): Experimental mode that greatly improves the transfer performance and reduces latency during debugging. Activate it with ADB_DELAYED_ACK=1 or from Android Studio in the debugger settings.
Practical tips and typical scenarios
Si adb devices does not show your emulator under certain conditions (for example, if you started the emulator with specific ports and the server was not up), start the server first with adb start-server or let the emulator choose ports automatically.
When automating, remember that you can chain scripts with adb for test flows, and that adb –help lists all available options in case you need a quick review from the terminal.
In Windows, when something doesn't fit, it's almost always fixed with correct OEM drivers, change USB ports, a quality data cable or reboot the server with adb kill-serverOn Linux/macOS, check permissions and udev if the device is not detected by the system.
For convenience, add platform-tools to the PATH on your system: on Windows via Environment Variables; on Linux/macOS by exporting the path to your .bashrc or .zshrc. This will save you from having to navigate to the tools folder every time.
Mastering ADB and Fastboot opens the door to fine-grained control over Android: from installing and debugging apps to flashing partitions, automate tasks, work over Wi-Fi, or capture your screen without third-party apps. With updated Platform Tools, the right drivers, and key AM/PM commands in place, you'll be ready to tackle both everyday tasks and advanced scenarios with ease.
Passionate writer about the world of bytes and technology in general. I love sharing my knowledge through writing, and that's what I'll do on this blog, show you all the most interesting things about gadgets, software, hardware, tech trends, and more. My goal is to help you navigate the digital world in a simple and entertaining way.