diff --git a/dongle_infrastructure.c b/dongle_infrastructure.c
index 76d9c5dc06070f593952b19c75e776c05554901c..c2632ce128daacf58f66fe40948b785729af94cb 100644
--- a/dongle_infrastructure.c
+++ b/dongle_infrastructure.c
@@ -297,6 +297,21 @@ fail_unknown:
 	return UBUS_STATUS_UNKNOWN_ERROR;
 }
 
+int get_pin_status(struct ubus_context *ctx, struct ubus_object *obj,
+					struct ubus_request_data *req, const char *method,
+					struct blob_attr *msg)
+{
+	struct json_object *response;
+
+	response = mobile_get_pin_status(global_dev);
+	if (!response)
+		goto fail_unknown;
+
+	return print_to_ubus(response, ctx, req);
+fail_unknown:
+	return UBUS_STATUS_UNKNOWN_ERROR;
+}
+
 int unlock_sim(struct ubus_context *ctx, struct ubus_object *obj,
 			   struct ubus_request_data *req, const char *method,
 			   struct blob_attr *msg)
@@ -587,13 +602,14 @@ struct ubus_method dynamic_object_methods[] = {
 	UBUS_METHOD("enable_pin", enable_pin, pin_policy),
 	UBUS_METHOD("verify_pin", verify_pin, pin_policy),
 	UBUS_METHOD_NOARG("remaining_tries", remaining_tries),
+	UBUS_METHOD_NOARG("pin_status", get_pin_status),
 	UBUS_METHOD("unlock_sim", unlock_sim, unlock_policy),
-	UBUS_METHOD_NOARG("list_apn_profiles", list_apn_profiles),  //apn
+	UBUS_METHOD_NOARG("list_apn_profiles", list_apn_profiles), //apn
 	UBUS_METHOD("create_apn_profiles", create_apn_profile, create_apn_policy),
 	UBUS_METHOD("delete_apn_profile", delete_apn_profile, apn_policy),
 	UBUS_METHOD("set_apn_profile", set_apn_profile, apn_policy),
 	UBUS_METHOD_NOARG("current_apn_profile", show_current_apn),
-	UBUS_METHOD_NOARG("signal_strength", get_signal_strength),  //network..
+	UBUS_METHOD_NOARG("signal_strength", get_signal_strength), //network..
 	UBUS_METHOD_NOARG("connect_network", connect_network),
 	UBUS_METHOD_NOARG("disconnect_network", disconnect_network),
 	UBUS_METHOD_NOARG("modem_state", modem_state),