Skip to main content
The channel between EMV Core and Host is either a serial or USB channel. In USB:
  • The device uses the HID Protocol Class with 64-byte blocks (Reports in HID terminology).
  • The first byte of every 64-byte block is a length byte, indicating how many of the following 63 bytes are actually used.
  • If the length byte is less than 63, the remaining bytes should be discarded.
  • If it is 63 or more, all following 63 bytes are used.

Command Sequence Example (GetKioskId)

The following exchange shows the full ACK/NAK flow for a GetKioskID command:

Data Frame

Example:
Structure: <A[Frame-ID]|[Length][Data][LRC]>

LRC and Length Calculation Example


ACK Frame

Sent to acknowledge a successfully received and validated Data Frame. Examples: <+0>, <+1> Structure: <+[Frame-ID]> The [Frame-ID] matches the Data Frame being acknowledged.

NAK Frame

Sent when the receiving side fails to parse a Data Frame. Examples: <-0|1>, <-1|7> Structure: <-[Frame-ID]|[Err]> The transmitting party does not change its behavior based on the error codes; they are for debugging only.

Protocol Rules

The datalink layer follows these timing and sequencing rules:
  • ACK/NAK are expected within 30 milliseconds.
  • If ACK is not received, or if a NAK is received, the sending party may resend the frame with the same Frame-ID.
  • While waiting for ACK/NAK, the sending party must not send another frame.
  • When receiving a frame: if the first bytes are not <A0 or <A1, do not send a NAK. Instead, keep reading until receiving a valid start of frame.