diff --git a/lib/modem-commands.js b/lib/modem-commands.js
index 6fde986..763201e 100644
--- a/lib/modem-commands.js
+++ b/lib/modem-commands.js
@@ -1,5 +1,8 @@
 const MUTEX_COMMAND = 'COMMAND';
+exports.MUTEX_COMMAND = MUTEX_COMMAND;
+
 const MUTEX_SUBCOMMAND = 'SUBCOMMAND';
+exports.MUTEX_SUBCOMMAND = MUTEX_SUBCOMMAND;
 
 const ParserReadline = require('@serialport/parser-readline');
 const ParserRegex = require('@serialport/parser-regex');
@@ -117,7 +120,7 @@ exports.queryIMEI = function queryIMEI(lockName) {
             logger.verbose('INCOMING', { data: data.toString(), parser: 'parserIMEI' });
             port.unpipe(parser);
             mutex.unlock(lockName || MUTEX_COMMAND, 'queryIMEI');
-            modemInfo.imei = data.toString().trim();
+            modemInfo.imei = data.toString().trim() || null;
             logger.info('IMEI extracted', { imei: modemInfo.imei });
             resolve(modemInfo.imei);
         });
@@ -136,7 +139,7 @@ exports.queryIMSI = function queryIMSI(lockName) {
             logger.verbose('INCOMING', { data: data.toString(), parser: 'parserIMSI' });
             port.unpipe(parser);
             mutex.unlock(lockName || MUTEX_COMMAND, 'queryIMSI');
-            modemInfo.imsi = data.toString().trim();
+            modemInfo.imsi = data.toString().trim() || null;
             logger.info('IMSI extracted', { imsi: modemInfo.imsi });
             resolve(modemInfo.imsi);
         });
@@ -157,3 +160,11 @@ exports.queryIMEIAndIMSI = async function queryIMEIAndIMSI() {
     await mutex.unlock(MUTEX_COMMAND, 'queryIMEIAndIMSI');
     return { imei, imsi };
 };
+
+exports.initATCommands = async function initATCommands() {
+    await mutex.lock(MUTEX_COMMAND, 'INIT MODEM');
+    await this.writeToPortAndWaitForOkOrError('ATE0\r', MUTEX_SUBCOMMAND);
+    await this.writeToPortAndWaitForOkOrError('AT+CMGF=0\r', MUTEX_SUBCOMMAND);
+    await this.writeToPortAndWaitForOkOrError('AT+CNMI=1,2,0,1,0\r', MUTEX_SUBCOMMAND);
+    mutex.unlock(MUTEX_COMMAND, 'INIT MODEM');
+};
diff --git a/lib/serialport-parsers.js b/lib/serialport-parsers.js
index 9c6b39b..e684ff9 100644
--- a/lib/serialport-parsers.js
+++ b/lib/serialport-parsers.js
@@ -1,5 +1,5 @@
 const PARSER_READLINE_DELIMITER = '\r\n';
-const PARSER_WAIT_FOR_OK_OR_ERROR_REGEX = /\r\n(?:OK|ERROR)\r\n/;
+const PARSER_WAIT_FOR_OK_OR_ERROR_REGEX = /\n(?:OK|ERROR)\r\n/;
 
 const moment = require('moment');
 const nodePdu = require('node-pdu');
@@ -77,8 +77,8 @@ function onCOPS(data) {
     });
 
     modemInfo.cops = cops;
-    modemInfo.networkId = networkId;
-    modemInfo.networkName = networkName;
+    modemInfo.networkId = networkId || null;
+    modemInfo.networkName = networkName || null;
 
     return {
         cops, mode, format, networkId, networkName,
diff --git a/modem-tester.js b/modem-tester.js
index ff636d5..df61a89 100644
--- a/modem-tester.js
+++ b/modem-tester.js
@@ -30,6 +30,7 @@ const port = new SerialPort(config.modem.device, { baudRate: 115200 }, async (er
     logger.info('Modem state', modemInfo);
 
     setInterval(async () => {
+        await modemCommands.initATCommands();
         await modemCommands.queryIMEIAndIMSI();
         await modemCommands.queryCOPSAndSignalQuality();
         logger.info('Modem state', modemInfo);