Skip to content

Zaber Motion Library Changelog

2021-10-22 Version 2.7.0

  • New features
    • GetString and SetString methods for accessing string-based device/axis settings
  • Bug fixes and Improvements
    • Fixing digital output method on streams
    • Fixing rare python warning message when script ends
    • Documentation improvements

2021-08-23 Version 2.6.1

  • Bug fixes and Improvements
    • Identification resets all stored device information
    • N-API upgrade to version 4 (Node.js library)
    • Unifying web and Node.js library

2021-07-30 Version 2.6.0

  • Bug fixes and Improvements
    • Adding support for communicating with Zaber Launcher remotely (Network Sharing)

2021-07-27 Version 2.5.1

  • Bug fixes and Improvements
    • Fixing Device DB local file compatibility

2021-07-26 Version 2.5.0

  • New features
    • Support for hardware modified devices

2021-07-16 Version 2.4.2

  • Bug fixes and Improvements
    • Upgraded all external dependencies
    • Allowing setting of unknown setting without unit conversion

2021-06-28 Version 2.4.1

  • Bug fixes and Improvements
    • Improved compatibility with Zaber Launcher

2021-06-17 Version 2.4.0

  • New features
    • Support for port sharing with Zaber Launcher
    • Support for upcoming IoT services
  • Bug fixes and Improvements
    • Logging to file will append to the file instead of overwriting the content.
    • GetChannelsInfo will return zeros when device does not support io at all (instead of error).

2021-06-01 Version 2.3.2

  • Bug fixes and Improvements
    • Fixing compatibility with Firmware 6.04

2021-04-07 Version 2.3.1

  • New features
    • Custom transport feature allowing to use the library with different means of communication.
    • WebAssembly support for JS library.
  • Bug fixes and Improvements
    • Fixing description of park/unpark to be consistent across FW versions.

2021-03-10 Version 2.2.0

  • Bug fixes and Improvements
    • Adding GetAxisNumbers method to Lockstep class that returns array of axis numbers (GexAxes marked obsolete).

2021-03-01 Version 2.1.3

  • Bug fixes and Improvements
    • Ensuring offline Device Database file compatibility. (New database file download required)

2021-02-09 Version 2.1.2

  • Bug fixes and Improvements
    • Adding empty constructor for some C++ classes (Device, Axis, Stream)

2021-02-01 Version 2.1.1

  • Bug fixes and Improvements
    • Support for FW 7.17

2021-01-15 Version 2.1.0

  • New features
    • StopAll and HomeAll methods on Connection class to simplify homing and stopping across the entire device chain
  • Bug fixes and Improvements
    • Introduction of constant (FW 7) and distinction from peripheralid constant (FW 6)
    • Fixing naming in DeviceAddressConflictExceptionData renaming DeviceIds property to DeviceAddresses
    • Adding py.typed to the python library to allow mypy to type check code against the library types

2020-11-09 Version 2.0.1

  • Bug fixes and Improvements
    • Support for multi-axes integrated products (requires refreshing data from
    • Error handling tutorial improvements
    • Improvements of JavaDoc
    • Removing mistaken constant encoder.counth

2020-10-15 Version 2.0.0

  • New features
    • New exception system providing more information on cause of exceptions
      • e.g. CommandFailedException contains parsed reply from the device
      • new exception SerialPortBusyException
  • Breaking changes
    • Removal of obsolete methods
      • Lockstep.getOffset
      • Lockstep.getTwist
      • Library.toggleDeviceDbStore
    • Change of library default caching directory for Linux, MacOS
      • On Linux $XDG_CACHE_HOME/zaber-motion-lib (or ~/.cache/zaber-motion-lib if not set)
      • On MacOS ~/Library/Caches/zaber-motion-lib
    • C++ MotionLibException's method message() renamed to getMessage() to conform to library conventions

2020-09-23 Version 1.6.1

  • Bug fixes and Improvements
    • Binary device with FW 5 is not asked for FW build

2020-09-18 Version 1.6.0

  • Bug fixes and Improvements
    • Strong-named assemblies for .NET as well as digital signature
    • Unit conversions for controllers
    • Protobufs 3.13.0
    • Go 1.15

2020-09-15 Version 1.5.1

  • Bug fixes and Improvements
    • Fixing that waitForIdle throws CommandPreemptedException upon receiving unexpected response (Binary protocol)
    • Adding isIdentified property on Device class
    • Improvements to the documentation

2020-08-19 Version 1.5.0

  • New features
    • Allowing to disable checksums for a connection
  • Bug fixes and Improvements
    • Improvements to C++ and Python documentation
    • Js library is compiled to ES2018 standard and contain inline source maps

2020-07-24 Version 1.4.4

  • Bug fixes and Improvements
    • Making asyncio Python methods for opening port cancel-proof in sense that the port is closed when canceled
    • Improving update instructions for Matlab library
    • Adding newly introduced ASCII protocol warning flags

2020-07-08 Version 1.4.3

  • Bug fixes and Improvements
    • Fixing segmentation fault when Python asyncio task is cancelled
    • JavaScript library no longer uses eval in generated protobuf code
    • Dropping support for Node.js 8

2020-06-17 Version 1.4.2

  • Bug fixes and Improvements
    • Critical: Invalidation of Device DB store after temporary caching issue on

2020-06-05, Version 1.4.1

  • Bug fixes and Improvements
    • Protobufs 3.12.3
    • Documentation improvements

2020-06-02, Version 1.4.0

  • New features
    • move_min and move_max methods
  • Bug fixes and Improvements
    • Fixing missing DeviceSettings class in API documentation
    • Fixing compatibility with Matlab 2020
    • Fixing JS library being broken when packed in asar archive by electron

2020-05-20, Version 1.3.1

  • Bug fixes and Improvements
    • Fixing ArgumentNullException when C# Connection gets disposed by finalizer

2020-05-14, Version 1.3.0

  • New features
    • Parking API
  • Bug fixes and Improvements
    • Fixing handling of signals on Windows (
    • Empty constructor for C++ Connection class
    • Making toggleDeviceDBStore method obsolete in favor of enableDeviceDBStore
    • Checking axis number in reply in genericCommand

2020-04-29, Version 1.2.2

  • New features
    • Win32 support
    • On UNIX platforms library uses flock in addition to TIOCEXCL
  • Bug fixes and Improvements
    • toString methods for Java and C++ classes
    • Specific exception is thrown when used with incompatible devices
    • C++ documentation for Qt and MinGW

2020-04-21, Version 1.2.1

  • New features
    • Octave support (installation and tutorials)
  • Bug fixes and Improvements
    • Adding mathematical rounding to unit conversions
      • Previously the number was cut at needed precision
    • Fixing that stream commands get stuck on a stream FB error
    • Error is thrown when rounding and unit conversion of non-zero acceleration results into a zero value
    • Adding missing namespaces to C++ enums
    • Improved compatibility with old versions of firmware
    • Updating the go protobuf library
    • Little documentation improvements

2020-04-07, Version 1.2.0

  • New features
    • Adding custom timeouts for ASCII generic command methods
    • Adding get/set of default request timeout of ASCII connection
  • Bug fixes and Improvements
    • Adding documentation of events
    • Adding description of exceptions
    • Hiding internal classes of C# implementation
    • Adding numbering information to API doc

2020-04-02, Version 1.1.1

  • Bug fixes and Improvements
    • Fixing name of reply_only event in Python Binary Connection (mistakenly called alert)

2020-03-30, Version 1.1.0

  • New features
    • Stream API
      • Provides streaming of movement commands and synchronized multi-axis movement
    • Analog output support
  • Bug fixes and Improvements
    • Improvement of lockstep documentation.

2020-03-23, Version 1.0.13

  • Bug fixes and Improvements
    • Fixing that copying of Device and Axis classes in C++ makes the properties (e.g. setting, all axes) of instances unusable.
    • Adding code documentation to C++ properties
    • Improving C++ installation documentation
    • Making getters of C++ classes constant (rest of the classes)
    • Improving compatibility with X-JOY3 product
    • Adding lockstep support for more that two axes

2020-03-04, Version 1.0.12

  • Bug fixes and Improvements
    • Fixing Binary Protocol and TCP (Python)
    • Adding const to getters (C++)

2020-03-03, Version 1.0.11

  • Bug fixes and Improvements
    • Providing a default path for Device DB store
  • Documentation changes
    • Turning on Device DB store in tutorials
    • Making library's need for internet connection more apparent

2020-02-26, Version 1.0.10

  • Bug fixes and Improvements
    • Updating dependencies across the library
      • Protobuf 3.11.2
      • RxPy 3.0.1 (Python)
    • Adding ARM64 (aarch64) platform for Linux

2019-12-13, Version 1.0.8

  • Bug fixes and Improvements
    • Making NuGet package work with MSBuild older than 15.3

2019-11-21, Version 1.0.7

  • Bug fixes and Improvements
    • Improving prepareCommand capabilities allowing numbers to be place directly to template.

2019-11-04, Version 1.0.6

  • Bug fixes and Improvements
    • Fixing compatibility issues with products predating Firmware 5.34 (Auto-Reply setting missing)

2019-11-04, Version 1.0.5

  • Bug fixes and Improvements
    • Improved the error message when the Device Database service is not reachable
    • Ensured compatibility with upcoming Firmware 7 products

2019-10-23, Version 1.0.4

  • Bug fixes and Improvements
    • Added support for Binary Protocol with Firmware version lower than 6.06

2019-10-21, Version 1.0.3

  • Bug fixes and Improvements

    • Improved Firmware 7 support (commands and settings formatting).
    • Added unit conversions and command formatting to Device class.
    • Fixed failure of GenericCommandMultiResponse for more than 1k replies.
    • Fixed JavaSript initialization when importing directly from dist folder
  • Documentation changes

    • Adding enum values to the API reference

2019-10-04, Version 1.0.2

  • Bug fixes and Improvements

    • Improved performance of GenericCommandMultiResponse (no waiting when targeting particular device).
    • Removing unused dependencies of the JS library.
    • Fixing protobuf dependency version of the Python library.
  • Documentation changes

    • General improvements of the texts.

2019-09-23, Version 1.0.1

  • Bug fixes

    • Fixing typescript compilation errors due to empty namespaces.
    • Fixed behavior: Binary connection was getting closed due to unmatched error. Now it emits unknownResponse.
    • Fixed behavior: Commands are now preempted even without matching requests.
  • Documentation changes

    • Adding C++ examples and installation instructions.
  • API changes

    • C++ API
    • Reordering genericCommand arguments in binary Device and Communication class (Unreleased)

2019-08-30, Version 1.0.0

  • Documentation changes
    • Fixing couple of mistakes in example codes
    • Improving texts and instructions

2019-08-27, Version 0.0.27

  • Documentation changes

    • Fixing couple of mistakes in example codes
  • Bug fixes

    • Fixing missing types in Typescript namespaces
    • Fixing harmless error that occasionally pops up in Python on Mac OS
    • Fixing prepareCommand in Python

2019-08-19, Version 0.0.26

  • API changes

    • Breaking change: Unit of measure names in JavaScript and Python have been changed to match common standards
    • Breaking change: Some method names have changed to improve clarity and consistency
    • Connection.Device() and Lockstep() are now GetDevice() and GetLockstep()
    • Device.Axis() and Lockstep() are now GetAxis() and GetLockstep()
    • Warnings.Get() and Clear() are now GetFlags() and ClearFlags()
  • Documentation changes

    • Many updates to reflect reviewer contributions
    • Docs about finding the right serial port amended to cover direct USB connections
    • Some site navigation controls have been altered
    • Binary protocol support is now fully documented
    • A temporary banner has been added stating this library is in early development and subject to change
  • Bug fixes

    • Fixed errors when using Binary controller + peripheral combinations

2019-08-12, Version 0.0.25

  • Adding settings constants for ASCII Protocol

  • Finalizing Binary Support

  • Fixing various issues with C++

2019-07-24, Version 0.0.24

  • Extending settings API to provide arbitrary unit conversions

  • Providing properties on Axis and Device that expose device identity information

2019-07-12, Version 0.0.23

  • Python bugfix
    • Fixed a circular dependency problem that prevented using the ASCII Device class in Python.

2019-07-12, Version 0.0.22

  • I/O support

    • I/O pins are now supported on controllers and integrated devices that have them.
    • There is a device I/O how-to guide in the documentation.
  • Lockstep support

    • Lockstep mode is now supported on two-axis ASCII devices.
    • There is a lockstep how-to guide in the documentation.
  • Binary generic commands

    • There is now a second Connection class that supports the Binary protocol.
    • Binary generic commands (without unit conversions) can be sent or broadcast.
    • Spontaneous binary messages such as move tracking become events you can subscribe to.
    • Documentation for the Binary protocol is completely separate from ASCII but has the same structure.
  • ASCII-specific namespace (BREAKING change)

    • Object types specific to the ASCII protocol have been moved into an ASCII namespace or subdirectory.
    • Import statements in existing code will need modification - please refer to the updated documentation.
    • The API reference now indicates what import statements are needed for each type.
  • Example projects

    • The documentation includes downloadable, self-contained example projects for ASCII in several programming languages.
  • Database usage documentation

    • There is a how-to guide explaining how to use the device database offline, how to cache data.
    • For Zaberians, the how-to also explains how to use the master database.
  • Exception types (BREAKING change)

    • The numeric MotionLibErrorType code no longer exists
    • Instead there are different subclasses of MotionLibException to report different error conditions.
    • The list of exception types can be seen at the bottom of the API reference section for MotionLibException.

2019-06-12, Version 0.0.21

  • Java Support

    • Full support of Java programming language with the API matching the APIs of other languages.
    • Available through Maven.
  • Changed type of the serial number in device identity to unsigned integer

    • Ensuring that the library covers the full range of Zaber serial numbers.
  • Documentation improvements

    • Improved navigation in Getting Started guide.
    • Improved responsive design.
    • External links are marked with an icon.
    • Language specific paragraphs.

2019-06-05, Version 0.0.20

  • Fixing parsing of serial number
    • Only affects Zaber internal development.

2019-05-28, Version 0.0.19

  • Renaming Communication class to Connection

  • Adding renumber method to Connection class

    • The method allows to automatically assign addresses to a device chain.
  • Python asyncio

    • All blocking methods in Python got new asyncio counterparts with _async suffix.
  • Improving the error message when the setting is not supported by the device

2019-05-15, Version 0.0.18

  • Device Database store

    • It is a feature allowing to store Device Database information to hard-drive to minimize the usage of web-service API.
  • Adding serial number to device identity

    • Queries device for system.serial and exposes the returned information in a field.
  • Renaming method wait_till_idle to wait_until_idle

  • Device settings API

    • Allows read and write device settings using API similar to axis settings.
  • Improving error message when device rejects the read or write of settings

  • Device Database documentation

    • Adding more information about Device Database and its API.
  • Sorting classes in the reference

  • Fixing letter case of enum values in the reference (Python, Js)

  • Improving grammar in documentation

    • Improving texts on the portal.
  • Adding an appropriate license to source code and packaging

    • Additionally, collecting licenses of all used libraries and tools.
  • Adding Changelog