diff --git a/dongle_apn.c b/dongle_apn.c
index 6273ac25490af321bd2d17852b6168bcf36e6be5..dda1bd998caf1d6ecb1e4df9ce88038b12064355 100644
--- a/dongle_apn.c
+++ b/dongle_apn.c
@@ -140,7 +140,7 @@ int show_current_apn(struct ubus_context *ctx, struct ubus_object *obj,
 				 struct ubus_request_data *req, const char *method,
 				 struct blob_attr *msg)
 {
-	struct json_object *response = mobile_get_wan_apn();
+	struct json_object *response = mobile_get_current_apn();
 
 	if (!response)
 		goto fail_unknown;
diff --git a/libmobile.c b/libmobile.c
index c8928564f95c9cb135dbfb7ccf0cd6532e7b5f74..bb1be016a0752db0f666db635bc4ca83b9f364cd 100644
--- a/libmobile.c
+++ b/libmobile.c
@@ -428,6 +428,42 @@ struct json_object *mobile_get_roam_status(void)
 	return prepare_request("roam_setting_option", GET);
 }
 
+struct json_object *mobile_get_current_apn(void)
+{
+	struct json_object *idx_json, *apn_profiles, *tmp, *current_profile;
+	int idx, counter = 0;
+
+	idx_json = prepare_request("Current_index", GET);
+	if (!idx_json) {
+		debug_print("couldn't find index\n");
+		goto fail;
+	}
+
+	//tmp = json_object_object_get_ex(idx_json, "Current_index", &tmp);
+
+	idx = json_object_get_int(idx_json);
+	if (idx < 0 || idx > 9) {
+		debug_print("Something is very wrong!\n");
+		goto fail_idx;
+	}
+	apn_profiles = mobile_get_apn_profiles();
+
+	json_object_object_foreach(apn_profiles, key, val) {
+		counter++;
+		if (counter < idx)
+			continue;
+		current_profile = json_object_get(val);
+		break;
+	}
+	json_object_put_(idx_json);
+	json_object_put(apn_profiles);
+	return current_profile;
+fail_idx:
+	json_object_put(idx_json);
+fail:
+	return NULL;
+}
+
 struct json_object *mobile_get_wan_apn(void)
 {
 	return prepare_request("wan_apn", GET);
diff --git a/libmobile.h b/libmobile.h
index 9c3e8a2ce6012b872bda856bcc2da78eb2153882..5e7fb7566f7b284be417a2c5b2dac7346568cf5d 100644
--- a/libmobile.h
+++ b/libmobile.h
@@ -118,6 +118,17 @@ struct json_object *mobile_disable_roaming(void);
  */
 struct json_object *mobile_get_roam_status(void);
 
+/**
+ * Function: mobile_get_current_apn
+ *
+ * Gets the currently active APN profile.
+ *
+ * Returns:
+ *		A pointer to a json_object containing the JSON profile on success.
+ *		NULL on failure.
+ */
+struct json_object *mobile_get_current_apn(void);
+
 /**
  * Function: mobile_get_wan_apn
  *