You tap 'Check for updates' expecting a quick download. Instead, your phone spins on 'Checking for updates' for twenty minutes. I've seen this on Pixels, Samsungs, and cheap Motorola phones. The good news: it's almost never a hardware problem. It's almost always one of three things.
1. Network connection is flaky or behind a captive portal
This is the cause 80% of the time. The update check needs a clean, unrestricted HTTPS connection to Google's OTA servers (or your carrier's). If your Wi-Fi is behind a hotel captive portal, a VPN is misrouting traffic, or your DNS is blocking a Google endpoint, the check just hangs.
I had a client last month whose entire office Wi-Fi was behind a Palo Alto firewall that blocked android.clients.google.com. Every Android phone in the building spun forever on 'Checking for updates'. The fix wasn't on the phone at all.
Fix:
- Turn off Wi-Fi. Switch to mobile data. Try the update check again.
- If that works, your Wi-Fi is the problem. Disconnect any VPN.
- Change your DNS to
8.8.8.8(Google) or1.1.1.1(Cloudflare). On most phones: Settings → Network & internet → Private DNS → enterdns.google. - Reboot your router if you control it. Yes, really. I've watched a router reboot fix a stuck update three separate times this year.
Don't waste time toggling airplane mode five times. One clean switch to mobile data tells you instantly if it's a network issue.
2. Google Services Framework cache is corrupted
Google Services Framework (GSF) handles the handshake with Google's update servers. If its cache gets stale — usually after a botched prior update or a restore from backup — the 'Checking for updates' call never completes. You'll see the spinner, then nothing. No error, no timeout, just silence.
Fix:
- Settings → Apps → See all apps
- Tap the three-dot menu → Show system apps
- Find Google Services Framework
- Tap Storage & cache → Clear cache
- Do NOT tap 'Clear storage' unless you want to re-add your Google account
- Reboot the phone
- Try the update check again
If clearing the GSF cache doesn't help, clear the cache on Google Play Services the same way. That one you can clear storage on without losing your account, but you'll need to re-grant a few permissions.
If that fails, boot into recovery and wipe the cache partition:
1. Power off completely
2. Hold Power + Volume Down (most phones) until the boot menu appears
3. Use volume keys to select 'Recovery mode', press Power
4. When the Android robot appears, hold Power and tap Volume Up once
5. Select 'Wipe cache partition'
6. Select 'Reboot system now'
On Pixel 6 and newer, the recovery menu wording is slightly different — look for 'Wipe cache' under the recovery options. On Samsung One UI 5+, the option is still there but the menu uses touch instead of volume keys on some models.
3. The update server is actually down, or your build is too old
Less common, but real. Google's OTA infrastructure has had regional outages. When it happens, every Android phone in that region hangs on 'Checking for updates'. You can't fix that from your end — you just wait.
The other scenario: your phone is so far behind on updates that the current OTA package won't apply. This hits people who bought a used phone that sat in a drawer for two years. I've seen a Pixel 3 stuck on Android 10 refuse to jump straight to Android 12 — it needed the intermediate Android 11 update first, which Google had already pulled from the OTA server.
How to check:
- Visit Google Cloud Status Dashboard — look for Android or Play services incidents.
- Check your current build: Settings → About phone → Android version → Build number.
- Search your exact model + build number + 'OTA download' on XDA forums. If others are stuck too, it's the server.
The real fix when your build is too far behind: sideload the factory image or OTA zip via ADB. On a Pixel this is a 15-minute job:
adb reboot recovery
# select 'Apply update from ADB'
adb sideload ota_update.zip
On Samsung, you're stuck with Odin and a full firmware flash, which wipes the phone. Back up first. Always.
Quick reference: which fix to try first
| Symptom | Likely cause | First fix | Time |
|---|---|---|---|
| Spinner hangs, then nothing | Flaky Wi-Fi or VPN | Switch to mobile data | 1 min |
| Spinner hangs on clean network too | GSF cache corrupted | Clear Google Services Framework cache | 3 min |
| Every phone in your house is stuck | Router or ISP DNS | Change DNS to 8.8.8.8 | 2 min |
| Cache clear didn't help | Deeper system cache | Recovery → Wipe cache partition | 5 min |
| Others online report same issue | Google OTA server outage | Wait, or sideload OTA | 15 min+ |
| Phone 2+ major versions behind | Missing intermediate OTA | ADB sideload or factory flash | 30 min |
One thing I'll say from experience: don't factory reset as your first move. I've watched people wipe a perfectly good phone over a stuck update that a DNS change would've fixed in 30 seconds. Work through the list above in order. Network first, cache second, server last. That order solves it nearly every time.