Professional Documents
Culture Documents
Document Reader SDK Change History
Document Reader SDK Change History
Important Notices
By using the Gemalto Document Reader AT9000 MK2 product range (the “Product”), you (the “User”), agree to be bound by the
following terms and conditions.
Because use of the Product varies widely and is beyond the control of Gemalto the user is responsible for determining whether the
Gemalto Product is fit for a particular purpose and suitable for user’s application. Warranties, remedies and limitations may vary by
product and jurisdiction.
Gemalto offers a range of security products to protect against article and/or document identity counterfeit, alteration, diversion,
duplication, simulation and substitution. However no security products can guarantee absolute protection against attempts to
successfully accomplish these illegal activities.
Technical Information: The technical information, recommendations and other statements contained in this document are based
upon tests or experience that Gemalto believes are reliable, but the accuracy or completeness of such information is not
guaranteed.
Warranty, Limited Remedy and Limited Liability:
THE FOLLOWING IS MADE IN LIEU OF ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING THE IMPLIED WARRANTY
OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Gemalto warrants that its Product will meet Gemalto’s
written specifications at the time of shipment. Gemalto’s obligation and your exclusive remedy shall be, at Gemalto’s option, to
replace or repair the Gemalto Product or refund the purchase price of the Gemalto Product. IN NO EVENT WILL GEMALTO BE
LIABLE FOR ANY INDIRECT, INCIDENTAL, SPECIAL OR CONSEQUENTIAL DAMAGES INCLUDING, BUT NOT LIMITED TO
LOSS OF PROFITS, IN ANY WAY RELATED TO THE PRODUCTS REGARDLESS OF THE LEGAL THEORY ASSERTED
© Gemalto 2018. All rights reserved.
Scotch Brite is a trademark of 3M. Used under license in Canada.
Windows is a registered trademark or trademark of Microsoft Corporation in the United States and/or other countries. Kensington is
a registered trademark of ACCO Brands.
No part of this publication may be reproduced, transcribed, stored in a retrieval system or transmitted in any form whatsoever,
without the prior written consent of Gemalto.
U.S. Pat Nos. 6,019,287 and 6,611,612
Gemalto reserves the right to make changes to its Products at any time and without notice.
Office Locations
Page 2 of 72
Document Reader SDK Change History
1. Overview
This document lists the changes that have been made within each release of the API. Note that the High
Level API is implemented using the Low Level API, so changes made within the Low Level can have an
impact on High Level API users. For a detailed description any API call, please refer to the latest API
documentation.
Page 3 of 72
Document Reader SDK Change History
Page 4 of 72
Document Reader SDK Change History
• Improved reading of cell phone barcodes on very dark or very bright phones
o Added [Img] EnhancedDarkObjectBarcodeDecoding setting, enabled by default, to handle
decoding barcodes on very dark and very bright cell phones. Set to 0 to disable the feature.
(puImageSettings.enhancedDarkObjectBarcodeDecoding)
o Added [Img] UseAmbientForBarcodeDarkObjects setting, enabled by default, to use the ambient
light image for cell phone barcode decoding. Set to 0 to use the traditional white light visible
image. (puImageSettings.useAmbientForBarcodeDarkObjects)
• Updated AAMVAParser.xml to include the 2016 AAMVA version for parsing of some more recently issued
DL.
• Added support for reading of the ISO 18013 iDL and ISO-CEI TR 19446 eDL applications (DG1 to 14).
To test, use HLNonBlocking samples and enable iDL/eDL applications and eDL RF data items. Or, use
the more low level eMRTDReader, making sure to enable iDL/eDL applications from the menu and eDL
RF data items from the RF settings.
o The Application.INI file in the CONFIG/EDL folder may be used in place of the CONFIG
Application.INI to automatically enable basic eDL reading. You may also compare the two files to
see how to enable eDL reading.
• Added parsing of mandatory eDL/iDL data groups, including DG1 Data, DG6 Photo and DG7
Fingerprints.
• See RF_APPLICATION_MODE (puRFIDSettings.puRFProcessSettings.puRFApplicationMode) to
specify which application(s) to attempt reading.
• Fixed option to read EF.ATR to determine the read binary buffer size used when reading data groups
from the chip. See READ_BINARY_USE_EFATR_IF_PRESENT
(puRFProcessSettings.puReadBinaryUseEFATRIfPresent).
• Disabled FaceFind used for photo location/document orientation on passport sized documents by default
on all readers except the CR5400 ID card reader (which cannot accept passports anyways). The reason
this was done is only to preserve original fixed photo crop on passports because in some cases FaceFind
could find the face incorrectly on a passport. ID card sized documents will still use FaceFind for photo
location on all readers by default. To enable FaceFind for passports, set the following in the
Application.INI or ImgSettings.faceFindPassport in code.
[Img]
FaceFindPassport=1
To disable FaceFind entirely, set the following in the Application.INI or ImgSettings.faceFind in code.
[Img]
FaceFind=0
Page 5 of 72
Document Reader SDK Change History
NOTE: the MMMReaderRFPasswordCallback changed with one parameter changing from a bool
(aOnlyAcceptsMRZ) to an enum (AllowedPasswordMethods) to handle more use cases for eID.
• Structures (MMMReaderDataTypes.h)
o AccessControlPasswordMethod
o AllowedPasswordMethods
o RFAccessControlPasswords
o MMMReaderRFPasswordCallback
o CERT_TYPE
o PASSPORT_APPLICATION
o MMMReaderTerminalType
o RF_APPLICATION_MODE
o MMMReaderRFItem
o MMMReaderPlace
o MMMReaderPeriodRange
o MMMReaderPeriod
o MMMReaderValidityPeriod
o MMMReaderIssuingEntity
o MMMReaderGeneralPlace
o MMMReaderPlaceOfBirth
o MMMReaderMultiplePlaces
o MMMReaderPlaceOfResidence
Page 6 of 72
Document Reader SDK Change History
o eIDAuxiliaryData
o eIDRestrictedIdentificationData
o eDLVehicleCategory
o eDLDataGroup1Data
• Structures (MMMReaderHighLevelAPI.h)
o MMMReaderDataType
• Structures (MMMReaderSettings.h)
o RFProcessSettings
o RFIDDataToSend
o CameraSettings
• Methods (MMMReaderLowLevelAPI.h)
o MMMReader_RFOpenEx
o MMMReader_RFSelectApplication
o MMMReader_RFWaitForOpenEx
o MMMReader_RFValidateSignatureEx
o MMMReader_RFValidateSignedAttributesEx
o MMMReader_RFValidateDocSignerCertEx
1.2.4 Low Level API
• Added support for reading of the German eID application (DG1 to 22), including parsing of the data
groups.
• eID support for BSI 5.2 as an Inspection System (IS) and Authentication Terminal (AT) for profiles
TS_PACE, TS_TA, TS_CA, TS_eID, and TS_bio.
• Added support for PACE-CAM. PACE-CAM is disabled by default. If enabled, the SDK will select the
PACE-CAM algorithm if supported by the chip, which will perform PACE and Chip Authentication. PACE-
CAM is an optional feature and does not have to be enabled, as all chips must support at least one other
PACE algorithm if they provide a PACE-CAM algorithm. Settings are
puRFProcessSettings.puPaceCamEnabled or [RFProcSettings] PACE_CAM_ENABLED=0 or 1 in the
Application.INI.
• Added settings for USBTimeout and USBPacketSize. These should ONLY be used if attempting to use
our readers in a USB Redirection setup, such as Citrix. The USBTimeout can be increased and the
USBPacketSize can be decreased to help on slow networks with USB redirection. Defaults are 5
seconds (USBTimeout) and 5242880 bytes (USBPacketSize). For a slower network, increase the timeout
and decrease packet size. For example, 15 seconds and 5120 bytes. Settings are [Camera]
USBTimeout=? and USBPacketSize=? in Application.INI or CameraSettings.usbTimeout and
CameraSettings.usbPacketSize. NOTE: USBPacketSize must be a multiple of 64.
NOTE: firmware detection (ActiveReader) may also be needed for best performance in a USB redirection
environment. If not using firmware detect, then images are being transferred constantly from reader to
PC for ActiveVideo document detection. To enable firmware document detect, set
[DocDetect]
ActiveReader=1
ActiveVideo=0
Page 7 of 72
Document Reader SDK Change History
in the Application.INI
Page 8 of 72
Document Reader SDK Change History
Page 9 of 72
Document Reader SDK Change History
Page 10 of 72
Document Reader SDK Change History
1.4.5.3 Rollup 6
• High Level SDK - update to choose MRZ with the least bad characters if more than one MRZ found (IR
and VIS). Only applicable if
[Img] CheckVisibleOcr=1 (ImgSettings.checkVisibleOcr)
• MSR AAMVA parser fix for cards that contain a pound symbol in track 3
1.4.5.4 Rollup 5
• ePassport - fix potential random SAC/PACE failure with some elliptic curve algorithms.
• Better detection of white iphone for barcode decoding.
• ePassport - wait longer when selecting passport if the chip is in-use by another application.
1.4.5.5 Rollup 4
• FaceFind improvements.
• Update to allow haar_cascade XML files to be placed in the SDK BIN or SDK CONFIG folder. Previously,
the XML files could only be placed in the application directory.
• Fix possible OCR misread due to support for variable witdth font in Rollup 3.
1.4.5.6 Rollup 3
• ePassport - fix SAC/PACE with custom curve parameters.
• Fix possible OCR/MRZ misreads on 2 line 44 docuemnts due to support for variable witdth font in Rollup
1. Variable width font on 2 line 44 is still supported.
• Fix issue that may cause a crash when shutting down the swipe reader and no swipe reader is
connected, after being connected when the swipe is initialized.
• DotNet wrapper fix for 64 bit SDK only to properly pass back AAMVA data. In some cases, due to a
marshalling error on 64 bit, the AAMVA data may not be received with the MMMReaderDotNet wrapper.
1.4.5.7 Rollup 2
• ePassport - fix Active Authentication failure with 2048 bit key sizes due to not sending the internal
authenticate with extended length
1.4.5.8 Rollup 1
• Add support to read mis-printed MRZ with variable width font on some 2 line 44 documents
• Fix some 1 line Chinese ID MRZ misreads
• ActiveAuthentication RSA SHA224 was missing
• Fix PACE random mapping calculation
• Better error checking for DG15 encoding and ActiveAuthentication
• Fix EF.SOD version check to allow LDS 1.8
• Fix Chip Auth with DiffeHellman and allow standard DH domain params
Page 11 of 72
Document Reader SDK Change History
Photo Location
• CD_IMAGEPHOTO is documented in the 3M Page Reader Programmers Guide.
• CD_IMAGEPHOTO can be enabled by setting PhotoImage=1 in the Application.INI [DataToSend]
section, which is the default setting.
• A new data item was added, CD_IMAGEPHOTODATA, that is also returned if CD_IMAGEPHOTO is
enabled. CD_IMAGEPHOTODATA provides face find related information, including the location of the
face, location of the crop to photo and if the face was found on the front/rear image for dual sided
CR5400 readers. This allows for customized cropping of the face within the CD_IMAGEVIS /
CD_IMAGEVISREAR.
• See MMMReaderPhotoData in MMMReaderDataTypes.h or MMM.Readers.PhotoData (.NET)
AutoOrientation
• By default, documents are oriented by MRZ, Magstripe and PDF417 barcode location.
• Orientation by PHOTO (face) is now supported, but is not enabled by default, as this is not needed in
general circumstances.
• AutoOrientation can be set in the Application.INI [DataToSend] section. Set AutoOrientation=27 for all
orientation features (MRZ, MAGSTRIPE_TOP, BARCODE, PHOTO).
• See MMMReaderAutoOrientation in MMMReaderDataTypes.h for possible values. The default is
AutoOrientation=11 (MRZ, MAGSTRIPE_TOP, BARCODE).
Page 12 of 72
Document Reader SDK Change History
Page 13 of 72
Document Reader SDK Change History
Page 14 of 72
Document Reader SDK Change History
Page 15 of 72
Document Reader SDK Change History
Page 16 of 72
Document Reader SDK Change History
• Fix CheckVisibleOCR option to ensure that, when enabled, the check is performed when no MRZ is found
on the first OCR attempt.
• Fix marshalling of .NET CodelineData MrzOnRearSide and ExpiredDocumentFlag members.
• PDF417 decoder update to read truncated barcodes, such as some older Ohio DL.
• PDF417 decoder updates for better reading of distorted barcodes.
• Updated the crop to codeline functionality to accurately crop to the area of the document where the MRZ
(codeline) is searched.
• ePassport – fixed issue when performing Active Authentication with 2048- bit key sizes caused by not
reading all of the data from the chip.
• Added TIFF as a supported output file format.
• When post processing image, only rotate to handle cards at 90 degrees if an ID card size document. This
allows documents that are tall, such as HK/Macau arrival departure cards, to remain oriented correctly.
• Fix issue in QA mode when using an MK2 HighRes caused by the higher DPI of the reader.
• Added despeckleCodelineImage flag to OCRSettings to perform removal of stray black pixels in the
thresholded image to help reading MRZ with extra noise.
• Added alignTopBottom flag to ImgSettings to perform alignment/scaling of the top/bottom card edges to
be parallel to help correct distortion of cards in the CR5400.
• Added some missing enumerations to the Java wrapper.
• Fix crash when detecting ID cards on the KR2400 and when unplugging the USB of the KR2400 after
reading a document.
• ePassport – fixed issue with 1 line 30 documents failing BAC due to MRZ params not being parsed
correctly.
• ePassport – fix issue with passport failing to read the first time.
• Fix issue not allowing ActiveVideo to be turned off, which is used for some legacy RTE8000 readers in
kiosks.
• AAMVA – added IIN number used by Nunavut and Northwest Territories.
• Java – exposed a method, ParseCodelineData, to parse a codeline string.
• Fix cropping issues on legacy RTE8000 1 MP readers.
• Add support for Chinese 1 line ID starting with “C<”, in addition to the already supported “CS”
• Fix issues when using the RTE8000 with the QANonBlockingExample application.
• Improved SDK initialization speed.
• ePassport – prevent CD_SCDG1_CODELINE from being returned with empty data when there is no
ePassport application.
• PDF417 decoder updated to include CR/LF as ASCII to show ASCII result if all ASCII barcode.
• PDF417 decoder improved to read barcodes with less than perfect start/end markers.
Page 17 of 72
Document Reader SDK Change History
Page 18 of 72
Document Reader SDK Change History
o Added existing AgeVerifier application to SDK and added support for the CR5400.
o Added ability to show biographic data from MRZ or AAMVA.
• HLNonBlockingContainer
o Added EFCOM_DG_MAP, EFSOD_HASH_MAP and DOC_SIGNER_CERT ePassport options.
• BarcodeTester
o Updated Visible Image option to perform the same as the High Level decoding.
o Added Crop option.
o Updated Dark Objects option to perform like the High Level decoding by using barcode image
settings for cell phones (dark objects) and Visible (if selected) for white documents.
1.10.4 Plugins/Decoders
• Fix decoder crashes sometimes caused by dark images, composite barcodes or some uncropped
documents.
• Fix error decoding some PDF417 barcodes that are pre-cropped to the barcode instead of the entire
scanner image.
• Add support for PDF417 barcodes that are missing some top and/or bottom rows.
• Improved reading of angled barcodes, such as when an ID card is placed at an angle on the scanner.
• High Level API – Improved barcode reading on KR9000 when using DarkObject detection for cell phones.
This is accomplished by using the Visible (grayscale) image with Ambient Removal (if enabled/default) for
normal white documents and the Visible (grayscale) barcode image with no Ambient Removal for cell
phones. This allows for better decoding on white/non-cell phone documents, such as ID cards.
• High Level API – Improved reading barcodes on darker cell phones with brighter image capture. Note: a
reasonable amount of light must still be produced by the cell phone to decode the barcode, as would be
expected to use the cell phone under normal operation.
• Fix to use camera capture width/height for maximum image size, which some barcode decoders use for
internal cropping/location logic. In 3.1 and earlier SDKs, the captured image size was the maximum
camera size. In 3.2 and greater SDKs, the captured image size is slightly smaller to reduce noise around
image from camera internals.
1.10.5 High Level API
• Improved rules for reading Chinese ID 3 line of 30.
• Improved UV Security Check.
• Fix issue with HL returning a good read/green LED with no MRZ codeline data.
• Modified error code ERROR_CURRENTLY_IN_USE to be non-critical, which will no longer cause a
reader thread restart. This is used when forcing a scan to determine the reader is currently in a reading
state without restarting the thread, but waiting for completion.
• Fixed memory leak when using a CR5400 and High Level API caused by AutoOrientation by BARCODE
(PDF417). The leak would only occur if using a CR5400 and a blank ID card with no MRZ or magstripe.
• Fixed bug causing errors reading standard 3 line of 30 documents starting with CR due to incorrectly
identifying them as non-standard HongKong ID 3 of 30.
• Fix to avoid misreads of 1 line of 30 documents.
• Update to check MMMReader_GetDetectDocumentState after LocateDocument in case independent
image captures were previously called.
Page 19 of 72
Document Reader SDK Change History
• Fix to return Nationality (ROU) when reading 2 line 36 Romanian ID instead of empty. Older Romanian
IDs that are not ICAO compliant and have a numeric nationality field will still return an empty nationality.
• Set CodelineData DocNumber to extended document number when applicable.
1.10.6 Low Level API
• Fixed MMMReader_LL_LoadSettings to adjust settings based on DPI of camera due to issue found with
CR5400 connected.
• Fixed MMMReader_LL_LoadSettings to ensure Application.INI changes to default settings are preserved.
• Added check to UV Security Check to avoid china travel documents (T, D, W, Q) as they tend to fail on
the non UV dull document laminate.
• ePassport – Add support for EAC Chip Authentication using AES. Previously, on Chip Authentication
with 3DES was supported.
• AAMVA – added support for decoding Canadian Military Driver License, which has an improperly coded
IIN.
• Fix cropping issue with ID cards and magstripe that are pushed to the back edge of the scanner, leaving
no black space between the ID card and back of capture area.
• Fix cropping issue with ID cards on the KR9000 leading to an under-crop due to false detection of a
magstripe between the top of the ID card and back of the scanner.
• ePassport – add support for second CAR (Certificate Authority Reference) in EF.CVCA during EAC
Terminal Authentication.
• ePassport – allow Passive Authentication to pass with a warning if unable to read EAC protected
DataGroups because EAC is not enabled.
• Fixed random warping of image on CR5400 due to OCR image manipulation.
• ePassport – Fix bug with DH (Diffie-Hellman) EAC Chip Authentication key exchange.
• ePassport – Fix lookup of certificate chain passed to the chip during EAC Terminal Authentication (TA),
which was causing some TA failures.
• ePassport – Avoid sending root CVCA to chip during EAC Terminal Authentication (TA) if passed in via
CVCA callback. FileStore will not load CVCA roots.
• ePassport – Fix to handle reading DataGroups larger than 32k using the ReadBinaryOdd command. One
particular chip was not responding to the ReadBinaryOdd command as expected at the end of the data.
• ePassport – Add the ability to get the EFCOM_DG_MAP, EFSOD_HASH_MAP and
DOC_SIGNER_CERT from the EF.SOD.
• Fix detect delay to avoid document bounce on CR5400.
• Fix cropping issue when locating top (LocateTop=1) that may cause over-cropping.
Page 20 of 72
Document Reader SDK Change History
Page 21 of 72
Document Reader SDK Change History
Page 22 of 72
Document Reader SDK Change History
• Authentication – several data structures were updated with additional elements from migration of Data
Capture and Authentication (DCA) software that is not directly used by the Page Reader SDK at this time.
The following structures were updated as part of this process.
o MMMReaderEventCode
o MMMReaderDataFormat
o MMMReaderErrorCode
o ReaderState
o MMMReaderValidationCode
o MMMReaderDataType
o DataSendSet
o MMMReaderSettings
1.13.3 Drivers
Updated 3MPageReaderDriver to v1.26.4, which now uses the signed version of the latest HID RF driver.
This removes the need to prompt before installing the HID driver. The HID driver itself is the same.
1.13.4 Documentation
Added QS1000 user guide to SDK documentation.
1.13.5 Applications
• ReaderExpo
o Added the ability to create multiple tab pages within a single scheme. Scheme tab pages allow
for showing more features in a single scheme and displaying the features more easily on smaller
screen sizes.
o Added new Document Summary feature to summarize document and biographical information
from retrieved from other features/panels in the scheme.
o Added new Control Panel feature to centralize some common imaging features in one panel.
o Added new CR5400 schemes that include support of ePassport and/or MSR when a cradle is
used.
o Updated to better handle automatically recovering from error when no RF module and/or MSR
module is found and is required by the scheme.
o Update to ensure AAMVA panel data is cleared after each document read.
o Update to show full address in AAMVA panel instead of being cut off.
o Update to allow for resizing of image panels to smaller sizes.
o Add Age to AAMVA panel.
o Update layout of the Barcode panel to take up less space.
o Fix gender display bug in MRZ panel.
o Prevent panels from being dragged past the viewable top/left of the application.
o Improved application load time that had slowed down too much due to the new tabbed schemes
being preloaded.
• eMRTDReader
o Added the ability to select the SAC algorithm to use when a document supports multiple SAC
algorithms.
Page 23 of 72
Document Reader SDK Change History
Page 24 of 72
Document Reader SDK Change History
Page 25 of 72
Document Reader SDK Change History
• OutputWedgeSysTray - Fixed issue with not reading image format from xml file. Fixed issue with parameters not
being written properly for both input and output module sections. Added a localKeyDelay option to PressKeyChar
and TypeString tasks (to slow down specific tasks to accomodate external requirements.)
1.16.2 High Level API
• Fixed bug in magstripe finder related to puDataToSend.autoOrientation used on CR5400.
• Improved cropping of angled document edges, such as with the CR5400.
• Modified document detection scheme of CR5400 to use the lower zone for insertion and the upper zone
for removal. SDK handles CR5400 configured for old or new detection scheme.
• Added barcode processing to the “Load and Run from Directory” feature in HLNonBlockingContainer.exe
to reprocess images saved by SDK.
• Fixed AAMVA data decoder for the Yukon DL, which now ignores data element separators placed in the
header.
• Update AAMVAParser.xml with templates for versions 6, 7 and 8 to make sure newer AAMVA data is
parsed and displayed.
1.16.3 Low Level API
• Fixed a potential issue reading ePassport caused by a change in 3.2.1.25 to allow reading SAC without
removing the passport from the reader. Selecting the MF before selecting the CardAccess File caused
failures depending on the configuration.
• Fixed a potential race condition in firmware (ActiveReader) detection causing initial detection to fail when
enabled.
• Fixed bug in SendAPDU logging that would only print the lower nibble of the command.
• Added SW 61xx as a possible successful message for SendAPDU.
• Added more logging information to RT_PCSCReader.
Page 26 of 72
Document Reader SDK Change History
Page 27 of 72
Document Reader SDK Change History
Page 28 of 72
Document Reader SDK Change History
Page 29 of 72
Document Reader SDK Change History
• Various SDK fixes for the CR5400 and MK2 HighRes readers, mostly related to image scaling
(CR5400/MK2 HR) and two sided image capture (CR5400).
• Added EAC checks to some of the ConvertPassportExceptionToPassportErrorCode conversions. Some
of the errors were being translated to BAC failures when an EAC enabled passport was presented and
EAC was turned off.
• Modified the PDF417 data type from binary to text if there are non-printable characters in the array.
• Added a couple of missing enumerations in the CSharp wrapper for DocSignerCertMode and
ExternalCertMode.
• Fix for 1 line MRZ parsing to avoid noise lines above the MRZ.
• There was a problem where if a device with a magnetic strip reader is unplugged and plugged back in,
the mag stripe device may pull a different device address. This fix will update the device address.
Page 30 of 72
Document Reader SDK Change History
Page 31 of 72
Document Reader SDK Change History
• The following is a list of new options added to the Application.INI for the CR5400:
o In the DataToSend section, IRImageRear, VisibleImageRear, UVImageRear and
BarcodeImageRear to get the rear/second-side image.
o In the ImageOverrides section, added ScaleFactor setting. For double-sided readers such as
CR5400. Reader firmware scales the captured images by X % for variable DPI. Values from 25
to 100 % scaling. 100 % = full scale / highest DPI.
• The following is a list of new options added to the Application.INI for all page readers:
o In the Img section, added UseVisibleForBarcode setting. UseVisibleForBarcode may be set to 1
to use the visible colour image for barcode processing instead of taking an additional white light
image. More specifically, instead of capturing an additional white light image for barcode
processing, this option will use the visible colour image to create a greyscale image for the
barcode processing. The values are 0 – disabled and 1 for enabled. The default is disabled.
o In the DocDetect section, added ActiveReader. Enables or Disables Active Reader firmware
based document detection. This is the preferred method for the CR5400. Readers, such as the
AT9000, KR9000 and CR54000, have firmware which can repeatedly capture one illumination
and test a user selected vertical location for document presence. The location test is a very
simple threshold and black/white pixel count and does not account for ambient light, so the
location requires a black background (under the clip is its intended usage). As there is no
transferring images repeatedly, USB bandwidth and PC usage is significantly reduced. Note:
Enabling this option will override the normal detection boxes method and
ActiveVideo/DarkObjects.
o In the DocDetect section, added ActiveReaderBottomOffset. Used to set the ActiveReader
detection location. The value is millimetres from the bottom or back of the document detection
window. The default is 12 mm.
Page 32 of 72
Document Reader SDK Change History
Page 33 of 72
Document Reader SDK Change History
Page 34 of 72
Document Reader SDK Change History
Page 35 of 72
Document Reader SDK Change History
Page 36 of 72
Document Reader SDK Change History
• Added a new data item of CD_PASSIVE_AUTHENTICATION which indicates whether a chip fully passes
Passive Authentication. This is a summary data item that is equivalent to checking all of the other
validates which together define passive authentication. Note that to pass PA you must supply the external
Country Signer Certificates.
• Added MMMReader_SetWarningCallback to allow applications to set a warning callback – see the
equivalent low level API..
• Corrected an issue that occurred when using the DetectDuringRF setting which could cause
ERROR_RF_ABORTED not to be handled correctly by the SDK, causing it to re-initialise the SDK. Note
that if documents are removed during an RF read this error code can be called, so applications
configured to use this setting should not consider ERROR_RF_ABORTED as an error.
1.30.2 Low Level API
• Added initial support for Supplemental Access Control (SAC). This is defaulted to off, but if you wish to
test documents with SAC, set SAC_ENABLED=1 in the [RFProcSettings] section of SAC.
• Added MMMReader_LL_SetWarningHandler to allow applications to set a warning callback, which will be
called whenever a warning is detected. Currently this is only used for warnings relating to RFID encoding
issues and other related problems. It is recommended that QA applications may wish to check the status
of these warnings, and applications attempting to check conformity to BSI TR-03105 Part 5.1 should
check that this returns no warnings.
• Added MMMReader_LL_SetRFPasswordCallback to allow applications to register an enhanced callback
for supplying the password for BAC or SAC.
• Added MMMReader_RFCheckPassiveAuthentication which will check all of the required data items to
give an overall validation code to indicate whether PA is successful or not. Customers may prefer this to
checking each of the individual validates separately, but is functionally equivalent.
• MMMReader_RFOpen and MMMReader_RFWaitForOpen will now trigger
RF_CHIP_OPENED_SUCCESSFULLY event when the chip has been opened, before an application has
been selected. It will now trigger RF_APPLICATION_OPENED_SUCCESSFULLY when an application
has been successfully opened. Low Level API applications previously waiting for the
RF_CHIP_OPENED_SUCCESSSFULLY event should switch to the new event. This does not currently
apply to the high level API. Chips that implement applications that are not supported will trigger
RF_CHIP_OPENED_SUCCESSFULLY but not RF_APPLICATION_OPENED_SUCCESSFULLY. Also
note that SAC will be performed prior to successfully opening the application, so may request the
password prior to RF_APPLICATION_OPENED_SUCCESSFULLY.
• Corrected some issues with validation of RFID verification process to ensure compatibility with BSI TR-
03105 Part 5.1.
• Corrected an issue with OCR errors caused by documents where there were unexpected features on the
extreme left of the document (eg a thick cover that is wider than the data page).
Page 37 of 72
Document Reader SDK Change History
Page 38 of 72
Document Reader SDK Change History
Page 39 of 72
Document Reader SDK Change History
Page 40 of 72
Document Reader SDK Change History
MMMReader_CameraTakeSnapshot, which will scan the document and cache the images, which
will then be returned via TakeSnapshot.
o The ID150 can be identified using the puHasMotorFeed member of the
MMMReaderHardwareConfig structure.
• Further changes to improve the DarkObjectDetect method of document detection, which should improve
detection of dark cell phones.
• Added patent pending dirt detection algorithms, which allows the SDK to detect that the scanner is dirty.
An additional output parameter of aDirtPosn is added to MMMReader_ImageReadCodeline which is used
to return the position of dirt if present. Additional settings parameters are supplied to this function for dirt
detection.
• Removed GPIODll.dll and bc_Content_Decoder.dll from the files required for distribution.
• Removed the non-EAC builds of RTePassportAPI.dll and RTE8000ePassportAPI.dll. The *_EAC.dll
versions of these files are supplied, and can still be used in non-EAC mode by setting the
EAC_ENABLED flag as before, without the need for additional files.
• Added the ability to specify paths in MMMReader.ini using tokens. %<token>% is expanded out to match
an environment variable with that name – eg, %APPDATA% and %TEMP%. Additionally,
%ALLUSERSAPPDATA% and %LOCALAPPDATA% are mapped to the appropriate directory even if
there is no environment variable (such as when running under Windows XP.
• Added “puLogDir” to the settings structure, which can be configured via MMMReader.ini. This path is now
the default location for log files, unless an explicit path is supplied to the call to enable logging. If not set,
this will be the “bin” directory, however you may wish to set this path to a different location via
MMMReader.ini.
Page 41 of 72
Document Reader SDK Change History
These members have been renamed to ensure anyone overriding the default values modify the values
they use accordingly. To convert the SDK back to the previous default settings for doc detect set the
following Application.ini option:
[ImageOverrides]
ScaleBrightnessIRDetect=100
Page 42 of 72
Document Reader SDK Change History
Page 43 of 72
Document Reader SDK Change History
• When UHF reading is enabled, the UHF antenna will now look for a document in parallel with the scanner
waiting for a document to be placed on the glass. This means it is possible for a UHF tag to be read
without placing it on the glass.
1.46.2 Low Level API
• Added a new error ERROR_ALLOCATING_MEMORY. This error is raised if there is an error allocating
memory on the heap.
• Added extra logging information for UNKNOWN_ERROR
• Improved FindTop algorithm which is executed if puDocDetectSettings.locateTop is set to TRUE.
• Added context rules for North American Enhanced Driver Licenses.
• Added OptionalData1 and OptionalData2 to MMMReaderCodelineData.
• Changed MMMReader_ParseAAMVA() to take a pointer to an MMMReaderAAMVAData pointer. The
value of the MMMReaderAAMVAData pointer must be null when this function is called. On return of the
function, the pointer will be set to point to a new instance of MMMReaderAAMVAData, which must be
freed by calling MMMReader_DestroyCachedObject() or MMMReader_DestroyCachedData(). For more
details see comments in the MMMReaderLowLevelAPI.h file.
1.46.3 .NET Wrapper
• Fixed issue with UpdateSettings, which could cause the directory paths to be overwritten with garbage.
Page 44 of 72
Document Reader SDK Change History
Page 45 of 72
Document Reader SDK Change History
Page 46 of 72
Document Reader SDK Change History
Page 47 of 72
Document Reader SDK Change History
Page 48 of 72
Document Reader SDK Change History
Page 49 of 72
Document Reader SDK Change History
Page 50 of 72
Document Reader SDK Change History
Page 51 of 72
Document Reader SDK Change History
Page 52 of 72
Document Reader SDK Change History
Page 53 of 72
Document Reader SDK Change History
• Application.ini, which is in the Config directory, can now be used to override the settings from the
scanner. This allows your application to set the “data to send” flags and other settings without using
MMMReader_UpdateSettings. This is particularly important when using an AT9000 or Kiosk Reader,
as these do not have Reader.ini on the scanner.
• MMMReader.ini is used to locate the installation, and the Config and Plugins directories. When re-
distributing the application, we recommend that you place this with the binaries. If you change the
directory structure, please edit the paths in MMMReader.ini to have the correct locations for the
Config and Plugins directories.
• Replaced eMRTDTestProgram with a new eMRTDReader application.
• For EAC builds, there are now additional *_EAC.dll versions of the RF related DLLs. For compatibility
reasons, these DLLs are the only software change from a non-EAC release.
• The SDK now depends upon some Microsoft Visual Studio 2005 DLLs, and therefore requires the
VC8 C Runtimes to be installed. The SDK installer will automatically run Microsoft’s vcredist_x86.exe
however you must ensure this is also executed on the end users PCs.
1.71.2 High Level API
• Added aCallbackParam to ErrorCallback function, to be consistent with all other callback functions.
1.71.3 Low Level API
• Corrected an OCR issue with 2x36 documents
• Added MMMReader_RFGetChipApduTime and MMMReader_RFGetChipBytesRead to return
statistics about RF reads.
• Added new post process flags for hue adjustment, contrast, grey stretch. The sharpen post process
operation now works in a different way, and gives better results.
Page 54 of 72
Document Reader SDK Change History
Page 55 of 72
Document Reader SDK Change History
3. RTE8000 SDK v2
1.72 Version 2.1.6 – 20 Jan 2009
1.72.1 Low Level API
• Added support for additional boxes to be checked during doc detect. These can be specified in the
new boxes member of the DocDetectSettings structs, although it is recommended that customers
check with 3M RT before using these.
• Corrected an issue with PC/SC mode RFID reads, when errors are returned by the chip.
Page 56 of 72
Document Reader SDK Change History
Page 57 of 72
Document Reader SDK Change History
• Corrected issue with RTE8000_ImagePostProcess where the reference image was not applied correctly if
the image was visible light, greyscale, and rotated.
Page 58 of 72
Document Reader SDK Change History
• The SIGNAL_DOCREMOVE led/sound event is now triggered as soon as the document may be
removed, in the case where only image processing is being performed, but all RFID and camera activity
has completed (e.g. decoding barcodes)
1.83.2 Low Level API
• Added a parameter on RTE8000_CameraDetectDocument() to allow the scanner illumination to be set
while performing document detection.
• Added RTE8000_TurnOffIllum()
Page 59 of 72
Document Reader SDK Change History
• PDF417 plugin: corrected an issue with greyscale passes, which may improve the read-rate for some
documents.
Page 60 of 72
Document Reader SDK Change History
Page 61 of 72
Document Reader SDK Change History
Page 62 of 72
Document Reader SDK Change History
Page 63 of 72
Document Reader SDK Change History
Page 64 of 72
Document Reader SDK Change History
Page 65 of 72
Document Reader SDK Change History
Page 66 of 72
Document Reader SDK Change History
Page 67 of 72
Document Reader SDK Change History
• Corrected a crash which occurred if you shut down the API, and then re-initialised it.
• Corrected issue with image buffers being overwritten with the next image taken from the camera, in cases
where the image exposure time was significantly less than that taken to process the image.
• Improved performance while logging is enabled by leaving the file open, and not flushing it at every line
output.
• Included function entry and exit logging in release builds, so no longer require a separate debug build for
tracing.
• Added support for debarrelling an image, using RTE8000_ImagePostProcessImage.
1.111.3 QA High Level API:
• Decode the DG1 Data, and add a test to compare against the OCR as read.
• Only initialise RF if the document type specifies RF – allows QA’ing on non-RFID units.
• Additional tests added for “bad chars count”, “broken chars count”, and codeline checkdigit test.
Page 68 of 72
Document Reader SDK Change History
Page 69 of 72
Document Reader SDK Change History
• When using the blocking API, obtain plugin data via RTE8000_GetPluginData().
• When using the non-blocking API, obtain plugin data via CD_PLUGIN + x messages.
• ERROR_NON_BLOCKING_ONLY has been correctly renamed as ERROR_BLOCKING_ONLY
• It is now possible to request just the BAC Status, without other data items.
1.118.2 Low Level API
• Additional logging at level 3 has been added to the RFID routines. Note currently that to retrieve this
information, you must enable logging after the high level has been initialised.
Page 70 of 72
Document Reader SDK Change History
Page 71 of 72
Document Reader SDK Change History
Page 72 of 72