Hide thumbs Also See for Vivopay Neo 2:
Table of Contents

Advertisement

NEO 2 Interface Developer's Guide
80139403-002 Rev. 88.1
10 October, 2019
ID TECH
10721 Walker Street, Cypress, CA 90630
Voice: (714) 761-6368 Fax: (714) 761-8880

Advertisement

Table of Contents
loading

Summary of Contents for IDTECH Vivopay Neo 2

  • Page 1 NEO 2 Interface Developer's Guide 80139403-002 Rev. 88.1 10 October, 2019 ID TECH 10721 Walker Street, Cypress, CA 90630 Voice: (714) 761-6368 Fax: (714) 761-8880...
  • Page 2 NEO 2 Interface Developer’s Guide Copyright © 2019 ID TECH. All rights reserved. ID TECH 10721 Walker St. Cypress, CA 90630 This document, as well as the software and hardware described in it, is furnished under license and may be used or copied online in accordance with the terms of such license.
  • Page 3: Table Of Contents

    NEO 2 Interface Developer’s Guide Table of Contents 1. INTRODUCTION ..............................15 1.1. T ................................15 ERMINOLOGY 1.2. D ................................15 EVICE ODES 1.3. U SDK ................................ 15 NIVERSAL 1.4. O ..........................16 RGANIZATION OF THIS UIDE 1.5. N ............................. 16 OTATIONAL ONVENTIONS 1.6.
  • Page 4 NEO 2 Interface Developer’s Guide 3.3. B ................................51 URST 3.3.1. ViVOpay Burst Mode Frames ..............................52 3.4. CRC C ..............................60 ALCULATION 4. TAG AND DATA SET CONFIGURATION ......................63 4.1. C ......................... 64 ONFIGURABLE S AND ROUPS 4.1.1. System AIDs ......................................66 4.1.2.
  • Page 5 NEO 2 Interface Developer’s Guide 7.3.1. Set RF Error Reporting (17-03) ............................117 8. PROTOCOL COMMAND REFERENCE: PROTOCOL 2 .................. 118 8.1. RTC (R ........................118 LOCK OMMANDS 8.1.1. Set/Get 24-hr Self-Check Time (25-07) ......................... 118 8.2. G ............................119 ENERAL OMMANDS 8.2.1.
  • Page 6 NEO 2 Interface Developer’s Guide 8.3.6. Delete Configurable Group (04-05) ........................... 157 8.3.7. Get All AIDs (03-05) ..................................157 8.3.8. Get All Groups (03-07) ................................158 8.4. T ....................159 RANSACTION ELATED OMMANDS ONTACT 8.4.1. Setting transaction parameters ............................159 8.4.2.
  • Page 7 NEO 2 Interface Developer’s Guide 8.6.4. Data Exchange Request (02-58) Command and Data Exchange Response (02-09) ..... 246 8.7. K ........................... 246 ANAGEMENT OMMANDS 8.7.1. Get CA Public Key (D0-01) ............................... 247 8.7.2. Get CA Public Key Hash (D0-02) ............................248 8.7.3.
  • Page 8 NEO 2 Interface Developer’s Guide 8.15.2. PCD Single Command Exchange (2C-04) Protocol 2 ..................285 8.15.3. High-level Halt Command (2C-09) ..........................289 8.15.4. Enhanced Pass-Through Command (2C-0B) ......................290 8.15.5. Single Shot Commands ................................294 8.15.1. Poll for Token with ATS (2C-0E) ............................297 8.15.2.
  • Page 9 NEO 2 Interface Developer’s Guide 8.22.6. Get Data Encryption Key Variant Type (C7-30) ...................... 334 8.22.7. Set DUKPT Key Encryption Type (C7-32) ........................334 8.22.8. Get DUKPT Key Encryption Type (C7-33) ........................335 8.22.9. Set Data Encryption Enable Flag (C7-36) ........................336 8.22.10.
  • Page 10 NEO 2 Interface Developer’s Guide 8.29.1. Get USB Sleep Configuration (F0-07) ..........................375 8.29.2. Wake-Up Notification (F1-00) ............................376 8.30. USB P ....................376 OWER USPEND ONFIGURATION 8.30.1. Set USB Power Mode Suspend Configuration (F0-08) ..................376 8.30.2. Get USB Power Mode Suspend Configuration (F0-09) ..................377 8.31.
  • Page 11 NEO 2 Interface Developer’s Guide 18.3. S (63-03) ..........................435 ESSION 18.4. S ID (63-04) ............................436 18.5. G ID (63-05) ............................436 18.6. G (63-06) ......................... 437 ENERATE 18.7. G L100 F (70-03) ......................437 IRMWARE ERSION 19. APPENDIX A.7: VP6800 COMMANDS ....................... 439 19.1.
  • Page 12 NEO 2 Interface Developer’s Guide 19.3.38. QR Code Scan Start (61-41) ............................. 477 19.3.39. QR Code Scan Stop (61-42) .............................. 480 19.3.40. Camera Take Photo Start (61-43) ..........................480 19.3.41. Camera Take Photo Stop (61-44) ..........................483 19.4. A VP6800 I .........................
  • Page 13 NEO 2 Interface Developer’s Guide List of Tables Table 1: Hardware Cross Reference ..............................17 Table 2: Commands Sorted by Command Name ..........................18 Table 3: Commands Sorted by Command Number .......................... 22 Table 4: Pass-Through Command Table ............................. 26 Table 5: EMV Key Management –...
  • Page 14 NEO 2 Interface Developer’s Guide Table 50: EMV Key Manager Status Codes – Protocol 2 ......................247 Table 51: Language Version Information ............................261 Table 52: Exception List Record Format ............................271 Table 53: Get PCD and PICC Parameters Data Field ........................274 Table 54: Poll for Token Data Field for Command Frame ......................
  • Page 15: Introduction

    NEO 2 Interface Developer’s Guide 1. Introduction This document provides application developers and integrators with the detailed information necessary to integrate ID TECH's ViVOpay readers with point of sale terminals (POS). It specifies the low-level (firmware) commands and responses that host systems can use to communicate with a ViVOpay reader to carry out contactless EMV transactions.
  • Page 16: Organization Of This Guide

    NEO 2 Interface Developer’s Guide To obtain the Universal SDK, go to the ID TECH Knowledge Base, select the product of interest, and click through to the appropriate tools. The Universal SDK is available free of charge to all ID TECH customers and is available on demand. 1.4.
  • Page 17: Reader Interface Capabilities

    NEO 2 Interface Developer’s Guide download the P/N 80000503-001 TLV Tag Reference Guide, available free of charge on the TECH Knowledge Base. In this guide, hexadecimal numbers are expressed in one of two ways: With an “h” after the number; for example, 2Ah •...
  • Page 18: Quick Reference

    NEO 2 Interface Developer’s Guide 2. Quick Reference This section contains tables for looking up commands, status codes, and error codes. 2.1. Command Tables The tables in this section organize the commands by their names and by their command number. 2.1.1.
  • Page 19 NEO 2 Interface Developer’s Guide Command C’less or Notes C’less + MSR Contact Set Terminal Data Contact Start Transaction Contact Get ICS Identification Contact Remove Transaction Amount Log Contact Set ICS Identification Control User Interface Data Exchange Request √ Data Exchange Response √...
  • Page 20 NEO 2 Interface Developer’s Guide Command C’less or Notes C’less + MSR Get Contact EMV L2 Kernel Version Detail √ Get Contact EMV L2 Terminal Configuration Checksum √ Get Discretionary Data White List √ Get DRL Reader Risk Parameters √ Get DUKPT Key Serial Number Extended √...
  • Page 21 NEO 2 Interface Developer’s Guide Command C’less or Notes C’less + MSR Peer To Peer Receive A Message √ Play Audio Poll for Token with ATS QR Code Scan Start QR Code Scan Stop Reset Torn Transaction Log √ Retrieve Log RTC Get Date √...
  • Page 22: Commands Sorted By Command Number

    NEO 2 Interface Developer’s Guide 2.1.2. Commands Sorted by Command Number Commands Sorted by Command Number Command C’less or Notes C’less + MSR Set Poll Mode √ Control User Interface Set/Get Source for RTC/LCD/Buzzer/LED √ Set Switches Notifications Configuration Get Switches Notifications Conifiguration Activate Transaction Command √...
  • Page 23 NEO 2 Interface Developer’s Guide Command C’less or Notes C’less + MSR Flush Track Data √ Set RF Error Reporting √ Get Full Track Data √ Ping √ Set CA Public Key √ Delete CA Public Key √ Delete All CA Public Keys √...
  • Page 24 NEO 2 Interface Developer’s Guide Command C’less or Notes C’less + MSR Set Temporary Baud Rate √ Initialize/De-initialize Logger Set Logger Level Get/Set Logger Size Enable/Disable Logger Save/Delete Log Retrieve Log Contact Retrieve Application Data Contact Remove Application Data Contact Set Application Data Contact Retrieve Terminal Data Contact Remove Terminal Data Contact Set Terminal Data...
  • Page 25 NEO 2 Interface Developer’s Guide Command C’less or Notes C’less + MSR Get and Set MAC Verification Option (for data output) Get EMV Revocation Log Status √ Add Entry to EMV Revocation List √ Delete All Entries for Single Index in EMV Revocation List √...
  • Page 26: Pass-Through Command Table

    NEO 2 Interface Developer’s Guide Command C’less or Notes C’less + MSR LCD Display Line 1 Message Command LCD Display Line 2 Message Command Buzzer On/Off Command Wake-Up Notification Switches Notification a ViVOpay Vendi reader only c Not in Global Reader Lite (GRL) d Real Time Clock only e Only applies to devices with USB VP6300-specific Commands...
  • Page 27: Emv Key Manager Command Tables

    NEO 2 Interface Developer’s Guide Poll for Token with ATS Felica Commands √ √ √ √ √ Felica Lite/Lite-S Authentication √ √ √ √ √ Felica Lite/Lite-S Read/Write Blocks √ √ √ √ √ with MAC Get White List √ √...
  • Page 28: Status Codes

    NEO 2 Interface Developer’s Guide 2.1.5. Status Codes Status Codes for Protocol 2 Status Code Status Incorrect Header Tag Unknown Command Unknown Sub-Command CRC Error in Frame Incorrect Parameter Parameter Not Supported Mal-formatted Data Timeout Failed / NACK Command not Allowed Sub-Command not Allowed Buffer Overflow (Data Length too large for reader buffer) User Interface Event...
  • Page 29 NEO 2 Interface Developer’s Guide Status Code Status ViVOcomm activate transaction card type (ViVOcomm) Version Information Mismatch (ILM) Not sending commands in correct index message index (ILM) Time out or next expected message not received (ILM) ILM languages not available for viewing (ILM) Other language not supported (ILM) No SCRP Default Pairing Key Status Error...
  • Page 30: Status Codes For Protocol 1

    NEO 2 Interface Developer’s Guide 2.1.6. Status Codes for Protocol 1 Protocol 1 Status Codes Status Code Status Incorrect Frame Tag Incorrect Frame Type Unknown Frame Type Unknown Command Unknown Sub-Command CRC Error Failed Timeout Incorrect Parameter Command Not Supported Sub-Command Not Supported Parameter Not Supported / Status Abort Command Command not Allowed...
  • Page 31: Error Codes

    NEO 2 Interface Developer’s Guide 2.2. Error Codes Error Codes Error Description Reason for Error and Suggested Error Handling Code No Error None. Out of Sequence Reader did not receive commands in the correct order. Correct the terminal Command application to send serial commands in the correct sequence. The contactless transaction failed.
  • Page 32 NEO 2 Interface Developer’s Guide Error Description Reason for Error and Suggested Error Handling Code If RF State Code = PUT DATA (Ticket): The terminal can retry the transaction or abandon it. If RF State Code = GEN AC: For credit transactions: The terminal can retry the transaction or abandon it.
  • Page 33 NEO 2 Interface Developer’s Guide Error Description Reason for Error and Suggested Error Handling Code Card Generated The card declined the transaction by sending an AAC instead of a TC. Card Generated This error code is returned if the card generated an ARQC and the terminal/reader ARQC was configured as “Offline Only”;...
  • Page 34: Rf State Codes

    NEO 2 Interface Developer’s Guide Error Description Reason for Error and Suggested Error Handling Code This is a generic or general error that is reported when a more specific reason for the Generic Error error is not known. Torn Transaction An error occurred while attempting to clean the torn transaction log.
  • Page 35 NEO 2 Interface Developer’s Guide State Code RF State Description Error occurred during CCC command Error occurred during IA command Error occurred during SDA processing Error occurred during DDA processing Error occurred during CDA processing Error occurred during TAA processing UPDATE RECORD Error occurred during UPDATE RECORD command NEGOTIATE...
  • Page 36: Emv Result Codes (Tag Dfee25)

    NEO 2 Interface Developer’s Guide 2.4. EMV Result Codes (Tag DFEE25) For contact EMV transactions, a two-byte result code may be returned in DFEE25. Check the contents of tag DFEE25, when it occurs, and interpret the results as follows. NOTE: The result code is always two bytes long. The bottom two bits of the first byte are flags. If the zero bit is set, it means there was "advice."...
  • Page 37: Serial Communication Interfaces

    NEO 2 Interface Developer’s Guide EMV_RESULT_CODE_EXP_DATE_INCORRECT 0x5015 EMV_RESULT_CODE_EFF_DATE_INCORRECT 0x5016 EMV_RESULT_CODE_CRYPTOGRAM_TYPE_INCORRECT 0x5018 EMV_RESULT_CODE_PSE_BY_CARD_NOT_SUPPORTED 0x5019 EMV_RESULT_CODE_USER_LANGUAGE_SELECTED 0x5020 EMV_RESULT_CODE_SERVICE_NOT_ALLOWED 0x5021 EMV_RESULT_CODE_NO_TAG_FOUND 0x5022 EMV_RESULT_CODE_CARD_BLOCKED 0x5023 EMV_RESULT_CODE_LEN_INCORRECT 0x5024 EMV_RESULT_CODE_CARD_COM_ERROR 0x5025 EMV_RESULT_CODE_ARC_NOT_PRESENCED 0x5028 EMV_RESULT_CODE_COMM_NO_ONLINE 0x5030 EMV_RESULT_CODE_TRAN_TYPE_INCORRECT 0x5031 EMV_RESULT_CODE_APP_BLOCK_AID 0x5036 EMV_RESULT_CODE_PAN_INVALID 0x5037 EMV_RESULT_CODE_TRANS_TYPE_NO_SUPPORT 0x5038 EMV_RESULT_CODE_CVM_TAG_8E_MISSING 0x6003 EMV_RESULT_CODE_CVM_TAG_8E_FORMAT_ERROR 0x6004 2.5.
  • Page 38: Get Bluetooth Name (77-82)

    NEO 2 Interface Developer’s Guide Command Data Field Data Field Length (bytes) Description Name Var to 26 ASCII, must end with 0x00 Old Password New Password Response Frame Byte 0-9 Byte 10 Byte 11 Byte 12 Byte 13 Byte 14 Byte 15 Data Data...
  • Page 39: Get Bluetooth Local Information (77-83)

    NEO 2 Interface Developer’s Guide 2.6.3. Get Bluetooth Local information (77-83) This command retrieves Bluetooth local information for the module version and bluetooth address. Command Frame Byte 0-9 Byte 10 Byte 11 Byte 12 Byte 13 Byte 14 Byte 14+n Byte 15+n Header Tag &...
  • Page 40: Basic Communication

    NEO 2 Interface Developer’s Guide DTR Control Disabled RTS Control Disabled XON/XOFF Disabled Flow Control None 2.7.2. Basic Communication The ViVOpay reader and the POS terminal communicate by exchanging command-response frames. The terminal always initiates communication by sending a command frame and ViVOpay responds by sending a response frame.
  • Page 41 NEO 2 Interface Developer’s Guide There are four defined report IDs used in this protocol: 1, 2, 3, and 4. Undefined report IDs are silently ignored. 2.8.1.1. Report ID 1 ID 1 frames are used when a complete command or response is 63 bytes or less. As soon as the host or device receives a report ID 1 frame, it should parse the report data to extract the command or response.
  • Page 42: Sample Single Report Command And Response

    NEO 2 Interface Developer’s Guide 2.8.2. Sample Single Report Command and Response Ping Command Report “V” “i” “V” “O” “t” “e” “c” “h” “2” Ping Response Report “V” “i” “V” “O” “t” “e” “c” “h” “2” The serial port version of this command and response would be (data bytes in hex format): Command: 56 69 56 4F 74 65 63 68 32 00 18 01 00 00 B3 CD Response:...
  • Page 43 NEO 2 Interface Developer’s Guide Get Configuration response reports 1st Response Report “V” “i” “V” “O” “t” “e” “c” “h” “2” 2nd Response Report 3rd Response Report and Final Response Report Note: The response to this command changes each time the command is sent since it includes the current time and date.
  • Page 44: Error Handling At Report Level

    NEO 2 Interface Developer’s Guide 2.8.5. Error Handling at Report Level 1. Any report with ID of 1 is processed as soon as it is received. All other unprocessed reports are discarded. 2. Any report with an ID of 2 causes all other unprocessed reports to be discarded. 3.
  • Page 45: Vivopay Communication Protocols

    NEO 2 Interface Developer’s Guide 3. ViVOpay Communication Protocols There are two main types of protocols: Protocol 1 (now deprecated), and Protocol 2. Protocol 2 is the preferred method of communicating between the terminal/POS and a ViVOpay reader. Protocol 1 is retained for backward compatibility with older terminal/POS applications. In addition to the two main protocols, there are modes of communication that are extensions of the protocols.
  • Page 46: Basic Pass-Through Operation

    NEO 2 Interface Developer’s Guide Note: Pass-through commands could only be executed in Pass-Through Mode. Other commands (non-Pass-Through) will return an error in Pass-Through Mode with the exception of Ping, Get Version, and Get Serial Number commands. 3.2.1. Basic Pass-Through Operation Pass-through mode allows a terminal to communicate directly with an ISO 14443 Type A or Type B proximity integrated circuit card (PICC) without the ViVOpay firmware knowing the specifics of the application or data present on the PICC.
  • Page 47: Pass-Through Command Frame Format

    NEO 2 Interface Developer’s Guide After a card is detected, the terminal may use one of the Pass-Through commands to communicate with the card at the application level and read the data. Additional Pass-Through commands allow a terminal to use low-level features provided by the ViVOpay reader, such as controlling the RF antenna (field).
  • Page 48: Auto-Switch To Pass-Through Mode

    NEO 2 Interface Developer’s Guide 3.2.4.1. For ISO 14443-4 Compliant Type A or Type B Cards Use the Exchange Contactless Data command to communicate with the Card at the application level. 3.2.4.2. For ISO I4443 Type A or Type B Cards that are not ISO 14443-4 Compliant (such as ISO 14443-3 Compliant Cards), Mifare Type A, and Mifare Ultralight Type A Low-level commands: Use the...
  • Page 49 NEO 2 Interface Developer’s Guide If the auto-switch feature is enabled, the reader switches to Pass-Through Mode under the following conditions: Card application is not recognized – global auto-switch is enabled • Card AID is not recognized – global auto-switch is enabled •...
  • Page 50 NEO 2 Interface Developer’s Guide Byte 14 … Byte 0-9 Byte 10 Byte 11 Byte 12 Byte 13 Byte 14+n Byte 15+n Byte 14+n-1 Header Tag Data Length Data Length & Protocol Command Status Code Data CRC (MSB) (MSB) (LSB) (LSB) Version Status...
  • Page 51: Rf On/Off States For Pass-Through Commands

    NEO 2 Interface Developer’s Guide The response frame is returned asynchronously if the reader is in auto poll. After auto-switch is invoked the reader remains in Pass-Through Mode with the RF antenna on. The POS application must handle error recovery and exit Pass-Through Mode when done with the Pass-Through Mode Start/Stop command (2C-01).
  • Page 52: Vivopay Burst Mode Frames

    NEO 2 Interface Developer’s Guide Burst Mode is not allowed when MSR/MSD or EMV encryption is enabled and a data encryption key exists. When MSR/MSD or EMV encryption is enabled and a data encryption key exists, Burst Mode is always OFF. In this condition, the reader will turn Burst Mode OFF automatically. If Burst Mode is set to ON/AUTO EXIT through the Set Configuration (04-00) command, the reader will keep Burst Mode OFF.
  • Page 53 NEO 2 Interface Developer’s Guide Example 3: Payload, Card Read Successfully, Application Type AmEx, Only Track 1 Present [01] [00] [03] %B1234567^ABCDEF^12345678? <CRC1><CRC2> Example 4: Payload, Card Read Successfully, Application Type Unknown, Both Track 1 and Track 2 Present [01] [00] [00] %B123456789^ABCDEF^12345678?;123456=12345? <CRC1><CRC2>...
  • Page 54 NEO 2 Interface Developer’s Guide Data Item Length (bytes) Description TLV DE 055 (Clearing Variable DE 055 data (if available) as a TLV data object encoded with Tag ‘E1’. The Record) ISO-8583 DE 055 data is the same data as is included in the Clearing Record.
  • Page 55 NEO 2 Interface Developer’s Guide Data Item Length (bytes) Description TLV Auth Code Authorization code as a TLV object Tag: E300 Format: b8 TLV Track 2 Equivalent Track 2 equivalent data as a TLV object. Data This field is present only if the DE 055 object is present or authorization code is present.
  • Page 56 NEO 2 Interface Developer’s Guide 3.3.1.3. NACK Frame If the terminal fails to receive the card payload data, it can send a NACK frame and request the ViVOpay reader to resend the card payload data. To ensure that the reader resends the card payload data, the NACK frame must be received by the reader within 500ms after it sends the original card payload.
  • Page 57 NEO 2 Interface Developer’s Guide Example 2: Reader receives NACK frame from terminal after 500ms of sending the original payload data, the reader does not resend the card payload data. Terminal ViVOpay Reader Original Payload ◄--------------------------------------------------------------------- | Time: 0 NACK sent at 700ms (after 500ms) --------------------------------------------------------------------►...
  • Page 58 NEO 2 Interface Developer’s Guide Asynchronous UI Message Event Component UI Type UI Status Definition Higher nibble: LED # 00: LED0 01: LED1 02: LED2 03: LED3 FF: all Lower nibble: 00: Off 01: On 11: No change Buzzer Higher nibble: 1: short beeps 2: long beeps Lower nibble, short beep:...
  • Page 59 NEO 2 Interface Developer’s Guide Application Type Application type is a 1 byte code that indicates the application type detected. This can have any value from 0 to 255. Asynchronous UI message Event Application Type Application Type Value Unknown MasterCard Visa American Express Discover...
  • Page 60: Crc Calculation

    NEO 2 Interface Developer’s Guide Sample Output 45 00 55 00 04 03 03 00 00 E8 DD <-- LCD Event 45 00 55 00 04 01 11 00 00 28 B6 <-- LED Event 45 00 55 00 04 01 10 00 00 1F 86 <-- LED Event 45 00 55 00 04 02 20 00 00 41 FF <-- Buzzer Event...
  • Page 61 NEO 2 Interface Developer’s Guide Some test values that can be used to test an implementation of this algorithm are given below. Data String (ASCII Text): 123456789 CRC: 29B1h Data (Hex): [01h] [02h] [03h] [04h] [05h] CRC: 9304h Data (Hex): [56] [69] [56] [4F] [74] [65] [63] [68] [00] [43] [18] [00] [00] [00] CRC: A1F5h Implementation Example The following code snippet is an example of the CRC Calculation.
  • Page 62 NEO 2 Interface Developer’s Guide 0x9DE8, 0x8DC9, 0x7C26, 0x6C07, 0x5C64, 0x4C45, 0x3CA2, 0x2C83, 0x1CE0, 0x0CC1, 0xEF1F, 0xFF3E, 0xCF5D, 0xDF7C, 0xAF9B, 0xBFBA, 0x8FD9, 0x9FF8, 0x6E17, 0x7E36, 0x4E55, 0x5E74, 0x2E93, 0x3EB2, 0x0ED1, 0x1EF0 unsigned short CalculateCRC ( unsigned char *Buffer, unsigned int Len ) unsigned short Crc = 0xffff;...
  • Page 63: Tag And Data Set Configuration

    NEO 2 Interface Developer’s Guide 4. Tag and Data Set Configuration Tags are configured in the ViVOpay reader ahead of time so that when a card is selected, a “data set” (or group) may be instantiated for use in a transaction. The following illustration shows the basic approach to instantiating the tag database for a transaction.
  • Page 64: Configurable Aids And Groups

    NEO 2 Interface Developer’s Guide 4.1. Configurable AIDs and Groups This section explains how to can create and modify application identifiers (AIDs) and associate them with TLV Groups in the reader’s memory for specific types of transaction handling. Detailed descriptions of the configurable application identifier (CONAID) commands are also included.
  • Page 65 NEO 2 Interface Developer’s Guide To create a new configurable AID, send to the reader both: the AID in question. • the TLV Group to associate with it. • If the AID already exists in the reader’s memory, it will modify the AID accordingly. When sent a new AID, the reader creates and saves the new AID.
  • Page 66: System Aids

    NEO 2 Interface Developer’s Guide Ten System AIDs have been disabled and four User AIDs and three new TLV Groups • have been configured. The new AID User AID – 1 has been linked to the Reader Default Configuration (TLV •...
  • Page 67: User Aids

    NEO 2 Interface Developer’s Guide 4.1.2. User AIDs A User AID is an optional AID that is added and/or configured by the user. These AIDs are used for servicing transactions that are not defined by one of the System AIDs. This determination needs to be made by the integrator.
  • Page 68: Paypass Default Group

    NEO 2 Interface Developer’s Guide Unlike all other groups, the TLVs in the Default TLV Group (TLV Group 0) are constant. The reader ALWAYS uses the latest copy of the TLV. If a user issues a Set Configurable Group command that only updates some TLVs in TLV Group 0, the reader continues to use older versions of the TLVs that were not updated.
  • Page 69: Configurable Aid Reader Memory Requirement

    NEO 2 Interface Developer’s Guide For American Express: Transaction limit (FFF1) • CVM limit (FFF5) • Floor limit(9F1B) • For Discover: Transaction limit (FFF1) • CVM limit (FFF5) • Floor limit (9F1B) • Risk flags (FFF4) • If user-defined TLV Group is used, user should set these above TLVs in the user-defined Group.
  • Page 70: Card Application Proprietary Tag List (Ff69 Or Ffee69)

    NEO 2 Interface Developer’s Guide created by individual payment associations and reader manufacturers for specific functions. Proprietary TLVs must be handled in a manner that isolates them from other proprietary TLVs. For a complete listing of all ID TECH proprietary tags and their meanings, you should consult the document P/N 80000503-001, ID TECH TLV Tag Reference Guide.pdf, available on the TECH Knowledge Base.
  • Page 71: Group Configuration Tags

    NEO 2 Interface Developer’s Guide 4.3.1. Group Configuration Tags The following table contains TLVs that are configurable using the Set Configuration (04-00) command. These TLVs are global within in the reader. If a Group does not define some of these TLVs, the values in Group 0 will be used. Group Configuration TLVs Length Data Object Name and Description...
  • Page 72 NEO 2 Interface Developer’s Guide Length Data Object Name and Description Format Default Value (Bytes) Transaction Category Code This is a data object defined by MasterCard which indicates 9F53 the type of transaction being performed, and which may be used in card risk management. Terminal Transaction Qualifier (TTQ) Determine the type of transaction (MSD, qVSDC, and 9F66...
  • Page 73 NEO 2 Interface Developer’s Guide Visa Reader Risk Flags Byte 1 Meaning (0 = disable, enable) Status Check Byte 2: Meaning (0 = disable, 1 = enable) Transaction Limit Check Required Limit Test Terminal Floor Limit Check Cash Transaction Reader Risk (RR) DFEE35...
  • Page 74 NEO 2 Interface Developer’s Guide Length Data Object Name and Description Format Default Value (Bytes) amount check enabled) perform zero amount check For example: 0x00 = Zero Amount check disabled. 0x01 = Zero Amount check is disabled and online cryptogram required bit will not be checked. (default) 0x02 = Zero Amount check enabled.
  • Page 75 NEO 2 Interface Developer’s Guide Length Data Object Name and Description Format Default Value (Bytes) Application Capability (1:Support,0:Not Support) Byte 1: (Leftmost) Meaning (0 = disable, enable) Normal J/Speedy support ViVOpay Mifare for NFC Interac support support Google SmartTap Byte 2: Meaning (0 DFEE44 95 FF...
  • Page 76 NEO 2 Interface Developer’s Guide Length Data Object Name and Description Format Default Value (Bytes) DFEE73 Merchant Category Code 00 00 DFEE74 Discover Optional Features Poll Mode DFED18 Value = 00: Auto-Poll Value = 01: Poll on Demand Burst Mode Value = 00: Disable Burst Mode DFEE7E Value = 01: Enable Burst Mode...
  • Page 77: Master Group Configuration Tlvs

    NEO 2 Interface Developer’s Guide 4.3.2. Master Group Configuration TLVs Master use Group 80 as default Group. The Set Configurable Group command should be used to set the TLVs in this section. The following table in this section shows TLVs in American Express Configuration Group.
  • Page 78 NEO 2 Interface Developer’s Guide Default Value in Description Format Length Group 80 Interface Device Serial Number 30 30 30 30 30 This is intended to be the serial number of the 9F1E terminal/POS. It is configured by the POS and is unique 30 30 to the terminal.
  • Page 79 NEO 2 Interface Developer’s Guide Default Value in Description Format Length Group 80 Reader Contactless Transaction Limit - No On-Device 00 00 00 03 00 DF8124 When there is no on-device CVM available (for example, with a phone), then this is the transaction limit that will be used.
  • Page 80 NEO 2 Interface Developer’s Guide Default Value in Description Format Length Group 80 Terminal Type Indicates the environment of the terminal, its 9F35 communications capability, and its operational control. UI Scheme Value = 00:ViVOpay User Interface (default) Value = 02:Visa Wave User Interface Value = 03:EMEA User Interface Note: LCD Messages need to be configured separately.
  • Page 81: American Express Group Configuration Tlvs

    NEO 2 Interface Developer’s Guide Phone Message Table – Hard-Coded Default Value in Kernel PCI Mask PCII Value Message Identifier Status 000800 000800 20 (SEE PHONE) 00 (NOT READY) 000400 000400 20 (SEE PHONE) 00 (NOT READY) 000100 000100 20 (SEE PHONE) 00 (NOT READY) 000200 000200...
  • Page 82 NEO 2 Interface Developer’s Guide Default Value in Description Format Length Group 2 Transaction Currency Code Indicates the currency code of the transaction according to ISO 4217. 5F2A 08 40 Make sure to use the same Transaction Currency Code for all configurable AIDs (default = US Dollars).
  • Page 83 NEO 2 Interface Developer’s Guide Default Value in Description Format Length Group 2 Terminal Type Indicates the environment of the terminal, its communications capability, and its operational control. Environment Operational Control Provided By: Financial Merchant Cardholder Institution Attended Online only 9F35 Offline with online...
  • Page 84: Discover Group Configuration Tlvs

    NEO 2 Interface Developer’s Guide These objects use proprietary tags. The use of these tags should be restricted to the serial interface. After the reader has returned an OK response frame, the terminal application should dispose of the tags to avoid conflicts with other proprietary TLVs. . IMPORTANT NOTE: Many two-bytes tags that begin 'FF' have been superseded with BER-legal three-byte tags.
  • Page 85 NEO 2 Interface Developer’s Guide Default Value in Description Format Length Group 2 00 00 00 00 00 9F02 Amount Authorized (Numeric) 00 00 00 00 00 9F03 Amount Other (Numeric) 9F09 Application Version Number 01 00 Terminal Country Code 9F1A Indicates the country code of the terminal, 08 40...
  • Page 86 NEO 2 Interface Developer’s Guide Default Value in Description Format Length Group 2 Transaction Currency Code Indicates the currency code of the transaction according to ISO 4217. 5F2A 08 40 Make sure to use the same transaction currency code for all configurable AIDs (default = US Dollars).
  • Page 87: Interac Group Configuration Tlvs

    NEO 2 Interface Developer’s Guide 4.3.3. Interac Group Configuration TLVs Interac use Group C0 as default Group. The Set Configurable Group command should be used to set the TLVs in this section. The following table in this section shows TLVs in Interac Configuration Group.
  • Page 88 NEO 2 Interface Developer’s Guide Default Value in Description Format Length Group 4 Terminal Type Indicates the environment of the terminal, its communications capability, and its operational control. Environment Operational Control Provided By: Financial Merchant Cardholder Institution Attended Online only 9F35 Offline with online...
  • Page 89 NEO 2 Interface Developer’s Guide Default Value in Description Format Length Group 4 Reader Contactless Transaction Limit - No On-Device 00 00 00 01 00 DF8124 When there is no on-device CVM available (for example, with a phone), then this is the transaction limit that will be used.
  • Page 90: Aid Configuration Tags

    NEO 2 Interface Developer’s Guide Default Value in Description Format Length Group 4 Terminal Capabilities Indicates the card data input, CVM, and security capabilities of the terminal Default = 9F33 00 48 E8 • No CVM required • SDA supported •...
  • Page 91 NEO 2 Interface Developer’s Guide AID Configuration TLVs Data Object Usage Description Format Length Name Identifies the application as described in Application 9F06 MAND ISO/IEC 7816-5. 5 – 16 Identifier (AID) This must be the 2 TLV in the data field. Automatically switch to Pass-Through Mode when PICC is unknown.
  • Page 92 NEO 2 Interface Developer’s Guide The TLV Group number that contains the characteristics for this AID This must be the 1 TLV in Data Field. For MasterCard PayPass and any applications TLV Group that use the combined selection feature, this FFE4 MAND Number...
  • Page 93 NEO 2 Interface Developer’s Guide This kernel identifier will be used if the card does not supply a valid Kernel ID (9F2A). If this tag is not provided, then default kernel identifiers will be used depending on the application: Configurable Card Application Default KID FFEA...
  • Page 94 NEO 2 Interface Developer’s Guide Name Length Value (Hex) Application (Hex) Name Kernel ID Transaction FFE9/DFEE54 02 00 80 02 01 80 02 09 80 02 17 80 02 Type Group List 20 80 Configurable Kernel FFEA/DFEE59 Identifier APPLICATION FFE2/DFEE4C Group FFE4/DFEE2D 9F06...
  • Page 95 NEO 2 Interface Developer’s Guide Name Length Value (Hex) Application (Hex) Name Kernel ID Transaction FFE9/DFEE54 05 00 D0 05 01 D0 05 09 D0 05 20 D0 Type Group List Configurable Kernel FFEA/DFEE59 Identifier APPLICATION FFE2/DFEE4C Group FFE4/DFEE2D 9F06 A0 00 00 03 24 10 10 Discover Expresspay Partial Selection...
  • Page 96: 2-Byte Tags Vs. 3-Byte Tags

    NEO 2 Interface Developer’s Guide Name Length Value (Hex) Application (Hex) Name Exclude from FFE8/DFEE53 Processing APPLICATION FFE2/DFEE4C 4.4. 2-byte tags vs. 3-byte tags Some older versions of NEO firmware support the use of certain tags that are not compliant with BER-TLV format (the non-compliant tags are 2-byte tags that begin with 'FF').
  • Page 97 NEO 2 Interface Developer’s Guide 2-byte tag 3-byte tag Description FFF8 DFEE37 UI Scheme: Value = 00: ViVOtech User Interface Value = 02: Visa Wave User Interface Value = 03: EMEA User Interface. FFF9 DFEE1C LCD Font Size. FFFA DFEF29 LCD delay time(ms).
  • Page 98 NEO 2 Interface Developer’s Guide 2-byte tag 3-byte tag Description FFE9 DFEE54 Kernel ID transaction type Group List. Defines a Kernel ID, a transaction type and a group number (triplet). This TLV uses variable length data, three bytes at a time up to 24 bytes.
  • Page 99: Card Application Selection

    NEO 2 Interface Developer’s Guide 5. Card Application Selection 5.1. Combined Selection The selection of a card application may be based on a Kernel ID, transaction type, and other requirements. The Selection Features tag (FFE3 or DFEE4D) directs the flow through the selection logic in the firmware.
  • Page 100: Partial Selection (Ffe1 Or Dfee4B)

    NEO 2 Interface Developer’s Guide 5.2. Partial Selection (FFE1 or DFEE4B) For some applications, an AID on the card may be longer than an AID configured in the reader. If partial selection is allowed, the AID will be considered a match if all of the AID configured in the reader matches the first portion of an AID in the card.
  • Page 101: Terminal Aid List (Dfef2C)

    NEO 2 Interface Developer’s Guide 5.4. Terminal AID List (DFEF2C) The Terminal AID List Tag DFEF2C is associated with each Terminal AID set by the Load AID (04-02) command. This tag can control which Terminal AID is sent to the card if: the Select AID Command (with PPSE) returns a “Select AID Failed”...
  • Page 102: Card Application Specific Behavior

    NEO 2 Interface Developer’s Guide 6. Card Application Specific Behavior This section contains information specific to a particular card application. 6.1. MasterCard PayPass M/Chip The implementation of MasterCard M/Chip 3.0 follows the EMV mode transaction flow. This includes support for magstripe, but does not include data exchange functionality. The M/Chip 3.0 implementation incorporates new functionality for: Balance reading before and after GenAC •...
  • Page 103: Torn Transaction Recovery

    NEO 2 Interface Developer’s Guide 6.1.3. Torn Transaction Recovery A method exists for saving data from a torn transaction and matching up that transaction with a card that re-appears in the field to complete the transaction. Due to space limitations, a reader can retain a maximum number of two torn transaction records.
  • Page 104 NEO 2 Interface Developer’s Guide 6.1.7.2. SDA Transactions The combined length of the following data objects personalized to the card cannot be greater than 2400 bytes. Signed static application data • Static data used in data authentication (2048 bytes maximum) •...
  • Page 105: Protocol Command Reference: Protocol 1

    NEO 2 Interface Developer’s Guide 7. Protocol Command Reference: Protocol 1 NOTE: Protocol 1 is deprecated. This section is provided for reference only and will eventually be eliminated. Protocol 2 is now the supported default protocol. For currently supported commands in Protocol 2, see Command Reference: Protocol 7.1.
  • Page 106 NEO 2 Interface Developer’s Guide Response Frame (ACK) Byte 0-8 Byte 9 Byte 10 Byte 11 Byte 12 Byte 13 Byte 14 Byte 15 Frame Tag Frame Type Command Status Data1 Data2 (MSB) (LSB) Tracks/ ViVOtech\0 ‘A’ Status DataLen Error Code Byte 12 is used for tracks or error codes, depending on the value of the status in Byte 1.
  • Page 107 NEO 2 Interface Developer’s Guide If the host fails to receive the track data, it can send a NACK frame to request the reader to resend the track data. To ensure that the reader resends the track data, the NACK frame must be received within 500ms after it sends the original track data.
  • Page 108: Get Vivopay Firmware Version (29-00)

    NEO 2 Interface Developer’s Guide An example of the data frame sent in response to the Get Full Track Data command is as follows: 56 69 56 4F 74 65 63 68 00 44 42 35 33 32 35 33 35 30 30 30 30 36 32 33 35 36 37 5E 53 4D 49 54 48 2F 4A 4F 48 4E 5E 30 35 30 38 35 30 31 31 30 30 36 32 36 30 30 34 34 35 30 30 30 30 30 37 38...
  • Page 109: Key Manager Commands Protocol

    NEO 2 Interface Developer’s Guide Status: OK (see Status Code Protocol DataLen: Number of data bytes in the data frame to follow. This does not include the frame tag, frame type and checksum bytes. Data Frame from ViVOpay Reader to PC (If the reader sent an ACK) Byte 0-8 Byte 9 Byte 10 …...
  • Page 110 NEO 2 Interface Developer’s Guide ViVOpay reader is receiving multiple data frames it expects each successive byte to arrive within the inter-frame timeout (see table below). If the data is not received within the timeout period listed, the ViVOpay reader times out and a timeout failure response is sent. Serial Commands Inter-Byte Inter-Frame...
  • Page 111: Set Ca Public Key (24-01) Protocol 1

    NEO 2 Interface Developer’s Guide 7.2.1. Set CA Public Key (24-01) Protocol 1 Use this command to send data related to a CA public key to the ViVOpay reader for storing in a secure environment (Crypto Chip memory). The public key is uniquely identified by the <RID, Key Index>...
  • Page 112 NEO 2 Interface Developer’s Guide ACK Frame from ViVOpay Reader Byte 0-8 Byte 9 Byte 10 Byte 11 Byte 12 Byte 13 Byte 14 Byte 15 Frame Tag Frame Type Command Status Data1 Data2 CRC (LSB) (MSB) ViVOtech\0 ‘A’ Status Status: OK (or see Status Code Protocol NACK from ViVOpay Reader...
  • Page 113 NEO 2 Interface Developer’s Guide Digital signature algorithm to be used with CA CaPublicKeyAlgoIndicator Binary public key. Valid values: 01h: RSA 8-27 CaPublicKeyChecksum Binary CA public key checksum CA public key exponent. Value can be 3 (Len=1 Byte) or +1=65537=010001h (Len=3 Bytes). (PICC-based 28-31 CaPublicKeyExponent...
  • Page 114: Delete Ca Public Key (24-02) Protocol 1

    NEO 2 Interface Developer’s Guide Where p = DataLen2 > 0 If the second data frame is sent, then the data field in this frame contains the remaining CA public key related data. On receiving valid data, the reader sends it to the Crypto Chip for secure storage. The Crypto Chip checks the data and stores it in its memory.
  • Page 115 NEO 2 Interface Developer’s Guide ACK Frame from ViVOpay Reader (or NACK) ACK Frame Byte 0-8 Byte 9 Byte 10 Byte 11 Byte 12 Byte 13 Byte 14 Byte 15 Frame Tag Frame Type Command Status Data1 Data2 CRC (LSB) (MSB) ViVOtech\0 ‘A’...
  • Page 116: Delete All Ca Public Keys (24-03) Protocol 1

    NEO 2 Interface Developer’s Guide 7.2.3. Delete All CA Public Keys (24-03) Protocol 1 Use this command to instruct the ViVOpay reader to delete all previously set CA public keys from within secure storage in the Crypto Chip. The keys are deleted regardless of the <RID, Key Index>...
  • Page 117: Miscellaneous Protocol 1 Commands

    NEO 2 Interface Developer’s Guide 7.3. Miscellaneous Protocol 1 Commands 7.3.1. Set RF Error Reporting (17-03) This command allows the POS application to enable or disable RF error code reporting for the Get Full Track Data command. When RF error code reporting is enabled, any RF error codes are reported to the POS application through the ACK frame for the Get Full Track Data command.
  • Page 118: Protocol Command Reference: Protocol 2

    NEO 2 Interface Developer’s Guide 8. Protocol Command Reference: Protocol 2 8.1. RTC (Real Time Clock) Commands 8.1.1. Set/Get 24-hr Self-Check Time (25-07) The Set/Get 24-hr Self-Check Time command instructs the ViVOpay reader to set a specific time for 24-hr self-check in Coordinated Universal Time. NOTE: If this command sets the 24-hr self-check time successfully, the device reboots after responding.
  • Page 119: General Commands

    NEO 2 Interface Developer’s Guide Command Frame (Get 24 hr Self-Check Time) Byte 0-9 Byte 10 Byte 11 Byte 12 Byte 13 Byte 14 Byte 15 Header Tag Data Data Sub- & Protocol Command Length Length CRC (LSB) CRC (MSB) Command Version (MSB)
  • Page 120: Get Drs Info (C7-3A)

    NEO 2 Interface Developer’s Guide 8.2.2. Get DRS Info (C7-3A) The Get DRS Info command retrieves information about hardware-related abnormal status and "tamper state" causes. Command Frame Byte 14 … Byte Byte Byte 0-9 Byte 10 Byte 11 Byte 12 Byte 13 Byte 14+n-1 14+n...
  • Page 121 NEO 2 Interface Developer’s Guide Item SourceID SourceLen SourceData Tamper Switch 0x11 Bit 0: Tamper Switch 0 (0-Normal, 1-Error) Bit 1: Tamper Switch 1 (0- Normal, 1-Error) Bit 2: Tamper Switch 2 (0- Normal, 1-Error) Bit 3: Tamper Switch 3 (0- Normal, 1-Error) Bit 4: Tamper Switch 4 (0- Normal, 1-Error) Bit 5: Tamper Switch 5 (0- Normal, 1-Error) Bit 6: Tamper Switch 6 (0- Normal;...
  • Page 122: Set Poll Mode (01-01)

    NEO 2 Interface Developer’s Guide Example test data: Command sent: 5669564f746563683200c73a00000a84 Data received (no error): 5669564f746563683200c70000210001000101000201ff10010011010012010013 01001401001501001601001f01ff780f 00 01 00 01 01 00 02 01 FF 10 01 00 11 01 00 12 01 00 13 01 00 14 01 00 15 01 00 16 01 00 1F 01 FF...
  • Page 123: Control User Interface (01-02)

    NEO 2 Interface Developer’s Guide In Auto Poll Mode, the RF field is always active and the reader continuously polls for the presence of a contactless transaction. There is no requirement for the terminal to initiate a transaction. When a supported contactless MAGSTRIPE card is detected, the track data can be sent out on the magstripe interface (if the ViVOpay unit supports it) or retrieved using the Transaction Result (03-00 and 03-40) command.
  • Page 124 NEO 2 Interface Developer’s Guide There are three cases depending on the LCD Message index number: Indexes 00h to 07h correspond to messages that automatically display on the reader. • In most cases, the terminal does not trigger these messages. Indexes 08h to 0Bh are messages triggered by the terminal.
  • Page 125: Set/Get Source For Rtc/Lcd/Buzzer/Led (01-05)

    NEO 2 Interface Developer’s Guide Length Data Item Description (bytes) 07h: One long beep of 600 ms 08h: One long beep of 800 ms 00h: LED 0 (Power LED) 01h: LED 1 02h: LED 2 03h: LED 3 LED Number FFh: All LEDs Where the LEDs are numbered 0, 1, 2, 3 counting from the left.
  • Page 126: Header Tag & Protocol Command Version

    NEO 2 Interface Developer’s Guide Command Frame (Set Source) Byte 15 Byte Byte 0-9 Byte 10 Byte 11 Byte 12 Byte 13 Byte 14 Byte 16 Header Tag Data Data Sub- Data Data & Protocol Command Length Length Command Byte1 Byte2 (LSB) (MSB)
  • Page 127 NEO 2 Interface Developer’s Guide Bit3 Bit2 Description Don’t use LCD Use LCD from ViVOpay reader Use LCD from external source Use LCD from both reader and external source Bit5 Bit4 Description Don’t use RTC Use RTC from ViVOpay reader Not allowed Not allowed Data Byte2 Definition:...
  • Page 128: Set Configuration Defaults (04-09)

    NEO 2 Interface Developer’s Guide If configured to use internal power LEDs, the ViVOpay reader’s power LEDs are used to indicate the reader’s power state. If configured to use external power LEDs, the power LEDs on the terminal are used. Note: Users can attempt to control the Power LED, but other UI behavior takes control, so attempting to manipulate the Power LED in non-Pass-Through Mode has no effect.
  • Page 129: Set Configuration Defaults And Keep Encryption Key Command (04-0A)

    NEO 2 Interface Developer’s Guide Baud rate ( tag FE 02) • Boot up Message Enable (tag FE 03) • Serial Number (tag DF 89 1A) • UI Source Config (tag FE 05) • Analog parameters (tag FE FE) • 8.2.7.
  • Page 130: Get Configuration (03-02)

    NEO 2 Interface Developer’s Guide memory. If a TLV data object is incorrectly formatted, the reader stops processing the object. A single command may contain more than one TLV data object. The Set Configuration (04-00) command is the only mechanism for setting the values of global configuration parameters.
  • Page 131: Get Version: Protocol 2 (29-00)

    NEO 2 Interface Developer’s Guide When the reader receives this command, it returns the current values for all the parameters that can be set using the Set Configuration command. Each parameter is returned as a TLV data object. Floor limits for different AIDs are preceded by the TLV of the specific AID associated with that object.
  • Page 132: Get Product Full Information (29-01)

    NEO 2 Interface Developer’s Guide 8.2.11. Get Product Full Information (29-01) The Get Product Full Information command retrieves all module information for NEO 2.0 products, including Contact and Contactless card modules. Command Frame Byte 0-9 Byte 10 Byte 11 Byte 12 Byte 13 Byte14 Byte 15...
  • Page 133: Get Usb Boot Loader Version (29-04)

    NEO 2 Interface Developer’s Guide Application Type Mastercard Contactless Reader Specification, v3.1.1 Application Selection PPSE Module v1.2 Mechanism Master Card CL Kernel MasterCard PayPass M/Chip 3.1 v1.3 Operation System uCOS3 v1.31 Firmware Version VP5300 FW v1.00.S Test Application Java Lab Tool v2.07.08 Test Configuration Data Sets PayPass 3.1.1 Configurations v1.00 Test Environment Interface...
  • Page 134: Get Contact Emv L2 Kernel Version Detail (29-07)

    NEO 2 Interface Developer’s Guide Response Frame Byte 14 … Byte 0-9 Byte 10 Byte 11 Byte 12 Byte 13 Byte 14+n Byte 15+n Byte 14+n-1 Header Tag Data Data & Protocol Command Status Code Length Length Data CRC (MSB) (LSB) Version (MSB)
  • Page 135: Get Contact Emv L2 Terminal Configuration Checksum (29-09)

    NEO 2 Interface Developer’s Guide Command Frame Byte 14 … Byte 0-9 Byte 10 Byte 11 Byte 12 Byte 13 Byte 14+n Byte 15+n Byte 14+n-1 Header Tag Data Data Sub- & Protocol Command Length Length Data CRC (LSB) CRC (MSB) Command Version (MSB)
  • Page 136: Get Uid Of Mcu (29-17)

    NEO 2 Interface Developer’s Guide Response Frame Byte 14 … Byte 0-9 Byte 10 Byte 11 Byte 12 Byte 13 Byte 14+n Byte 15+n Byte 14+n-1 Header Tag Data Data & Protocol Command Status Code Length Length Data CRC (MSB) (LSB) Version (MSB)
  • Page 137 NEO 2 Interface Developer’s Guide Command Frame Byte 0-9 Byte 10 Byte 11 Byte 12 Byte 13 Byte 14 Byte 15 Header Tag & Data Data Sub- Protocol Command Length Length CRC (LSB) CRC (MSB) Command Version (MSB) (LSB) ViVOtech2\0 Response Frame Byte 14 …...
  • Page 138: Get Health Data From Scrp (29-30)

    NEO 2 Interface Developer’s Guide Insert Card Counter Last 4: Remove Card Counter 8.2.19. Get Health Data from SCRP (29-30) The Get Health Data from SCRP command retrieves Health Data from SCRP Only. This command is always valid in SCRP. Command Frame Byte 0-9 Byte 10...
  • Page 139: Set Baud Rate (30-01)

    NEO 2 Interface Developer’s Guide 8.2.20. Set Baud Rate (30-01) The Set Baud Rate command instructs the reader to change its baud rate to the specified value. If the command frame is valid and the ViVOpay reader supports the specified baud rate, it returns an OK response and then switches to the specified baud rate.
  • Page 140: Set Baud Rate And Audio Level (30-03)

    NEO 2 Interface Developer’s Guide Note: If the new baud rate is set by sending the Set Temporary Baud Rate command, then after power up, the baud rate will return to the previous value. If the new baud rate is set by sending the Set Baud Rate command the baud rate will still be the new value then power Command Frame Byte 0-9...
  • Page 141 NEO 2 Interface Developer’s Guide Command Frame Byte 0-9 Byte 10 Byte 11 Byte 12 Byte 13 Byte 14 Byte 14+n Byte 15+n Header Tag Data Data Sub- & Protocol Command Length Length Data CRC (LSB) CRC (MSB) Command Version (MSB) (LSB) ViVOtech2\0...
  • Page 142: Set Cable Type (32-02)

    NEO 2 Interface Developer’s Guide 8.2.23. Set Cable Type (32-02) The Set Cable Type command sets the type of cable the reader uses; some readers have two types of cable, a so-called "long cable" and a "short cable." Some parameter calibrations differ according to cable type.
  • Page 143: Get Serial Number (12-01)

    NEO 2 Interface Developer’s Guide 8.2.25. Get Serial Number (12-01) Note: This command can only be used after the reader has completed a Set Serial Number command. The Get Serial Number command instructs the ViVOpay reader to return the 15-digit serial number stored in its non-volatile memory.
  • Page 144: Get Ethernet Mac Address (D1-11)

    NEO 2 Interface Developer’s Guide Length Description Get Ethernet Address Get WI-FI Address Get Bluetooth Address Response Frame Byte Byte Byte Byte 0-9 Byte 10 Byte 11 Byte 12 Byte 13 14-15 Header Tag Length Length Command Status Data & Protocol (LSB) (MSB) Status...
  • Page 145: Set Network Configuration (D1-13)

    NEO 2 Interface Developer’s Guide Response Frame Byte 14- Byte 0-9 Byte 10 Byte 11 Byte 12 Byte 13 Byte 14+n Byte 14+n+1 Byte 19 Header Tag Length Length Command Status Data & Protocol (LSB) (MSB) Data Status ViVOtech2/0 varible (See D1-13 Varies Varies...
  • Page 146: Set Wireless Work Mode (D1-19)

    NEO 2 Interface Developer’s Guide Example: Set ethernet configuration as: IP address: 192.168.6.99 Net mask: 255.255.255.0 Gateway: 192.168.6.1 DNS: 192.168.6.17 TX: 56 69 56 4F 74 65 63 68 32 00 D1 13 00 36 31 00 31 39 32 2E 31 36 38 2E 36 2E 39 39 00 32 35 35 2E 32 35 35 2E 32 35 35 2E 30 00 31 39 32 2E 31 36 38 2E 36 2E 31 00 31 39 32 2E 31 36 38 2E 36 2E 31 37 00 04 8B...
  • Page 147: Get Wireless Work Mode (D1-1A)

    NEO 2 Interface Developer’s Guide 8.2.31. Get Wireless Work Mode (D1-1A) The Get Wireless Work Mode command retrieves the ViVOpay reader’s wireless work mode. Command Frame Byte 0-9 Byte 10 Byte 11 Byte 12 Byte 13 Byte 14 Byte 15 Byte 16 Header Tag &...
  • Page 148: Get Wi-Fi Configuration (D1-18)

    Status ViVOtech2/0 Varies Varies Code Table Notes: Wi-Fi works as a TCP Server, port number 1025. Example: Set Wi-Fi configuration as: AP SSID: idtech-ShangHai-1 • AP Password: id64954196 • IP Address: 192.168.6.119 • Net mask: 255.255.255.0 • Gateway: 192.168.6.1 •...
  • Page 149: Set System Language (D1-27)

    NEO 2 Interface Developer’s Guide 8.2.34. Set System Language (D1-27) The Set System Language command sets the system language for NEO 2 products and currently supports English and Japanese. Command Frame Byte 14 – Byte 0-9 Byte 10 Byte 11 Byte 12 Byte 13 Byte 18...
  • Page 150: Set Model Number (90-15)

    NEO 2 Interface Developer’s Guide Data Objects Data Field Length (bytes) Description 0x00: Bootup notification is disabled. Status 0x01: Bootup notification (raw) is enabled. 0x02: Bootup notification (frame) is enabled. If bootup notification is enabled, the firmware transmits its platform info string one time at the end of bootup.
  • Page 151: Configurable Aid And Group Commands

    NEO 2 Interface Developer’s Guide Response Frame Byte 0-9 Byte 10 Byte 11 Byte 12 Byte 13 Byte 14 Byte 15 Header Tag & Status Data Length Data Length Command CRC (MSB) CRC (LSB) Protocol Version Code (MSB) (LSB) See status ViVOpayV2\0 ‘90’...
  • Page 152: Set Configurable Group (04-03)

    NEO 2 Interface Developer’s Guide In addition to the above requirements: All AIDs must reference a TLV Group (in the TLV Group Number TLV) that already exists • Any AID with a Partial Select TLV must also include the Max AID Length TLV •...
  • Page 153: Get Configurable Aid (03-04)

    NEO 2 Interface Developer’s Guide For M/Chip 3.0, Group 0 is not used. If you are configuring a group for M/Chip PayPass, then you should refer to the PayPass Group Tags. Otherwise, refer to the Group Configuration Tags. Command Frame Byte 14 …...
  • Page 154 NEO 2 Interface Developer’s Guide Command Frame Byte 14 … Byte 0-9 Byte 10 Byte 11 Byte 12 Byte 13 Byte 14+n Byte 15+n Byte 14+n-1 Header Tag Data Data Sub- & Protocol Command Length Length Data CRC (LSB) CRC (MSB) Command Version (MSB)
  • Page 155: Get Configurable Group (03-06)

    NEO 2 Interface Developer’s Guide 8.3.4. Get Configurable Group (03-06) Use this command to return all TLVs associated the specified Configurable Group. A configurable Group Tag must be included as the ONLY TLV in this command. The response should contain all of the Tags associated with this configurable Group. Command Frame Byte 14 …...
  • Page 156: Delete Configurable Aid (04-04)

    NEO 2 Interface Developer’s Guide Note: For a PayPass group, if a TLV data item is not present in the Group then it will not be present in the data returned by this command. However, this does not mean that there is no value for this particular TLV in order to perform a transaction.
  • Page 157: Delete Configurable Group (04-05)

    NEO 2 Interface Developer’s Guide 8.3.6. Delete Configurable Group (04-05) Use this command to delete a configurable Group. This means that this Group can no longer be used to load the parameters for a transaction. Command Frame Byte 14 … Byte 0-9 Byte 10 Byte 11...
  • Page 158: Get All Groups (03-07)

    NEO 2 Interface Developer’s Guide Command Frame Byte 0-9 Byte 10 Byte 11 Byte 12 Byte 13 Byte 14 Byte 15 Header Tag & Data Data Sub- Protocol Command Length Length CRC (LSB) CRC (MSB) Command Version (MSB) (LSB) ViVOtech2\0 Response Frame Byte 14 …...
  • Page 159: Transaction Related Commands: Contact

    NEO 2 Interface Developer’s Guide The only Data Objects that should be returned from the GAG command are Group Tags. These are the same as those itemized in the Group Configuration Tags table. The reader sends one or more frames with all the Group TLVs in it. Each Group begins with the Group Number TLV for the Group in question.
  • Page 160: Contact Emv L2 Transaction Flow

    NEO 2 Interface Developer’s Guide 8.4.2. Contact EMV L2 Transaction Flow Reader Host offline Offline Start contact transaction command (60-10) If command is OK, first response 0x63 Display or Select Menu Command (61-01) If need select menu, response command (61-01) Start contact transaction response If MSR operation , response MSR data, and transaction is finished...
  • Page 161: Contact Retrieve Application Data (60-01)

    NEO 2 Interface Developer’s Guide 8.4.3. Contact Retrieve Application Data (60-01) This command returns the User AID parameters. The host must send AID in the command. The reader then returns all tags associated with that User AID in response. Command Frame Byte 14 …...
  • Page 162: Contact Set Application Data (60-03)

    NEO 2 Interface Developer’s Guide Data Objects <5~16 bytes AID> If length is 00 then remove all Application Data. Response Frame Byte 14 … Byte 0-9 Byte 10 Byte 11 Byte 12 Byte 13 Byte 14+n Byte 15+n Byte 14+n-1 Header Tag Data Data...
  • Page 163: Contact Retrieve Terminal Data (60-04)

    NEO 2 Interface Developer’s Guide Note: If a <TLV> format was error, status code is 0x05. • If AID List has full (MAX is 16), status code is 0x61. • Application Data List Example Data Value name Length Data (Byte) 9F01 Acquirer Identifier 56 49 53 41 30 30...
  • Page 164: Contact Remove Terminal Data (60-05)

    NEO 2 Interface Developer’s Guide Response Frame Byte 14 … Byte 0-9 Byte 10 Byte 11 Byte 12 Byte 13 Byte 14+n Byte 15+n Byte 14+n-1 Header Tag Data Data & Protocol Command Status Code Length Length Data CRC (MSB) (LSB) Version (MSB)
  • Page 165: Contact Set Terminal Data (60-06)

    NEO 2 Interface Developer’s Guide 8.4.8. Contact Set Terminal Data (60-06) This command creates new terminal data according to the TLVs passed in. The terminal data is mandatory and seldom changes. It represents configuration data that usually gets set one time, in pre-production, and never changes thereafter.
  • Page 166 NEO 2 Interface Developer’s Guide 9F1C Terminal Identification 38 37 36 35 34 33 32 31 9F4E Merchant Name and Location <=64 31 30 37 32 31 20 57 61 6C 6B 65 72 20 53 74 2E 20 43 79 70 72 65 73 73 2C 20 43 41 20 2C 55 53 41 2E...
  • Page 167 NEO 2 Interface Developer’s Guide Terminal configuration Identification Major 9F33 60 F8 C8 60 28 C8 60 D8 C8 60 08 C8 parameters 9F35 9F40 F0 00 F0 A0 F0 00 F0 A0 60 00 F0 50 60 00 F0 50 DF11 DF26 DF27...
  • Page 168: Byte 1

    NEO 2 Interface Developer’s Guide 9F35 Terminal Type Environment Financial Merchant Cardholder Change Institution Attended Major Online only Offline with online capability Offline only Unattended Major Online only Offline with online capability Offline only 9F40 Additional Terminal Capabilities Byte 1 Meaning Change Cash...
  • Page 169: Byte 4

    NEO 2 Interface Developer’s Guide Byte 4 Meaning Change Print, attendant Print, cardholder Display, attendant Display, cardholder Code table 10 Major Code table 9 Major Byte 5 Meaning Change Code table 8 Major Code table 7 Major Code table 6 Major Code table 5 Major...
  • Page 170: Byte 3

    NEO 2 Interface Developer’s Guide Cardholder confirmation Major Preferred display order Multi language EMV language selection method Default DDOL Major Byte 3 Meaning Change Major (Revocation of Issuer Public Key Certificate (DF26)) Manual action when CA PK loading Major fails CA PK verified with check sum Major Bypass PIN Entry...
  • Page 171: Byte 6

    NEO 2 Interface Developer’s Guide TAC/IAC default process when Major unable to go online (Normal) Byte 6 Meaning Change Forced Online support Major Forced acceptance support Major Advices support Major Issuer referrals support Major Batch data capture Major Online data capture Major Default TDOL Major...
  • Page 172: Contact Retrieve Aid List (60-07)

    NEO 2 Interface Developer’s Guide 8.4.9. Contact Retrieve AID List (60-07) Use this command to return all AIDs list in the reader. This command may be used to verify configured AIDs in the reader. Command Frame Byte 14 … Byte 0-9 Byte 10 Byte 11 Byte 12...
  • Page 173: Contact Remove Ca Public Key (60-09)

    NEO 2 Interface Developer’s Guide Response Frame Byte 14 … Byte 0-9 Byte 10 Byte 11 Byte 12 Byte 13 Byte 14+n Byte 15+n Byte 14+n-1 Header Tag Data Data & Protocol Command Status Code Length Length Data CRC (MSB) (LSB) Version (MSB)
  • Page 174: Contact Set Ca Public Key (60-0A)

    NEO 2 Interface Developer’s Guide Response Frame Byte 14 … Byte 0-9 Byte 10 Byte 11 Byte 12 Byte 13 Byte 14+n Byte 15+n Byte 14+n-1 Header Tag Data Data & Protocol Command Status Code Length Length Data CRC (MSB) (LSB) Version (MSB)
  • Page 175: Contact Retrieve Ca Public Key List (60-0B)

    NEO 2 Interface Developer’s Guide Byte 14 … Byte 0-9 Byte 10 Byte 11 Byte 12 Byte 13 Byte 14+n Byte 15+n Byte 14+n-1 Header Tag Data Data & Protocol Command Status Code Length Length Data CRC (MSB) (LSB) Version (MSB) (LSB) See Status...
  • Page 176: Contact Retrieve Certification Revocation List (60-0C)

    NEO 2 Interface Developer’s Guide 8.4.14. Contact Retrieve Certification Revocation List (60-0C) This command retrieves a sequence of consecutive records from the EMV revocation list. Command Frame Byte 14 … Byte 0-9 Byte 10 Byte 11 Byte 12 Byte 13 Byte 14+n Byte 15+n Byte 14+n-1...
  • Page 177: Contact Set Certification Revocation List (60-0E)

    NEO 2 Interface Developer’s Guide Response Frame Byte 14 … Byte 0-9 Byte 10 Byte 11 Byte 12 Byte 13 Byte 14+n Byte 15+n Byte 14+n-1 Header Tag Data Data & Protocol Command Status Code Length Length Data CRC (MSB) (LSB) Version (MSB)
  • Page 178: Contact Start Transaction (60-10)

    NEO 2 Interface Developer’s Guide Byte 14 … Byte 0-9 Byte 10 Byte 11 Byte 12 Byte 13 Byte 14+n Byte 15+n Byte 14+n-1 Header Tag Data Data Sub- & Protocol Command Length Length Data CRC (LSB) CRC (MSB) Command Version (MSB) (LSB)
  • Page 179 NEO 2 Interface Developer’s Guide <TimeOut2> (2 bytes, unit is Second). Waiting time till “Authenticate Transaction” • command. <App Data> format is <TLV1> <TLV2> … <TLVn>. Refer to Transaction Data. • Transaction Data List (start command parameters) Data ID Value name Length (Byte) 9F02 Amount, Authorized(Numeric)
  • Page 180 NEO 2 Interface Developer’s Guide First Response Frame Byte 14 … Byte 0-9 Byte 10 Byte 11 Byte 12 Byte 13 Byte 14+n Byte 15+n Byte 14+n-1 Header Tag Data Data & Protocol Command Status Code Length Length Data CRC (MSB) (LSB) Version (MSB)
  • Page 181 NEO 2 Interface Developer’s Guide Data Item Length (bytes) Description Code (DFEE25) TLV Data Variable Output default Start Transaction Output TLV data list. If set tag DFEE1A, The TLV data will be follow list. TLV (DF30) Variable Track Data Source. (ViVOpay This tag is embedded in the ViVOpay Group tag.
  • Page 182 NEO 2 Interface Developer’s Guide Data Item Length (bytes) Description 0 1 0 0 = Visa FPE 0 1 0 1 = Verifone FPE 0 1 1 0 = TransArmor TDES-DUKPT Bits 4 to 6: Reserved Bit 7: 0 = No MAC Verification Data 1 = Has MAC Verification Data MSR Data Objects Length...
  • Page 183 NEO 2 Interface Developer’s Guide Length Data Item Description (bytes) TLV Encrypt Variable Encryption and Data Capture Information. Information Length: 1 or 2 (variable) (DFEE26) Values: Byte 1: Same as “Attribution” byte definition. Namely: Bits 4/3/0: Captured Data Type 0 0 0 = Contact Transaction 0 0 1 = Contactless Transaction / EMV 1 0 1 = Contactless Transaction / MSD 0 1 x = MSR Card...
  • Page 184 NEO 2 Interface Developer’s Guide Length Data Item Description (bytes) Byte 1: Same as “Attribution” byte definition. Namely: Bits 4/3/0: Captured Data Type 0 0 0 = Contact Transaction 0 0 1 = Contactless Transaction / EMV 1 0 1 = Contactless Transaction / MSD 0 1 x = MSR Card Bits 2/1: Encryption Mode 0 0 = TDES...
  • Page 185: Contact Authenticate Transaction (60-11)

    NEO 2 Interface Developer’s Guide Default Start Transaction Output TLV Data List Data ID Value name Length (Byte) Track2 Equivalent Data <=19 <=10 5F34 PAN Sequence Number 5F20 Cardholder Name 2~26 5F24 Application Expire Date 9F20 Track2 Discretionary Data Var. 5F25 Application Effective Date 5F2D...
  • Page 186 NEO 2 Interface Developer’s Guide Data Objects <GoOnline><TimeOut> <Output Data List>-. <GoOnline>(1byte). 0x01 means force the transaction to go online, 0x00 means do not • force online (allow normal processing to occur via Terminal Action Analysis). <TimeOut> (2 byte, unit is Second).means terminal waiting time for host response •...
  • Page 187 NEO 2 Interface Developer’s Guide Second Response Frame Byte 14 … Byte 0-9 Byte 10 Byte 11 Byte 12 Byte 13 Byte 14+n Byte 15+n Byte 14+n-1 Header Tag Data Data & Protocol Command Status Code Length Length Data CRC (MSB) (LSB) Version (MSB)
  • Page 188 NEO 2 Interface Developer’s Guide Length Data Item Description (bytes) 0 1 1 0 = TransArmor TDES-DUKPT Bits 4 to 6: Reserved Bit 7: 0 = No MAC Verification Data 1 = Has MAC Verification Data TLV KSN Variable If encrypt disable, this tag is not present. (DFEE12) Contact Response Variable...
  • Page 189: Contact Apply Host Response (60-12) - Complete Transaction

    NEO 2 Interface Developer’s Guide 9F03 Amount, Other (Numeric) 9F07 Application Usage Control 9F08, 9F09 Application Version Number (Kernel) 9F0D, 9F0E, 9F0F Issuer Action Codes 9F0B Cardholder Name (Extended) 27 to 45 9F10 Issuer Application Data Var. up to 32 9F11 Issuer Code Table Index 9F12...
  • Page 190 NEO 2 Interface Developer’s Guide Command Frame Byte 14 … Byte 0-9 Byte 10 Byte 11 Byte 12 Byte 13 Byte 14+n Byte 15+n Byte 14+n-1 Header Tag Data Data Sub- & Protocol Command Length Length Data CRC (LSB) CRC (MSB) Command Version (MSB)
  • Page 191 NEO 2 Interface Developer’s Guide Second Response Frame Byte 14 … Byte 0-9 Byte 10 Byte 11 Byte 12 Byte 13 Byte 14+n Byte 15+n Byte 14+n-1 Header Tag Data Data & Protocol Command Status Code Length Length Data CRC (MSB) (LSB) Version (MSB)
  • Page 192 NEO 2 Interface Developer’s Guide Length Data Item Description (bytes) 0 1 0 1 = Verifone FPE 0 1 1 0 = TransArmor TDES-DUKPT Bits 4 to 6: Reserved Bit 7: 0 = No MAC Verification Data 1 = Has MAC Verification Data TLV KSN Variable If encryption is not enabled, this tag is not present.
  • Page 193: Contact Retrieve Transaction Result (60-13)

    NEO 2 Interface Developer’s Guide 8.4.21. Contact Retrieve Transaction Result (60-13) After a contact EMV transaction is completed, you can use this command to get other TLVs. Command Frame Byte 14 … Byte 0-9 Byte 10 Byte 11 Byte 12 Byte 13 Byte 14+n Byte 15+n...
  • Page 194 NEO 2 Interface Developer’s Guide Length Data Item Description (bytes) 0 1 = AES 1 x = Refer to "Extended Encryption Mode" further below. Bit 5: Attribution Byte Extension. 0 = Length of tag is 1 byte 1 = Length of tag is 2 bytes Bits 6/7: Encryption Status 0 0 = EMV off, MSR/MSD off 0 1 = EMV off , MSR/MSD on...
  • Page 195: Contact Get Reader Status (60-14)

    NEO 2 Interface Developer’s Guide 9F42 9F43 9F44 9F45 9F46 9F47 9F48 9F49 9F4A 9F4B 9F4C 9F4D BF0C DF62 9F4E 9F5B DFEE15 DFEE16 DFEE17 DFEE18 DFEE19 DFEE1A DFEE1B DF11 DF14 DF15 DF17 DF18 DF19 DF20 DF21 DF22 DF25 DF26 DF27 DF28 DF10 DF40...
  • Page 196: Contact Get Ics Identification (60-15)

    NEO 2 Interface Developer’s Guide 8.4.23. Contact Get ICS Identification (60-15) Contact Common EMV L2 approved configurations of certification are 1C, 2C, 3C, and 4C. This command can get identification of ICS terminal configuration in reader. Command Frame Byte 14 … Byte 0-9 Byte 10 Byte 11...
  • Page 197: Contact Lcd Display Control (61-01) (Reader Sends To Host)

    NEO 2 Interface Developer’s Guide Examples: Set 3C configuration: 5669564f746563683200601600010392ed Reader responds with: 5669564f746563683200600000003d35 (Success) Now set terminal data (TLVs) with config values appropriate to 3C: 5669564f746563683200600600c818005f3601029f1a0208409f3501259f330360 d8c89f40056000f050019f1e085465726d696e616c9f150212349f160f30303030 30303030303030303030309f1c0838373635343332319f4e223130373231205761 6c6b65722053742e20437970726573732c204341202c5553412edf260101df1008 656e667265737a68df110101df270100dfee150101dfee160100dfee170107dfee 180180dfee1e08f0dc24f0c20e1400dfee1f0180dfee1b083030303135313030df ee20013cdfee21010adfee2203323c3caa88 Reader responds with: 5669564f746563683200600000003d35 (Success) Command Frame Byte 14 …...
  • Page 198 NEO 2 Interface Developer’s Guide Command Frame Byte 14 … Byte 0-9 Byte 10 Byte 11 Byte 12 Byte 13 Byte 14+n Byte 15+n Byte 14+n-1 Header Tag Data Data Sub- & Protocol Command Length Length Data CRC (LSB) CRC (MSB) Command Version (MSB)
  • Page 199 NEO 2 Interface Developer’s Guide Length Data Item Description (bytes) Note: Total timeout will cancel keypad entry and return error. Display Message Format: <Length L><Length H> (Little-endian) Language Length Display Message Variable Display Message Language, 2 byte “EN” – English (default) Language “ES”...
  • Page 200: Contact Get Pin Control (61-02) (Reader Or Scrp Send To Host)

    NEO 2 Interface Developer’s Guide Byte 14 … Byte 0-9 Byte 10 Byte 11 Byte 12 Byte 13 Byte 14+n Byte 15+n Byte 14+n-1 Header Tag Data Data & Protocol Command Status Code Length Length Data CRC (MSB) (LSB) Version (MSB) (LSB) ViVOtech2\0...
  • Page 201 NEO 2 Interface Developer’s Guide Data Objects Length Data Item Description (bytes) Mode - 0x00 – Cancel (cancel through command) - 0x01 – Online PIN DUKPT - 0x02 – Online PIN MKSK - 0x03 – Offline PIN - 0x10 – SCRP Generic - 0x11 –...
  • Page 202 NEO 2 Interface Developer’s Guide Length Data Item Description (bytes) PIN Entry Interval Length Format: <Length L><Length H> (Little-endian) PIN Entry Interval Value Variable Format: <Value L><Value H> (Little-endian) Unit: Second Display Message Language Format: <Length L><Length H> (Little-endian) Length Display Message Language Variable “EN”...
  • Page 203: Get Random Number (19-01)

    NEO 2 Interface Developer’s Guide Length Data Item Description (bytes) Variable If Online PIN DUKPT, PIN_DUKPT_KEY KSN – 10 bytes If Offline PIN, PIN_PAIRING_DUKPT_KEY KSN. This field is not present in the following cases: if device does not implement Pairing function, Offline PIN is Plaintext.
  • Page 204: Refresh Enablement Token (19-02)

    NEO 2 Interface Developer’s Guide Response Frame Byte 0-9 Byte 10 Byte 11 Byte 12 Byte 13 Byte 14 Byte 15 Data Header Tag & Data Length Command Status Code Length CRC (MSB) CRC (LSB) Protocol Version (MSB) (LSB) See Status ViVOtech2\0 Code Table 8.4.28.
  • Page 205: Reserve Commands For Scrp (19-10, 19-11, 19-12, 19-13)

    NEO 2 Interface Developer’s Guide 8.4.29. Reserve Commands for SCRP (19-10, 19-11, 19-12, 19-13) Commands 19-10 through 19-13 are used to Create Secure Channels for SCRP. 8.4.30. CVMApp Get Nonce from SCRP for Refresh Token (19-15) Use this command to get random numbers from ViVOpay SCRP. In SCRP, this command could be used as a first step of refresh secure enablement token.
  • Page 206: Contact Get Msr Data Control (Reader Sends To Host)(61-03)

    NEO 2 Interface Developer’s Guide Command Frame Byte 14 – Byte 0-9 Byte 10 Byte 11 Byte 12 Byte 13 Byte 14+n Byte 15+n Byte 14+n-1 Header Tag & Data Data Sub- Protocol Command Length Length Data CRC (MSB) CRC (LSB) Command Version (MSB)
  • Page 207 NEO 2 Interface Developer’s Guide Length Data Item Description (bytes) Display Message Variable Display Message Language, 2 byte “EN” – English (default) Language “ES” – Spanish “ZH” – Chinese “FR” – French … Format: <Length L><Length H> (Little-endian) Display Message Length Display Message Control –...
  • Page 208: Transaction Related Commands: Contactless

    NEO 2 Interface Developer’s Guide 8.5. Transaction Related Commands: Contactless 8.5.1. Activate Transaction Command (02-01 and 02-40) NOTE: 02-01 is a legacy command, applicable to non-encrypted transactions only. When EMV mode encryption is ON or MSR/MSD encryption is ON, if Data encryption Key is loaded, 02-01 will be disabled.
  • Page 209 NEO 2 Interface Developer’s Guide Note that in products that support multiple presentation modes (dip, tap, swipe), the 02-40 command can be used to kick off a transaction in any desired mode, with or without fallback support. To control the behavior, use the DFEF37 and DFEF3C tags, as follows: Length Description Example...
  • Page 210 NEO 2 Interface Developer’s Guide Activate Transaction Command Frame Data Format Length Data Item Description (bytes) Timeout Time in seconds that the reader waits for a card to be presented before timing out and returning an Error response. The reader will continue to poll for this amount of time if no card is found.
  • Page 211 NEO 2 Interface Developer’s Guide Length Description Format (in bytes) 9F1A Terminal Country Code. (Typically, this has been configured in the reader – refer to Group Configuration Tags.) 9F21 Deprecated. NOTE: Do not attempt to use this tag in SRED devices. It may still work in non-SRED older products, but support for this tag in Activate Transaction will be dropped in future versions of firmware.
  • Page 212 NEO 2 Interface Developer’s Guide If the transaction cannot be completed successfully, the response contains an appropriate status code. The Response Frame contains more error information in the data field, for certain status codes. Response Frame Byte 14 … Byte 0-9 Byte 10 Byte 11 Byte 12...
  • Page 213 NEO 2 Interface Developer’s Guide Length Data Item Description (bytes) DE055 (Clearing If a Clearing Record (DE 055) field is available, then this field is 01h. Record) Present.) If there is no Clearing Record (DE 055) field, then this field is 00h. For MasterCard transactions, this field is always 0.
  • Page 214 NEO 2 Interface Developer’s Guide Length Description Format (in bytes) Online PIN Block Transaction Date. Local date that the transaction was performed. (YYMMDD) Transaction Status Information. Transaction Type. Indicates the type of financial transaction, represented by the first two digits of ISO 8583:1993 Processing Code. 5F20 Cardholder Name.
  • Page 215 NEO 2 Interface Developer’s Guide Length Description Format (in bytes) 9F1E Interface Device Serial Number. Unique and permanent serial number assigned to the IFD by the manufacturer. (Typically, this has been configured in the reader – refer to Group Configuration Tags.) 9F21 Transaction Time.
  • Page 216 NEO 2 Interface Developer’s Guide Length Description Format (in bytes) 9F5D Available Offline Spending Amount (Balance). 9F6B Track 2 Data. Contains the data objects of the track 2 according to ISO/IEC <=19 7813, excluding start sentinel, end sentinel and LRC. 9F6C Card Transaction Qualifiers (Visa transactions only).
  • Page 217 NEO 2 Interface Developer’s Guide Length Description Format (in bytes) DF8115 Error Indication. (MasterCard) Flags defining the error conditions from the transaction. Refer to the M/Chip PayPass specification. DF8129 Outcome Parameter Set (MasterCard). Contains the result of the transaction. Refer to the M/Chip PayPass specification.
  • Page 218 NEO 2 Interface Developer’s Guide Length Description Format (in bytes) 0 0 1 0 = TransArmor Algorithm 0 0 1 1 = Voltage Algorithm 0 1 0 0 = Visa FPE 0 1 0 1 = Verifone FPE 0 1 1 0 = TransArmor TDES-DUKPT Bits 4 to 6: Reserved Bit 7: 0 = No MAC Verification Data...
  • Page 219 NEO 2 Interface Developer’s Guide Activate Transaction Clearing Record TLVs Data Element Name Format Origin DE 055 Clearing Record (group tag) Binary, var Application Label ans1…16 var Card Application Interchange Profile Card DF name Card Terminal Verification Results: Reader Indicates results of various transaction processes. Transaction Date Terminal Transaction Status Information...
  • Page 220 NEO 2 Interface Developer’s Guide Data Element Name Format Origin 9F6E Form Factor Indicator Reader PayPass Third Party Data b5-32 var Reader 9F74 VLP Issuer Authentication Code Terminal 9F7C Customer Exclusive Data b1-32 var Reader DF30 Track Data Source Reader 0x0C –...
  • Page 221 NEO 2 Interface Developer’s Guide Data Field Length (bytes) Description Value of SW1 returned by the Card (SW1SW2 is 0000 if SW1 SW2 not available) Value of SW2 returned by the Card (SW1SW2 is 0000 if SW1 SW2 not available) RF State Code RF State Code indicating exactly where the error occurred in the Reader-Card transaction flow.
  • Page 222: Special Tlv For Discover D-Pas And Smarttap

    NEO 2 Interface Developer’s Guide If the Status Code being returned in the Response Frame is "Request Online PIN", the reponse data has the following format. Length Data Item Description (bytes) TLV Application PAN Variable up Application Primary Account Number (PAN) as a TLV object. to 12 Tag: 5A Format: cn variable length up to 19(10 bytes) 8.5.2.
  • Page 223 NEO 2 Interface Developer’s Guide Special Flow Record Format Byte # Field Application Flow Code This is the card application for which this special flow entry is being defined. This can be any of the Application Flows defined for the ViVOtech2 “Set Configurable AID” such as Discover D-PAS.
  • Page 224 NEO 2 Interface Developer’s Guide Steps to do Issuer Update Processing for Discover D-PAS: 1. Set TTQ Byte3 Bit8 “Issuer Update Processing supported” to be 1 2. Use “Activate Transaction Command (02-01)” to do normal Discover D-PAS transaction and reader will response transaction result and data. 3.
  • Page 225 NEO 2 Interface Developer’s Guide Data Field Length Outcome Parameter Set DF8129 Data Record (if any) FF8105 var. Discretionary Data FF8106 var. User Interface Request Data (if any) DF8116 According to reference [1], all objects listed below are to be added to the output buffer if they are present.
  • Page 226 NEO 2 Interface Developer’s Guide DF Name Issuer Code Table Index 9F11 Track 1 Data Track 2 Data 9F6B Discretionary Data is always included in an OUT signal. Discretionary Data for an EMV transaction may include the following objects, with a possible maximum length of 1009 bytes (61 TL, 948 V), ignoring the Data Storage elements.
  • Page 227 NEO 2 Interface Developer’s Guide Discretionary Data for a Mag-Stripe transaction may include the following objects, with a possible maximum length of 117 bytes (15 TL, 102 V): FF8106 Discretionary Data DF812A DD Card (Track 1) DF812B DD Card (Track 2) DF8115 Error Indication 9F6E...
  • Page 228: Activate Transaction Response Frame Data Format

    NEO 2 Interface Developer’s Guide 8.5.3. Activate Transaction Response Frame Data Format For additional information on how data portions are encrypted, see “80000502-001, ID Tech Encrypted Data Output Formats” for details; available for download on the ID TECH Knowledge Base. Mode/Transaction Output Format Matrix—Non-SRED Device Contactless transaction Note: When MSR/MSD or EMV Encryption is enabled and Data encryption Key exists, Burst Mode is disabled (always OFF)
  • Page 229 NEO 2 Interface Developer’s Guide Poll Mode Encrypt Mode Burst Mode Command Output Format Poll On 02-01 Not Allow Demond 02-40 02-40 encrypted 03-00 Not Allow 02-01 Not Allow Auto Poll 03-40 02-40 encrypted 02-40 02-40 encrypted Success Transaction--Plaintext data field format (02-01) Length Data Item Description...
  • Page 230 NEO 2 Interface Developer’s Guide Successful Transaction -- Plaintext and Encrypted data field format for Contactless transaction (02-40) Length Data Item Description (bytes) Attribution Bit 4/3/0: Captured Data Type 0 0 0 = Contact Transaction 0 0 1 = Contactless Transaction / EMV 1 0 1 = Contactless Transaction / MSD 0 1 x = MSR Card Bit 2/1: Encryption Mode...
  • Page 231 NEO 2 Interface Developer’s Guide Success Transaction -- Plaintext and Encrypted data field format for MSR card (02-40) Length Data Item Description (bytes) Attribution Bit 4/3/0: Captured Data Type 0 0 0 = Contact Transaction 0 0 1 = Contactless Transaction / EMV 1 0 1 = Contactless Transaction / MSD 0 1 x = MSR Card Bit 2/1: Encryption Mode...
  • Page 232 NEO 2 Interface Developer’s Guide Failed Transaction-- Plaintext and Encrypted data field format (02-40) Length Data Item Description (bytes) Attribution Bit 4/3/0: Captured Data Type 0 0 0 = Contact Transaction 0 0 1 = Contactless Transaction / EMV 1 0 1 = Contactless Transaction / MSD 0 1 x = MSR Card Bit 2/1: Encryption Mode 0 0 = TDES...
  • Page 233: Get Transaction Result (03-00 And 03-40)

    NEO 2 Interface Developer’s Guide Length Data Item Description (bytes) Attribution Bit 4/3/0: Captured Data Type 0 0 0 = Contact Transaction 0 0 1 = Contactless Transaction / EMV 1 0 1 = Contactless Transaction / MSD 0 1 x = MSR Card Bit 2/1: Encryption Mode 0 0 = TDES 0 1 = AES...
  • Page 234 NEO 2 Interface Developer’s Guide always in Auto Poll Mode. When it detects a card, it carries out a transaction with the card. If the card is a supported contactless MagStripe card, the reader does not need any parameters from the terminal. If the card is a supported contactless EMV Card, then the reader uses the default terminal parameters (Group 0 TLVs) in the reader.
  • Page 235 NEO 2 Interface Developer’s Guide Note: ViVOcomm and DesFire cards return raw track data only. If there was an error in the Command Frame received then the response contains an appropriate status code. Response Frame Byte 14 … Byte 0-9 Byte 10 Byte 11 Byte 12...
  • Page 236 NEO 2 Interface Developer’s Guide If the Status Code is OK the response is different depending on the card application: Card Application Return Data PayPass MagStripe Track1/Track2 PayPass M/Chip Chip data plus other tags JCB QuicPay TLV Auth code and Track2 Equivalent data VSDC online application Track1/Trakc2 and VLP Issuer Auth code VSDC offline and qVSDC...
  • Page 237 NEO 2 Interface Developer’s Guide Length Data Item Description (bytes) TLV Track 2 Data Variable TDES/AES Encrypted Track 2 Data (if available) with Padding (0x00). If (MagStripe card) Track 2 is not available, this field is not present Tag: FFEE14 Format: ASCII (no null terminator) For MasterCard transactions, this field is not present.
  • Page 238 NEO 2 Interface Developer’s Guide Length Data Item Description (bytes) TLV MSR Variable Refer to “Enhanced Encrypted MSR Data Output Format” section of document Data 80000502-001, Encrypted Data Output Formats. This tag will wrap an entire MSR data (DFEE23) block. Consult “80000502-001, ID Tech Encrypted Data Output Formats” for details; available for download on the ID TECH Knowledge Base.
  • Page 239: Update Balance Command (03-03)

    NEO 2 Interface Developer’s Guide Length Data Item Description (bytes) Bit 5: Attribution Byte Extension. 0 = Length of tag is 1 byte 1 = Length of tag is 2 bytes Bits 6/7: Encryption Status 0 0 = EMV off, MSR/MSD off 0 1 = EMV off , MSR/MSD on 1 0 = EMV on, MSR/MSD off 1 1 = EMV on, MSR/MSD on...
  • Page 240 NEO 2 Interface Developer’s Guide Command Frame Byte 14 … Byte 0-9 Byte 10 Byte 11 Byte 12 Byte 13 Byte 14+n Byte 15+n Byte 14+n-1 Header Tag Data Data Sub- & Protocol Command Length Length Data CRC (LSB) CRC (MSB) Command Version (MSB)
  • Page 241 NEO 2 Interface Developer’s Guide Update Balance Format and Contents Length Data Item Description (bytes) Status Code 00: OK 01: NOT OK 02: (ARC response 89 for Interac) TLV Auth_Code Authorization Code as a TLV object. Tag: E300 Format: b8 TLV Transaction Deprecated.
  • Page 242: Cancel Transaction Command/Reset Transaction Status (05-01)

    NEO 2 Interface Developer’s Guide Update Balance Format and Contents When Status Not OK Data Field Length (bytes) Description Error Code Error Code giving the reason for the failure. See sub-section on Error Codes Value of SW1 returned by the Card (SW1SW2 is 0000 if SW1 SW2 not available) Value of SW2 returned by the Card (SW1SW2 is 0000 if SW1 SW2 not available)
  • Page 243: Mastercard M/Chip 3.0 Transaction Commands

    NEO 2 Interface Developer’s Guide Response Frame Byte 0-9 Byte 10 Byte 11 Byte 12 Byte 13 Byte 14 Byte 15 Data Data Header Tag & Command Status Code Length Length CRC (MSB) CRC (LSB) Protocol Version (MSB) (LSB) Status ViVOtech2\0 Code Table 8.6.
  • Page 244: Reset Torn Transaction Log (84-0E)

    NEO 2 Interface Developer’s Guide 8.6.2. Reset Torn Transaction Log (84-0E) The Reset Torn Transaction Log effectively erases the content of the torn transaction log and sets it back to an “empty” state. Normally, this function will only be used in certification scenarios where the torn transaction log must be put into a known state before performing a test.
  • Page 245 NEO 2 Interface Developer’s Guide Response Frame Byte Byte 0-9 Byte 10 Byte 11 Byte 12 Byte 13 Byte 14-N Byte N + 1 N + 2 Header Tag & Data Data Comman Data Protocol Status Length Length (LSB) (MSB) Version (MSB) (LSB)
  • Page 246: Data Exchange Request (02-58) Command And Data Exchange Response (02-09)

    NEO 2 Interface Developer’s Guide 8.6.4. Data Exchange Request (02-58) Command and Data Exchange Response (02- These commands are used to do data exchange for MasterCard (MCL). Data Exchange Request command (02-58) is sent by device to the host, while Data Exchange Response command (02-09) is sent by the host to the device.
  • Page 247: Get Ca Public Key (D0-01)

    NEO 2 Interface Developer’s Guide EMV Key Manager Status Codes – Protocol 2 Status Code Status Operation was successful SAM Transceiver error – problem communicating with the SAM (see note below) Length error in data returned from the SAM Unknown Error from SAM Invalid data detected by SAM Incomplete data detected by SAM Reserved...
  • Page 248: Get Ca Public Key Hash (D0-02)

    NEO 2 Interface Developer’s Guide When the status is successful (00h), the data field contains: Key Hash Algorithm (1 Byte) - 01h = SHA-1 • Key Encryption Algorithm (1 Byte) – 01h = RSA • Checksum – This Checksum is calculated with a concatenation of: •...
  • Page 249: Delete Ca Public Key (D0-04)

    NEO 2 Interface Developer’s Guide Key Data is as follows: (all binary) Byte Name Length Description (bytes) Hash Algorithm The only algorithm supported is SHA-1. The value is set to 01h Public Key The encryption algorithm in which this key is used. Currently support Algorithm only one type: RSA.
  • Page 250: Delete All Ca Public Keys (D0-05)

    NEO 2 Interface Developer’s Guide 8.7.5. Delete All CA Public Keys (D0-05) This command deletes all of the CA public keys. Command Frame Byte 0-9 Byte 10 Byte 11 Byte 12 Byte 13 Byte 14 Byte 15 Header Tag & Protocol Length Length Version...
  • Page 251: List Ca Public Key Ids Or Rid (D0-07)

    NEO 2 Interface Developer’s Guide 8.7.7. List CA Public Key IDs or RID (D0-07) The following command retrieves a list of key indices that are installed for this RID. Command Frame Byte 0-9 Byte 10 Byte 11 Byte 12 Byte 13 Byte 14 –...
  • Page 252 NEO 2 Interface Developer’s Guide The following subcommands are available for the Module Version command: Sub-command Description Get Processor Type Get Hardware Information Get Module Version Information Note: All other sub-commands for the Module version command have been deprecated. However, a 0x00 in the sub-command field will return the same result as a 20h sub- command.
  • Page 253: Get Product Type (09-01)

    NEO 2 Interface Developer’s Guide 8.8.1. Get Product Type (09-01) This command returns a "product type" value in a proprietary TLV. Command Frame Byte 0-9 Byte 10 Byte 11 Byte 12 Byte 13 Byte 14 Byte 15 Data Data Sub- Header Tag Command Length...
  • Page 254: Get Processor Type (09-02)

    NEO 2 Interface Developer’s Guide 55 33 00 UniPay III (NEO) 55 33 31 VP3300, VP3300 OEM (NEO) (iBase/Cake same code) 55 33 32 VP3300E(NEO) 55 33 33 VP3300C(NEO) 55 33 34 BTPay Mini (NEO) (UniPayIII + BLE) 56 41 00 VP3320 56 31 00 VP3600...
  • Page 255: Get Main Firmware Version (09-03)

    NEO 2 Interface Developer’s Guide Response Frame Byte 14 … Byte Byte Byte 0-9 Byte 10 Byte 11 Byte12 Byte 13 Byte 13+n 14+n 15+n Data Data Header Tag & Command Status Code Length Length Data Protocol (MSB) (LSB) (MSB) (LSB) Status ViVOtech2\0...
  • Page 256: Get Hardware Information (09-14)

    NEO 2 Interface Developer’s Guide Response Frame Byte 0-9 Byte 10 Byte 11 Byte 12 Byte 13 Byte 14 Byte 15 Byte 0-9 Data Data Header Tag & Command Status Code Length Length Data Protocol (MSB) (LSB) (MSB) (LSB) See Status ViVOtech2\0 See below Code Table...
  • Page 257: Get Module Version Information (09-20)

    NEO 2 Interface Developer’s Guide The following example shows the hardware version information subcommand and the information being returned (in ASCII format). Command: Get Hardware Version Information: 56 69 56 4F 74 65 63 68 32 00 09 14 00 00 33 08 Response: 56 69 56 4F 74 65 63 68 32 00 09 00 00 15 48 57 2C 56 50 56 65 6E 64 69 0D 0A 4B 32 31 46 20 52 65 76 39...
  • Page 258: International Language Support

    NEO 2 Interface Developer’s Guide If there is an error, the appropriate Status Code will be returned with an empty Data field (Data Length = 0000h). The format for module version information returned is “human readable”, consisting of fields that are separated by commas, and lines separated by carriage return and line feed characters: <module type>,<module name and spec.
  • Page 259: Other Languages

    NEO 2 Interface Developer’s Guide Four core language options are built in. Some of these are font-based; the others are ideogram-based. The ideogram language options are stored in flash as bitmaps. The other languages use fonts that have been stored in flash. For example, an English message is composed of multiple small bitmaps that represent different characters (for example, a “Thank You”...
  • Page 260: Bitmap Conversion Completed By Pos

    NEO 2 Interface Developer’s Guide 8.9.2. Bitmap Conversion Completed by POS The reader expects to load a simplified version of the monochrome bitmap. While data is the same as in a standard bitmap, it must be converted to a format that the LCD hardware can use.
  • Page 261: Table 51: Language Version Information

    NEO 2 Interface Developer’s Guide The language module specifies both the language name and the Country Code. This is done because there are a number of languages (English, French, Spanish, and others) shared by multiple nations but the reader is intended to be operate in a particular country (such as Canada).
  • Page 262: Emv Certificate Revocation List Commands

    NEO 2 Interface Developer’s Guide POS. The intent is to facilitate automated updating through the POS. The POS can examine the existing language module currently stored, and then make appropriate decisions as to its use (for example, updating the module). How the Language Version Information is used by the customer cannot be defined or enforced.
  • Page 263: Add Entry To Emv Revocation List (84-04)

    NEO 2 Interface Developer’s Guide Response Frame Byte 14 … Byte Byte Byte 0-9 Byte 10 Byte 11 Byte 12 Byte 13 Byte 13+n 14+n 15+n Header Tag Data Data & Protocol Command Status Length Length Data CRC (LSB) (MSB) Version (MSB) (LSB)
  • Page 264: Delete All Entries For Single Index In Emv Revocation List (84-05)

    NEO 2 Interface Developer’s Guide Response Frame Byte 0-9 Byte 10 Byte 11 Byte 12 Byte 13 Byte 14 Byte 15 Header Tag Data Data & Protocol Command Status Length Length CRC (LSB) (MSB) Version (MSB) (LSB) Status ViVOtech2\0 Code Table 8.10.3.
  • Page 265: Get Emv Revocation List (84-07)

    NEO 2 Interface Developer’s Guide Response Frame Byte 0-9 Byte 10 Byte 11 Byte 12 Byte 13 Byte 14 Byte 15 Header Tag Data Data & Protocol Command Status Length Length CRC (LSB) (MSB) Version (MSB) (LSB) Status ViVOtech2\0 Code Table 8.10.5.
  • Page 266: Delete An Entry From Emv Revocation List (84-0D)

    NEO 2 Interface Developer’s Guide The data field is formatted as follows: Length Offset Data Description (bytes) Number of records returned Number of records remaining in the file Record size varies Revocation list records Each record is formatted as follows: Length Example Offset...
  • Page 267: Emv Exception Log List Commands

    NEO 2 Interface Developer’s Guide Response Frame Byte 0-9 Byte 10 Byte 11 Byte 12 Byte 13 Byte 14 Byte 15 Header Tag Data Data & Protocol Command Status Length Length CRC (LSB) (MSB) Version (MSB) (LSB) Status ViVOtech2\0 Code Table 8.11.
  • Page 268: Add Entry To Emv Exception List (84-09)

    NEO 2 Interface Developer’s Guide 8.11.2. Add Entry to EMV Exception List (84-09) This command adds an entry to the EMV exception list. Command Frame Byte 14- Byte 0-9 Byte 10 Byte 11 Byte 12 Byte 13 Byte 26 Byte 27 Header Tag Data Data...
  • Page 269: Delete Entry From Emv Exception List (84-0A)

    NEO 2 Interface Developer’s Guide 8.11.3. Delete Entry from EMV Exception List (84-0A) This command deletes an entry from the EMV exception list. Command Frame Byte 14- Byte 0-9 Byte 10 Byte 11 Byte 12 Byte 13 Byte 26 Byte 27 Header Tag Data Data...
  • Page 270: Get Emv Exception List (84-0C)

    NEO 2 Interface Developer’s Guide Response Frame Byte 0-9 Byte 10 Byte 11 Byte 12 Byte 13 Byte 14 Byte 15 Header Tag Data Length Data Length &Protocol Command Status Code CRC (LSB) CRC (MSB) (MSB) (LSB) Version See Status ViVOtech2\0 Code Table 8.11.5.
  • Page 271: Generic Pass-Through Commands

    NEO 2 Interface Developer’s Guide Exception List Record Format Offset Field Length (bytes) PAN Length (Logical) PAN (right-padded with F if required) PAN Sequence Number An example of an exception list records returned by this serial command is given below (only the data section of the response is given), along with an explanation.
  • Page 272: Pass-Through Mode Start/Stop (2C-01)

    NEO 2 Interface Developer’s Guide 0x6014 • The following commands only work in Generic passthrough mode. To use them, first run 2C-01: Pass- Through Mode Start/Stop. • 0x0A02 • 0x0A03 • 0x0B01 0x0B02 • 0x2C02 • • 0x2C03 • 0x2C04 •...
  • Page 273: Get Pcd And Picc Parameters (2C-05)

    NEO 2 Interface Developer’s Guide Mode 0 = Stop Pass-Through 1 = Start Pass-Through Response Frame Byte 0-9 Byte 10 Byte 11 Byte 12 Byte 13 Byte 14 Byte 15 Data Data Header Tag & Command Status Code Length Length CRC (MSB) CRC (LSB) Protocol Version...
  • Page 274: Poll For Token (2C-02)

    NEO 2 Interface Developer’s Guide If the Command Frame contains any errors, or an error occurred while retrieving the parameters, then the reader sends a Response Frame with an appropriate Status. No data is returned in this case. Data Fields for the Response Frame (if Status = OK) Get PCD and PICC Parameters Data Field Data Length...
  • Page 275: Table 54: Poll For Token Data Field For Command Frame

    NEO 2 Interface Developer’s Guide Command Frame Byte 0-9 Byte 10 Byte 11 Byte 12 Byte 13 Byte 14,15 Byte 16 Byte 17 Header Tag Data Data Sub- & Protocol Command Length Length Data CRC (MSB) CRC (LSB) Command Version (MSB) (LSB) ViVOtech2\0...
  • Page 276: Enhanced Poll For Token (2C-0C)

    NEO 2 Interface Developer’s Guide The Data field contains data only if the Status Code is OK. Poll for Token Data Field for Response Frame (Status Code is OK) Data Field Length (bytes) Description Card Type of Card Found (or No Card Found). 00h None (Card Not Detected or Could not Activate) 01h ISO 14443-4 Type A 02h ISO 14443-4 Type B...
  • Page 277: Table 57: Enhanced Poll For Token Data Field For Command Frame

    NEO 2 Interface Developer’s Guide To date, the only such supported dual application card is Card Type ‘07’, supporting ISO 14443 Type A, Mifare. For normal ViVOpay transactions (those not in Pass-Through Mode), these cards are automatically handled as ISO 14443 applications. In Pass-Through Mode, the POS controls the polling mechanism.
  • Page 278: Table 58: Enhanced Poll For Token Timeout

    NEO 2 Interface Developer’s Guide Together Timeout1 & Timeout2 are used by the ViVOpay reader to calculate the Timeout (the time to wait for a PICC). Example: Enhanced Poll for Token Timeout Timeout1 Timeout2 Transaction Type Timeout Not Allowed 00 01 Timeout error 0 Seconds, 200 ms 00 01...
  • Page 279: Get Atr (2C-12)

    NEO 2 Interface Developer’s Guide ISO 14443 Type B (Does not support ISO 14443-4 protocol) ISO 14443 Type A and Mifare (NFC phone) Serial 0 or Variable Serial number (or the UID) of the PICC. Length depends on the card detected. If no Number card was detected, then a serial number is not returned.
  • Page 280: Terminate Iso Session (2C-16)

    NEO 2 Interface Developer’s Guide Response Frame Byte 14 … Byte 0-9 Byte 10 Byte 11 Byte 12 Byte 13 Byte 14+n Byte 15+n Byte 14+n-1 Header Tag & Data Data Data Protocol Command Status Code Length Length CRC (MSB) CRC (LSB) Version (MSB)
  • Page 281 NEO 2 Interface Developer’s Guide Command Frame Byte 0-9 Byte 10 Byte 11 Byte 12 Byte 13 Byte 14 Byte 15 Byte 16 Header Tag Data Data Sub- & Protocol Command Length Length Data CRC (MSB) CRC (LSB) Command Version (MSB) (LSB) ViVOtech2\0...
  • Page 282: Pass-Through Ui Control

    NEO 2 Interface Developer’s Guide 8.13. Pass-through UI Control 8.13.1. LED Control (0A-02) This command switches the specified ViVOpay LEDs off or on only when ViVOpay is in Pass- Through Mode. Command Frame Byte 0-9 Byte 10 Byte 11 Byte 12 Byte 13 Byte 14,15 Byte 16...
  • Page 283: Buzzer Control (0B-Xx)

    NEO 2 Interface Developer’s Guide Command Frame Byte 14 - Byte Byte 0-9 Byte 10 Byte 11 Byte 12 Byte 13 Byte 14+n Byte14+n-1 15+n Data Data Header Tag & Sub- Command Length Length Data CRC (LSB) Protocol Version Command (MSB) (MSB) (LSB)
  • Page 284: Pass-Through Data Exchange

    NEO 2 Interface Developer’s Guide Sub-Command N Short Beeps • Single Long Beep of Specified Duration • Buzzer Control Data Field Data Field Length (bytes) Description Buzzer Parameter If Sub-Command is Short Beeps … Num Beeps = One Short Beep = 02h Two Short Beeps = 03h...
  • Page 285: Pcd Single Command Exchange (2C-04) Protocol 2

    NEO 2 Interface Developer’s Guide If a valid Command Frame is received from the terminal, ViVOpay sends the APDU data to the PICC and receives its response. ViVOpay treats the PICC response as unknown data and does not try to interpret it. If the operation was successful, ViVOpay returns a Response Frame with an OK status and the response received from the PICC (APDU response).
  • Page 286: Table 62: Pcd Single Command Exchange Data Field Protocol 2

    NEO 2 Interface Developer’s Guide PCD Single Command Exchange Data Field Protocol 2 Data Field Length Description (bytes) PCD Command This is the command that is sent to the PCD Reader IC on the ViVOpay board. It tells the PCD what to do with the data sent with the command. The PCD commands supported and their values are given in the “PCD Cmd”...
  • Page 287: Table 64: Pcd Channel Redundancy Register Protocol 2

    NEO 2 Interface Developer’s Guide PCD Command Flags Table Bit# Flag Value Meaning When response from PICC Card has been received, end of response is signaled regardless of errors. Disable DF When response from PICC Card has been received, if there are (DF=Disturbance errors then the data received is flushed and we continue to Filter)
  • Page 288: Table 65: Pcd Single Command Exchange Data Field For Response

    NEO 2 Interface Developer’s Guide If a valid Command Frame is received from the terminal, ViVOpay sends the data to the PICC (or carries out the appropriate action) and receives the PICC response. The ViVOpay reader treats the response as unknown data and does not try to interpret it. If there is no error, the reader returns a Response Frame with OK Status and the Data received from the PICC (if any).
  • Page 289: High-Level Halt Command (2C-09)

    NEO 2 Interface Developer’s Guide -21 (0xEB) Framing Error -22 (0xEA) Access Error -23 (0xE9) Unknown Command -24 (0xE8) Collision Error -25 (0xE7) Reset Error -27 (0xE5) Access Timeout -31 (0xE1) Coding Error -54 (0xCA) Baud rate not supported by PCD -112 (0x90) Receive Buffer Overflow RcvdBits...
  • Page 290: Enhanced Pass-Through Command (2C-0B)

    NEO 2 Interface Developer’s Guide Command Frame Byte 0-9 Byte 10 Byte 11 Byte 12 Byte 13 Byte 14 Byte 15 Byte 16 Header Tag & Data Data Sub- Protocol Command Length Length Data CRC (MSB) CRC (LSB) Command Version (MSB) (LSB) ViVOtech2\0...
  • Page 291: Table 67: Enhanced Pass-Through Data Field

    NEO 2 Interface Developer’s Guide There are three cases depending on the LCD Message index number: Index 00h to 07h messages are directly display by the reader. Normally these • messages are not set through this command. Index 08h to 0Bh messages can be set by the terminal. •...
  • Page 292 NEO 2 Interface Developer’s Guide Length Data Item Description (bytes) 08: Insert or Swipe card (Use Chip & PIN) 09: Try Again(Tap Again) 0A: Indicate the custom to present only one card (Present 1 card only) 0B: Indicate the custom to wait for authentication/authorization (Wait) 80 MASK –...
  • Page 293 NEO 2 Interface Developer’s Guide Length Data Item Description (bytes) and LCD String2 Message are included, then the reserved field must be included, with LCD String1 Message appearing immediately after it. Note: The string must be null terminated (00) to indicate the end of the string.
  • Page 294: Single Shot Commands

    NEO 2 Interface Developer’s Guide If the interface is Contactless Transaction, the response is as follows: If Poll for Token bit is disabled, no data is returned in the response. It is the same for the beep indicator. If Poll for Token bit is enabled, the response is the same as Poll for Token (2C-02) command..
  • Page 295 NEO 2 Interface Developer’s Guide 8.15.5.4. Use Independent Buzzer If the Use Independent Buzzer bit is set, the reader checks the Beep Indicator byte and calls the standard Buzzer Command (0B 01). If the bit is cleared, the reader checks the Buzzer byte and follows the Set Message Buzzer command (01 02).
  • Page 296 NEO 2 Interface Developer’s Guide Exchange APDU (Select) • Exchange APDU (PPSE) • Exchange APDU (Get Processing Option) • Exchange APDU (Read Record 1.1) • Exchange APDU (Read Record 2.1) • Exchange APDU (Read Record 3.1) • Exchange APDU (Read Record 3.2) •...
  • Page 297: Poll For Token With Ats (2C-0E)

    NEO 2 Interface Developer’s Guide In this first call of the Enhanced Pass-Through command: Byte 0 instructs the reader to single-shot the Turn Antenna On Poll for Token • commands Byte 1 instructs the reader to display message #1 on the display •...
  • Page 298 NEO 2 Interface Developer’s Guide Command Frame Byte 0-9 Byte 10 Byte 11 Byte 12 Byte 13 Byte 14,15 Byte 16 Byte 17 Header Tag Data Data Sub- & Protocol Command Length Length Data CRC (MSB) CRC (LSB) Command Version (MSB) (LSB) ViVOtech2\0...
  • Page 299: Exchange Apdu Data (2C-13)

    NEO 2 Interface Developer’s Guide The Data field contains data only if the Status Code is OK. Table 6: Poll for Token Data Field for Response Frame (Status Code is OK) Data Field Length Description (bytes) Card Type of Card Found (or No Card Found). None (Card Not Detected or Could not Activate) ISO 14443 Type A (Supports ISO 14443-4 Protocol)
  • Page 300: Contact Transaction Power Off (2C-18)

    NEO 2 Interface Developer’s Guide Command Frame Byte 0-9 Byte 10 Byte 11 Byte 12 Byte 13 Byte 14 Byte 15 Byte 16 Header Tag & Data Data Sub- Protocol Command Length Length Data CRC (LSB) Command (MSB) Version (MSB) (LSB) ViVOtech2\0 Variable...
  • Page 301: Set Icc Voltage Option (2C-19)

    NEO 2 Interface Developer’s Guide Command Frame Byte 14 … Byte 0-9 Byte 10 Byte 11 Byte 12 Byte 13 Byte 14+n Byte 15+n Byte 14+n-1 Header Tag Data Data Sub- & Protocol Command Length Length Data CRC (LSB) CRC (MSB) Command Version (MSB)
  • Page 302: Get Icc Voltage Option (2C-1A)

    NEO 2 Interface Developer’s Guide NOTE: If Voltage Select value is 0, return value will contain an error code. • Default power could be all voltages. (Pass a value of 0x07.) • If do EMV L1 test, this value need change to 5V only. (0x01) •...
  • Page 303: Get Icc Reader Type Option (2C-1C)

    NEO 2 Interface Developer’s Guide ICC Reader Type Select: ICC Reader Type Value ISO7816 Note: Default value is EMV (0). Response Frame Byte 14 … Byte 0-9 Byte 10 Byte 11 Byte 12 Byte 13 Byte 14+n Byte 15+n Byte 14+n-1 Header Tag &...
  • Page 304: Mifare Authenticate Block (2C-06)

    NEO 2 Interface Developer’s Guide 8.16.1. Mifare Authenticate Block (2C-06) This command allows the terminal to instruct the ViVOpay reader to authenticate the Mifare Card sector containing the specified block of data. The Key to be used is also specified by the terminal.
  • Page 305: Mifare Read Blocks (2C-07)

    NEO 2 Interface Developer’s Guide 8.16.2. Mifare Read Blocks (2C-07) Use this command to read data from one or more blocks on the Mifare Card. The terminal can instruct the reader to read up to 15 blocks using this command. If more than one block is defined, then the reader automatically reads the starting block and the blocks that follow.
  • Page 306 NEO 2 Interface Developer’s Guide The values for these card types are defined in the “Poll for Token” command (consider only the lower 4 bits). Block Count: [Bit 3..0] This is the number of 16-byte blocks that are read. The Block Count cannot be greater than 15. This count does not include the skipped blocks if the card is a Mifare Standard card.
  • Page 307: Mifare Write Blocks (2C-08)

    NEO 2 Interface Developer’s Guide a read is requested starting at Block 3 and Block Count is 2 then 16*2=32 bytes of data are returned consisting of Page # 3, 4, 5, 6, 7, 8, 9, and 10. Typically, Mifare Ultralight Cards are read by the ViVOpay reader, but are not written. This is because they are typically used for disposable applications such as ticketing.
  • Page 308: Mifare Epurse Command (2C-0A)

    NEO 2 Interface Developer’s Guide Mifare Write Block Data Field Data Field Length Description (bytes) Card & Block Count Card Type: [Bit 7..4] This can only indicate the following cards Mifare Type A (Standard) Mifare Type A (Ultralight) The values for these card types are defined in the “Poll for Token” command (consider only the lower 4 bits).
  • Page 309: Table 71: Epurse Value Block Format

    NEO 2 Interface Developer’s Guide ePurse Value Block Format A Debit function subtracts a given amount from a Mifare value block and stores the result in the same block. A Credit function adds a given amount to a Mifare value block and stores the result in the same block.
  • Page 310: Table 72: Mifare Epurse Command Data Field

    NEO 2 Interface Developer’s Guide Command Frame Byte 14 … Byte 0-9 Byte 10 Byte 11 Byte 12 Byte 13 Byte 14+n Byte 15+n Byte 14+n-1 Header Tag & Data Data Sub- Protocol Command Length Length Data CRC (MSB) CRC (LSB) Command Version (MSB)
  • Page 311: Table 73: Mifare Epurse Data Field For Debit/Credit Function Block

    NEO 2 Interface Developer’s Guide Debit / Credit Function Block (with Key specified) Byte Byte Byte Byte Byte Byte Byte Byte Byte Byte Byte Byte Byte Value Block Command Amount Number Length Type See Table below See Table Table Debit / Credit Function Block (using default Key) Byte 0 Byte 1 Byte 2...
  • Page 312: Table 74: Mifare Epurse Data Field For Backup Function Block

    NEO 2 Interface Developer’s Guide Mifare ePurse Data Field for Backup Function Block Data Field Length (bytes) Description Backup Block Number Number of destination value block to be used for backup. Command Length Set to 01h or 08h, depending on whether a key type and key are supplied.
  • Page 313 NEO 2 Interface Developer’s Guide Return Code Length Description Block Number 00h-FFh 01h:Function block Authenticate fails 02h:Function block Read/Write fails Error Code 10h:Backup block Authenticate fails 20h:Backup block Read/Write fails Examples Application: Perform a Debit operation. Subtract 2000 from value block number 20H using last key specified.
  • Page 314 NEO 2 Interface Developer’s Guide Command Frame Byte 0-9 Byte 10 Byte 11 Byte 12 Byte 13 Byte 14 Byte 15 Byte 16 Mode, Header Tag & Sub- Data Length Data Length Card Type, Credit Cmd Protocol Command Value Block Command (MSB) (LSB)
  • Page 315: High-Level Pass-Through Commands For Nfc Cards

    NEO 2 Interface Developer’s Guide Command Frame Byte 0-9 Byte 10 Byte 11 Byte 12 Byte 13 Byte 14 Byte 15 Byte 16 Mode, Header Tag & Sub- Data Length Data Length Card Type, Backup Backup Cmd Protocol Command Command (MSB) (LSB) Operation...
  • Page 316 NEO 2 Interface Developer’s Guide Data[0]: 12h Tag1 Static Read a Byte Data[1]: Address of the data Data[0]: 13h Tag1 Static Write a Byte Data[1]: Address of the data Data[2]: Data to be written Data[0]: 14h Tag1 Static Write a Byte NE Data[1]: Address of the data Data[2]: Data to be written Tag1 Dynamic Read a...
  • Page 317: High-Level Pass-Through Commands For Felica Cards

    NEO 2 Interface Developer’s Guide NFC Command Set Response Data List Command Response Data length Command Response Data Field Description Poll for a NFC Tag variable Data[0]: Card type 00h None (Card Not Detected or Could not Active) ISO 14443 Type A (Supports ISO 14443-4 Protocol) ISO 14443 Type B (Supports ISO 14443-4 Protocol) Mifare Type A (Standard) Mifare Type A (Ultralight)
  • Page 318: Felica Lite/Lite-S Authenticate (2C-42)

    NEO 2 Interface Developer’s Guide Individial commands in Felica command set are distingushed as to parameters in Data field. Felica Command Set List Command Data length Command Data Field Description Data[0]: 06h Data[1]: Number of services, value n. Read without Encryption variable Data[2]~Data[2n+1]: Service code list Data[2n+2]: Number of blocks, value m.
  • Page 319: Felica Lite/Lite-S Read/Write Blocks With Mac (2C-43)

    NEO 2 Interface Developer’s Guide For details on these fields, refer to the relevant Felica Lite/Lite-S Specifications. After receiving the Command Frame, the ViVOpay reader verifies the data and if the data is valid, it interacts with the Felica Lite/Lite-S card to do authentication. If this operation is successful, the ViVOpay reader sends a Response Frame with an OK Status.
  • Page 320 NEO 2 Interface Developer’s Guide Data[1]: Block number to be written Data[2]~Data[17]: Data to be written to Block After receiving the Command Frame the ViVOpay reader verifies the parameters. If the parameters are valid, then it reads/writes the data from/to the card. If the read operation is successful, the ViVOpay reader sends a Response Frame containing a Status of OK and the data that was read.
  • Page 321: Poll Felica Card (2C-44)

    NEO 2 Interface Developer’s Guide 8.18.4. Poll Felica Card (2C-44) Special Poll command for polling Felica cards. Command Frame Byte 14 … Byte Byte Byte 0-9 Byte 10 Byte 11 Byte 12 Byte 13 Byte 13+n 14+n 15+n Header Tag & Sub- Data Length Data Length...
  • Page 322 NEO 2 Interface Developer’s Guide Command Frame Byte 14… Byte Byte Byte 0-9 Byte 10 Byte 11 Byte 12 Byte 13 Byte14+n-1 14+n 15+n Header Tag & Data Data Sub- Protocol Command Length Length Data Command (LSB) (MSB) Version (MSB) (LSB) Command ViVOtech2\0...
  • Page 323: Entry Motor Boot Mode (2C-71)

    NEO 2 Interface Developer’s Guide 8.19.2. Entry Motor Boot Mode (2C-71) This command is used to set the boot mode or application mode of the motor board. (VP5300M Only) Command Frame Byte 14… Byte Byte Byte 0-9 Byte 10 Byte 11 Byte 12 Byte 13 Byte14+n-1...
  • Page 324: Secure Pass-Through Function

    NEO 2 Interface Developer’s Guide Command return data: 56 69 56 4F 74 65 63 68 32 00 2C 00 00 09 02 07 33 31 30 30 06 03 00 F8 D2 4. Card Eject setting IDG command: 56 69 56 4F 74 65 63 68 32 00 2C 70 00 08 30 02 05 80 00 E8 03 80 66 E3 Command return data: 56 69 56 4F 74 65 63 68 32 00 2C 00 00 09 02 07 80 34 30 30 01 03 B1 A3 4F...
  • Page 325: Handling Sensitive Financial Data

    NEO 2 Interface Developer’s Guide If a BIN is found in a track data TLV or track data structure, that is also in the White List, all data for that transaction will be shown in clear text regardless of whether it is sensitive financial data or not.
  • Page 326: Accessing Sams In Pass- Thru Mode

    NEO 2 Interface Developer’s Guide 8.20.4. Accessing SAMs in Pass- Thru Mode In Secure Pass-Thru SAM access is always clear data. The SAM will never contain sensitive financial data. Pass-Thru Commands Needing to be parsed for sensitive financial data: Cmd-Sub Name 2C-03 Exchange APDU...
  • Page 327: Get Discretionary Data White List (2C-53)

    NEO 2 Interface Developer’s Guide 8.20.7. Get Discretionary Data White List (2C-53) This command retrieves the Discretionary Data White List. Command Frame Byte 0-9 Byte 10 Byte 11 Byte 12 Byte 13 Byte 14,15 Byte 16 Byte 17 Header Tag Data Data Sub-...
  • Page 328: Initialize/De-Initialize Logger (4C-01)

    NEO 2 Interface Developer’s Guide Only statically-declared log strings can be retrieved. Strings in the buffer declared as local variables cannot be retrieved. The host utility neolog.exe supports only serial and USB communication. 8.21.1. Initialize/De-initialize Logger (4C-01) Use this command to allocate a log count * 16 bytes memory for logger ring buffer. Command Frame Byte 0-9 Byte 10...
  • Page 329: Set Logger Level (4C-02)

    NEO 2 Interface Developer’s Guide 8.21.2. Set Logger Level (4C-02) Use this command to set the level that the log with equal or higher level shall be recorded in the logger ring buffer. Command Frame Byte 0-9 Byte 10 Byte 11 Byte 12 Byte 13 Byte 14...
  • Page 330: Enable/Disable Logger (4C-04)

    NEO 2 Interface Developer’s Guide Data Objects Data Item Length (bytes) Description Log count 0x0000~0xffff, 0x0000 means de-init logger. Response Frame Byte 0-9 Byte 10 Byte 11 Byte 12 Byte 13 Byte 14 Byte 15 Header Tag & Data Length Data Length Command Status Code...
  • Page 331: Save/Delete Log (4C-05)

    NEO 2 Interface Developer’s Guide Data Objects Data Item Length (bytes) Description Mode -0x00: disable; -0x01: enable; Response Frame Byte 0-9 Byte 10 Byte 11 Byte 12 Byte 13 Byte 14 Byte 15 Header Tag & Data Length Data Length Command Status Code CRC (MSB) CRC (LSB)
  • Page 332: Retrieve Log (4C-06)

    NEO 2 Interface Developer’s Guide 8.21.6. Retrieve Log (4C-06) Use this command to output log saved in file and ring buffer. Command Frame Byte 0-9 Byte 10 Byte 11 Byte 12 Byte 13 Byte 14 Byte 15 Header Tag & Sub- Data Length Data Length...
  • Page 333: Secure Communication

    NEO 2 Interface Developer’s Guide 8.22. Secure Communication Special Considerations for Secure Communications Take time to familiarize yourself with certain key differences in device usage that come into play when secure communications are required (as described below). 8.22.1. Burst Mode Burst Mode is not allowed when MSR/MSD or EMV encryption is enabled and Data encryption Key exists.
  • Page 334: Padding Of Data Fields

    NEO 2 Interface Developer’s Guide 8.22.5. Padding of Data Fields Padding is usually required for the Cipher Block Chaining (CBC) algorithm, because Triple DES will require that data blocks be a multiple of 8 bytes long (whereas AES will require data blocks to be a multiple of 16 bytes).
  • Page 335: Get Dukpt Key Encryption Type (C7-33)

    NEO 2 Interface Developer’s Guide Command Frame Byte 0-9 Byte 10 Byte 11 Byte 12 Byte 13 Byte 14 Byte 15 Byte16 Header Tag & Data Data Sub- Protocol Command length length Data Command (MSB) (LSB) Version (MSB) (LSB) Encryption ViVOtech2\0 Type Encryption Type...
  • Page 336: Set Data Encryption Enable Flag (C7-36)

    NEO 2 Interface Developer’s Guide Example data (top line: command; bottom line: response) TDES: 56 69 56 4F 74 65 63 68 32 00 C7 33 00 00 1A 9B 56 69 56 4F 74 65 63 68 32 00 C7 00 00 01 00 AC 7F AES: 56 69 56 4F 74 65 63 68 32 00 C7 33 00 00 1A 9B 56 69 56 4F 74 65 63 68 32 00 C7 00 00 01 01 BC 5E...
  • Page 337 NEO 2 Interface Developer’s Guide Response Frame Byte 0-9 Byte 10 Byte 11 Byte 12 Byte 13 Byte 14 Byte 15 Header Tag & Data Data length Protocol Command Status length CRC(MSB) CRC(LSB) (LSB) Version (MSB) See Status Code ViVOtech2\0 Table When Data Encryption is disabled, device will always respond plaintext data When Data Encryption is enabled, device will output data as follows:...
  • Page 338: Get Data Encryption Enable Flag (C7-37)

    NEO 2 Interface Developer’s Guide 8.22.10. Get Data Encryption Enable Flag (C7-37) Note: This command is only supported in Non-SRED version devices, not supported in SRED version devices. Command Frame Byte 0-9 Byte 10 Byte 11 Byte 12 Byte 13 Byte 14 Byte15 Data...
  • Page 339: Get Msr Secure Parameters (C7-39)

    NEO 2 Interface Developer’s Guide MSR Secure Parameters TLV objects Data Object Name Description Format Length DFEF04 MSR Encryption Option Encryption Option (Forced encryption or not) Bit 0: T1 force encrypt Bit 1: T2 force encrypt Bit 2: T3 force encrypt Bit 3: T3 force encrypt when card type is Bit 4: Hash option for non-PCI products;...
  • Page 340: Set Msr Tracks (C7-44)

    NEO 2 Interface Developer’s Guide MSR Secure Parameters TLV objects Data Object Name Description Format Length DFEF04 MSR Encryption Option Encryption Option (Forced encryption or not) Bit 0: T1 force encrypt Bit 1: T2 force encrypt Bit 2: T3 force encrypt Bit 3: T3 force encrypt when card type is Default value is 0x10.
  • Page 341: Get Msr Tracks (C7-45)

    NEO 2 Interface Developer’s Guide 8.22.14. Get MSR Tracks (C7-45) Command Frame Byte 0-9 Byte 10 Byte 11 Byte 12 Byte 13 Byte 14 Byte 15 Header Tag Data Data Sub- & Protocol Command Length Length CRC (MSB) Command (LSB) Version (MSB) (LSB)
  • Page 342: Set Transarmor Tid (C7-51)

    NEO 2 Interface Developer’s Guide 8.22.16. Set TransArmor TID (C7-51) Set the TransArmor ID. TID must be 8 bytes (0x20 – 0x7F) Command Frame Byte 14 … Byte Byte 0-9 Byte 10 Byte 11 Byte 12 Byte 13 Byte 14+n Byte 14+n-1 15+n Header Tag &...
  • Page 343: Get Transarmor Certificate (C7-54)

    NEO 2 Interface Developer’s Guide Response Frame Byte 14 … Byte 0-9 Byte 10 Byte 11 Byte 12 Byte 13 Byte 14+n Byte 15+n Byte 14+n-1 Header Tag Data Data & Protocol Command Status Code Length Length Data CRC (MSB) (LSB) Version (MSB)
  • Page 344: Key Injection And Related Commands

    NEO 2 Interface Developer’s Guide 8.23. Key Injection and Related Commands 8.23.1. Get DUKPT Key KSN Extended (81-0B) Use this command to get DUKPT Key KSN (Extended) according to Key Name Index and Key Slot. Command Frame Byte 0-9 Byte 10 Byte 11 Byte 12 Byte 13...
  • Page 345: Set And Get Mac Verification Output Option (81-40)

    NEO 2 Interface Developer’s Guide Response Data Field Length Data Field Description (bytes) Key State Key State for the DUKPT key associated with the slot. Possible values for the key state are: 00h: Unused (Slot is supported but no key injected) 01h: Valid (A valid key is available in this slot) 02h: End of life (The key on their slot has reached end of life) FFh: Not Available (This slot is not supported)
  • Page 346: Pin Pad (Keypad) Commands

    NEO 2 Interface Developer’s Guide Response Frame Byte 14 … Byte Byte Byte 0-9 Byte 10 Byte 11 Byte 12 Byte 13 Byte 13+n 14+n 15+n Header Tag & Data Data Status Protocol Command Length Length Data CRC (LSB) Code (MSB) Version (MSB)
  • Page 347: Status Codes

    NEO 2 Interface Developer’s Guide If the status code is other than 0x00 or 0x0A, such as 0x08 (timeout) or 0x0C (operation is not allowed), the Data Field shall be empty. 8.24.3. Status Codes Most commands have an immediate response, and a secondary response. If timeout occurs, the Second Response Status Code is 0x08 and the Data Field is empty.
  • Page 348: Display Message And Get Encrypted Pin (62-01)

    NEO 2 Interface Developer’s Guide 8.24.5. Display Message and Get Encrypted PIN (62-01) For devices that allow PIN entry (such as VP3600), use this command to get encrypted PIN from device. NOTE: only one PIN attempt is allowed per 30-seconds for MKSK. Command Frame Byte 14 …...
  • Page 349 NEO 2 Interface Developer’s Guide First Response Frame Byte 0-9 Byte 10 Byte 11 Byte 12 Byte 13 Byte 14 Byte 15 Header Tag & Data Data Protocol Command Status Code Length Length CRC (LSB) (MSB) Version (MSB) (LSB) See Status ViVOtech2\0 Codes After device receives this command, it will send ACK as the first response.
  • Page 350: Get Function Key (62-02)

    NEO 2 Interface Developer’s Guide Response Data Field Length Data Field Description (bytes) State State of get encrypted PIN process See “State Code in PIN and Key Entry Commands” PIN DUKPT Key KSN 20 or 24 If State byte isn’t 00h, this field is not present If MKSK mode, this field is not present Length is 20 bytes ASCII code to indicate TDES PIN DUKPT Key Length is 24 bytes ASCII code to indicate AES PIN DUKPT Key...
  • Page 351: Display Message And Get Numeric Key (62-03)

    NEO 2 Interface Developer’s Guide Response Data Field Length Data Field Description (bytes) State State of get function key process See “State Code in PIN and Key Entry Commands” Function Key Value 1 or 2 If State byte isn’t 00h, this field is not present ASCII code Length of “B”, “C”, “E”, “*”...
  • Page 352 NEO 2 Interface Developer’s Guide Length Data Field Description (bytes) Display Message Display message signed by Private Key of Secure Message Certificate Signature using RSAPSS algorithm. Algorithm: Calculate 32 bytes Hash for “< Display Flag >< Key Max Length >< Key Min Length >< Display Message >” Using RSAPSS algorithm calculate the Hash to be 256 bytes Raw Data Using Private Key of Secure Message Certificate to sign the...
  • Page 353: Display Message And Get Amount (62-04)

    NEO 2 Interface Developer’s Guide 16 bytes Numeric Key Value is ASCII Code, padding with 0x46 (‘F’). <Key0><Key1><Key2>……<Key15>. Example: enter 7 numeric keys: 2 5 7 8 9 0 6, response data field is 16 bytes, padded with 0x46: 0x32 0x35 0x37 0x38 0x39 0x30 0x36 0x46 0x46 0x46 0x46 0x46 0x46 0x46 0x46 0x46.
  • Page 354 NEO 2 Interface Developer’s Guide Length Data Field Description (bytes) Display Message Signature Display message signed by Private Key of Secure Message Certificate using RSAPSS algorithm. Algorithm: Calculate 32 bytes Hash for “< Display Flag >< Amount Max Length >< Amount Min Length >< Display Message >”...
  • Page 355: Display Multi Line Message And Get Numeric Key (62-05)

    NEO 2 Interface Developer’s Guide 16 bytes Numeric Key Value is ASCII Code, padding with 0x46. <Key0><Key1><Key2>……<Key14>. Example: enter 7 numeric keys: 2 5 7 8 9 0 6, amount is 25789.06, response data field is 0x32 0x35 0x37 0x38 0x39 0x30 0x36 0x46 0x46 0x46 0x46 0x46 0x46 0x46 0x46 0x46.
  • Page 356 NEO 2 Interface Developer’s Guide Command Data Field Length Data Field Description (bytes) Function Flag 0x00 - Display numeric for numeric key on LCD 0x01 - Display “*” for numeric key on LCD 0x02 - Display numeric first and then masked by “*” on LCD 0x10 - Enable MSR &...
  • Page 357 NEO 2 Interface Developer’s Guide Second Response Frame Byte 14 … Byte Byte Byte 0-9 Byte 10 Byte 11 Byte 12 Byte 13 Byte 13+n 14+n 15+n Header Tag & Data Data Status Protocol Command Length Length Data CRC (LSB) Code (MSB) Version...
  • Page 358: Get Pan (83-41)

    NEO 2 Interface Developer’s Guide Per 20 Seconds, if the Numeric length was not 0, the Numeric would be clear and will • display cursor on LCD. While you press numeric key, Device will increase display numeric on LCD if key length is •...
  • Page 359 NEO 2 Interface Developer’s Guide Byte No. Bit No. Flag Value Meaning Exp Date Do not request Exp Date Request Exp Date Do not request CSC Request CSC Request PAN Special processing flag. Standard processing. Special for Customer: 1. Encrypted PAN Only 2.
  • Page 360: Improved Collision Detection

    NEO 2 Interface Developer’s Guide 8.25. Improved Collision Detection 8.25.1. Issues with Standard Collision Detection This firmware supports the EMV Contactless Communication Protocol Specification. While the EMV specification defines collision detection, there are often physical constraints which prevent collision detection resolving within the timing limits outlined in the specification. For instance, multiple cards in the field cannot always be detected reliably.
  • Page 361: Collision Detection Modes

    NEO 2 Interface Developer’s Guide The six possible multiple card presentation scenarios are listed in the table below. Scenario Card Type Orientation A / B Stacked A / B Fanned A / A Stacked A / A Fanned B / B Stacked B / B Fanned...
  • Page 362 NEO 2 Interface Developer’s Guide Note: In this mode, if a collision is detected, the reader will interpret further ‘Communication Error’ or ‘Card Not Present’ events as being caused by collision. 8.25.2.2. Improved Collision Detection Enabling this mode disables Standard Collision Detection mode and changes reader behavior: 1.
  • Page 363: Firmware Downloader Commands

    NEO 2 Interface Developer’s Guide Example Assume a reader has enabled Improved Collision Detection with tag DF7F = 3. When two cards are placed within view of the reader, the following polling results are obtained. Polling Attempt Polling Result These results show that the first and second polling attempts are successful; but, the third polling attempt reports an EMV L1 collision (for example, a slower or weaker signal).
  • Page 364: Contact Set Emv L2 Kernel Link Type (60-18)

    NEO 2 Interface Developer’s Guide 8.26.2. Contact S t EMV L2 Kernel Link Type (60-18) Command Frame Byte 14 … Byte 0-9 Byte 10 Byte 11 Byte 12 Byte 13 Byte 14+n Byte 15+n Byte 14+n-1 Header Tag Data Data Sub- &...
  • Page 365: Retrieve Bootloader Related Information (C7-42)

    NEO 2 Interface Developer’s Guide 8.26.4. Retrieve Bootloader Related Information (C7-42) Use this command to get the detailed information of Bootloader FW. Command Frame Byte 0-9 Byte 10 Byte 11 Byte 12 Byte 13 Byte 14 Byte 15 Header Tag Data Data Sub-...
  • Page 366: Implement Bootloader Loading And Verification (C7-43)

    NEO 2 Interface Developer’s Guide 8.26.5. Implement Bootloader loading and verification (C7-43) Command Frame Byte 14 – Byte 0-9 Byte 10 Byte 11 Byte 12 Byte 13 Byte 14+n Byte 15+n Byte 14+n-1 Header Tag Data Data Sub- & Protocol Command Length Length...
  • Page 367: Firmware Downloader Command Processing Flow

    NEO 2 Interface Developer’s Guide 8.27. Firmware Downloader Command Processing Flow Firmware downloader commands must be sent to device in sequence as below. (1) Enter Bootloader process Power on Or reset Run firmware process Enter bootloader request Response error and refuse to enter bootloader Authentication Certification is valid?
  • Page 368 NEO 2 Interface Developer’s Guide (2) Bootloader process Power on Or reset Enter boot and init hardware Bootloader b is valid? Certificates tree is valid? Enter bootloader a Enter bootloader b Init hardware Load config data Bootloader Erase FW App and signature is bootloader codes valid?
  • Page 369: Start Update Kernel Process (C7-11)

    NEO 2 Interface Developer’s Guide 8.27.1. Start Update Kernel Process (C7-11) This is the first command sent by host to open a firmware update process. Command Frame Byte 0-9 Byte 10 Byte 11 Byte 12 Byte 13 Byte 14 Byte 15 Data Data Header Tag &...
  • Page 370: End Update Kernel Process (C7-15)

    NEO 2 Interface Developer’s Guide The first command to m command are 2048 bytes Kernel Firmware data. The latest command is n bytes Kernel Firmware data. Command Frame Byte 14 - Byte Byte 0-9 Byte 10 Byte 11 Byte 12 Byte 13 Byte 2066 Byte 2065...
  • Page 371: Power Management Commands

    NEO 2 Interface Developer’s Guide Response Frame Byte 0-9 Byte 10 Byte 11 Byte 12 Byte 13 Byte 14 Byte 15 Data Data Header Tag & Command Status Code Length Length CRC (LSB) CRC (MSB) Protocol Version (MSB) (LSB) Status ViVOtech2\0 Code Table 8.28.
  • Page 372: Set Low Power Consumption Configuration (F0-04)

    NEO 2 Interface Developer’s Guide The reader will wake up automatically upon card presentation, or when a command is issued. On waking up (after being triggered by card presentation), the reader will output 5669564F746563683200F10000008D1E. 8.28.2. Set Low Power Consumption Configuration (F0-04) This command is used to Enable/Disable some level Low Power Consumption function and the waiting timer of previous state.
  • Page 373: Get Low Power Consumption Configuration (F0-05)

    NEO 2 Interface Developer’s Guide Current Name Timeout Low speed run Standby0 Standby1 Sleep IDLE -(31s)-> LowSpeedRun -(33s)-> Standby1 -(34s)-> Sleep Response Frame Byte 14 … Byte 0-9 Byte 10 Byte 11 Byte 12 Byte 13 Byte 14+n Byte 15+n Byte 14+n-1 Header Tag Data...
  • Page 374: Get Battery Level (F0-02)

    NEO 2 Interface Developer’s Guide Note: If configuration of a product is: Current Name Timeout Low speed run Standby0 Standby1 Sleep The data: 04 00 1F 00 00 00 21 00 22 8.28.4. Get Battery Level (F0-02) This command is used to get the battery level. Note: Only VP3600 supports this command.
  • Page 375: Set Usb Sleep Configuration (F0-06)

    NEO 2 Interface Developer’s Guide 8.29. Set USB Sleep Configuration (F0-06) This command is used to Enable/Disable USB Sleep Configuration Command Frame Byte 0-9 Byte 10 Byte 11 Byte 12 Byte 13 Byte 14 Byte 15 Byte 16 Header Tag & Data Data Sub-...
  • Page 376: Wake-Up Notification (F1-00)

    NEO 2 Interface Developer’s Guide 8.29.2. Wake-Up Notification (F1-00) The reader sends this data string if it wakes up from sleep/stop mode. This command is sent in RS232 mode only. The wake-up source must be the switch, NFC, or MSR. Command Frame Byte 0-9 Byte 10...
  • Page 377: Get Usb Power Mode Suspend Configuration (F0-09)

    NEO 2 Interface Developer’s Guide 8.30.2. Get USB Power Mode Suspend Configuration (F0-09) This command is used to read out USB Power Mode Suspend Configuration Command Frame Byte 0-9 Byte 10 Byte 11 Byte 12 Byte 13 Byte 14 Byte 15 Header Tag &...
  • Page 378: Retrieve Key Info (81-0C)

    NEO 2 Interface Developer’s Guide Response Frame Byte 14 ... Byte Byte Byte 0-9 Byte 10 Byte 11 Byte 12 Byte 13 Byte 14+n-1 14+n 15+n Data Data Header Tag & Command Status Code Length Length Data Protocol Version (MSB) (LSB) (MSB) (LSB)
  • Page 379: Retrieve Detailed Key Info (81-0D)

    NEO 2 Interface Developer’s Guide 8.31.3. Retrieve Detailed Key Info (81-0D) This command will retrieve the Key Block Header of the specific key index/slot provided in the Command Frame. Key Block Header contains information such as type of encryption (TDES/AES), Key Variant, and so on. Command Frame Byte 0-9 Byte 10...
  • Page 380: Get Certificate Info (81-0E)

    NEO 2 Interface Developer’s Guide 8.31.4. Get Certificate Info (81-0E) Command Frame Byte 14 … Byte Byte Byte 0-9 Byte 10 Byte 11 Byte 12 Byte 13 Byte 14+n-1 14+n 15+n Data Data Header Tag & Sub- Command Length Length Data Protocol Version Command...
  • Page 381: Get Certificate (81-0F)

    NEO 2 Interface Developer’s Guide Example: IDG command: 56 69 56 4F 74 65 63 68 32 00 81 0E 00 00 D4 6A. Command return data: 56 69 56 4F 74 65 63 68 32 00 81 00 00 1C 0A 36 33 30 5A 30 30 30 30 30 31 10 00 0A 0B 0C 0D 0E 14 15 16 17 18 19 1A 1B 1C 1D E7 4E 0A:...
  • Page 382: Read Security Data (C7-57)

    NEO 2 Interface Developer’s Guide Command Frame Byte 14 … Byte 0-9 Byte 10 Byte 11 Byte 12 Byte 13 Byte 14+n Byte 15+n Byte 14+n-1 Header Tag & Data Data Sub- Protocol Command Length Length Data CRC (MSB) CRC (LSB) Command Version (MSB)
  • Page 383: Control Io (01-06)

    NEO 2 Interface Developer’s Guide Response Frame Byte 14 … Byte 0-9 Byte 10 Byte 11 Byte 12 Byte 13 Byte 14+n Byte 15+n Byte 14+n-1 Header Tag & Data Data Protocol Command Status Code Length Length Data CRC (MSB) CRC (LSB) Version (MSB)
  • Page 384: Get Device Status (32-03)

    NEO 2 Interface Developer’s Guide Example1: Control PTA1 output High, Command data is: 41 30 31 31 Example 2: Control PTC15 output Low, Command data is: 43 31 35 30 Response Frame Byte 0-9 Byte 10 Byte 11 Byte 12 Byte 13 Byte 14 Byte 15...
  • Page 385: Set Switches Notifications Configuration (01-07)

    NEO 2 Interface Developer’s Guide Command Frame Byte 0-9 Byte 10 Byte 11 Byte 12 Byte 13 Byte 14 Byte 15 Byte 16 Header Tag Data Data & Protocol Command Status Code Length Length Data CRC (MSB) CRC (LSB) Version (MSB) (LSB) See Status...
  • Page 386: Get Switches Notifications Configuration (01-08)

    NEO 2 Interface Developer’s Guide 8.31.12. Get Switches Notifications Configuration (01-08) This command returns the configuration for switches notifications. Command Frame Byte 0-9 Byte 10 Byte 11 Byte 12 Byte 13 Byte 14 Byte 15 Header Tag & Sub- Data Length Data Length Protocol Command...
  • Page 387 NEO 2 Interface Developer’s Guide Response Frame Byte 14 … Byte 0-9 Byte 10 Byte 11 Byte 12 Byte 13 Byte 14+n Byte 15+n Byte 14+n-1 Header Tag Data Data Status & Protocol Command Length Length Data CRC (MSB) Code (LSB) Version (MSB)
  • Page 388: Loyalty Functions

    NEO 2 Interface Developer’s Guide 9. Loyalty Functions NEO II firmware has built-in support for Apple Pay VAS (Value Added Services) and Google Smart Tap. Support for Google SmartTap functionality is described in a separate document, Google SmartTap 2.1 in ViVOpay Devices.pdf, available for download on the ID TECH Knowledge Base.
  • Page 389 NEO 2 Interface Developer’s Guide Set all configurations for SmartTap 2.1 Set Long term private key 56 69 56 4F 74 65 63 68 32 00 C7 62 01 20 A7 82 BE 58 B2 FB E0 51 D0 CE 53 48 88 D0 4A AB C5 22 37 D3 E2 A7 3A 41 C0 BB C1 BD 71 1B B9 F6 AE 95 A6 14 45 8A 9D 11 88 00 5C B8 20 0F 56 8F ED C8 3B 1D A9 1F BD 0F F4 92 4E 72 D7 1C A7 91 29 44 84 79 FE BA CE 55 DF 9A 2B AC 6A 40 BC 1A 1A 90 F2 18 1F 0D 5A 1E 04 0D CB 5D 90 33 3E 1A...
  • Page 390 NEO 2 Interface Developer’s Guide 95 20 FC AD 8F 79 9C 65 E5 94 FE E4 2B 3E 9F 39 01 07 FF EE 01 04 DF 30 01 00 DF EE 26 01 01 42 65 Send ACT command include Apple VAS container (FFEE06) only: 56 69 56 4F 74 65 63 68 32 00 02 01 00 29 30 9F 02 06 00 00 00 00 00 01 9C 01 00 FF EE 06 18 9F 22 02 01 00 9F 26 04 00 00 00 02 9F 2B 05 01 00 00 00 00 DF 01 01 01 CF 40...
  • Page 391: Applepay Vas Functionality

    NEO 2 Interface Developer’s Guide 9.2. ApplePay VAS Functionality NEO II firmware has built-in support for Apple Value Added Services Protocol (hereinafter called Apple VAS). For detailed information on how Apple VAS works, consult Apple's developer site. The following discussion assumes that you are familiar with the basic concepts behind ApplePay VAS.
  • Page 392 NEO 2 Interface Developer’s Guide Byte 1: RFU Byte 2: Terminal Type Byte 3: RFU Byte 4: Terminal Mode See table further below. 9F22 ApplePay Terminal Application Required Hard-defined as 01.00 for now. Version Number 9F2B ApplePay VAS Filter Optional If not provided filtering will not be performed by the mobile.
  • Page 393 NEO 2 Interface Developer’s Guide Byte 3: RFU b7 b6 b5 b4 b3 b2 b1 Description RFU, Bits b8-b1 shall be set to 0 Byte 4: Terminal Mode b7 b6 b5 b4 b3 b2 b1 Description Terninal in VAS App OR Payment Mode Terminal in VAS App AND Payment Mode Terminal in VAS App Only Mode Terminal in Payment Mode Only...
  • Page 394 NEO 2 Interface Developer’s Guide Using firmware commands: Note: Some firmware examples use command 02-01, but 02-40 (encryption-enabled Activate Transaction) may also be used. VAS Only Activate Transaction (02-40) 56 69 56 4F 74 65 63 68 32 00 02 40 00 2D 30 9F 02 06 00 00 00 00 00 01 9C 01 00 FF EE 06 18 9F 22 02 01 00 9F 26 04 00 00 00 02 9F 2B 05 01 00 00 00 00 DF 01 01 01 DF ED 49 01 01 33 FE Command Sent Breakdown:...
  • Page 395 NEO 2 Interface Developer’s Guide 00 FF – Data length • D1 – Attribution byte • FF EE 12 0A 62 99 49 01 2C 00 04 60 01 12 - KSN tag (FFEE12), length • 0x0A, KSN bytes. Transaction is encrypted. FF EE 06 - Apple Pay Vas container •...
  • Page 396: Command (Msb) (Lsb)

    NEO 2 Interface Developer’s Guide actually performed. Only when both VAS and payment transactions are performed will you see both transaction responses in the same returned data record. The Payment transaction response will not change. The VAS transaction response will be embedded in the proprietary ApplePay VAS Container TLV (0xFFEE06).
  • Page 397 NEO 2 Interface Developer’s Guide o 9F25 nn – Merchant ID b o 9F2A nn – Mobile Token o 9F27 nn – VAS Data o 9F25 nn – Merchant ID n o 9F2A nn – Mobile Token o 9F27 nn – VAS Data xx xx –...
  • Page 398: Set Merchant Record (04-11)

    NEO 2 Interface Developer’s Guide o 9F27 nn – VAS Data o 9F25 nn – Merchant ID n o 9F2A nn – Mobile Token o 9F27 nn – VAS Data xx xx – CRC for entire response • 9.2.2. Set Merchant Record (04-11) Command Frame Byte 14 …...
  • Page 399: Get Merchant Record (03-11)

    A9 39 D2 A6 85 1D FC 60 2E A7 98 F7 - Merchant ID (this is the SHA-256 hash of the IDTech Pass having the name "pass.com.apple.wallet.vas.prodtest") 00 - Length of VAS URL. In this example, none was provided.
  • Page 400 NEO 2 Interface Developer’s Guide Byte 14 … Byte 0-9 Byte 10 Byte 11 Byte 12 Byte 13 Byte 14+n Byte15+n Byte 14+n-1 Header Tag & Data Data Protocol Command Status length length Data (MSB) (LSB) Version (MSB) (LSB) Status See Data ViVOtech2\0 Code Table...
  • Page 401: Smart Tap 10. Peer To Peer Functionality

    NEO 2 Interface Developer’s Guide 10. Peer To Peer Functionality Peer To Peer functionality (which can only be used in Pass-Through mode) allows the sending and receiving of NDEF messages to/from a mobile device. NDEF (NFC Data Exchange Format) for more information about NDEF payload composition.
  • Page 402 NEO 2 Interface Developer’s Guide Response Frame Byte 14 … Byte 0-9 Byte 10 Byte 11 Byte 12 Byte 13 Byte 14+n Byte 15+n Byte 14+n-1 Header Tag Data Data & Protocol Command Status length length Data (MSB) (LSB) Version (MSB) (LSB) See Data...
  • Page 403: Msr Equivalent Data Function

    NEO 2 Interface Developer’s Guide MSR Equivalent Data Function Proprietary tags DFEF4B, DFEF4C, and DFEF4D provide a way for track data (and optionally, PAN data) to be supplied in conjunction with an EMV transaction, with or without sentinels, in a form similar to the form track data would take in a conventional MSR transaction. DFEF4C and DFEF4D TLV will only appear in the response of 02-40/03-40, 60-10, 60-11, and 60-12 commands for successful transaction.
  • Page 404 NEO 2 Interface Developer’s Guide You can use the top bit of the first byte of DFEF4B to control search behavior: If the bit is ON, all data elements requested will be provided (if they exist). If the bit is OFF, only the first element found will be retrieved and placed in DFEF4D.
  • Page 405: Sentinels

    NEO 2 Interface Developer’s Guide Track 1 requested (bit 6 = 1). Includes first instance of: Tag 56 = Track 1 Equivalent Tag 5F21 = Track 1, identical to the data coded Track 2 requested (bit 5 = 1). Includes first instance of: Tag 57 = Track 2 Equivalent (converted to alpha numeric format) Tag 9F6B = Track 2 Data Tag 5F22 = Track 2, identical to the data coded...
  • Page 406: Tag Dfef4D

    NEO 2 Interface Developer’s Guide Tag DFEF4D If tag DFEF4B is set, tags DFEF4D will appear in transaction output. This variable-length tag contains track and/or PAN data, encrypted. The exact contents will vary depending on values supplied previously in DFEF4B (see above). The track data will present track data if it is a MSD transaction, present track Equivalent data if it is a EMV transaction.
  • Page 407: Sample Scenarios And Frame Flow

    NEO 2 Interface Developer’s Guide 12. Sample Scenarios and Frame Flow 12.1. Contactless MagStripe Transactions in Auto Poll Mode For a contactless MagStripe transaction, the reader does not require any setup data from the terminal. 1. Command: Set Poll Mode (Auto Poll) Sub- DLen DLen...
  • Page 408 NEO 2 Interface Developer’s Guide 3. Command: Get Transaction Result Sub- DLen DLen Header Data (MSB) (LSB) (LSB) (MSB) 56 69 56 4F 74 65 63 68 32 DLen = 0 ViVOtech2\0 None decimal Response: OK, No Track Data, No Clearing Record (No Transaction) Status DLen DLen...
  • Page 409: Contactless Magstripe Transactions In Poll On Demand Mode

    NEO 2 Interface Developer’s Guide Track1 Data T2Len= Track 2 Data 2272411113 37 (dec) “5413123456784808=0508101” Data (MSB) (LSB) 39 36 30 37 39 39 37 32 34 32 31 38 33 Track 2 Data Clearing Record 9607997242183 Not Present Contactless MagStripe card was presented and accepted by the reader before the Transaction Result command.
  • Page 410 NEO 2 Interface Developer’s Guide Response: Error (Timeout); No Card Detected. Status DLen DLen Header Data Code (MSB) (LSB) (MSB) (LSB) 56 69 56 4F 74 65 63 68 32 Time DLen = 0 ViVOtech2\0 None decimal Reader is not polling for cards. 3.
  • Page 411: Emv (M/Chip) Transaction In Poll On Demand Mode

    NEO 2 Interface Developer’s Guide Data (MSB) (LSB) 39 36 30 37 39 39 37 32 34 32 31 38 33 Track 2 Data Clearing Record “607997242183 Not Present 12.3. EMV (M/Chip) Transaction in Poll on Demand Mode The correct CA public keys required by the Cards that is read have already been set up using the Key Management Commands (refer to Management).
  • Page 412 NEO 2 Interface Developer’s Guide Response: OK Status DLen DLen Header Data Code (MSB) (LSB) (MSB) (LSB) 56 69 56 4F 74 65 63 68 32 DLen = 0 ViVOtech2\0 None decimal Reader is still not polling for cards. Note: These parameter values may not apply to all cards. The terminal has to make sure that correct values have been defined for the parameters based on card requirements otherwise a transaction fails.
  • Page 413 NEO 2 Interface Developer’s Guide Data 04 84 77 98 32 82 02 58 80 9F 26 08 02 BB 21 5D D9 06 94 01 9F 27 01 40 9F 10 12 02 10 90 08 01 22 30 00 00 00 00 Clearing Record (DE 055) Data...
  • Page 414: Appendix A.1: User Experience Illustration

    NEO 2 Interface Developer’s Guide 13. Appendix A.1: User Experience Illustration Following are list of messages and the message flow for one user experience. Summary of LCD Messages NOTE: For the complete list of possible messages, see Appendix A-10. User Interface States ViVOtech User Experience Idle 00: Idle Message (Welcome)
  • Page 415 NEO 2 Interface Developer’s Guide The flow diagram below illustrates how an external UI may be controlled, using asynchronous UI events. Copyright © 2019, International Technologies & Systems Corporation. All rights reserved.
  • Page 416: Appendix A.2: Audible User Interface

    NEO 2 Interface Developer’s Guide 14. Appendix A.2: Audible User Interface Some readers do not have an LCD display. In that case, audible tones and lights indicate the status and when an action must be taken. The following table describes the audible user interface tones. Table 82: Definition of Audible Tones Tone Name Sound...
  • Page 417: Appendix A.3: Configurable Aid Usage Examples

    NEO 2 Interface Developer’s Guide 15. Appendix A.3: Configurable AID Usage Examples These examples show the communications between a Configurable AID capable reader and an attached PC simulating a POS. Disable System AID From POS → 56 69 56 4F 74 65 63 68 32 00 04 04 00 0A 9F 06 07 A0 00 00 00 04 10 10 25 59 From Reader ←...
  • Page 418 NEO 2 Interface Developer’s Guide Delete a Configurable AID From POS → 56 69 56 4F 74 65 63 68 32 00 04 04 00 08 9F 06 05 B0 12 34 56 78 DF 97 From Reader ← 56 69 56 4F 74 65 63 68 32 00 04 00 00 00 AE 16 Uses the DCA Command (Delete Configurable AID - Cmd 4, Sub Cmd 4) 9F06 05 B0 12 34 56 78 –...
  • Page 419 NEO 2 Interface Developer’s Guide Uses the SCA Command (Set Configurable AID - Cmd 4, Sub Cmd 2) FFE4 01 00 – Specify Group number 0. 9F06 05 B0 12 34 56 78 - Specifies the AID. FFE2 01 03 – Selects Application Flow FFE1 01 01 –...
  • Page 420: Appendix A.4: Preparing Bitmaps For Use With Ilm

    NEO 2 Interface Developer’s Guide 16. Appendix A.4: Preparing Bitmaps for Use with ILM The serial ILM commands for language support require bitmap images to display messages. In place of 22 text string messages, ILM commands use 22 bitmap images to display messages. These bitmaps are downloaded to the reader as described in Download ILM Message Command.
  • Page 421 NEO 2 Interface Developer’s Guide Inverting the Color Compared to a regular monochrome bitmap, the image used with ILM commands has inverted color. White areas of the bitmap must be black and black areas white. To invert the color, each bit of a bitmap image must be reversed by performing a NOT operation on each byte of image data.
  • Page 422 NEO 2 Interface Developer’s Guide data. Thus, in this case, the cropping would begin at the Byte 1 (that is, the Column 1 boundary). The following diagram shows how the header parameters are derived. 0 1 2 ......14 15 The Row Number refers to the number of rows, each of which is a row of pixels.
  • Page 423 NEO 2 Interface Developer’s Guide Next reverse the bits. [Bitmap Data = (BB FF FF FF) (CC FF FE FF) (DD FF FE FF) (EE FF FF FF)] Analyze the image. If the image needs to be cropped for white space reduction, do it now. Calculate positioning parameters and generate the ILM header.
  • Page 424: Appendix A.5: Default Configuration

    NEO 2 Interface Developer’s Guide 17. Appendix A.5: Default Configuration ViVOpay readers are set to operate out of the box for many applications. This appendix describes the default operating mode and default TLV data object values that have not been previously covered.
  • Page 425 NEO 2 Interface Developer’s Guide To configure Burst Mode, refer to the Global Configuration Tags table, tag FFF7h. The magstripe reader itself always operates in Burst Mode, regardless of the Burst Mode settings defined in the EMV parameters, meaning that any swipe at the magstripe reader will result in a payload packet immediately being sent across the serial interface.
  • Page 426: Default

    NEO 2 Interface Developer’s Guide 17.1. Default Message Index The LCD message set applied by the ViVOpay unit depends on the User Interface (UI), tag DFEE37 (or the deprecated FFF8). As previously defined, the default UI is ViVOpay, and when setting a new UI (Visa Wave or EMEA) the associated message index must be loaded.
  • Page 427 NEO 2 Interface Developer’s Guide " " " Payment Method " " " " Échec " " Utilisez une ou" " Échec " " " " autre carte " " " " Card Failure " " Swipe Card " " Card Failure " ENG&FRA "...
  • Page 428 NEO 2 Interface Developer’s Guide " votre carte " " code " " votre carte " " Remove Card " "PIN EntryRequire" " Remove Card " ENG&FRA " Retirez la Carte" " Code exigé " " Retirez la Carte" APPROVED AVAIL_OFFLINE_AMOUNT APPROVED "...
  • Page 429 NEO 2 Interface Developer’s Guide " Time Out " " Processing " " Time Out " ENG&FRA " Pause " " En Cours " " Pause " CANCEL DECLINED CANCEL " Cancel " " Declined " " Cancel " " " "...
  • Page 430 NEO 2 Interface Developer’s Guide TAP_OR_SWIPE_CARD_ SWIPE_CARD TAP_OR_SWIPE_CARD VISA "Use Alternative " " Présentez " " Present Card " " Payment Method " " carte SVP " " " 0x1B " Utilisez une ou" " Tap Or Swipe " " Présentez" "...
  • Page 431 NEO 2 Interface Developer’s Guide BALANCE_EMEA BALANCE BALANCE " Available: " " Balance: " " Balance: " " " " " " " 0x22 " Disponible: " " Solde: " " Solde: " " " " " " " " Available: " "...
  • Page 432 NEO 2 Interface Developer’s Guide USE_OTHER_VISA_CAR SIGN_RECEIPT NO_CARD " Please " " No Card " " Please Use " " Sign Receipt " " " " Other VISA Card" 0x29 " Signez le recu " " Pas de carte " "...
  • Page 433 NEO 2 Interface Developer’s Guide " " " " " Initialisation " NO_MESSAGE TIMEOUT NO_MESSAGE " " " Time Out " " " " " " " " " 0x30 " " " Pause " " " " " " " "...
  • Page 434: Appendix A.6: Vp5300 Commands

    NEO 2 Interface Developer’s Guide 18. Appendix A.6: VP5300 Commands A number of commands, outlined below, apply specifically to the VP5300 reader. 18.1. Initiate PINPAD Symmetric key loading (63-01) Host can send the device this message to initiate "PIN pad pairing" (assuming a compatible PIN pad is connected).
  • Page 435: Set Session Key (63-03)

    NEO 2 Interface Developer’s Guide Response Frame Byte 0-9 Byte 10 Byte 11 Byte 12 Byte 13 Byte 14 Byte 15 Data Data Header Tag & Command Status Code Length Length CRC (MSB) CRC (LSB) Protocol Version (MSB) (LSB) Status ViVOtech2\0 Code Table 18.3.
  • Page 436: Set Key Id (63-04)

    NEO 2 Interface Developer’s Guide 18.4. Set Key ID (63-04) Set Key ID associated with a Master Key set Command Frame Byte 14 – Byte Byte 0-9 Byte 10 Byte 11 Byte 12 Byte 13 Byte Byte 15+n 14+n 14+n-1 Header Tag Sub- Data Length...
  • Page 437: Generate Mac For Host (63-06)

    NEO 2 Interface Developer’s Guide 18.6. Generate MAC for Host (63-06) This command allows creating a MAC-authenticated message for Online authorization. Command Frame Byte 14 - Byte 0-9 Byte 10 Byte 11 Byte 12 Byte 13 Byte 14+n Byte 15+n Byte14+n-1 Header Tag Data...
  • Page 438 NEO 2 Interface Developer’s Guide Response Frame Byte14- Byte 0-9 Byte 10 Byte 11 Byte 12 Byte 13 Byte 14+n Byte 15+n Byte14+n-1 Header Tag Data Length Data Length & Protocol Command Status Code Data CRC (MSB) CRC (LSB) (MSB) (LSB) Version ViVOtech2\...
  • Page 439: Appendix A.7: Vp6800 Commands

    NEO 2 Interface Developer’s Guide 19. Appendix A.7: VP6800 Commands A number of commands, outlined below, apply only to the VP6800. 19.1. VP6800 Display Elements Screen • o Pre-defined by user Customizable Features • o Text Area Position  Width ...
  • Page 440: Vp6800 Ui Commands

    NEO 2 Interface Developer’s Guide Byte Description Screen theme ID (Reserved, should be 0x00); Byte 0 screen theme should be re-defined in firmware. The VP6800 and host have pre-loaded screen theme IDs. Byte 1 Number LCD UI Table-2 Object ID Format Object ID Description Component ID...
  • Page 441 NEO 2 Interface Developer’s Guide Command Frame Byte 14 … Byte Byte Byte 0-9 Byte 10 Byte 11 Byte 12 Byte 13 Byte 13+n 14+n 15+n Header Tag & Data Data Data Sub- Protocol Command Length Length Command (LSB) (MSB) Version (MSB) (LSB)
  • Page 442 NEO 2 Interface Developer’s Guide Screen Name Appearance PreDefScreen_8101 PreDefScreen_8102 (IP Address) PreDefScreen_8103 (Subnet Mask) PreDefScreen_8104 (Default Gateway) PreDefScreen_8105...
  • Page 443 NEO 2 Interface Developer’s Guide Response Frame Byte 0-9 Byte 10 Byte 11 Byte 12 Byte 13 Byte 14 Byte 15 Header Tag & Data Length Data Length Command Status Code CRC (MSB) CRC (LSB) Protocol Version (MSB) (LSB) ViVOtech2\0 Example: Show Screen “Screen1”...
  • Page 444: Get Button Event (61-06)

    NEO 2 Interface Developer’s Guide 19.3.2. Get Button Event (61-06) This command allows the host to check button click events. Command Frame Byte 0-9 Byte 10 Byte 11 Byte 12 Byte 13 Byte 14 Byte 15 Data Data Header Tag & Command Sub-Command Length...
  • Page 445: Add Object To Screen (61-07)

    NEO 2 Interface Developer’s Guide 19.3.3. Add Object to Screen (61-07) This command adds an object to the screen. However, the screen does not display new objects until calling Show Screen (61-05) to update the screen. Note: Before sending this command, first create the screen with the Create Screen (61-0A) command.
  • Page 446 NEO 2 Interface Developer’s Guide Note: For images: image files are read from NANDFlash. Only JPEG files without orientation Exif • info and width <= 272, height <= 480 are supported; otherwise the VP6800 rejects this command. Exif (exchangeable image file format): a standard that specifies the formats for images, •...
  • Page 447 NEO 2 Interface Developer’s Guide RoundCondensedBold_12 RoundCondensedBold.ttf RoundCondensedBold_18 RoundCondensedBold.ttf RoundCondensedBold_24 RoundCondensedBold.ttf RoundCondensedBold_36 RoundCondensedBold.ttf RoundCondensedBold_48 RoundCondensedBold.ttf RoundCondensedBold_60 RoundCondensedBold.ttf RoundCondensedBold_72 RoundCondensedBold.ttf RoundCondensedMedium_12 RoundCondensedMedium_0.ttf RoundCondensedMedium_18 RoundCondensedMedium_0.ttf RoundCondensedMedium_24 RoundCondensedMedium_0.ttf RoundCondensedMedium_36 RoundCondensedMedium_0.ttf RoundCondensedMedium_48 RoundCondensedMedium_0.ttf RoundCondensedMedium_60 RoundCondensedMedium_0.ttf RoundCondensedMedium_72 RoundCondensedMedium_0.ttf RoundCondensedSemibold_12 RoundCondensedSemibold.ttf RoundCondensedSemibold_18 RoundCondensedSemibold.ttf RoundCondensedSemibold_24 RoundCondensedSemibold.ttf RoundCondensedSemibold_36 RoundCondensedSemibold.ttf RoundCondensedSemibold_48 RoundCondensedSemibold.ttf...
  • Page 448 NEO 2 Interface Developer’s Guide Video Response Frame Byte 0-9 Byte 10 Byte 11 Byte 12 Byte 13 Byte14-25 Byte 26 Byte 27 Header Tag & Data Data Length Protocol Command Status Code Length Data CRC (MSB) CRC (LSB) (MSB) Version (LSB) ViVOtech2\0...
  • Page 449: Update Object To Screen (61-08)

    NEO 2 Interface Developer’s Guide Add “Medium Button1” to “Screen1”: “Medium1” • TX: 56 69 56 4F 74 65 63 68 32 00 61 07 00 25 53 63 72 65 65 6E 31 00 4D 65 64 69 75 6D 20 42 75 74 74 6F 6E 31 00 02 02 00 00 00 00 4D 65 64 69 75 6D 31 00 23 6C RX: 56 69 56 4F 74 65 63 68 32 00 61 00 00 0C 00 00 02 00 4C 00 D2 00 C4 00 0E 01 B9 DB...
  • Page 450 NEO 2 Interface Developer’s Guide Data Format Data Item Length (bytes) Description Screen Name String Screen Name No longer than 32 bytes ASCII string, terminated by 0x00 Object Name String Object Name No longer than 32 bytes ASCII string, terminated by 0x00 0 –...
  • Page 451: Object Event Call Back (61-Ff)

    NEO 2 Interface Developer’s Guide Data Format Features Length (bytes) Description Top-left x-coordinate: 2bytes Position and Top-left y-coordinate: 2bytes Label for Text Bottom-right x-coordinate: 2bytes bottom-right y-coordinate: 2bytes Example: Update ”Text1” String on “Screen1”: Text1 • TX: 56 69 56 4F 74 65 63 68 32 00 61 08 00 1B 53 63 72 65 65 6E 31 00 54 65 78 74 31 00 00 54 65 78 74 31 20 4C 61 62 65 6C 00 F7 C6 RX: 56 69 56 4F 74 65 63 68 32 00 61 00 00 08 01 00 1E 00 6F 00 3A 00 A0 8E...
  • Page 452 NEO 2 Interface Developer’s Guide No longer than 32 bytes ASCII string, terminated by 0x00 Parameter Var. This field only exists for invisible button: 00: short press/ 01:long press Note: 1. The button callback will be sent by previously communicated I/F. 2.
  • Page 453: Remove Object From Screen (61-09)

    NEO 2 Interface Developer’s Guide 19.3.6. Remove Object from Screen (61-09) This command removes an object from a screen. However, the screen does not display removed objects until calling Show Screen (61-05) to update the screen. Command Frames Byte 14… Byte Byte Byte Byte 0-9...
  • Page 454 NEO 2 Interface Developer’s Guide Currently, Screen IDs are limited to 50 per screen theme. Command Frames Byte 14 ~ N Byte Byte 0-9 Byte 10 Byte 11 Byte 12 Byte 13 Byte N+2 Data Data Header Tag & Command Sub-Command Length Length...
  • Page 455: Destroy Screen (61-0B)

    NEO 2 Interface Developer’s Guide 19.3.8. Destroy Screen (61-0B) This command removes a Screen ID from firmware. After removing the screen, the user cannot operate that Screen ID anymore without getting the Screen ID again by sending a Create Screen (61- 0A) command.
  • Page 456: Get Current Screen Name (61-0C)

    NEO 2 Interface Developer’s Guide 19.3.9. Get Current Screen Name (61-0C) This command allows a user to check the currently live screen’s name. Command Frames Byte 0-9 Byte 10 Byte 11 Byte 12 Byte 13 Byte 14 Byte 15 Header Tag & Sub- Data Length Data Length...
  • Page 457: Clone Screen (61-0D)

    NEO 2 Interface Developer’s Guide 19.3.10. Clone Screen (61-0D) This command creates a new screen instance in the firmware that is cloned from the specified screen and sends out a screen name accordingly. After the screen is cloned, the user can send a Show Screen (61-05) command or Add/Update Object to Screen (61-07/08) command using the cloned screen’s name.
  • Page 458: Store Screen Info (61-0E)

    NEO 2 Interface Developer’s Guide 19.3.11. Store Screen Info (61-0E) This command stores all current screen information from RAM into flash. Command Frames Byte 0-9 Byte 10 Byte 11 Byte 12 Byte 13 Byte 14 Byte 15 Header Tag & Sub- Data Length Data Length...
  • Page 459: Clear Screen Info (61-10)

    NEO 2 Interface Developer’s Guide Example: Load Screen Info: • TX: 56 69 56 4F 74 65 63 68 32 00 61 0F 00 00 B0 67 RX: 56 69 56 4F 74 65 63 68 32 00 61 00 00 00 4B 81 19.3.13.
  • Page 460: Get List Of All Objects On Screen (61-12)

    NEO 2 Interface Developer’s Guide Response Frame Byte 14 … Byte 0-9 Byte 10 Byte 11 Byte 12 Byte 13 Byte 14+n Byte 15+n Byte 13+n Header Tag & Data Length Data Length Protocol Command Status Code Data CRC (LSB) CRC (MSB) (MSB) (LSB)
  • Page 461: Query Screen By Name (61-13)

    NEO 2 Interface Developer’s Guide Response Frame Byte 14 … Byte 0-9 Byte 10 Byte 11 Byte 12 Byte 13 Byte 14+n Byte 15+n Byte 13+n Header Tag & Data Data Length Data Length Protocol Command Status Code CRC (LSB) CRC (MSB) (MSB) (LSB)
  • Page 462: Query Object By Name (61-14)

    NEO 2 Interface Developer’s Guide Response Frame Byte 14 … Byte 0-9 Byte 10 Byte 11 Byte 12 Byte 13 Byte 14+n Byte 15+n Byte 13+n Header Tag & Data Length Data Length Protocol Command Status Code Data CRC (LSB) CRC (MSB) (MSB) (LSB)
  • Page 463: Query Screen By Id (61-15)

    NEO 2 Interface Developer’s Guide Response Frame Byte 14 … Byte 0-9 Byte 10 Byte 11 Byte 12 Byte 13 Byte 14+n Byte 15+n Byte 13+n Header Tag & Data Length Data Length Protocol Command Status Code Data CRC (LSB) CRC (MSB) (MSB) (LSB)
  • Page 464: Query Object By Id (61-16)

    NEO 2 Interface Developer’s Guide Example: Query Screen 00 00: • TX: 56 69 56 4F 74 65 63 68 32 00 61 15 00 02 00 00 F2 19 RX: 56 69 56 4F 74 65 63 68 32 00 61 00 00 09 01 53 63 72 65 65 6E 31 00 E0 9A Query Screen 00 04 (error): •...
  • Page 465: Display System Screen (61-17)

    NEO 2 Interface Developer’s Guide 19.3.20. Display system screen (61-17) This command hides the customer UI and shows the L2 UI. Command Frame Byte 0-9 Byte 10 Byte 11 Byte 12 Byte 13 Byte 14 Byte 15 Header Tag & Sub- Data Length Data Length...
  • Page 466: Set Backlight (83-2F)

    NEO 2 Interface Developer’s Guide 19.3.22. Set Backlight (83-2F) This command set’s the VP6800’s backlight level. If the level is set to >100%, the command will be rejected; if the level is set to <10%, backlight level will be set to 10%. Command Frames Byte 0-9 Byte 10...
  • Page 467: Transfer File (83-24)

    NEO 2 Interface Developer’s Guide Response Frame Bytes 14 – Byte 0-9 Byte 10 Byte 11 Byte 12 Byte 13 Byte 14+n Byte 15+n 13+n Header Tag Data Length Data Length & Protocol Command Status Code CRC (MSB) CRC (LSB) (MSB) (LSB) Error...
  • Page 468: List Directory (83-22)

    NEO 2 Interface Developer’s Guide Length (bytes) Description 2-128 File name including subdirectory, zero-terminated ASCII Number of total file data bytes, zero-terminated ASCII Flag to indicate the end points of file transmission, zero-terminated ASCII 0 = Neither first or last packet 1 = Last packet: commits all file transfers received since packet with first packet flag.
  • Page 469 NEO 2 Interface Developer’s Guide Command Data The command data is a zero-terminated ASCII string specifying the directory and contents to be listed. To retrieve all sub-directories and files below the specified directory, add the recursive directory option before the directory name. Length (bytes) Description Zero-terminated ASCII hex flags...
  • Page 470: Delete Directory (83-26)

    NEO 2 Interface Developer’s Guide 19.3.26. Delete Directory (83-26) This command deletes a directory. The directory must be empty for this command to succeed. Command Frame Bytes 14- Byte 0-9 Byte 10 Byte 11 Byte 12 Byte 13 Byte 14+n Byte 15+n 13+n Header Tag &...
  • Page 471: Get External Chip Status (83-51)

    NEO 2 Interface Developer’s Guide Response Frame Bytes 14… Byte 0-9 Byte 10 Byte 11 Byte 12 Byte 13 Byte 14+n Byte 15+n 13+n Header Tag Data Length Data Length & Protocol Command Status Code Light Value CRC (MSB) CRC (LSB) (MSB) (LSB) Version...
  • Page 472: Get Battery Level (F0-02)

    NEO 2 Interface Developer’s Guide Example: Get RT1050 Status: • TX: 56 69 56 4F 74 65 63 68 32 00 83 51 00 00 FD 4B RX: 56 69 56 4F 74 65 63 68 32 00 83 00 00 01 04 72 The highlighted value indicates the RT1050 is currently in customer mode.
  • Page 473: Get Mac Address (D1-1B)

    NEO 2 Interface Developer’s Guide 19.3.30. Get MAC Address (D1-1B) This command gets the VP6800’s MAC address. Command Frame Byte 0-9 Byte 10 Byte 11 Byte 12 Byte 13 Byte 14 Byte 15 Byte 16 Header Tag Sub- Data Length Data Length &...
  • Page 474: Append Detailed Information (4C-47)

    NEO 2 Interface Developer’s Guide Response Frame Byte 0-9 Byte 10 Byte 11 Byte 12 Byte 13 Byte 14 Byte 15 Length Length Header Tag & Command Status Protocol (LSB) (MSB) Status ViVOtech2/0 Code Table Data Format Test Item Length(byte) Test Command Data Field Description Touch panel Data[0]: 0Fh...
  • Page 475: Start Removal Detection Activation Sequence (61-20)

    NEO 2 Interface Developer’s Guide Test Command Data Function Length (bytes) Comment Field Description Read Log an SD Card must To enable log file function, Clear Log be inserted. Log file function is disabled when the unit powers on; use parameter 11h to Disable log enable logging.
  • Page 476: Start Screen Saver (61-50)

    NEO 2 Interface Developer’s Guide 19.3.35. Start Screen Saver (61-50) The command starts the screen saver, which is disabled when the touchpad is touched, the customize screen is shown, or a transaction is started. The device reads the video from the inserted SD Card;...
  • Page 477: Stop Audio (61-30)

    NEO 2 Interface Developer’s Guide 19.3.36. Stop Audio (61-30) Command Frame Byte 0-9 Byte 10 Byte 11 Byte 12 Byte 13 Byte 14 Byte 15 Header Tag & Data Length Data Length Protocol Command Sub-Command CRC (LSB) CRC (MSB) (MSB) (LSB) Version ViVOtech2\0...
  • Page 478 NEO 2 Interface Developer’s Guide Response Frame Byte 14 … Byte 0-9 Byte 10 Byte 11 Byte 12 Byte 13 Byte 14+n Byte 15+n Byte 13+n Header Tag & Data Length Data Length Protocol Command Status Code Data CRC (MSB) CRC (LSB) (MSB) (LSB)
  • Page 479 NEO 2 Interface Developer’s Guide 19.3.38.1. QR Code Reading Use Cases USDK Camera Module start command, timeout start camera continue start timeout timer timeout error start command, timeout start camera continue start timeout timer stop command stop camera success stop timeout timer failed start command, timeout start camera...
  • Page 480: Qr Code Scan Stop (61-42)

    NEO 2 Interface Developer’s Guide 19.3.39. QR Code Scan Stop (61-42) This command is only available for a VP6800 with a camera (PCI Standard version). Command Frame Byte 0-9 Byte 10 Byte 11 Byte 12 Byte 13 Byte 14 Byte 15 Header Tag &...
  • Page 481 NEO 2 Interface Developer’s Guide Response Frame Byte 14 … Byte 0-9 Byte 10 Byte 11 Byte 12 Byte 13 Byte 14+n Byte 15+n Byte 13+n Header Tag & Data Length Data Length Protocol Command Status Code Data CRC (MSB) CRC (LSB) (MSB) (LSB)
  • Page 482 NEO 2 Interface Developer’s Guide 19.3.40.1. Use Cases for Taking Photos with the Camera USDK Camera/UI Module start command, timeout start camera continue start timeout timer Press button in screen, thenTake a photo & display 5 seconds Press button in screen, then Take a photo & display 5 seconds ……...
  • Page 483: Camera Take Photo Stop (61-44)

    NEO 2 Interface Developer’s Guide 19.3.41. Camera Take Photo Stop (61-44) This command is only available for a VP6800 with a camera (PCI Standard version). Command Frame Byte 0-9 Byte 10 Byte 11 Byte 12 Byte 13 Byte 14 Byte 15 Header Tag &...
  • Page 484: Numeric Entry

    NEO 2 Interface Developer’s Guide Symbol Value Note & 0x26 0x21 ¡ 0xA1 0x3F ¿ 0xBF 0x2A 0x2B § 0xA7 ¢ 0xA2 0x24 • 0xB7 0x2F 0x5C 0x23 0x2D 0x25 ½ 0xBD ¼ 0xBC 19.4.4. Numeric Entry Only IDG commands requiring digital input can make numeric entries display. A user CANNOT call Add Object to Screen (61-07) to display a numeric entry widget.
  • Page 485: Tutorial: Creating Screens For The Vp6800

    NEO 2 Interface Developer’s Guide Status Code Status Need encrypted firmware (apply in boot loader only) Secure interface is not functional or is in an intermediate state. Data field is not mod 8 Pad 0x80 not found where expected Specified key type is invalid Could not retrieve key from the SAM (InitSecureComm) Hash code problem Could not store the key into the SAM (InstallKey)
  • Page 486 NEO 2 Interface Developer’s Guide Object Name 49 6D 61 67 65 31 Image1 Component ID Image Display object at the horizon center of specified y, Alignment while x is ignored x-coordinate 00 00 y-coordinate 14 00 6C 6F 67 6F 2E 6A 70 String logo.jpg Command:...
  • Page 487 NEO 2 Interface Developer’s Guide Component ID Large Button Display object at center of screen, x, y are Alignment both ignored String 42 75 74 74 6F 6E 31 Button1 Command: 56 69 56 4F 74 65 63 68 32 00 61 07 00 23 53 63 72 65 65 6E 31 00 4C 61 72 67 65 20 42 75 74 74 6F 6E 00 01 02 00 00 00 00 42 75 74 74 6F 6E 31 00 A2 39 Response:...
  • Page 488 NEO 2 Interface Developer’s Guide 7. Command: 56 69 56 4F 74 65 63 68 32 00 61 06 00 00 21 F9 a. If the large button (Button1) is implemented correctly and clicked, the device sends this message: 56 69 56 4F 74 65 63 68 32 00 61 00 00 19 00 00 01 00 53 63 72 65 65 6E 31 00 4C 61 72 67 65 20 42 75 74 74 6F 6E 00 CC 8.
  • Page 489 NEO 2 Interface Developer’s Guide Component ID Alignment Display object at specified x and y x-coordinate 00 00 y-coordinate AE 01 LED0-Off;LED1-Green;LED2-Yellow;LED3- Features 00 01 02 03 Command: 56 69 56 4F 74 65 63 68 32 00 61 07 00 17 53 63 72 65 65 6E 31 00 4C 45 44 31 00 06 01 00 00 AE 01 00 01 02 03 66 0B Response: 56 69 56 4F 74 65 63 68 32 00 61 00 00 0C 00 00 06 00 00 00 AE 01...
  • Page 490: Creating Screen Style 2

    NEO 2 Interface Developer’s Guide 19.5.2. Creating Screen Style 2 1. Create Screen2 with the Create Screen (61-0A) command. Note: In the response below, 00 01 is the screen ID for Screen2. See the Create Screen (61- 0A) command for more details. Command: 56 69 56 4F 74 65 63 68 32 00 61 0A 00 08 53 63 72 65 65 6E 32 00 A2 D7...
  • Page 491 NEO 2 Interface Developer’s Guide 6C 6F 67 6F 5F 62 6C 61 63 String Logo_black.jpg 6B 2E 6A 70 67 Command: 56 69 56 4F 74 65 63 68 32 00 61 07 00 24 53 63 72 65 65 6E 32 00 49 6D 61 67 65 32 00 08 02 00 00 00 00 6C 6F 67 6F 5F 62 6C 61 63 6B 2E 6A 70 67 00 Response:...
  • Page 492: Additional Information About Vp6800 Screens

    NEO 2 Interface Developer’s Guide Command: 56 69 56 4F 74 65 63 68 32 00 61 FF 00 19 00 01 02 00 53 63 72 65 65 6E 32 00 4C 61 72 67 65 20 42 75 74 74 6F 6E 00 a.
  • Page 493: Vp6800 Ui Limitations

    NEO 2 Interface Developer’s Guide Command: 56 69 56 4F 74 65 63 68 32 00 61 17 00 00 72 8D Response: 56 69 56 4F 74 65 63 68 32 00 61 00 00 00 4B 81 19.6. VP6800 UI Limitations Supported Customer- Limitation Used Components...
  • Page 494 NEO 2 Interface Developer’s Guide Supported Customer- Limitation Used Components Only JPEG files without orientation Exif(*) info and width <= 272, height <= 480 • is are supported. Maximum number of image components in each screen is 20. • Maximum characters of each image name is 32 bytes. •...
  • Page 495: Vp6800 Supported Fonts

    NEO 2 Interface Developer’s Guide 19.6.1. VP6800 Supported Fonts Font ID Typography Name Font Size RoundBold_12 RoundBold.ttf RoundBold_18 RoundBold.ttf RoundBold_24 RoundBold.ttf RoundBold_36 RoundBold.ttf RoundBold_48 RoundBold.ttf RoundBold_60 RoundBold.ttf RoundBold_72 RoundBold.ttf RoundCondensedBold_12 RoundCondensedBold.ttf RoundCondensedBold_18 RoundCondensedBold.ttf RoundCondensedBold_24 RoundCondensedBold.ttf RoundCondensedBold_36 RoundCondensedBold.ttf RoundCondensedBold_48 RoundCondensedBold.ttf RoundCondensedBold_60 RoundCondensedBold.ttf RoundCondensedBold_72 RoundCondensedBold.ttf...
  • Page 496 NEO 2 Interface Developer’s Guide ™ 0xF0 † 0xF1 ē 0xF2 Not supported yet è 0xE8 é 0xE9 0x7E 0xF3 & 0x26 0x21 ¡ 0xA1 0x3F ¿ 0xBF 0x2A 0x2B § 0xA7 ¢ 0xA2 0x24 • 0xB7 0x2F 0x5C 0x23 0x2D 0x25 ½...
  • Page 497: Appendix A.8: White List Commands For Vp3300 Family

    NEO 2 Interface Developer’s Guide 20. Appendix A.8: White List Commands for VP3300 Family For historical reasons, the VP3300 family (which includes the UniPay 1.5, UniPay III, and BTPay Mini, in addition to VP3300 series and VP8300 products) has its own White List commands, distinct from the 2C-50 command (and related commands) used in other NEO-firmware products.
  • Page 498 NEO 2 Interface Developer’s Guide Length Data Item Description (bytes) BIN Exclusion::= Set bininfo::= Sequence binSetName = (PRINTABLESTRING) -- 0 if no name LowBoundinfo::= Sequence First 8 digits= (INTEGER) – bin Last 8 digits=(INTEGER) – bin HighBoundinfo::= Sequence First 8 digits= (INTEGER) – bin Last 8 digits=(INTEGER) –...
  • Page 499 And we get: SEQUENCE(2 elem) INTEGER1 SET(3 elem) SEQUENCE(3 elem) PrintableString IDTECH TEST SEQUENCE(2 elem) INTEGER 99999999 -- first 8 digits of low bound INTEGER 99990000 -- last 8 digits of low bound SEQUENCE(2 elem)
  • Page 500: Clear Msr White List (91-11)

    NEO 2 Interface Developer’s Guide 20.1.2. Clear MSR White List (91-11) This command used to clear MSR White List. Command Frame Byte 0-9 Byte 10 Byte 11 Byte 12 Byte 13 Byte 14 Byte 15 Header Tag & Data Length Data Length Protocol Command...
  • Page 501 NEO 2 Interface Developer’s Guide White List Fomat: Length Data Item Description (bytes) Command Data <Length Whitelist ASN.1 BLK> is 2 bytes, format is LenL LenH, it is length of Length <Whitelist ASN.1 BLK>, less than 512 <Whitelist ASN.1 BLK> is N bytes, it is ASN.1 Block data for White List for Gift Card.
  • Page 502: Appendix A.9: Neo 2 Contactless Groups And Default Tlvs

    NEO 2 Interface Developer’s Guide 21. Appendix A.9: NEO 2 Contactless Groups and Default TLVs The following table contains tags that are preconfigured within Group 0. Table 84: NEO2 Group 0 default tags Description Format Length Default Value DFEE2D Group Number / Fallback Group Transaction Type 5F2A Transaction Currency Code...
  • Page 503: Table 85: Neoii Group 80 (Master) Default Tags

    NEO 2 Interface Developer’s Guide Description Format Length Default Value DFEE73 Merchant Category Code 00 00 DFEE74 Discover Optional Features DFED18 Poll Mode DFEE7E Burst Mode DFEE1C LCD Font Size DFEF29 LCD Delay Time 00 00 00 00 00 00 00 00 00 00 00 00 00 00 9F4E Merchant Name and Location...
  • Page 504: Table 86: Neoii Group 90 (Visa) Default Tags

    NEO 2 Interface Developer’s Guide Description Format Length Default Value DF811B Kernel Configuration 9F6D Magstripe Application version number 00 01 DF811E Magstripe CVM Capability CVM Required DF812C Magstripe CVM Capability No CVM Required DF811C Max Lifetime of Torn Transaction Log Record 00 00 DF811D Max Number of Torn Transaction Log Records...
  • Page 505: Table 87: Neoii Group A0 (Amex) Default Tags

    NEO 2 Interface Developer’s Guide Description Format Length Default Value DFEE34 Terminal Contactless Transaction Limit 00 00 00 01 00 00 DFEE35 Visa Reader Risk Flags 01 00 01 DFEE67 Specific Feature Switch 02 00 00 9F 1B 04 00 00 05 DC 9F 66 04 30 00 40 00 DF EE 34 06 FFEE13...
  • Page 506: Table 89: Neoii Group C0 (Interac) Default Tags

    NEO 2 Interface Developer’s Guide Description Format Length Default Value 9F35 Terminal Type 9F66 Terminal Transaction Qualifier (TTQ) 80 00 40 00 5F2A Transaction Currency Code 08 40 5F36 Transaction Currency Exponent Transaction Type DF8122 Terminal Action Code - Online 00 00 00 00 00 DF8120 Terminal Action Code - Default...
  • Page 507: Table 90: Neoii Group D0 (Jcb Emv) Default Tags

    NEO 2 Interface Developer’s Guide Table 90: NEOII Group D0 (JCB EMV) default tags Description Format Length Default Value DFEE2D Group Number / Fallback Group Transaction Type DFEF44 JCB Combination Option 7B 00 DF8123 Reader Contactless Floor Limit 00 00 00 00 45 00 DFEE34 Terminal Contactless Transaction Limit 00 00 00 02 00 00...
  • Page 508: Appendix A.10: Neo Ii Default System Aids

    NEO 2 Interface Developer’s Guide 22. Appendix A.10: NEO II Default System AIDs The following table contains the default system AIDs for NEOII. Table 91: NEOII Default System AIDs Application Name Application Identifier Group System Configuration MasterCard A0 00 00 00 04 10 10 Maestro A0 00 00 00 04 30 60 Visa...
  • Page 509: Appendix A.11: Neo Ii Default Configuration Tlvs

    NEO 2 Interface Developer’s Guide 23. Appendix A.11: NEO II Default Configuration TLVs The following table contains the default configuration TLVs for NEO II. Table 92: NEOII Default Configuration TLVs Name Length Value (Hex) Card Application (Hex) Group DF EE 2D 9F 06 A0 00 00 00 25 01 Partial Selection...
  • Page 510 NEO 2 Interface Developer’s Guide Name Length Value (Hex) Card Application (Hex) Group DF EE 2D 9F 06 A0 00 00 00 03 10 10 Partial Selection DF EE 4B VISA Application Selection Features DF EE 4D Max AID Length DF EE 2E Application Flow DF EE 4C...
  • Page 511 NEO 2 Interface Developer’s Guide Name Length Value (Hex) Card Application (Hex) Group DF EE 2D 9F 06 A0 00 00 02 77 10 10 Partial Selection DF EE 4B Max AID Length DF EE 2E Interac Application Exclude from DF EE 53 Processing Application Flow...
  • Page 512: Appendix A.12: Card In Notification Behavior

    NEO 2 Interface Developer’s Guide 24. Appendix A.12: Card in Notification Behavior Some readers perform contact and contactless transactions, and reader can return status code A3h after Activate Transaction (02-01/02-40) and user presentation of ICC card. Interface transaction flow of ACT is shown below:...
  • Page 513: Appendix A.13: Led 0 Behavior Status

    NEO 2 Interface Developer’s Guide 25. Appendix A.13: LED 0 Behavior status The following table describes the LED 0 status between the polling mode and the UI scheme. Table 93: LED 0 Behavior status Poll mode LED 0 Behavior Auto poll Poll on demane ViVotech Visa wave...
  • Page 514: Appendix A.14: Enhanced Encrypted Msr Data Output Format For Financial And Non-Financial Cards

    NEO 2 Interface Developer’s Guide 26. Appendix A.14: Enhanced Encrypted MSR Data Output Format for Financial and Non-Financial Cards The following table describes how masking, encryption, and hash outputs are affected by Command C7-38. For details on the format, refer to document 80000502-001, ID Tech Encrypted Data Output Formats, available on the ID TECH Knowledge Base (no registration required).
  • Page 515: Appendix A.15: Glossary

    NEO 2 Interface Developer’s Guide 27. Appendix A.15: Glossary The following terms are relevant to this document: Term Definition Application Authentication Cryptogram Application Elementary File (EMV) AELx Evaluation Assurance Level (1 ..7) Application File Locator Application Identifier Application Interchange Profile Application Programming Interface or Application Priority Indicator (tag 87) APDU...
  • Page 516 NEO 2 Interface Developer’s Guide Term Definition Random Number Select Acknowledge Security Access Module, communicated via 7816-3 in T=0. Static Data Authentication (EMV) SFGI Startup Frame Guard Interval (or time Integer) Short File Identifier (EMV) SAM ID inside of reader Protocol Type, T=0 is the asynchronous half duplex character transmission protocol.
  • Page 517: Appendix B Revision History

    NEO 2 Interface Developer’s Guide 28. Appendix B Revision History Revisio Date Change IDG is forked after NEO 1 rev. 142. This document is now for NEO 2. • Rev. 50 03/27/2018 • Add new table for Card Brands and AIDs by Group. •...
  • Page 518 NEO 2 Interface Developer’s Guide Add command 02-09, 02-58 (Used for MCL Data Exchange) Rev. 57 06/07/2018 • Rev. 58 06/07/2018 • Amend the Removal Tamper Configuration (04-22) information. • Remove note from Command 60-10 to fix NEOII-1358. Comprehensive copy edits, formatting adjustments. Rev.
  • Page 519 NEO 2 Interface Developer’s Guide Update commands 60-17, 60-18, 60-19. Rev. 72 11/30/2018 • • Update C7-11, -14, -15. • Update C7-42, -43. • Update 60-10, -11, -12. Add C7-17, -18-, 19-, 1A. • • Update 77-81. • Add F0-04, -05 to power management commands. •...
  • Page 520 NEO 2 Interface Developer’s Guide 05/3/2019 60-12: update Default Apply Host Response Output TLV Data List table. • Global Config Tags: add Google SmartTap to Byte 1 Bit 5 in app capability. • Instances of "contact card" and "contactless card" have been changed to •...
  • Page 521 NEO 2 Interface Developer’s Guide 05/31/2019 General commands: • D1-1B: Added data response table. Miscellaneous NEO II Platform Commands: • 03-0E: Added description and tables. (DOC-109) F2-00, 01-07, 01-08: Added Switches Notifications, Get Switches Notifications Configuration, and Set Switches Notifications Configuration commands.
  • Page 522 NEO 2 Interface Developer’s Guide 07/26/2019 Peer To Peer Functionality • 85.2 Removed Detect Card Presence Command (02-05) as it is currently unsupported. Contact Start Transaction (60-10): • Added DFEF1F useage rules. Removed 9F39 tag and description. Contact Authenticate Transaction (60-11): •...
  • Page 523 NEO 2 Interface Developer’s Guide 10/7/2019 General • 88.1 Format overhaul for current branding style. Revised text for style, grammar, and clarity from the start of the document through section 8.2. Commands • Set System Language: changed sub-command from D1-20 to D1-27. Added Poll Felica Card (2C-44).

Table of Contents