diff --git a/lib/modem-commands.js b/lib/modem-commands.js
index b0fb0f7..1b3b554 100644
--- a/lib/modem-commands.js
+++ b/lib/modem-commands.js
@@ -92,9 +92,11 @@ exports.queryCOPS = function queryCOPS(lockName) {
     });
 };
 
-exports.queryCOPSAndSignalQuality = function queryCOPSAndSignalQuality() {
+exports.queryCOPSAndSignalQuality = function queryCOPSAndSignalQuality(skipOnLocked) {
     return new Promise(async (resolve) => {
-        if (!mutex.tryLock(MUTEX_COMMAND, 'queryCOPSAndSignalQuality')) {
+        if (!skipOnLocked) {
+            await mutex.lock(MUTEX_COMMAND);
+        } else if (!mutex.tryLock(MUTEX_COMMAND, 'queryCOPSAndSignalQuality')) {
             resolve(false);
             return;
         }
@@ -107,38 +109,47 @@ exports.queryCOPSAndSignalQuality = function queryCOPSAndSignalQuality() {
     });
 };
 
-exports.queryIMEI = function queryIMEI() {
+exports.queryIMEI = function queryIMEI(lockName) {
     return new Promise(async (resolve) => {
         const parser = new ParserRegex({ regex: parsers.PARSER_WAIT_FOR_OK_OR_ERROR_REGEX });
         parser.on('data', (data) => {
             logger.verbose('INCOMING', { data: data.toString(), parser: 'parserIMEI' });
             port.unpipe(parser);
-            mutex.unlock(MUTEX_COMMAND, 'queryIMEI');
+            mutex.unlock(lockName || MUTEX_COMMAND, 'queryIMEI');
             modemInfo.imei = data.toString().trim();
             resolve(modemInfo.imei);
         });
 
-        await mutex.lock(MUTEX_COMMAND, 'queryIMEI');
+        await mutex.lock(lockName || MUTEX_COMMAND, 'queryIMEI');
 
         port.pipe(parser);
         await writeToPort('AT+CGSN\r');
     });
 };
 
-exports.queryIMSI = function queryIMSI() {
+exports.queryIMSI = function queryIMSI(lockName) {
     return new Promise(async (resolve) => {
         const parser = new ParserRegex({ regex: parsers.PARSER_WAIT_FOR_OK_OR_ERROR_REGEX });
         parser.on('data', (data) => {
             logger.verbose('INCOMING', { data: data.toString(), parser: 'parserIMSI' });
             port.unpipe(parser);
-            mutex.unlock(MUTEX_COMMAND, 'queryIMSI');
+            mutex.unlock(lockName || MUTEX_COMMAND, 'queryIMSI');
             modemInfo.imsi = data.toString().trim();
             resolve(modemInfo.imsi);
         });
 
-        await mutex.lock(MUTEX_COMMAND, 'queryIMSI');
+        await mutex.lock(lockName || MUTEX_COMMAND, 'queryIMSI');
 
         port.pipe(parser);
         await writeToPort('AT+CIMI\r');
     });
 };
+
+exports.queryIMEIAndIMSI = async function queryIMEIAndIMSI() {
+    await mutex.lock(MUTEX_COMMAND, 'queryIMEIAndIMSI');
+
+    await this.queryIMEI(MUTEX_SUBCOMMAND);
+    await this.queryIMSI(MUTEX_SUBCOMMAND);
+
+    await mutex.unlock(MUTEX_SUBCOMMAND, 'queryIMEIAndIMSI');
+};
diff --git a/lib/serialport-parsers.js b/lib/serialport-parsers.js
index 1d70950..dd178ea 100644
--- a/lib/serialport-parsers.js
+++ b/lib/serialport-parsers.js
@@ -60,7 +60,7 @@ function onCOPS(data) {
     const [mode, format, networkId] = cops.split(',');
     const networkName = networkId ? dbCops[networkId] || networkId : null;
 
-    logger.verbose('COPS extracted', {
+    logger.info('COPS extracted', {
         cops, mode, format, networkId, networkName,
     });
 
diff --git a/modem-tester.js b/modem-tester.js
index 932178c..8f4483d 100644
--- a/modem-tester.js
+++ b/modem-tester.js
@@ -34,6 +34,7 @@ const port = new SerialPort(config.modem.device, { baudRate: 115200 }, async (er
     await modemCommands.queryCOPSAndSignalQuality();
 
     setInterval(() => {
+        modemCommands.queryIMEIAndIMSI();
         modemCommands.queryCOPSAndSignalQuality();
     }, (config && config.interval_beetwen_signal_strength_ms) || 30000);
 });