When ADB prints 'waiting for device' and never returns — or times out with 'no device found' — the daemon is healthy but can't see an authorized device to talk to. Here's exactly why it hangs and the fixes that clear it, including the timeout variant and the same error inside flashing tools.
Quick answer
Run adb kill-server, unplug the USB cable, reboot your phone, plug back in, and accept the RSA fingerprint prompt. This clears about 80% of 'waiting for device' hangs in under 60 seconds.
Why ADB hangs on "waiting for device"
Commands like adb wait-for-device, adb install, adb shell, and the flash scripts inside many tools block until ADB sees a device in the device (authorized) state. If no such device shows up, the command waits — indefinitely, or until it prints timeout: no device found. So the daemon isn't broken; it simply has nothing valid to talk to. The job is to get your phone listed as device in adb devices — not empty, not offline, not unauthorized.
Step 1 — Confirm what ADB can actually see
Open a second terminal and run adb devices. The output tells you which fix you need:
Empty list — the PC can't detect the phone at all. It's a cable, port, driver, or USB-debugging problem (steps 3–4, or our device not found guide).
If the device list stays empty, the physical link is the suspect:
Use a data-capable cable — many cables only carry power and will never enumerate the device.
Plug into a rear USB 2.0 port directly on the motherboard; skip front-panel headers and USB hubs.
Pull down the phone's notification shade and set the USB mode to File transfer (MTP) instead of charge-only.
Step 4 — Enable and authorize USB debugging
Confirm USB debugging is on under Settings → Developer options (tap Build number seven times to unlock it). Then unlock the screen and accept the "Allow USB debugging?" prompt — the device only reaches the device state once you approve it. Missing or installing the wrong OEM USB driver on Windows also stops detection; reinstall the Google USB Driver or the manufacturer's driver if the list is still empty.
Step 5 — Rule out multiple devices
If an emulator and a physical phone are both connected, ADB can sit waiting on the one you didn't mean. List them and target one explicitly:
adb devices
adb -s ABC123XYZ install app.apk
"Waiting for ADB device" in Android Utility, TSM Tool and other utilities
Flashing and service tools — Android Utility, TSM Tool, SamFW, and similar — call ADB under the hood, so a "waiting for ADB device… timeout: no device found" message there is the same problem, not a separate bug. Get the phone to the authorized device state with the steps above, make sure the correct USB drivers are installed, and confirm only one up-to-date platform-tools is on your PATH (run where adb) so the tool isn't calling a stale adb.exe.
Frequently asked questions
It means a command — like adb wait-for-device, adb install, or a flash script — is blocking until ADB sees an authorized device, and none has appeared. ADB will sit there indefinitely. The fix is to get the device into the device state: make sure adb devices lists it, not "offline" or "unauthorized".
Because nothing tells it to stop — wait-for-device only returns once a device connects. If it never connects, the cause is a missing driver, a charge-only cable, USB debugging off, or a declined authorization prompt. Fix any of those and the command unblocks instantly.
It's a helper used inside scripts to pause until a device is ready, then continue. On its own it just waits. If you ran it manually and it's stuck, press Ctrl+C, run adb devices to see why the device isn't listed, and resolve that first.
That timeout means the wait gave up. Reseat the cable in a rear USB 2.0 port, switch the phone to File transfer (MTP) mode, enable and authorize USB debugging, and reinstall the OEM/Google USB driver. Then adb kill-server followed by adb devices should list the device.
That tool is likely calling a different ADB binary, or running before authorization completes. Make sure only one up-to-date platform-tools is on your PATH (where adb), and that the device is authorized before the tool launches. A bundled-ADB GUI like Andora sidesteps PATH conflicts entirely.