# Application Group 0x01 - General Messages

**Command 0x01::0x02 - Clear Transaction Data**

The host uses this command to direct the device to clear all transaction data, including account data, encrypted PIN block, PAN, and amount, and return to the idle state.

## Table - Message Structure for Command 0x01::0x02 - Clear Transaction Data

<table data-header-hidden><thead><tr><th width="81.54547119140625" valign="top"></th><th width="81.0909423828125" valign="top"></th><th width="202.9090576171875" valign="top"></th><th></th></tr></thead><tbody><tr><td valign="top">Tag</td><td valign="top">Len</td><td valign="top">Value(s) / Description</td><td></td></tr><tr><td valign="top">C0</td><td valign="top">01</td><td valign="top">01</td><td>Message Type Data Object (Tag C0) = 0x01 Command</td></tr><tr><td valign="top">C1</td><td valign="top">01</td><td valign="top">01</td><td>Application ID Data Object (Tag C1) = 0x01 General Messages</td></tr><tr><td valign="top">C2</td><td valign="top">01</td><td valign="top">02</td><td>Command ID Data Object (Tag C2) = 0x02 Clear Transaction Data</td></tr></tbody></table>

If an error occurs, the device will terminate the command and report the error using an ACK Response containing the result code. For a full list of error codes, see 2.4.4 Result Code Data Object (Tag C3). If no error occurs, the device responds as follows:

## Table - Response to Command 0x01::0x02 - Clear Transaction Data

<table data-header-hidden><thead><tr><th width="84.27276611328125" valign="top"></th><th width="85.54547119140625" valign="top"></th><th width="192.6363525390625" valign="top"></th><th></th></tr></thead><tbody><tr><td valign="top">Tag</td><td valign="top">Len</td><td valign="top">Value(s) / Description</td><td></td></tr><tr><td valign="top">C0</td><td valign="top">01</td><td valign="top">02</td><td>Message Type Data Object (Tag C0) = 0x02 Response</td></tr><tr><td valign="top">C1</td><td valign="top">01</td><td valign="top">01</td><td>Application ID Data Object (Tag C1) = 0x01 General Messages</td></tr><tr><td valign="top">C2</td><td valign="top">01</td><td valign="top">02</td><td>Command ID Data Object (Tag C2) = 0x02 Clear Transaction Data</td></tr><tr><td valign="top">C3</td><td valign="top">01</td><td valign="top">00</td><td>Result Code Data Object (Tag C3) = OK / Done</td></tr></tbody></table>

**Command 0x01::0xFF - Device Reset**

The host uses this command to direct the device to reset.

## Table - Message Structure for Command 0x01::0xFF - Device Reset

<table data-header-hidden><thead><tr><th width="91.54547119140625" valign="top"></th><th width="86.18182373046875" valign="top"></th><th width="195.9090576171875" valign="top"></th><th></th></tr></thead><tbody><tr><td valign="top">Tag</td><td valign="top">Len</td><td valign="top">Value(s) / Description</td><td></td></tr><tr><td valign="top">C0</td><td valign="top">01</td><td valign="top">01</td><td>Message Type Data Object (Tag C0) = 0x01 Command</td></tr><tr><td valign="top">C1</td><td valign="top">01</td><td valign="top">01</td><td>Application ID Data Object (Tag C1) = 0x01 General Messages</td></tr><tr><td valign="top">C2</td><td valign="top">01</td><td valign="top">FF</td><td>Command ID Data Object (Tag C2) = 0xFF Device Reset</td></tr></tbody></table>

If an error occurs, the device will terminate the command and report the error using an ACK Response containing the result code. For a full list of error codes, see 2.4.4 Result Code Data Object (Tag C3). If no error occurs, the device responds as follows:

## Table - Response to Command 0x01::0xFF - Device Reset

<table data-header-hidden><thead><tr><th width="87.90911865234375" valign="top"></th><th width="80" valign="top"></th><th width="199.99993896484375" valign="top"></th><th></th></tr></thead><tbody><tr><td valign="top">Tag</td><td valign="top">Len</td><td valign="top">Value(s) / Description</td><td></td></tr><tr><td valign="top">C0</td><td valign="top">01</td><td valign="top">02</td><td>Message Type Data Object (Tag C0) = 0x02 Response</td></tr><tr><td valign="top">C1</td><td valign="top">01</td><td valign="top">01</td><td>Application ID Data Object (Tag C1) = 0x01 General Messages</td></tr><tr><td valign="top">C2</td><td valign="top">01</td><td valign="top">FF</td><td>Command ID Data Object (Tag C2) = 0xFF Device Reset</td></tr><tr><td valign="top">C3</td><td valign="top">01</td><td valign="top">00</td><td>Result Code Data Object (Tag C3) = OK / Done</td></tr></tbody></table>

**Notification 0x01::0xFF - Device Reset**

The device sends this notification to the host to notify the host that it is about to perform a periodic automatic device reset, which it initiates after 23 hours of continuous operation to fulfill PCI requirements. MagTek recommends the host software pre-empt these automatic resets by initiating resets in advance of the 23 hour schedule, at times that are least disruptive to the solution design.

## Table - Response to Notification 0x01::0xFF - Device Reset

<table data-header-hidden><thead><tr><th width="82.45452880859375" valign="top"></th><th width="72.8182373046875" valign="top"></th><th width="196.90911865234375" valign="top"></th><th></th></tr></thead><tbody><tr><td valign="top">Tag</td><td valign="top">Len</td><td valign="top">Value(s) / Description</td><td></td></tr><tr><td valign="top">C0</td><td valign="top">01</td><td valign="top">03</td><td>Message Type Data Object (Tag C0) = 0x03 Notification</td></tr><tr><td valign="top">C1</td><td valign="top">01</td><td valign="top">01</td><td>Application ID Data Object (Tag C1) = 0x01 General Messages</td></tr><tr><td valign="top">C2</td><td valign="top">01</td><td valign="top">FF</td><td>Command ID Data Object (Tag C2) = 0xFF Device Reset</td></tr></tbody></table>

**Command 0x01::0x04 - Get Device Status**

The host uses this command to request the device status, such as Session State, Device State, and Status.

## Table - Message Structure for Command 0x01::0x04 - Get Device Status

<table data-header-hidden><thead><tr><th width="77" valign="top"></th><th width="72.09088134765625" valign="top"></th><th width="193.54547119140625" valign="top"></th><th></th></tr></thead><tbody><tr><td valign="top">Tag</td><td valign="top">Len</td><td valign="top">Value(s) / Description</td><td></td></tr><tr><td valign="top">C0</td><td valign="top">01</td><td valign="top">01</td><td>Message Type Data Object (Tag C0) = 0x01 Command</td></tr><tr><td valign="top">C1</td><td valign="top">01</td><td valign="top">01</td><td>Application ID Data Object (Tag C1) = 0x01 General Messages</td></tr><tr><td valign="top">C2</td><td valign="top">01</td><td valign="top">04</td><td>Command ID Data Object (Tag C2) = 0x04 Get Device Status</td></tr></tbody></table>

If an error occurs, the device will terminate the command and report the error using an ACK Response containing the result code. For a full list of error codes, see 2.4.4 Result Code Data Object (Tag C3). If no error occurs, the device responds as follows:

## Table - Response to Command 0x01::0x04 - Get Device Status

<table data-header-hidden><thead><tr><th width="69.72723388671875" valign="top"></th><th width="106.9090576171875" valign="top"></th><th width="274.0909423828125" valign="top"></th><th></th></tr></thead><tbody><tr><td valign="top">Tag</td><td valign="top">Len</td><td valign="top">Value(s) / Description</td><td></td></tr><tr><td valign="top">C0</td><td valign="top">01</td><td valign="top">02</td><td>Message Type Data Object (Tag C0) = 0x02 Response</td></tr><tr><td valign="top">C1</td><td valign="top">01</td><td valign="top">01</td><td>Application ID Data Object (Tag C1) = 0x01 General Messages</td></tr><tr><td valign="top">C2</td><td valign="top">01</td><td valign="top">04</td><td>Command ID Data Object (Tag C2) = 0x04 Get Device Status</td></tr><tr><td valign="top">C3</td><td valign="top">01</td><td valign="top">00</td><td>Result Code Data Object (Tag C3) = OK / Done</td></tr><tr><td valign="top">E0</td><td valign="top">Calculated</td><td valign="top"><p>Data Field Data Object (Tag C4 or E0) =</p><p>Data Object F1 - Device Status</p></td><td></td></tr></tbody></table>

**Notification 0x01::0x04 - Send Device Status**

In addition to sending device status in response to Command 0x01::0x04 - Get Device Status, the device will automatically send the same data when the device powers up, restarts, or changes state.

## Table - Message Structure for Notification 0x01::0x04 - Send Device Status

<table data-header-hidden><thead><tr><th width="71.54547119140625" valign="top"></th><th width="120.45458984375" valign="top"></th><th valign="top"></th><th></th></tr></thead><tbody><tr><td valign="top">Tag</td><td valign="top">Len</td><td valign="top">Value(s) / Description</td><td></td></tr><tr><td valign="top">C0</td><td valign="top">01</td><td valign="top">03</td><td>Message Type Data Object (Tag C0) = 0x03 Notification</td></tr><tr><td valign="top">C1</td><td valign="top">01</td><td valign="top">01</td><td>Application ID Data Object (Tag C1) = 0x01 General Messages</td></tr><tr><td valign="top">C2</td><td valign="top">01</td><td valign="top">04</td><td>Command ID Data Object (Tag C2) = 0x04 Get Device Status</td></tr><tr><td valign="top">C3</td><td valign="top">01</td><td valign="top">00</td><td>Result Code Data Object (Tag C3) = OK / Done</td></tr><tr><td valign="top">E0</td><td valign="top">Calculated</td><td valign="top"><p>Data Field Data Object (Tag C4 or E0) =</p><p>Data Object F1 - Device Status</p></td><td></td></tr></tbody></table>

**Command 0x01::0x10 - Send Big Block Command**

The host uses this command to send command messages to the device as a sequence of packets. The host should follow this sequence:

* In local memory, compose the entire command message as documented by the desired command’s usage table (for example, Command 0x01::0x17 - Update Firmware).&#x20;
* Calculate the length of the fully-composed command message. Divide the fully-composed command message into packets that are shorter than the connection type’s maximum packet size.
  * When using the USB connection, the maximum packet size is 0x3F bytes.
  * When using the Ethernet connection, the maximum packet size is 0x0400 bytes.
  * When using a serial connection, the maximum packet size is 0x0400 bytes.
* Send command 0x01::0x10 to the device as “Packet 0.” Packet 0 is short and sets up how much data the device should expect across the whole big block operation. The C4 data object can be of varying length, and its value should be a 2-byte Packet Number equal to 00 00, plus a 2-byte Packet Length, plus Packet Data containing the Total Command Message Length, in bytes, the device should expect to receive when concatenating all subsequent packets (see Table 4-29).
* Wait to receive a response from the device (see Table 4-31).
* Continue sending Command 0x01::0x10 to send Packets 1 through n, incrementing the Packet Number by 1 each time, until the host has sent the fully-composed command message. After sending each packet, wait for the device’s response to reduce risk of packets arriving out of order. The C4 data object for packets 1 through n can be of varying length, and its value should be a 2-byte Packet Number that increments with each call to this command, plus a 2-byte Packet Data Length, plus the Packet Data (see Table 4-30).
* Listen for a final response from the device acknowledging the completed command. This means after sending the final packet, the host should expect to receive two responses: One for the final packet sent with Command 0x01::0x10, and one after the device has finished processing all the uploaded data and responds to the fully-composed command message the host has sent (for example, Command 0x01::0x17 - Update Firmware).

## Table - Message Structure for Command 0x01::0x10 - Send Big Block Command (Packet 0 Only)

<table data-header-hidden><thead><tr><th width="75.18182373046875" valign="top"></th><th width="107.63641357421875" valign="top"></th><th valign="top"></th><th></th></tr></thead><tbody><tr><td valign="top">Tag</td><td valign="top">Len</td><td valign="top">Value(s) / Description</td><td></td></tr><tr><td valign="top">C0</td><td valign="top">01</td><td valign="top">01</td><td>Message Type Data Object (Tag C0) = 0x01 Command</td></tr><tr><td valign="top">C1</td><td valign="top">01</td><td valign="top">01</td><td>Application ID Data Object (Tag C1) = 0x01 General Messages</td></tr><tr><td valign="top">C2</td><td valign="top">01</td><td valign="top">10</td><td>Command ID Data Object (Tag C2) = 0x10 Send Big Block Command Message</td></tr><tr><td valign="top"><p> </p><p> </p><p>C4</p></td><td valign="top"><p> </p><p> </p><p>Calculated</p></td><td valign="top"><p>Data Field Data Object (Tag C4 or E0) = 2-byte Packet Number = 00 00</p><p>2-byte Packet Data Length, LSB first</p><p>Packet Data = Total Command Message Length in bytes the device is sending using big block packets, LSB first</p></td><td></td></tr></tbody></table>

## Table - Message Structure for Command 0x01::0x10 - Send Big Block Command (Packets 1 through n)

<table data-header-hidden><thead><tr><th width="85.1817626953125" valign="top"></th><th width="118.18182373046875" valign="top"></th><th valign="top"></th><th></th></tr></thead><tbody><tr><td valign="top">Tag</td><td valign="top">Len</td><td valign="top">Value(s) / Description</td><td></td></tr><tr><td valign="top">C0</td><td valign="top">01</td><td valign="top">01</td><td>Message Type Data Object (Tag C0) = 0x01 Command</td></tr><tr><td valign="top">C1</td><td valign="top">01</td><td valign="top">01</td><td>Application ID Data Object (Tag C1) = 0x01 General Messages</td></tr><tr><td valign="top">C2</td><td valign="top">01</td><td valign="top">10</td><td>Command ID Data Object (Tag C2) = 0x10 Send Big Block Command Message</td></tr><tr><td valign="top"><p> </p><p>C4</p></td><td valign="top"><p> </p><p>Calculated</p></td><td valign="top"><p>Data Field Data Object (Tag C4 or E0) = 2-byte Packet Number, LSB first</p><p>2-byte Packet Data Length, LSB first Packet Data, LSB first</p></td><td></td></tr></tbody></table>

For every packet the host sends, if an error occurs (such as an out of order packet), the device will terminate the command, report the error using an ACK Response containing the result code, and will stop expecting to receive subsequent big block packets. The host should stop sending them. For a full list of error codes, see 2.4.4 Result Code Data Object (Tag C3).

If no error occurs, the device responds to every packet as follows:

## Table - Response to Command 0x01::0x10 - Send Big Block Command

<table data-header-hidden><thead><tr><th width="72.45452880859375" valign="top"></th><th width="69.54547119140625" valign="top"></th><th width="187.54547119140625" valign="top"></th><th></th></tr></thead><tbody><tr><td valign="top">Tag</td><td valign="top">Len</td><td valign="top">Value(s) / Description</td><td></td></tr><tr><td valign="top">C0</td><td valign="top">01</td><td valign="top">02</td><td>Message Type Data Object (Tag C0) = 0x02 Response</td></tr><tr><td valign="top">C1</td><td valign="top">01</td><td valign="top">01</td><td>Application ID Data Object (Tag C1) = 0x01 General Messages</td></tr><tr><td valign="top">C2</td><td valign="top">01</td><td valign="top">10</td><td>Command ID Data Object (Tag C2) = 0x10 Send Big Block Command Message</td></tr><tr><td valign="top">C3</td><td valign="top">01</td><td valign="top">00</td><td>Result Code Data Object (Tag C3) = OK / Done</td></tr></tbody></table>

**Notification 0x01::0x10 - Big Block Device Data**

The device uses this notification to send data to the host as a sequence of packets. The host should process this notification as follows:

* The host may receive this notification completely unsolicited or in response to a command (all commands that operate in this way say so in the command documentation). If the host has sent such a command to the device, it should start a timeout counter and begin listening for incoming notifications.
* Parse the first incoming notification, which should be identified as Packet 0000, according to Table 4-32 below. Use the value of Total Message Length to allocate buffer space to begin concatenating all subsequent packets, which together form the complete message.
* Continue receiving packets 0001 through nnnn, parsing them according to Table 4-33 below, concatenating the Packet Data from all notifications in order and adding the length of Packet Data in each packet, until the length of concatenated message data equals the Total Message Length.
* If the complete message is a notification type, the host should parse it according to the notification’s documentation. If it is a response type, the host should parse it according to the corresponding command’s response table.

## Table - Message Structure for Notification 0x01::0x10 - Big Block Device Data (Packet 0 Only)

<table data-header-hidden><thead><tr><th width="66.0909423828125" valign="top"></th><th width="69.727294921875" valign="top"></th><th valign="top"></th><th></th></tr></thead><tbody><tr><td valign="top">Tag</td><td valign="top">Len</td><td valign="top">Value(s) / Description</td><td></td></tr><tr><td valign="top">C0</td><td valign="top">01</td><td valign="top">01</td><td>Message Type Data Object (Tag C0) = 0x03 Notification</td></tr><tr><td valign="top">C1</td><td valign="top">01</td><td valign="top">01</td><td>Application ID Data Object (Tag C1) = 0x01 General Messages</td></tr><tr><td valign="top">C2</td><td valign="top">01</td><td valign="top">10</td><td>Command ID Data Object (Tag C2) = 0x10 Big Block Device Data</td></tr><tr><td valign="top"><p> </p><p>C4</p></td><td valign="top"><p> </p><p>08</p></td><td valign="top"><p>Data Field Data Object (Tag C4 or E0) = 2-byte Packet Number = 00 00</p><p>2-byte Packet Data Length, LSB first</p><p>4-byte Total Message Length in bytes, LSB first</p></td><td></td></tr></tbody></table>

## Table - Message Structure for Notification 0x01::0x10 - Big Block Device Data (Packets 1 through n)

<table data-header-hidden><thead><tr><th width="76.09088134765625" valign="top"></th><th width="106.6363525390625" valign="top"></th><th valign="top"></th><th></th></tr></thead><tbody><tr><td valign="top">Tag</td><td valign="top">Len</td><td valign="top">Value(s) / Description</td><td></td></tr><tr><td valign="top">C0</td><td valign="top">01</td><td valign="top">03</td><td>Message Type Data Object (Tag C0) = 0x03 Notification</td></tr><tr><td valign="top">C1</td><td valign="top">01</td><td valign="top">01</td><td>Application ID Data Object (Tag C1) = 0x01 General Messages</td></tr><tr><td valign="top">C2</td><td valign="top">01</td><td valign="top">10</td><td>Command ID Data Object (Tag C2) = 0x10 Big Block Device Data</td></tr><tr><td valign="top"><p> </p><p>C4</p></td><td valign="top"><p> </p><p>Calculated</p></td><td valign="top"><p>Data Field Data Object (Tag C4 or E0) = 2-byte Packet Number, LSB first</p><p>2-byte Packet Data Length, LSB first Packet Data</p></td><td></td></tr></tbody></table>

**Command 0x01::0x17 - Update Firmware**

The host uses this command to update the device’s firmware. The host should first compose the entire message for this command, then transmit the entire message to the device in packets using Command 0x01::0x10 - Send Big Block Command.

## Table - Message Structure for Command 0x01::0x17 - Update Firmware

<table data-header-hidden><thead><tr><th width="67.9090576171875" valign="top"></th><th width="114.18182373046875" valign="top"></th><th valign="top"></th><th></th></tr></thead><tbody><tr><td valign="top">Tag</td><td valign="top">Len</td><td valign="top">Value(s) / Description</td><td></td></tr><tr><td valign="top">C0</td><td valign="top">01</td><td valign="top">01</td><td>Message Type Data Object (Tag C0) = 0x01 Command</td></tr><tr><td valign="top">C1</td><td valign="top">01</td><td valign="top">01</td><td>Application ID Data Object (Tag C1) = 0x01 General Messages</td></tr><tr><td valign="top">C2</td><td valign="top">01</td><td valign="top">17</td><td>Command ID Data Object (Tag C2) = 0x17 Update Firmware</td></tr><tr><td valign="top"><p> </p><p> </p><p> </p><p>C4</p></td><td valign="top"><p> </p><p> </p><p> </p><p>Calculated</p></td><td valign="top"><p>Data Field Data Object (Tag C4 or E0) = Byte 1 Subcommand</p><p>0x01 = Update boot loader 0x02 = Reserved</p><p>0x03 = Update firmware image 0x04 = Reserved</p><p> </p><p>Bytes 2..n: Firmware image binary data</p></td><td></td></tr></tbody></table>

After the device receives the final packet of this command, the device will validate the firmware image, and if the validation passes, it will commit the image to the selected firmware storage location. In all cases, the device will also send an additional response:

## Table - Response to Command 0x01::0x17 - Update Firmware

<table data-header-hidden><thead><tr><th width="86.09088134765625" valign="top"></th><th width="87.27276611328125" valign="top"></th><th valign="top"></th><th></th></tr></thead><tbody><tr><td valign="top">Tag</td><td valign="top">Len</td><td valign="top">Value(s) / Description</td><td></td></tr><tr><td valign="top">C0</td><td valign="top">01</td><td valign="top">02</td><td>Message Type Data Object (Tag C0) = 0x02 Response</td></tr><tr><td valign="top">C1</td><td valign="top">01</td><td valign="top">01</td><td>Application ID Data Object (Tag C1) = 0x01 General Messages</td></tr><tr><td valign="top">C2</td><td valign="top">01</td><td valign="top">17</td><td>Command ID Data Object (Tag C2) = 0x17 Update Firmware</td></tr><tr><td valign="top"><p> </p><p> </p><p>C3</p></td><td valign="top"><p> </p><p> </p><p>01</p></td><td valign="top"><p>Result Code Data Object (Tag C3): 0x00 = Update successful</p><p>0x01 = Invalid firmware image loaded in buffer 0x02 = Signature error</p><p>0x03 = Build version error 0x09 = Other error</p></td><td></td></tr></tbody></table>

&#x20;

Although this command works on all connection types, for speed reasons, MagTek recommends using an

Ethernet or USB connection to upgrade the device’s firmware.

**Notification 0x01::0x40 - Card Detected / Identified / Removed**

The device uses this notification to signal to the host that a cardholder has inserted or removed a card, and to identify the type of card. Upon insertion or removal of a card, the device sends this notification to provide a Card Present Indication (CPI). After the device finishes identifying the type of card, it sends this notification again to provide an ICC Present Indication (IPI). When the CPI indicates a card is present and the IPI reports it is a chip card, the host is free to begin an EMV transaction, or in the case of magnetic stripe cards, to prompt the cardholder to remove the card to swipe on exit.

## Table - Message Structure for Notification 0x01::0x40 - Card Detected / Identified / Removed

<table data-header-hidden><thead><tr><th width="74.272705078125" valign="top"></th><th width="77.6363525390625" valign="top"></th><th valign="top"></th><th></th></tr></thead><tbody><tr><td valign="top">Tag</td><td valign="top">Len</td><td valign="top">Value(s) / Description</td><td></td></tr><tr><td valign="top">C0</td><td valign="top">01</td><td valign="top">03</td><td>Message Type Data Object (Tag C0) = 0x03 Notification</td></tr><tr><td valign="top">C1</td><td valign="top">01</td><td valign="top">01</td><td>Application ID Data Object (Tag C1) = 0x01 General Messages</td></tr><tr><td valign="top">C2</td><td valign="top">01</td><td valign="top">40</td><td>Command ID Data Object (Tag C2) = 0x40 Card Inserted/Identified/Removed</td></tr><tr><td valign="top"><p> </p><p> </p><p> </p><p> </p><p>C4</p></td><td valign="top"><p> </p><p> </p><p> </p><p> </p><p>02</p></td><td valign="top"><p>Data Field Data Object (Tag C4 or E0) = Byte 0: Card Present Indication (CPI)</p><p>·         0x00 = Card was present and has been removed</p><p>·         0x01 = Card was not present and is now present</p><p>Byte 1: Card Type Present Indication (IPI)</p><p>·         0x00 = Card is not a chip card (ICC card)</p><p>·         0x01 = Card is a chip card (ICC card)</p></td><td></td></tr></tbody></table>

**Command 0x01::0x50 - Subscribe to Notifications**

The host uses this command to specify which notifications the device should send to it (for example, Notification 0x01::0xFF - Device Reset). By default, the device does not send any notifications to the host.

## Table - Message Structure for Command 0x01::0x50 - Subscribe to Notifications

<table data-header-hidden><thead><tr><th width="76.09088134765625" valign="top"></th><th width="108.45452880859375" valign="top"></th><th valign="top"></th><th></th></tr></thead><tbody><tr><td valign="top">Tag</td><td valign="top">Len</td><td valign="top">Value(s) / Description</td><td></td></tr><tr><td valign="top">C0</td><td valign="top">01</td><td valign="top">01</td><td>Message Type Data Object (Tag C0) = 0x01 Command</td></tr><tr><td valign="top">C1</td><td valign="top">01</td><td valign="top">01</td><td>Application ID Data Object (Tag C1) = 0x01 General Messages</td></tr><tr><td valign="top">C2</td><td valign="top">01</td><td valign="top">50</td><td>Command ID Data Object (Tag C2) = 0x50 Subscribe to Notifications</td></tr><tr><td valign="top"><p> </p><p> </p><p> </p><p> </p><p> </p><p> </p><p>C4</p></td><td valign="top"><p> </p><p> </p><p> </p><p> </p><p> </p><p> </p><p>Calculated</p></td><td valign="top"><p>Data Field Data Object (Tag C4 or E0) = Byte 0 Subscribe or Unsubscribe</p><p>0x01 = Subscribe 0x02 = Unsubscribe</p><p>Byte 1 Notifications to Subscribe To</p><p>0x00 = Subscribe/unsubscribe to all notifications 0x01 = Subscribe/unsubscribe to specific notifications</p><p>If Notifications to Subscribe To = 0x01:</p><p>Bytes 2..n contain a list of two-byte notification IDs which specify the Application Group and Notification Number of each Notification the device should send to the host. For example, to subscribe to Notification 0x01::0xFF - Device Reset, the host would include 0x010F as two bytes in the list.</p></td><td></td></tr></tbody></table>

## Table - Response to Command 0x01::0x50 - Subscribe to Notifications

<table data-header-hidden><thead><tr><th width="82.45452880859375" valign="top"></th><th width="81" valign="top"></th><th valign="top"></th><th></th></tr></thead><tbody><tr><td valign="top">Tag</td><td valign="top">Len</td><td valign="top">Value(s) / Description</td><td></td></tr><tr><td valign="top">C0</td><td valign="top">01</td><td valign="top">02</td><td>Message Type Data Object (Tag C0) = 0x02 Response</td></tr><tr><td valign="top">C1</td><td valign="top">01</td><td valign="top">01</td><td>Application ID Data Object (Tag C1) = 0x01 General Messages</td></tr><tr><td valign="top">C2</td><td valign="top">01</td><td valign="top">50</td><td>Command ID Data Object (Tag C2) = 0x50 Subscribe to Notifications</td></tr><tr><td valign="top">C3</td><td valign="top">01</td><td valign="top">Result Code Data Object (Tag C3)</td><td></td></tr></tbody></table>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://developer.magtek.com/hardware/oem-readers-and-components/oem-readers/odynamo/documentation/programmers-manuals/programmers-manual-commands/command-set/application-group-0x01-general-messages.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
