Android SDK v2.84.0.1 - Change Log

[2.84.0.1-260904] - 2026-09-04
- Documentation
- Technical Guide


1. Mastercard contactless taps now approve on a VP3300

   Mastercard contactless taps declined with ARC 05 (do not honor). The
   device's contactless configuration group 1 never declared a cardholder
   verification method (CVM) capability. The card's kernel had no valid CVM
   path to complete, so it returned a decline instead of an approval.

   No work is required. The SDK now writes all five VP3300 contactless
   configuration groups (00, 01, 02, 04 and 05) into the device immediately
   before every transaction. Group 1 declares CVM capability:

       Tag       Value           Meaning
       -------   -------------   ----------------------
       9F7E      01              CVM capability enabled
       DF8118    08              No CVM required
       DF8119    08              No CVM required
       DF811F    08              Security capability
       DF8126    000000010000    CVM required limit

   The SDK also sends the terminal's current date and time with every
   transaction, as tags 9A and 9F21. Earlier versions carried a fixed date
   in the configuration group instead.


2. EMV compound tags now de-construct into flat tags

   Some IDTech firmware sends a few EMV tags under non-standard IDs:

       What it is            Standard tag   Sent instead
       -------------------   ------------   ------------------
       KSN                   DFEE12         FFEE12
       Masked PAN            5A             5AA1 (compound)
       Encrypted PAN         -              5AC1 (compound)
       Masked track 2        57             57A1 (compound)
       Encrypted track 2     -              57C1 (compound)
       Track 2 equivalent    9F6B           9F6BC1 (compound)

   The five compound tags sit nested inside the wrapper tags FF8105 and
   FF8106. An extra ID byte (A1 or C1) marks masked against encrypted. That
   byte lands where a standards-compliant TLV parser expects a length byte.
   The parser read it as a length and overran the buffer. The transaction
   then failed with xError=Invalid chip read; try again and
   xErrorCode=01714.

   The SDK now renames FFEE12 to DFEE12. It also un-nests the compound tags
   back to the top level:

       5AA1     -> DFEF6A
       5AC1     -> 5A
       57A1     -> DFEF6B
       57C1     -> 57
       9F6BC1   -> 9F6B

   The SDK applies both corrections before the transaction leaves the
   device.


3. Duplicate magnetic stripe tags no longer crash the host app

   A magnetic stripe read could return the same EMV tag twice. The SDK tried
   to add both copies to its tag set and threw an exception. The host app
   crashed. The SDK now keeps the first copy and ignores the duplicate.


4. Disable the contactless reader on a VP3300

   New method SetVP3300DisableContactless(boolean) on TransactionParameters.
   The default is false, so contactless stays enabled. Set it to true and
   the device accepts insert and swipe only. The setting does not override
   your chosen start-transaction method.

   See the code sample.


5. Load a JSON configuration into a VP3300 device

   New method loadDeviceConfig(String json). It is available on the CustomUI
   Bluetooth manager and on the CustomUI USB manager. The behavior is
   identical over Bluetooth and over USB.

   Two companion methods report the callback name and the callback argument:
   getLoadDeviceConfigCallbackName() and
   getLoadDeviceConfigCallbackArgument().

   For sample code, see JSONConfigFragment.java in the sample app.


6. Redesigned sample app

   The Android SDK sample app now uses a drawer-style navigation menu in
   place of the bottom navigation bar. A new JSON Config screen demonstrates
   loadDeviceConfig.