I use
dbus-inspector play around with dbus for a while, can not figure out how to change the code, since there seems no way to check a connection by inspect dbus if the connection is not bring up by NetworkManager. It is also very strange that calibre's fetching works before switch to pon command.
After go through /etc/network/interfaces again, I find it had been modified by NetworkManager for quite a while, so I am *using* NetworkManager all along, although there is no NetworkManager gnome applet running.
After disable the NetworkManager daemon, calibre start fetching news again. So it is either let NetworkManager manage network interface, or disable it completely, otherwise, calibre will have trouble to figure out internet connection status when it look up dbus.