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.
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
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 withexternal "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 asbrp_Iso14a_RequestLegacy
) - Renamed
brp_Sys_GetLicenses_LicenseBitMask
tobrp_LicenseBitMask
- Extended
VHL.Setup
command by additional parameters - Renamed struct
brp_Sys_GetLicenses_LicenseBitMask
tobrp_LicenseBitMask
- Renamed const
brp_FeatureID_HidPyramid
tobrp_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
-
The signature of the following commands has changed:
-
The signature of the following configuration value has changed:
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
- Since release 3.15.00, BRP Lib returned BRP_ERR_FRAMEFORMAT in most cases when communicating with an RS-232/UART-based device.
3.15.00 (2021-03-15)
BALTECH API breaking changes
- Cleaned up MIFARE/DESFire error codes that are no longer used by the firmware
- The signature of the following commands has changed:
- Sys.GetFeatures
- Iso14a.TransparentCmd
- Mif.ChangeValue
- Mif.TransferBlock
- Mif.ChangeValueBackup
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
, andKeyboard
.
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()
andbrp_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 tobrplib.h
, which required the directory with thebrp_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 ofwindows-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()
andbrp_get_response()
didn't reset the return valueresp_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) andlibBrpDriver.dylib
(macOS) relocatable: They search forbrp_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 tobrp_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 supportedsession_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
andttyS0
. - 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 wrapperBrpDriver.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
- brp_open() hung for ~20 seconds if the IP address didn't exist (i.e. the reader lost power). Now it blocks for the millisecond time period specified in (see BRP_DEFAULT_TCPIP_ROUNDTRIP_TIMEOUT) in the worst case.
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 bysize_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 buildingbrp_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
to3038_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
- Added support for saving and restoring PKI sessions via brp_pki_save_session() and brp_pki_restore_session()
1.00.00 (2015-10-31)
Features
- Initial release which implements the following subset of the final functionality:
- PKI based security
- BRP over TCP
- 32-bit Windows DLL
- Some basic BRP commands (e.g. brp_AR_GetMessage() and brp_Sys_GetInfo())