diff --git a/features/cellular/framework/AT/AT_CellularNetwork.cpp b/features/cellular/framework/AT/AT_CellularNetwork.cpp index 6799e98cbf..f9306fe206 100644 --- a/features/cellular/framework/AT/AT_CellularNetwork.cpp +++ b/features/cellular/framework/AT/AT_CellularNetwork.cpp @@ -556,10 +556,18 @@ nsapi_error_t AT_CellularNetwork::set_registration(const char *plmn) if (!plmn) { tr_debug("Automatic network registration"); - _at.cmd_start("AT+COPS=0"); + _at.cmd_start("AT+COPS?"); _at.cmd_stop(); - _at.resp_start(); + _at.resp_start("AT+COPS:"); + int mode = _at.read_int(); _at.resp_stop(); + if (mode != 0) { + _at.clear_error(); + _at.cmd_start("AT+COPS=0"); + _at.cmd_stop(); + _at.resp_start(); + _at.resp_stop(); + } } else { tr_debug("Manual network registration to %s", plmn); _at.cmd_start("AT+COPS=4,2,");