diff --git a/src/nfc/include/rw_int.h b/src/nfc/include/rw_int.h
index 61f0820..f4027a5 100644
--- a/src/nfc/include/rw_int.h
+++ b/src/nfc/include/rw_int.h
@@ -693,6 +693,13 @@
   RW_I93_STM_M24LR64E_R,             /* STM M24LR64E-R                   */
   RW_I93_STM_ST25DV04K,              /* STM ST25DV04K                    */
   RW_I93_STM_ST25DVHIK,              /* STM ST25DV 16K OR 64K            */
+  RW_I93_ONS_N36RW02,                /* ONS N36RW02                      */
+  RW_I93_ONS_N24RF04,                /* ONS N24RF04                      */
+  RW_I93_ONS_N24RF04E,               /* ONS N24RF04E                     */
+  RW_I93_ONS_N24RF16,                /* ONS N24RF16                      */
+  RW_I93_ONS_N24RF16E,               /* ONS N24RF16E                     */
+  RW_I93_ONS_N24RF64,                /* ONS N24RF64                      */
+  RW_I93_ONS_N24RF64E,               /* ONS N24RF64E                     */
   RW_I93_UNKNOWN_PRODUCT             /* Unknwon product version          */
 };
 
diff --git a/src/nfc/include/tags_defs.h b/src/nfc/include/tags_defs.h
index 23a8f03..4177c78 100644
--- a/src/nfc/include/tags_defs.h
+++ b/src/nfc/include/tags_defs.h
@@ -577,6 +577,7 @@
 #define I93_ICODE_CC_IPREAD_MASK 0x02
 /* More than 2040 bytes are supported in CC[3] */
 #define I93_STM_CC_OVERFLOW_MASK 0x04
+#define I93_ONS_CC_OVERFLOW_MASK 0x04
 
 /* ICODE TLV type */
 #define I93_ICODE_TLV_TYPE_NULL 0x00 /* NULL TLV         */
@@ -591,6 +592,7 @@
 #define I93_UID_IC_MFG_CODE_STM 0x02
 #define I93_UID_IC_MFG_CODE_NXP 0x04
 #define I93_UID_IC_MFG_CODE_TI 0x07
+#define I93_UID_IC_MFG_CODE_ONS 0x67
 
 /* NXP, UID Coding of ICODE type (UID Bit 48-41) */
 /* ICODE SLI, SLIX     */
@@ -656,7 +658,26 @@
  */
 #define I93_IC_REF_STM_ST25DVHIK 0x26
 
+/* ONS, product version (IC manufacturer code) */
+/* IC Reference for N36RW02:  00011010(b), blockSize: 4, numberBlocks: 0x40 */
+#define I93_IC_REF_ONS_N36RW02  0x1A
+/* IC Reference for N24RF04:  00101010(b), blockSize: 4, numberBlocks: 0x80 */
+#define I93_IC_REF_ONS_N24RF04  0x2A
+/* IC Reference for N24RF04E: 00101110(b), blockSize: 4, numberBlocks: 0x80 */
+#define I93_IC_REF_ONS_N24RF04E 0x2E
+/* IC Reference for N24RF16:  01001010(b), blockSize: 4, numberBlocks: 0x200 */
+#define I93_IC_REF_ONS_N24RF16  0x4A
+/* IC Reference for N24RF16E: 01001110(b), blockSize: 4, numberBlocks: 0x200 */
+#define I93_IC_REF_ONS_N24RF16E 0x4E
+/* IC Reference for N24RF64:  01101010(b), blockSize: 4, numberBlocks: 0x800 */
+#define I93_IC_REF_ONS_N24RF64  0x6A
+/* IC Reference for N24RF64E: 01101110(b), blockSize: 4, numberBlocks: 0x800 */
+#define I93_IC_REF_ONS_N24RF64E 0x6E
+
 #define I93_STM_BLOCKS_PER_SECTOR 32
 #define I93_STM_MAX_BLOCKS_PER_READ 32
 
-#endif /* TAGS_DEFS_H */
+#define I93_ONS_BLOCKS_PER_SECTOR 32
+#define I93_ONS_MAX_BLOCKS_PER_READ 32
+
+#endif /* TAGS_DEFS_H */ 
\ No newline at end of file
diff --git a/src/nfc/tags/rw_i93.cc b/src/nfc/tags/rw_i93.cc
index d9be513..6c49db8 100644
--- a/src/nfc/tags/rw_i93.cc
+++ b/src/nfc/tags/rw_i93.cc
@@ -178,6 +178,34 @@
           break;
       }
     }
+  } else if ((p_uid[1] == I93_UID_IC_MFG_CODE_ONS) &&
+             (p_i93->info_flags & I93_INFO_FLAG_IC_REF)) {
+      switch (p_i93->ic_reference) {
+        case I93_IC_REF_ONS_N36RW02:
+          p_i93->product_version = RW_I93_ONS_N36RW02;
+          break;
+        case I93_IC_REF_ONS_N24RF04:
+          p_i93->product_version = RW_I93_ONS_N24RF04;
+          break;
+        case I93_IC_REF_ONS_N24RF04E:
+          p_i93->product_version = RW_I93_ONS_N24RF04E;
+          break;
+        case RW_I93_ONS_N24RF16:
+          p_i93->product_version = RW_I93_ONS_N24RF16;
+          break;
+        case RW_I93_ONS_N24RF16E:
+          p_i93->product_version = RW_I93_ONS_N24RF16E;
+          break;
+        case RW_I93_ONS_N24RF64:
+          p_i93->product_version = RW_I93_ONS_N24RF64;
+          break;
+        case RW_I93_ONS_N24RF64E:
+          p_i93->product_version = RW_I93_ONS_N24RF64E;
+          break;
+        default:
+          p_i93->product_version = RW_I93_UNKNOWN_PRODUCT;
+        break;
+      }
   } else {
     p_i93->product_version = RW_I93_UNKNOWN_PRODUCT;
   }
@@ -275,8 +303,8 @@
     rw_i93_get_product_version(p_uid);
 
     if (p_i93->uid[0] == I93_UID_FIRST_BYTE) {
-      if (p_i93->uid[1] == I93_UID_IC_MFG_CODE_STM) {
-        /* STM supports more than 2040 bytes */
+      if ((p_i93->uid[1] == I93_UID_IC_MFG_CODE_STM) || (p_i93->uid[1] == I93_UID_IC_MFG_CODE_ONS)){
+        /* STM & ONS supports more than 2040 bytes */
         p_i93->intl_flags |= RW_I93_FLAG_EXT_COMMANDS;
       }
     }
@@ -409,6 +437,36 @@
             }
           }
         }
+      } else if (p_i93->uid[1] == I93_UID_IC_MFG_CODE_ONS) {
+        /*
+        **  N36RW02:  00011010(b), blockSize: 4, numberBlocks: 0x40
+        **  N24RF04:  00101110(b), blockSize: 4, numberBlocks: 0x80
+        **  N24RF04E: 00101010(b), blockSize: 4, numberBlocks: 0x80
+        **  N24RF16:  01001010(b), blockSize: 4, numberBlocks: 0x200
+        **  N24RF16E: 01001110(b), blockSize: 4, numberBlocks: 0x200
+        **  N24RF64:  01101010(b), blockSize: 4, numberBlocks: 0x800
+        **  N24RF64E: 01101110(b), blockSize: 4, numberBlocks: 0x800
+        */
+          p_i93->block_size = 4;
+          switch (p_i93->product_version){
+            case RW_I93_ONS_N36RW02:
+                 p_i93->num_block = 0x40;
+                 break;
+            case RW_I93_ONS_N24RF04:
+            case RW_I93_ONS_N24RF04E:
+                 p_i93->num_block = 0x80;
+                 break;
+            case RW_I93_ONS_N24RF16:
+            case RW_I93_ONS_N24RF16E:
+                 p_i93->num_block = 0x200;
+                 break;
+            case RW_I93_ONS_N24RF64:
+            case RW_I93_ONS_N24RF64E:
+                 p_i93->num_block = 0x800;
+                 break;
+            default:
+                 return false;
+          }
       }
     }
   }
@@ -431,7 +489,7 @@
 
   DLOG_IF(INFO, nfc_debug_enabled) << __func__;
 
-  if ((p_i93->uid[1] == I93_UID_IC_MFG_CODE_STM) &&
+  if (((p_i93->uid[1] == I93_UID_IC_MFG_CODE_STM) || (p_i93->uid[1] == I93_UID_IC_MFG_CODE_ONS)) &&
       (p_i93->sent_cmd == I93_CMD_GET_SYS_INFO) &&
       (error_code == I93_ERROR_CODE_OPTION_NOT_SUPPORTED) &&
       (rw_i93_send_cmd_get_sys_info(nullptr, I93_FLAG_PROT_EXT_YES) ==
@@ -477,7 +535,7 @@
   if (flags & I93_FLAG_ERROR_DETECTED) {
     if ((length) && (rw_i93_check_sys_info_prot_ext(*p))) {
       /* getting system info with protocol extension flag */
-      /* This STM tag supports more than 2040 bytes */
+      /* This STM & ONS tag supports more than 2040 bytes */
       p_i93->intl_flags |= RW_I93_FLAG_16BIT_NUM_BLOCK;
       p_i93->state = RW_I93_STATE_BUSY;
     } else if (length) {
@@ -1603,6 +1661,30 @@
       }
     }
 
+    if (p_i93->uid[1] == I93_UID_IC_MFG_CODE_ONS) {
+      /* N24RF04, N24RF04E, N24RF16, N24RF16E, N24RF64, N24RF64E requires
+      ** - The max number of blocks is 32 and they are all located in the
+      **   same sector.
+      ** - The sector is 32 blocks of 4 bytes.
+      */
+      if ((p_i93->product_version == RW_I93_ONS_N36RW02) ||
+          (p_i93->product_version == RW_I93_ONS_N24RF04) ||
+          (p_i93->product_version == RW_I93_ONS_N24RF04E)||
+          (p_i93->product_version == RW_I93_ONS_N24RF16) ||
+          (p_i93->product_version == RW_I93_ONS_N24RF16E)||
+          (p_i93->product_version == RW_I93_ONS_N24RF64) ||
+          (p_i93->product_version == RW_I93_ONS_N24RF64E)) {
+        if (num_block > I93_ONS_MAX_BLOCKS_PER_READ)
+          num_block = I93_ONS_MAX_BLOCKS_PER_READ;
+
+        if ((first_block / I93_ONS_BLOCKS_PER_SECTOR) !=
+            ((first_block + num_block - 1) / I93_ONS_BLOCKS_PER_SECTOR)) {
+          num_block = I93_ONS_BLOCKS_PER_SECTOR -
+                      (first_block % I93_ONS_BLOCKS_PER_SECTOR);
+        }
+      }
+    }
+
     return rw_i93_send_cmd_read_multi_blocks(first_block, num_block);
   } else {
     return rw_i93_send_cmd_read_single_block(first_block, false);
@@ -1681,7 +1763,7 @@
   if (flags & I93_FLAG_ERROR_DETECTED) {
     if ((length) && (rw_i93_check_sys_info_prot_ext(*p))) {
       /* getting system info with protocol extension flag */
-      /* This STM tag supports more than 2040 bytes */
+      /* This STM & ONS tag supports more than 2040 bytes */
       p_i93->intl_flags |= RW_I93_FLAG_16BIT_NUM_BLOCK;
     } else {
       DLOG_IF(INFO, nfc_debug_enabled)
@@ -1766,11 +1848,11 @@
       **         without any security)
       **       : Bit 1-0:Write access condition (00b: write access granted
       **         without any security)
-      ** CC[2] : Memory size in 8 bytes (Ex. 0x04 is 32 bytes) [STM, set to
-      **         0xFF if more than 2040bytes]
-      ** CC[3] : Bit 0:Read multiple blocks is supported [NXP, STM]
+      ** CC[2] : Memory size in 8 bytes (Ex. 0x04 is 32 bytes) [STM, ONS set
+      **         to 0xFF if more than 2040bytes]
+      ** CC[3] : Bit 0:Read multiple blocks is supported [NXP, STM, ONS]
       **       : Bit 1:Inventory page read is supported [NXP]
-      **       : Bit 2:More than 2040 bytes are supported [STM]
+      **       : Bit 2:More than 2040 bytes are supported [STM, ONS]
       */
 
       DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
@@ -2463,7 +2545,7 @@
       /* ignore error */
     } else if ((length) && (rw_i93_check_sys_info_prot_ext(*p))) {
       /* getting system info with protocol extension flag */
-      /* This STM tag supports more than 2040 bytes */
+      /* This STM & ONS tag supports more than 2040 bytes */
       p_i93->intl_flags |= RW_I93_FLAG_16BIT_NUM_BLOCK;
       return;
     } else {
@@ -2709,7 +2791,7 @@
                   RW_I93_TAG_IT_HF_I_PRO_CHIP_INLAY)) {
         *(p++) = 0;
       } else {
-        /* STM except LRIS2K, Broadcom supports read multi block command */
+        /* STM except LRIS2K, ONS, Broadcom supports read multi block command */
 
         /* if memory size is more than 2040 bytes (which is not LRIS2K) */
         if (((p_i93->num_block * p_i93->block_size) / 8) > 0xFF)
@@ -4171,8 +4253,22 @@
       return "ST25DV04";
     case RW_I93_STM_ST25DVHIK:
       return "ST25DV";
+    case RW_I93_ONS_N36RW02:
+      return ("N36RW02");
+    case RW_I93_ONS_N24RF04:
+      return ("N24RF04");
+    case RW_I93_ONS_N24RF04E:
+      return ("N24RF04E");
+    case RW_I93_ONS_N24RF16:
+      return ("N24RF16");
+    case RW_I93_ONS_N24RF16E:
+      return ("N24RF16E");
+    case RW_I93_ONS_N24RF64:
+      return ("N24RF64");
+    case RW_I93_ONS_N24RF64E:
+      return ("N24RF64E");
     case RW_I93_UNKNOWN_PRODUCT:
     default:
       return "UNKNOWN";
   }
-}
+} 
\ No newline at end of file
