I have strange problem with charging my phone (Xperia S) over USB on my Lenovo X220. I use Kubuntu 13.04 at this time. When I connect my phone to the computer, the charging icon on my phone blinks for just a second and then the phone stops being charged.
But the phone is connected and data can be moved between phone and computer.
Now I finally got a solution to this problem. I use TLP - Linux Advanced Power Management on my X220 to tune battery performance.
The problem is in USB autosuspend is applied to the connected phone and that's why it is not charging.
We will blacklist the phone to NOT use the USB autosuspend feature:
$ lsusb
Bus 001 Device 009: ID 0fce:0169 Sony Ericsson Mobile Communications AB
Now write down te USB ID of your device (0fce:0169 in my case).
Now open the TLP configuration
$ sudo nano /etc/default/tlp
and find the USB_BLACKLIST directive, uncomment it and change it to
USB_BLACKLIST="0fce:0169"
(use your USB ID in the directive)
and save the file.
And now just start TLP again
$ sudo tlp start
Now the phone is charging again.