Synchronisation of contacts and calendar suddenly stopped working While working fine for almost a year now (since I've installed CyanogenMod on my device), a couple of days ago synchronisation stopped all of a sudden: Network indicators turned white (no longer green on Gingerbread / blue on ICS and up), which indicates the device is not "in-sync" with the Google servers.

First I thought it might be some Google Server outage (as all of us know them), I waited a couple of days. But it didn't solve up within a few days, so I decided to take a closer look. logcat then showed: Always when trying to sync, the network connection timed out.

Further side-effects: Google Playstore app did no longer open ("network timeout"), Google Talk insisted on a "username/password failure".

That's where I got stuck: What to do? Reboot didn't help, shutdown/restart didn't help either, nor did clearing cache/data from the contactssync app. I couldn't log off GTalk (which would be the next logical step), as GTalk immediately insisted on that username/password error.

Now what?
Analysis
Luckily, logcat gave the IP address along (in my case: 74.125.93.113). On my PC, I first checked with the browser (&quot;https://74.125.93.113/&quot;) -- and in fact, connection timed out. Next I checked what's behind the IP:
host 74.125.93.113
113.93.125.74.in-addr.arpa domain name pointer qw-in-f113.1e100.net.

Didn't tell me anything. But checking with /etc/hosts on the Android device, I found the entry:
74.125.93.113 android.clients.google.com

A lookup of that host reveiled: The IP 74.125.93.113 no longer belongs to it -- which explains the trouble.
Solution
The solution requires root, unfortunately, as /etc/hosts is owned by root and read-only for everybody else. Furthermore, /etc is just a symbilic link to /system/etc, which means the entire file system is read only.
What you need

root
a terminal emulator app (e.g. Android Terminal Emulator)

What to do
Open the terminal app, and follow these steps:
# make yourself root
su
# SuperUser/SuperSU may require approval at this point. Give it.

# check how /system is mounted:
mount | grep system

#output will look similar to this:
/dev/block/mmcblk1p21 on /system type ext3 (ro,relatime,barrier=1,data=ordered)

#remount /system read-write, using the values obtained:
mount -o rw,remount -t ext3 /dev/block/mmcblk1p21 /system

#edit /etc/hosts
vi /etc/hosts
# put a comment-sign (#) in front of the line containing the bad IP, e.g.
# 74.125.93.113 android.clients.google.com
# save the file

# re-mount /system read-only (or simply reboot, that will do it as well)
mount -o ro,remount -t ext3 /dev/block/mmcblk1p21 /system

Now just wait a short time -- or simply call up Google Play to check. It shouldn't take long for the lights to turn green again.