diff --git a/lib/modem.js b/lib/modem.js
index 1c32877..b9ec2f2 100644
--- a/lib/modem.js
+++ b/lib/modem.js
@@ -15,6 +15,8 @@ const common = require('./common');
 const sms = require('./sms');
 
 const modemInfo = {
+    manufacturer: null,
+    model: null,
     imsi: null,
     signalStrength: null,
 };
@@ -96,6 +98,22 @@ parserWaitForOK.on('data', () => {
     mutex.releaseLockWaitForOK();
 });
 
+function simpleCommand(cmd, callback) {
+    const parser = new ParserDelimiter({ delimiter: DELIMITER_WAIT_FOR_OK });
+    parser.on('data', (data) => {
+        port.unpipe(parser);
+        mutex.releaseLockWaitForOK();
+
+        if (data) {
+            callback(null, data.toString().trim());
+        }
+    });
+
+    port.pipe(parser);
+    writeToPortAndWaitForOK(cmd);
+}
+
+/*
 async function readIMSI() {
     logger.info('Querying IMSI');
     const parserReadIMSI = new ParserDelimiter({ delimiter: DELIMITER_WAIT_FOR_OK });
@@ -116,6 +134,47 @@ async function readIMSI() {
     port.unpipe(parserReadIMSI);
     mutex.releaseLockWaitForCommand();
 }
+*/
+
+function readManufacturer() {
+    return new Promise((resolve) => {
+        simpleCommand('AT+CGMI\r', (err, result) => {
+            modemInfo.manufacturer = result;
+            logger.info(`Manufacturer: ${result}`);
+            resolve(result);
+        });
+    });
+}
+
+function readModel() {
+    return new Promise((resolve) => {
+        simpleCommand('AT+CGMM\r', (err, result) => {
+            modemInfo.model = result;
+            logger.info(`Model: ${result}`);
+            resolve(result);
+        });
+    });
+}
+
+function readIMEI() {
+    return new Promise((resolve) => {
+        simpleCommand('AT+CGSN\r', (err, result) => {
+            modemInfo.imei = result;
+            logger.info(`IMEI: ${result}`);
+            resolve(result);
+        });
+    });
+}
+
+function readIMSI() {
+    return new Promise((resolve) => {
+        simpleCommand('AT+CIMI\r', (err, result) => {
+            modemInfo.imsi = result;
+            logger.info(`IMSI: ${result}`);
+            resolve(result);
+        });
+    });
+}
 
 async function querySignalStrength() {
     port.pipe(parserWaitForOK);
@@ -166,6 +225,9 @@ function init() {
         logger.info('Deleting existing messages');
         // await writeToPortAndWaitForOK('AT+CMGD=0,4\r');
 
+        await readManufacturer();
+        await readModel();
+        await readIMEI();
         await readIMSI();
 
         port.unpipe(parserWaitForOK);