You tap Settings > General > Software Update, and the spinning wheel just keeps going. The screen says 'Checking for Update' for 5, 10, 15 minutes. Nothing happens. You reboot, try again — same story. This is one of the most common iOS update failures, and it's almost never a problem with Apple's servers. It's a network timeout issue, usually triggered by a flaky Wi-Fi connection, a DNS resolver that's taking too long, or a stuck background process. Let me walk you through the fix.
Root Cause: Why Your iPhone Can't Reach Apple's Update Servers
When your iPhone checks for updates, it sends a request to Apple's software update servers (gs.apple.com and mesu.apple.com). If that request doesn't get a response within a few seconds, the spinner keeps spinning indefinitely. Three things cause this:
- DNS resolution fails or times out — your router's DNS can't translate the server address fast enough, or returns garbage.
- Wi-Fi signal is weak or congested — 2.4 GHz networks with interference, or you're too far from the router.
- Background update process is stuck — a previous interrupted update left a lock file or a daemon in a bad state.
Don't bother with VPN settings, disabling iCloud, or restoring from backup. Those rarely help here. The fix is almost always network-related.
The Fix: Step-by-Step
- Force close Settings and try again. Double-click the Home button (or swipe up on iPhone X and newer) to open the app switcher. Swipe up on Settings to kill it. Wait 10 seconds, then reopen Settings > General > Software Update. If it works now, great. If not, move on.
- Switch to 5 GHz Wi-Fi or use cellular data. Go to Settings > Wi-Fi and tap the (i) icon next to your network. If you see a 2.4 GHz band listed, try connecting to a 5 GHz network instead. If that's not an option, turn off Wi-Fi entirely and use cellular data. Enable Settings > Cellular > Cellular Data and try the update again.
- Change your DNS server. This is the single most effective fix. Go to Settings > Wi-Fi, tap the (i) icon next to your network, scroll down to Configure DNS, set it to Manual, and delete any existing servers. Add
8.8.8.8and8.8.4.4(Google DNS) or1.1.1.1(Cloudflare). Tap Save. Then check for the update again. - Reset Network Settings. This clears all saved Wi-Fi passwords, Bluetooth pairings, and VPN configs, but it also flushes DNS cache and resets network daemons. Go to Settings > General > Transfer or Reset iPhone > Reset > Reset Network Settings.
- Update via iTunes (or Finder on Mac). If the phone still won't check for updates, plug it into a computer. On macOS Catalina or later, open Finder. On macOS Mojave or earlier, or Windows, open iTunes. Select your iPhone, click Check for Update in the Summary tab. This bypasses the phone's network stack entirely and uses your computer's internet connection.
What If It Still Fails?
If you've done all the steps above and the iPhone still hangs on 'Checking for Update', here's what to check:
- Is your iPhone compatible? Some older models (iPhone 6, iPhone 5s) can't update beyond a certain iOS version. Check Apple's compatibility list.
- Is your device storage almost full? If you have less than 2 GB free, iOS can't download the update. Free up space by deleting apps, photos, or offloading large apps in Settings > General > iPhone Storage.
- Are you on a corporate or public Wi-Fi? Networks with captive portals (like hotels, airports, or office networks) often block Apple's update servers. Switch to a personal hotspot or home network.
- Apple's servers are actually down. Extremely rare, but check Apple's System Status page to confirm. If they're down, wait an hour and try again.
I've seen this exact issue on countless iPhones — from iPhone 7s to iPhone 14 Pros. The DNS change alone fixes it about 70% of the time. The other 30%? A network settings reset does the trick. Don't waste time with factory resets or DFU mode unless you've exhausted every step here.
One last thing: if you're running a beta version of iOS, you'll see this more often. Beta software has a shorter certificate validity window, and the check can hang if the certificate expired. If you're on a beta, downgrade to the public release first.