--- src/applet-device-gsm.c.orig	2012-07-13 14:32:29.000000000 +0000
+++ src/applet-device-gsm.c	2012-07-20 06:01:48.000000000 +0000
@@ -963,6 +1068,32 @@
 	}
 }
 
+
+
+static gboolean
+any_auto_connections (NMDevice *device, GsmDeviceInfo *info)
+{
+	GSList *connections, *all, *iter;
+	all = applet_get_all_connections (info->applet);
+	connections = nm_device_filter_connections (device, all);
+	g_slist_free (all);
+        
+        if (g_slist_length (connections)) {
+                for (iter = connections; iter; iter = g_slist_next (iter)) {
+                        NMConnection *connection = NM_CONNECTION (iter->data);
+                        NMSettingConnection *setting = nm_connection_get_setting_connection (connection) ;
+                        if (nm_setting_connection_get_autoconnect (setting)) {
+                                g_slist_free (connections);
+                                return TRUE ;
+                        }
+                }
+	}
+
+	g_slist_free (connections);
+        
+        return FALSE ;
+}
+
 static void
 unlock_dialog_new (NMDevice *device, GsmDeviceInfo *info)
 {
@@ -985,7 +1116,13 @@
 	/* Figure out the dialog text based on the required unlock code */
 	device_desc = utils_get_device_description (device);
 	if (!strcmp (info->unlock_required, "sim-pin")) {
-		title = _("SIM PIN unlock required");
+		
+                if (!any_auto_connections(device, info)) {
+                        g_warning ("Unlock request postponed because no autoconnect connections found");                        
+                        return;
+                }
+                
+                title = _("SIM PIN unlock required");
 		header = _("SIM PIN Unlock Required");
 		/* FIXME: some warning about # of times you can enter incorrect PIN */
 		desc = g_strdup_printf (_("The mobile broadband device '%s' requires a SIM PIN code before it can be used."), device_desc);
@@ -1310,6 +1447,15 @@
 		unlock_dialog_new (info->device, info);
 		g_clear_error (&error);
 	}
+
+        if (!any_auto_connections(info->device, info)) {
+                g_warning ("wwan_set_enabled postponed because no autoconnect connections found");                        
+                return;
+        }
+        /* Force WWAN Activation */
+        nm_client_wwan_set_enabled (info->applet->nm_client, TRUE);        
+        
+        
 }
 
 static void
--- src/applet.c.orig	2012-03-23 14:14:18.000000000 +0000
+++ src/applet.c	2012-07-20 06:29:25.000000000 +0000
@@ -2389,6 +2417,11 @@
 	const GPtrArray *devices;
 	int i;
 
+	if (!applet->connections_ready) {
+		g_idle_add (foo_set_initial_state, applet);
+                return FALSE ;
+        }
+        
 	devices = nm_client_get_devices (applet->nm_client);
 	for (i = 0; devices && (i < devices->len); i++)
 		foo_device_added_cb (applet->nm_client, NM_DEVICE (g_ptr_array_index (devices, i)), applet);
@@ -3381,6 +3414,13 @@
 	}
 }
 
+static void
+connections_read (NMRemoteSettings *settings, gpointer user_data)
+{
+	NMApplet *applet = user_data;
+        applet -> connections_ready = TRUE ;
+}
+
 static GObject *
 constructor (GType type,
              guint n_props,
@@ -3426,6 +3466,9 @@
 		goto error;
 	}
 	applet->settings = nm_remote_settings_new (applet->bus);
+	
+        g_signal_connect (applet->settings, "connections-read",
+		                              G_CALLBACK (connections_read), applet);
 
 	/* Move user connections to the system */
 	nm_gconf_move_connections_to_system (import_cb, applet);
--- src/applet.h.orig	2012-07-20 06:33:52.000000000 +0000
+++ src/applet.h	2012-07-20 06:33:59.000000000 +0000
@@ -92,6 +92,7 @@
 
 	NMClient *nm_client;
 	NMRemoteSettings *settings;
+    gboolean      connections_ready ;
 	AppletAgent *agent;
 
 	GConfClient *	gconf_client;
