« Close

Datasheets and User Guides

App Notes

Software & Driver


LJM Changelog

Support - LJM Changelog & Known Issues [referenceable]



  • Added special voltage to T4 calibration.
  • Added auto IP functionality.
  • Fixed streaming bug during multiple stream bursts with different scan rates.
  • WiFi initialization now happens via TCP unless the ConnectionType is UDP.
  • Network device connection and initialization is parallelized.


  • Fixed WiFi streaming, including stream burst.
  • Fixed LJM_StreamBurst so that devices with invalid calibrations may still stream.
  • Fixed situation where LJM fails to retrieve an extended error code from a device.
  • Fixed stream-related multi-thread memory leaks and synchronization issues.
  • Improved lookup speed of Names and other constants.


  • Initial support for T4 LV stream channels.
  • Fixed a memory leak when a device is closed after having streamed.
  • Fixed a problem where devices of the same type had to be opened in a particular order on Mac/Linux.
  • Fixed a repeating LJME_TRANSACTION_ID_ERR that can happen during poor TCP connectivity.
  • Fixed LJME_RECONNECT_FAILED error caused by device attribute load failure during opening.
  • Fixed deadlock that could occur due to a close call during device reconnect.
  • Fixed Windows USB stream timeout for some triggered or externally-clocked streams.
  • Improved subsequent stream startup speed: if stream has been successfully started for a given device handle without returning a LJME_USING_DEFAULT_CALIBRATION warning, the next stream start for that device handle will not need to load the stream calibration.
  • Type B and type C thermocouples: switched from table lookup to polynomials.
  • LJM_StreamReadCallbacks may now call LJM_eStreamStop.
  • LJM_StreamReadCallback will now be called upon stream error.


  • Fixed possible pure virtual error in multi-threaded context when device is reconnected or closed prematurely.
  • Fixed possible socket leak.
  • Changing communication error behavior to return LJME_NO_RESPONSE_BYTES_RECEIVED instead of LJME_INCORRECT_NUM_RESPONSE_BYTES_RECEIVED in some situations.
  • Fixed command-response (WiFi) stream situation when the device has no scan backlog.
  • Fixed crash on Windows when TCP devices are not closed before program termination.
  • Fixed possible LJME_INVALID_LENGTH error during Ethernet stream.
  • Improved accuracy of stream timing.


  • Fixed possible seg fault upon device attribute load failure.
  • Fixed possible memory leak in LJM_StreamBurst.
  • Fixed possible LJME_TRANSACTION_ID_ERR during externally-clocked stream.
  • LJM_NumberToIP: Filling the unused bytes of IPv4String with NULL.
  • Fixed stream calibrations loading when a T7 (non-Pro) has an SD card.

Older Versions

1.1402 - Adding multi-packet functionality to LJM_eReadAddressArray, LJM_eReadNameArray, LJM_eWriteAddressArray, and LJM_eWriteNameArray - communication is broken into multiple packets as needed due to max packet size.


  • Fixed LJM_SetStreamCallback timing.
  • Added T4 stream support.


  • Added LJM_dtT4 and LJM_dtTSERIES.
  • Dropping ppc support for Mac OS X; still supporting i386 and x86_64.
  • Updated to libusb-1.0.19.
  • Added message and quick-start URLs for indicating that the UD devices are not supported.
  • Fixing LJM_StreamBurst thread-safety and memory leak.
  • Fixed memory leak during reconnect.
  • Fixed possible seg fault when device attribute loading fails.
  • Fixed Windows TCP stream handle leak.
  • Fixed bug where reconnect happens later than it should.
  • Fixed error message thread-safety.

1.1301 - Fixing bug when device does not respond after a Modbus Feedback write that has no read component. Fixing OS-independent USB reconnect issue. Fixing Windows USB reconnect issue.

1.1300 - Added functions: LJM_eReadAddressByteArray, LJM_eReadNameByteArray, LJM_eWriteAddressByteArray, and LJM_eWriteNameByteArray. Added secret function Internal_LJM_GetHandles.

1.1201 - B-type thermocouple conversion: increased the range and used new constants.

1.1200 - Changed ListAll to use UDP instead of TCP. Added LJM_GetSpecificIPsInfo. Changed from ljm_special_addresses.config to ljm_specific_ips.config. Added `void` to parameter list for LJM_CloseAll, LJM_LoadConstants, and LJM_ResetLog. Added functionality to broadcast on all available network adapters.


1.1003 - Fixed synchronization bug that causes problems primarily in Kipling.

1.1002 - Fixed WiFi discovery issue.

1.1001 - Fixed TCP open bugs. Removed threading of USB open for faster opening of USB devices when Open connectionType is LJM_ctANY.

1.1000 - Added LJM_RegisterDeviceReconnectCallback. Added LJM_AUTO_RECONNECT_WAIT_MS. Now using a separate device reconnection thread.

1.0900 - Added LJM_StreamBurst. Added Special Address functionality and the corresponding configs LJM_SPECIAL_ADDRESSES_FILE and LJM_SPECIAL_ADDRESSES_STATUS. Fixed device memory management and thread safety issues. Changed LJME_COULD_NOT_CLAIM_DEVICE to LJME_DEVICE_CURRENTLY_CLAIMED_BY_ANOTHER_PROCESS.

1.0808 - Fixed a segmentation fault when stream is running upon program termination.

1.0807 - Fixed a segmentation fault.

1.0806 - Adding LJM_STREAM_AIN_BINARY flag. Fixed possible pure virtual call during reconnect.

1.0805 - Fixed segmentation fault during TCP open on Mac/Linux. Fixed logger issue.

1.0804 - Made some performance gains during stream.

1.0803 - Removed LJM_MAX_TCP_PACKET_NUM_BYTES_NON_T7. Improved stream stop time. Fixed stream seg fault. Fixed stream LJME_TRANSACTION_ID_ERR.

1.0802 - Added Type C thermocouple support.

1.0801 - Changed default WiFi send/receive timeout to 4000 ms. Added check for when API functions with NumFrames / NumValues parameters are 0 or less, in which case LJME_INVALID_PARAMETER is returned.

1.0800 - Client code should be re-compiled. Changed LabJackM.h constant LJM_DEMO_MODE from "-1" to "-2". Introduced new configs:


The following configs are now write-only shortcuts for the new configs:


Removed LabJackM.h constant: LJM_DEFAULT_TIMEOUT. Fixed LJME_TRANSACTION_ID_ERR stream bug.

1.0707 - Added LJME_DEBUG_LOG_FILE_NOT_OPEN. Changed the default log level to LJM_INFO. Fixed LJME_INTENT_NOT_READY error when streaming via WiFi. Fixed stream-out error. Fixed stream sleep calculation. Stream refactors. Constants file update.

1.0706 - Fixed easy functions bug for digits that can cause reading/writing to an incorrect address.

1.0705 - Fixed easy functions bug that caused LJME_PACKET_SIZE_TOO_LARGE.

1.0704 - Device reconnect bug fix.

1.0703 - LJM_eStreamStart: automatically applying stream settling of 10 if firmware is old and stream settling reads as 0. Fixed Ethernet streaming for Windows 8. Added the keyword static to LabJackM.h variable definitions. Fixed error check for string length to LJM_eWriteAddressString / LJM_eWriteNameString. Fixed burst stream bug. Fixed WiFi stream bug. Fixed heap memory issue. Stream callback improvement. Updated constants file.

1.0702 - Added configuration parameter LJM_STREAM_CONVERT_AIN14 to control whether AIN14 is converted to units Kelvin or not - default is to not do so. Modified error message for unknown constants. Fix for deadlock when eStreamStop was not called.

1.0701 - Removed LJM_dtUE9, LJM_dtU3, LJM_dtU6, and LJM_dtSKYMOTE_BRIDGE from LabJackM.h. Removed erroneous setting of stream resolution and settling time during LJM_eStreamStart. Accepting additional values for DeviceType and ConnectionType for the Open and ListAll functions, such as "ETH" for LJM_ctETHERNET. Added retry to calibration constants loading during stream start. Updated constants file.

1.0700 - New function: LJM_SetStreamCallback. Added support for alternate stream resolution and settling. Added basic support for WiFi streaming.

1.0601 -  Fixed stream for range/gain of 0.1V. Fixed error when streaming STREAM_DATA_CAPTURE_16.

1.0600 -  Changed the config parameter LJM_HEAL_CONNECTION_MODE to LJM_AUTO_RECONNECT_STICKY_SERIAL and LJM_AUTO_RECONNECT_STICKY_CONNECTION. Beta Wifi stream support added.

1.0501 -  Fix for IP-specified automatic connection healing. Speedup for device opening on Mac.

1.0500 -  New config: LJM_ZERO_LENGTH_ARRAY_MODE

1.0401 - Automatic connection heal fixes.

1.0400 - New function: LJM_ListAllExtended. New config parameters: LJM_HEAL_CONNECTION_MODE, LJM_STREAM_SCANS_RETURN, LJM_STREAM_RECIEVE_TIMEOUT_MODE, and LJM_STREAM_RECEIVE_TIMEOUT_MS. By default, LJM uses LJM_HEAL_CONNECTION_MODE_BY_OPEN_PARAMETERS. Added constant: LJM_BYTES_PER_REGISTER. Constants file (ljm_constants.json) update.
1.0300 - New functions: LJM_LookupConstantValue and LJM_LookupConstantName. Improved version of LJM_ListAll / LJM_ListAllS, which uses multiple attempts to find devices via TCP and uses UDP to gain device information. Constants file (ljm_constants.json) update.

1.0201 - Stream timing fix. Constants file (ljm_constants.json) update.

1.0200 - New functions: LJM_eReadAddressArray, LJM_eReadNameArray, LJM_eWriteAddressArray, and LJM_eWriteNameArray. O Stream support. Stream thread timing modification. LJM_BYTES array fix. Auto-closing devices upon exit. Debug logger thread default sleep is now 50 ms. Debug logger thread temporarily stops running if no log messages are received for (100 ms + 2 * logger sleep time).

1.0103 - Fix for stream auto-recovery. Fix for stream digital channel. Fix for bug when TCP open times out on Mac OS X and Linux. Constants file update.

1.0102 - Fixed LJM_LoadConstantsFromString deadlock. Fixed LJM_ReadLibraryConfigS deadlock. Added LJM_DEFAULT_UNIT_ID to LabJackM.h. Not flushing Windows USB on open. Support for streaming digital channels. Debug logger improvements.

1.0101 - Mac/Linux USB streaming fixes. LJM_Open and LJM_OpenS Identifier defaults to decimal IP rather than hex IP. Fixed deadlock situation. Config file interpretation improvements. Now flushing before opening USB devices.

1.0100 - Added the functions LJM_LoadConstantsFromFile and LJM_LoadConstantsFromString. Fix for streaming 14 or more channels. Nix USB streaming fixes.

1.0000 - Broken backwards compatibility - Constants renames:


Added LJM_LoadConfigurationFile and config file loading on LJM startup. Stream improvements. Debug logging improvements. Constants file update.

0.0246 - Bug fixes. LJME_USING_DEFAULT_CALIBRATION will return the root
         error in LJM_ErrorToString.
0.0245 - Fixed bug where LJM would not return an error when an error occurred.
         Added calibration constants verification during streaming. Added
         stream verifications.
0.0244 - Broken backwards compatibility - LJM_eWriteString is now
         LJM_eWriteNameString, LJM_eReadString is now LJM_eReadNameString.
         Added LJM_eWriteAddressString and LJM_eReadAddressString.
         Streaming speedups and fixes, including allowing an arbitrary
         number of samples in LJM_eStreamStart/LJM_eStreamRead. Added
         LJM_STREAM_TRANSFERS_PER_SECOND config parameter. Now loading max
         packet size from T7s and device name for Digits. Fixed device open
         bug. Open calls now return LJME_OVERSPECIFIED_PORT when connection
         type is "any" and port is specified. Fixed altername name address
         bug. Added LJM_RETRY_ON_TRANSACTION_ID_MISMATCH configuration.
         Added check against the constants file for old firmware (see
         LJM_OLD_FIRMWARE_CHECK). Added Modbus operation re-try when the device
         returns an unexpected Transaction ID (see
0.0243 - LJM_eStreamRead breaks backwards compatibility - the NumSkippedScans
         parameter has been removed. LJM_eStreamStart breaks backwards
         compatibility - the aScanList_Neg parameter has been removed.
         Removed unused errorcodes from this header file. Streaming
         improvements. Worst-case device open times have been improved.
0.0242 - LJM_Open() breaks backwards compatibility - the DeviceType and
         ConnectionType parameters are now pass-by-value rather than
         pointers. Removed LJME_MUST_SPECIFY_DT_AND_CT. Streaming revisions.
0.0241 - Fixed constant file/log file location resolution for Windows.
0.0240 - Removed dllexport for Windows.
0.0239 - OpenS/ListAllS now make the LJM_dt/LJM_ct/LJM_id prefixes optional.
         __stdcall functions for Windows.
0.0238 - More const parameters. Outputs invalid address with
         relevant. Automatically reloads constants file more often. Improved
0.0237 - Bug fix for Open
0.0236 - Limited AutoResponse streaming support.
0.0235 - LJME_INVALID_NAME will give the last unrecognized names.
0.0234 - Default send/receive timeout is now 20 seconds. Fixed
         synchronization issues. Command-Response stream improvements.
0.0233 - LJM_ListAll/LJM_ListAllS now have new prototypes and can accept any
         device or connection type.
0.0231 - Added LJM_AddressToType/LJM_AddressesToTypes
0.0229 - Limited streaming support
0.0225 - Fixed endianness issue with ListAll.
0.0224 - Added LJM_ALLOWS_AUTO_CONDENSE_ADDRESSES configuration.
0.0223 - Fixed packet bugs, handle bugs, and updated error names.
0.0222 - Fixed many opening bugs, added WiFi device discovery
0.0217 - Added LJM_eReadString and LJM_eWriteString
0.0215 - Added the MAC address and IPv4 address converter functions
0.0214 - Added LJM_ReadLibraryConfigS and LJM_WriteLibraryConfigS,
         removed LJM_GetDriverVersion.
0.0212 - Added basic logging functionality.
0.0211 - Added LJM_STRING functionality.
0.0209 - JSON Modbus constants file.
0.0207 - Implementation LJM_ListAll.
0.0206 - Open functions now return any handle matching an already open device
         if possible.
         Implementation of the easy functions.
0.0205 - New LJM_ErrorToString style.
0.0202 - Added the array-capable easy functions.

Known Issues

LJM_SetStreamCallback is not reliable when there is the possibility of a STREAM_SCAN_OVERLAP (2942) error.

Initiating stream on Mac OS X with a USB may take multiple seconds due to a delay in libusb_bulk_transfer. Use TCP for quicker stream startup.

Mac OS X 10.11 (Mavericks) - USB communication is broken. This issue is fixed in the 10.11.4 beta. For more information please look at this libusb GitHub issue.

Mac OS X streaming via USB connection - Deadlock and device unresponsiveness may occur when no signals arrive after LJM_eStreamStop during externally clocked stream where there is more than one packet per iteration.

Windows - Stream may give LJME_TRANSACTION_ID_ERR if the stream read timeout is less than 2500. The stream read timeout may be manually set by writing LJM_STREAM_RECEIVE_TIMEOUT_MS.


Found a bug? Please report it to [email protected]!