During Android app development or platform debugging, you may encounter unresponsive device listings (adb devices returning nothing), frozen file transfers, or error messages like adb server version (39) doesn't match this client (41); killing....

The most effective fix for these connection glitches is restarting the Android Debug Bridge (ADB) host daemon using adb kill-server. In this article, we explain how ADB's client-server architecture operates, why connection state breaks, and how to resolve port conflicts.

Quick Command Sequence

To cleanly restart the ADB background daemon process, run:

Terminal Commandsbash
# Terminate the running ADB server background process
adb kill-server
 
# Restart the ADB server background process
adb start-server
 
# Single-line reset and device listing verification
adb kill-server && adb start-server && adb devices

Understanding ADB Architecture (Client vs Server vs Daemon)

Android Debug Bridge is not a single binary command; it consists of three distinct architectural components working together:

  • ADB Client: The CLI binary (adb) executed in your terminal or invoked by IDEs (Android Studio, VS Code). Every time you run an adb command, a new client process starts, sends a request to the server, and exits.

  • ADB Server: A background process running on your host computer (laptop/PC). It listens on TCP port 5037 for client requests and manages communication channels to all connected target devices.

  • ADB Daemon (`adbd`): A background process running on the target Android device or emulator image. It executes commands sent by the host server.

When Should You Run adb kill-server?

  • Unresponsive Devices: adb devices shows connected hardware as offline or unauthorized.

  • ADB Version Mismatches: Android Studio and a system terminal session invoke different platform-tools versions, causing the ADB server to repeatedly crash and restart.

  • Stuck Port 5037 Sockets: Another application or an orphaned ADB process has locked port 5037 on 127.0.0.1.

Troubleshooting Stubborn ADB Processes and Port Conflicts

If adb kill-server hangs or fails to terminate the server daemon due to a frozen socket, manually locate and kill the process listening on port 5037:

Terminal Commands (Linux / macOS)bash
# Find process ID (PID) locking port 5037
lsof -i :5037
 
# Force kill all adb processes
pkill -9 adb
 
# Restart ADB in verbose nodaemon mode for debugging
adb nodaemon server
Terminal Commands (Windows CMD / PowerShell)cmd
:: Find process ID locking port 5037 in Windows
netstat -ano | findstr :5037
 
:: Force terminate adb process by name
taskkill /F /IM adb.exe