def ready_internet(self):
     self.logger.info("Attempting to connect to the internet.")
     ## open a pppd instance
     OSTools.pppd_launch()
     
     ## wait for pppd to settle
     time.sleep(5)
     
     retrycount = 5
     while retrycount > 0:
         ## to see if ppp is up
         if OSTools.pppd_status():
             ## ppp is up, try ping
             x = self._try_network()
             if x is not None:
                 self.disp.control_led('net', True)
                 self.disp.control_led('neterr', False)
                 self.logger.info("Ping success.")
                 return True
             else:
                 self.disp.control_led('neterr', True)
                 self.disp.control_led('net', False)
             self.logger.info("Sleeping for 10s.")
             time.sleep(10)
         else:
             # ppp is not up
             ## check if process is running
             ppp_pid = OSTools.pppd_pid()
             if ppp_pid == 0:
                 ## ppp has quit
                 raise InternetConnectionError('pppd unexpectedly quit!')
             else:
                 ## wait 10 seconds, and retry
                 time.sleep(10)
         retrycount -= 1
         self.logger.info("Rechecking network, remaining attempts %d." % retrycount)
     OSTools.pppd_terminate(OSTools.pppd_pid())
     return False