Skip to content

Changelog & known issues for the BALTECH SDK

Here, you can find the changelog as well as the known issues with the latest version of BALTECH SDK.

Download latest version

If you're experiencing an issue in an older version, please first try the latest version. To report a new issue in the latest version, please get in touch.

Known issues in latest version

FRAMEFORMAT error may occur when using a USB to serial converter cable

Details

Issue
A FRAMEFORMAT error may occur when transmitting large amounts of data (i.e. BRP frames with a payload of several 100 bytes) via serial interface using a USB to serial converter cable. This usually happens when reading cards using VHL.Read.

Workaround

  • Avoid the transmission of large BRP frames by splitting an operation into several smaller partial operations.
    Example: VHL.Read(Adr=0, Len=1000) can be split into VHL.Read(Adr=0, Len=500) and VHL.Read(Adr=500, Len=500).
  • If you're using an FTDI adapter, set the latency timer to 2 ms (learn more).

Changelog

3.19.00 (2024-09-10)

Features

  • App notes are now easier to use with C++: You no longer need to bracket the #include <baltech_api..h> statement with external "C" {}.

  • If you use an encrypted connection, the SDK no longer sends unencrypted data,
    but encrypts it as well when transmitting it to the application. However, for debugging purposes, you can explicitly record the unencrypted data stream as well.

  • Added new app notes for the Autoread and VHL & Autoread operation modes. The VHL app note was removed as we highly recommend VHL & Autoread over "pure" VHL.

  • Added a MIT license file. (Previous versions had already been released under the MIT license; only the license file had been missing.)

Bug fixes

  • The SDK didn't build on the ARM platform.

  • You can now disable the HF antenna via Sys.HFReset for up to 2 sec without running into a BRP timeout. Previously, a timeout occurred after 200 ms.

  • The SDK couldn't connect to a reader via HID that was blocked by a Windows service running in the background.

    • Documentation of the reader commands is replicated in the header files. This way, IDEs support displaying command documentation via keyboard shortcut (i.e. Ctrl-Q in CLion).

3.18.00 (2023-10-12)

BALTECH API breaking changes

  • Introduced new brp_Iso14a_Request command (the old version is still available as brp_Iso14a_RequestLegacy)
  • Renamed brp_Sys_GetLicenses_LicenseBitMask to brp_LicenseBitMask
  • Extended VHL.Setup command by additional parameters
  • Renamed struct brp_Sys_GetLicenses_LicenseBitMask to brp_LicenseBitMask
  • Renamed const brp_FeatureID_HidPyramid to brp_FeatureID_FarpointePyramid

Features

  • BASE_RECONNECT_TIMEOUT in reader_update app note was increased to 10000 ms.

Bug fixes

  • On Windows, you can now open RS-232/UART ports above COM9 without specifying "\.\" as a prefix, e.g. brp_create_rs232_port("COM10", ...).
  • brp_create_usb_hid() now works even on readers where BRP/HID is running at a USB interface number greater 0. This is especially the case for devices that emulate a Bluetooth dongle or a keyboard.
  • Setting certain parameters to NULL caused the SDK to crash.

3.17.00 (2021-12-22)

BALTECH API breaking changes

Features

  • Added the app note reader_update. It provides a sample implementation of a wired upload application to deploy a configuration and/or firmware update via USB or RS-232/UART.

Bug fixes

  • Since release 3.03.00, the SDK contained a memory leak on Linux and macOS. This memory leak occurred only if the HOME environment variable was not set and monitoring was not suppressed.

3.16.00 (2021-04-16)

Bug fixes

3.15.00 (2021-03-15)

BALTECH API breaking changes

Features

  • The default roundtrip timeout for TCP/IP-based connections was increased from 500 ms to 1500 ms. Now a single lost packet which Windows retransmits after 1000 ms by default won't cause an error anymore: The SDK will wait long enough to get the response to the retransmitted command (if there was one).
  • Added commands for BEC2 upload to BALTECH API.
  • Added an app note for usage of brp_mempool.

Bug fixes

  • Fixed a NULL pointer exception which could occur when disconnecting a USB HID device while running brp_open(). This bug was already fixed in release 3.14.00 for protocol objects that were created with snr <> 0. Now, it also works with snr = 0 (see brp_create_usb_hid()).
  • Commands sent via RS-232/UART or USB CDC running longer than about 30 ms returned a BRP_ERR_CMD_TIMEOUT error since release 3.12.00.

3.14.00 (2020-11-30)

Bug fixes

  • When receiving a command response with an undefined enum value, the wrapper silently ignored this in the past and returned an invalid enum. Now it either returns an error or (for some extendable commands) it returns a special *_undefined enum value.
  • Fixed a NULL pointer exception which could occur when disconnecting a USB HID device while running brp_open().
  • If the reader returned a payload that was too short or too long, the BALTECH API library returned INVALID_API_ERRCODE or ignored the error. Now it correctly returns BRP_ERR_PAYLOAD_FORMAT.

3.13.00 (2020-10-26)

Bug fixes

  • When connecting USB HID readers of different report sizes at the same time, only one of the reader types could be opened. For customers working with our standard products, this bug couldn't occur as long as they didn't connect readers with a customized (USB) firmware in parallel.

3.12.00 (2020-08-21)

Bug fixes

  • Windows only: When connecting via RS-232/UART (not virtual COM port!) and running a command with a very long response, BRP_ERR_FRAMEFORMAT was usually returned instead of the correct answer.
  • macOS only: RS-232/UART and virtual COM port didn't work at all.
  • Linux and macOS only: Working with more than one RS-232/UART or virtual COM port interface didn't work (see also version 3.11.00).

3.11.00 (2020-08-19)

Bug fixes

  • Working with more than one RS-232/UART or virtual COM port interface didn't work. The SDK successfully opened the second interface, but all commands sent to the first device failed.

    This is a quickfix for Windows only. The fix for macOS and Linux was implemented in version 3.12.00.

3.10.00 (2020-08-07)

Bug fixes

  • Windows only: The statically linked C runtime introduced in version 3.02.00 was accidentally changed back to a dynamically linked C runtime in version 3.05.00. Thus, MSVCRTxx.DLL was always required.

3.09.00 (2020-07-15)

Bug fixes

  • When opening HID devices with version 3.08.00, the devices could no longer be detected by tools such as BALTECH ToolSuite. Now the interoperability with ToolSuite has been improved.

3.08.00 (2020-07-15)

BALTECH API breaking changes

  • Removed the card type brp_CardType_Myd, as it hadn't been supported by the firmware for a long time.
  • Renamed the message type definition brp_AR_GetMessage_MsgType to brp_MessageType
  • Simplified the signature of Sys.GetBootStatus
  • Fixed incorrect numerical values mapped with the brp_MessageType values AlarmOn, AlarmOff, and Keyboard.

Features

  • The app notes "tcp_client", "tcp_server", and "udp_introspection" got a makeover. There's more detailed information in the comment sections now, and also the command line output has been reworded.

Bug fixes

  • After the installation of USBpcap (part of Wireshark), the SDK could no longer open an HID connection to devices that were additionally configured for keyboard emulation, virtual COM port, or PC/SC.
  • Windows only: 2 applications could connect to the same HID device simultaneously and thus interfere with each other. Now the application connecting first gets exclusive access to an HID device.
  • macOS only: The SDK did no longer compile since version 3.03.00.

3.07.00 (2020-04-19)

Bug fixes

  • Since version 3.03.00, the SDK contained a buffer overflow when monitoring wasn't suppressed explicitly. This overflow caused macOS software to crash, while Windows and Linux applications kept running. Now it's fixed and all OSes work as expected.

3.06.00 (2020-04-16)

Bug fixes

  • Since version 3.03.00, the SDK failed to compile on Windows SDK 10.0.18363 and newer without warnings.

3.05.00 (2020-04-13)

Features

  • Removed Visual Studio projects files. Please use CMake to create them after unpacking – it's natively supported as of Visual Studio 2017.
  • Changed the error code names in the monitoring log files. They now match the names in the BALTECH API (e.g. BRP_VHL_ErrNoTag instead of VHL.ErrNoTag), so it's easier to search for them in the API reference.

Bug fixes

  • Since version 3.02.00, compiling the SDK on Windows showed the warning replace /MT by /MD.
  • Since version 3.03.00, the SDK didn't compile on Linux/macOS anymore.

3.04.00 (2020-03-30)

Features

  • Added support for brp_open_tcp_session() and brp_open_tcp_handle_session()to BrpDriver.

3.03.00 (2020-03-25)

Features

  • Added the brp_get_io_id() command. You can use it to retrieve the actual interface identification name.
  • Added a monitoring mechanism. You can now log all commands and responses exchanged with a reader and view them in an HTML file.
  • BALTECH API changed
  • BrpDriver:
    • brp.h had a dependency to brplib.h, which required the directory with the brp_lib-headerfiles to be in the include path. Now this dependency is optional (and can be activated via BRP_SDK_COMPATIBILITY).
    • Added support for opening HID devices with specific serial numbers (although in a non-backward-compatible way via serialnr-str instead of windows-device-name).

Bug fixes

  • Fixed a memory leak on closing a connection.
  • On Linux/macOS, the RS-232/UART implementation printed log messages to stdout when trying to open a connection.
  • BrpDriver:
    • brp_exec_command() and brp_get_response() didn't reset the return value resp_len to 0 in case of an error. This caused applications relying on this behavior to crash.
    • The general BRP status codes are now returned as error code BRP_ERR_STATUS. (They were mapped to other error codes in the past).

3.02.00 (2020-01-31)

Features

  • Moved the documentation online: https://docs.baltech.de/developers/sdk.html
    It has also grown quite a bit, so you're welcome to check out the new parts as well. Feedback appreciated at support@baltech.de
  • Made libBrpDriver.so (Linux) and libBrpDriver.dylib (macOS) relocatable: They search for brp_lib in their own directory via relative RPATH settings.
  • Switched the Windows DLL to a statically compiled C runtime. This has increased the DLL sizes by about 100 kB per file, but made them standalone, so you don't have to include MSVCRTxx.DLL in your application anymore.

Bug fixes

  • In the RS-232/UART implementation of Linux/macOS, the characters 0x11 and 0x13 were swallowed, resulting in the error BRP_ERR_FRAMEFORMAT (0x04000003). This was caused by the XON/XOFF protocol, which was accidentally enabled and has now been disabled.
  • The main CMakeLists.txt wasn't part of the SDK ZIP file and has now been added.
  • The pre-built /binaries/winXX/ImportLibs/Release/baltech_api.lib wasn't part of the SDK ZIP file and has now been added.

3.01.00 (2020-12-12)

Features

  • Added support for custom HID report formats.

Bug fixes

  • The USB HID interface doesn't detect non-HID devices any more. Thus, brp_create_usb_hid(0) now works reliably if a non-HID BALTECH USB device is connected additionally to the HID BALTECH USB device.

3.00.00 (2019-12-06)

Features

  • Added support for macOS. You can now create macOS applications that access our readers.
  • Added support for "secure channels" to use (AES) encryption/authentication when communicating with a reader.
  • Added wrapper for legacy driver BrpDriver.DLL that maps all calls to brp_lib.dll.
  • Added support for ID-engine SD and PAD reader with USB connection. (Until now, every connection attempt failed with a timeout.)
  • Added application note secure_communication to demonstrate how to use secure channels.
  • brp_create_pki() now supports session_timeout=BRP_INFINITE for sessions that never shall time out (additionally to the already supported session_timeout=0).
  • brp_lib.h can now be included from C++ files. (Until now, the include statement had to be embraced by an external "C" statement.)
  • Simplified API for PKI by adding brp_pki_get_session_buf_size() as a replacement for brp_pki_save_session(, NULL, 0, ).
  • The RS-232/UART interface is less restrictive: Now, it accepts not only COM1 (Windows) and /dev/ttyS0 (Linux), but also \\.\COM1 and ttyS0.
  • You can now chain multiple protocol stacks ("composite protocols") by setting the I/O layer of the upper stack to a composite protocol stack that implements the lower part.
  • BALTECH API has been changed (HostSecurityAccessConditionBits were extended).

Bug fixes

  • If a BRP command timed out, the protocols RS-232/UART and USB HID returned BRP_ERR_TIMEOUT. Now, they return BRP_ERR_CMD_TIMEOUT. (BRP/TCP already worked correctly before this fix).
  • Skipped to version 2.20.00 to be able to distinguish between original BrpDriver.dll and wrapper BrpDriver.dll when looking at the version string.
  • RS-232/UART and virtual COM port used the wrong protocol ID. (In practice, most applications don't check this ID.)
  • The Windows version of appnote_tcp_server didn't work. (The path to the certificate file was invalid.)

2.06.00 (2019-10-29)

Bug fixes

  • Version 2.05.00 was invalid as the generated ZIP file didn't contain the /brp_lib/src/release.h and /binaries directories.

2.05.00 (2019-10-24)

Bug fixes

  • Version 2.04.00 was invalid as the generated ZIP file was empty.

2.04.00 (2019-10-24)

Features

  • Added application note tcp_client
  • Updated documentation
  • BALTECH API changed:
    • CardEmu.StartEmu deleted
    • signature of Desfire.ChangeKey changed
    • signature of Sec.AuthPhase1 changed
    • signature of Sec.Tunnel changed

Bug fixes

2.03.00 (2019-04-17)

Features

  • BALTECH C API header file has been split into multiple header files. Now, there's 1 header file per command group.
  • BALTECH API changed

Bug fixes

  • Missing files for app notes added

2.02.00 (2019-02-05)

Features

  • Added "BALTECH C API" so you can execute BALTECH commands via simple C function calls now
  • Added support for RS-232/UART and USB/virtual COM port connections
  • Restructured directory layout
  • int parameters/return values that specify the size of a buffer/object were replaced by size_t.
  • Added app note for reading/writing data to/from card via VHL commands
  • Updated documentation

Bug fixes

  • Possible memory leak in BRP and TCP/IP protocol fixed
  • Timeouts in TCP/IP connections had only an accuracy of 1 sec (instead of 1 ms)

2.01.00 (2018-10-31)

Features

  • Added support for Linux. You can now create Linux applications that access our readers.

Bug fixes

  • License files of subprojects used by brp_lib (and other files not necessary for building brp_lib) weren't distributed. Now they can be found in /src/<subproject>/.

2.00.00 (2018-10-23)

Features

  • Added support for USB HID.
  • BRP communication library is now deployed as part of 6003_baltech_sdk together with the reference manual.

Bug fixes

  • Fixed memory leak during protocol destruction.

1.06.00 (2018-08-14)

Features

  • Added support for 64-bit Windows
  • Added support for Base64-encoded PKI certificates/keys (see filename extensions PEM/CRT/KEY)
  • Added user manual
  • Added app note for UDP introspection
  • Added encryption to BRP-over-TCP app note

1.05.00 (2018-07-26)

Features

  • Added app note for C#
  • Switched from Visual Studio 2008 to Visual Studio 2015

1.04.00 (2018-07-06)

Bug fixes

  • Package was renamed from brp_lib_x_xx_xx.zip to 3038_brp_lib_x_xx_xx.zip

1.03.00 (2018-07-06)

Features

  • Replaced app note that demonstrates how to create a BRP-over-TCP client with an app note that demonstrates how to create a BRP-over-TCP server.

1.02.01 (2017-04-04)

Bug fixes

  • Fixed a bug where brp_lib could enter an endless loop under specific circumstances if a TCP connection was canceled.

1.02.00 (2016-11-10)

Features

  • Added support for CMake
  • Added support for the MinGW compiler

1.01.00 (2016-03-08)

Features

  • The default roundtrip timeout of 500 ms on TCP/IP protocols is now configurable via brp_set_tcpip_roundtrip_timeout(). This is required for very slow connections (i.e. GSM).
  • Added support for continuous and repeat modes.

Bug fixes

  • Security related bug fix: RAM where keys are stored will be overwritten with zeros on close (session key) or on destroy (private ecc key) respectively.

1.00.01 (2015-11-09)

Features

1.00.00 (2015-10-31)

Features

  • Initial release which implements the following subset of the final functionality:
Title