Skip to main content
Skip table of contents

LJLogUD - Windows Only

LJLogUD is a simple ready-to-run executable that logs up to 16 input channels from a single device. It displays selected channels on a graph and writes data to file. Generally used for ≤100 scans/second.

Just starting? See our Device Quickstart Tutorials, then our LJLogUD Basics Guide.

Supported devices

  • U3

  • U6

  • UE9


The application LJLogUD is included with the main installation package.

For LabVIEW programmers, the source code is available in the LabVIEW_LJUD archive.



LJLogUD uses command-response mode which is typically used at 100 scans/second or slower.  See Section 3.1 of the applicable user's guide for details about command-response data rates. Also see the analog input section (2.x).

An alternate, pre-release version of LJLogUD that supports up to 84 logger channels is available here: LJLogUD84.exe

  • If you have recently modified settings and they cause errors in LJLogUD, close the program and delete LJLogUD.cfg in your current working directory.

    • If you are using LJLogUD v1.21+, you can select Use default Configuration in the experiment configuration selection window and it will load the program default settings.

  • If you have problems related to opening the device:

    • For LJLogUD v1.21+, select Open First Available Device in the device configuration selection.

    • For LJLogUD v1.20 or older, delete LJLogUD_open.cfg and restart LJLogUD.

  • For problems related to the working directory location, see "Change Working Directory" below.

LJLog vs. LJStream: We suggest that you use LJLogUD if possible, and only if you need to go too fast for LJLogUD do you then switch to LJStreamUD.  LJLogUD uses command-response mode, so it acquires and processes 1 scan at a time at the specified interval and is generally used for ≤100 scans/second.  LJStreamUD uses stream mode, so each iteration it retrieves and processes 1 seconds worth of scans and is generally used for >100 scans/second.  For more discussion of command-response mode and stream mode see Section 3.0 of the applicable user's guide:  U3, U6, or UE9.

LJLogUD vs. LJLogM: LJLogUD supports the U3, U6, and UE9.  LJLogM supports the T-series.

Logging from Multiple Devices: It is possible to log from multiple devices at once by copying and renaming LJLogUD.exe then running both the original and copied LJLogUD applications. LJLogUD.exe can be found by pasting %HOMEDRIVE%\Program Files (x86)\LabJack\Applications in the Windows File Explorer address bar.

Logging for Multiple Experiments (v1.20 and earlier): LJLogUD loads configurations from the last working directory. To keep configurations for multiple experiments, you can copy config files (LJLogUD_open.cfg and LJLogUD.cfg) into the last working directory before opening LJLogUD. Alternately, you can create a folder for each experiment and put a renamed copy LJLogUD.exe in each of those folders. For example, you could use the following folder structure:


Then LJLogUD_force.exe and LJLogUD_temp.exe each keep their own working directory, with their own copy of config files and data files.

Logging for Multiple Experiments (v1.21+): LJLogUD v1.21 adds new configuration settings. When the program starts, a pop-up window will appear asking for a method to open a device. The Load Open Configs from a File selection is intended only for advanced use with custom open configuration files. See "Device Type & Address (Opening)".

Once the open configuration is selected, another window will appear asking for experiment configuration settings. By default, experiment configurations are saved to LJLogUD.cfg.  If default settings are selected and LJLogUD.cfg does not exist, default values will be loaded. 

When the program is closed, the selected experiment configuration file is written to the current working directory with the current experiment settings. For example, if  Load Experiment Configuration is selected in the experiment configuration window and a configuration file called MyExperiment.cfg is loaded,  a configuration file called MyExperiment.cfg will be written/overwritten in the current working directory when the program exits.

Experiment configuration files are not intended for direct editing. To make backup or alternate experiment settings see "Save Current Config" below.

Control Descriptions

# Channels: 1-16.

Interval (ms): Interval at which this program scans all channels, updates the screen, and writes to file.  If LJLogUD cannot complete all those things within the specified time, it will start the next iteration as soon as possible, so your actual interval could be longer.  Set Interval to a small value, even 0, to run as fast possible.

Actual Interval (ms): The actual measured interval at which this program scans all channels, updates the screen, and writes to file. If the actual interval is reading a larger value than the specified interval, then the program is operating as fast as possible. 

Resolution: For the U3, a value of 0 disables QuickSample and a value of 1 enables QuickSample.  See Section 3.1 of the U3 User's Guide for how this affects speed and Appendix A of the U3 User's Guide for how this affects noise.  The U6 expects resolution settings from 0-12 while the UE9 expects settings from 0-18.  A value of 0 equates to 8 on a U6, 9 on a U6-Pro, and 12 on a UE9.  To see how this setting affects speed and noise see Section 3.1 (U6 or UE9) and Appendix B (U6 or UE9) of the applicable user's guide.

SettlingFactor: This parameter affects settling time, which is the time allowed for the analog input voltage to settle after switching from one channel to another.  For the U3, a value of 0 disables LongSettling and a value of 1 enables LongSettling.  See Section 3.1 of the U3 User's Guide for how this affects speed and Appendix A of the U3 User's Guide for how this affects max source impedance.  For the U6, a value of 0 means Automatic which provides settling sufficient for at least 1k of source impedance.  The times from Section 3.1 of the U6 User's Guide are measured with a SettlingFactor of 0.  All allowed values are 0=Auto, 1=20us, 2=50us, 3=100us, 4=200us, 5=500us, 6=1ms, 7=2ms, 8=5ms, and 9=10ms.  For the UE9, settling time is discussed towards the end of Section 2.7.0 of the UE9 User's Guide, and a SettlingFactor of 0-255 is multiplied by 5 microseconds to determine an amount of extra settling time added to the normal settling time.

Device Type & Address (Opening):  In the working directory there is a file called LJLogUD_open.cfg.  If you don't see it, make sure you have opened & closed LJLogUD at least once after installation.  Unlike LJLogUD.cfg, LJLogUD_open.cfg is intended to be directly edited by the user.  In the 2nd line of this config file, if DeviceType=ANY, the application will search USB and then Ethernet for the first U3/U6/UE9 it can find.  If DeviceType is not ANY, then a call to OpenLabJackS() is made with the specified strings (FirstFound=FALSE).  Example:  





If the configuration file becomes unusable/corrupted, delete it and then open & close the application. This will make a new default configuration file.

The following provides a way to run multiple instances at the same time talking to different devices.  Make a copy of LJLogUD.exe called LJLogUD2.exe, run LJLogUD2.exe, set the working directly as desired, and close LJLogUD2.exe.  Now edit both LJLogUD_open.cfg and LJLogUD2_open.cfg to get rid of all ANY strings and instead specify the device for each to open.  Requires LJLogUD 1.19 or higher.

Getting an errorcode 1007?  That means LJLogUD can't find the device it is looking for.  Could be a problem with the LJLogUD_open.cfg file described above, but the most common reason is that some other process (e.g. LJControlPanel) has the device open and thus LJLogUD can't claim it.

+Ch/-Ch: +Ch is short for Positive Channel and -Ch is short for Negative Channel.  LJLog is designed to read the voltage from analog input channels.  Voltage is the potential difference between 2 points, thus in each row you need to specify the 2 points.  For example, the default values for the first row are +Ch=0 and -Ch=199, which means the device will do a single-ended (versus GND) read of AIN0.

LJLog is designed for analog inputs, but there are special analog input channel numbers that allow you to read other types of channels (DI, Timers, Counters).  See the special channel support described in Section 3.2.1 or 3.2.2 (stream mode section) of the applicable User's Guide.

For example, if you have a U3 and you want to read/log the state of the FIO & EIO lines, type the value 193 into the +Ch cell and you will read a 16 bit number that contains the state of all 16 I/O lines.

You can put any channel in any row.  For example, you could set the first row to +Ch=5 and -Ch=199 to do a single-ended read of AIN5, or you could set the first row to +Ch=201 to do a read of Timer1 (assuming Timer1 has been enabled, -Ch does not matter).

Alternate Channel Names (Mux80/CB37 Support): For LJLogUD version V1.21 and later, channels can also be named in an alternative format to allow for easy mapping of AIN channels to connections when using both a Mux80 AIN Expansion Board and one or more CB37 Terminal Boards. The alternative channel naming convention is to type the Mux80 connection terminal name followed by a dash and then the CB37 channel name. For example, a channel named X4-FIO6 would correspond to the signal from the FIO6 channel on a CB37 connected to the X4 terminal on a Mux80. This would lead to exactly the same behavior as entering 94 for the channel name as this channel corresponds to AIN94. For more information on mapping signals from Mux80/CB37 connections to AIN channels, see Table 1 in the Mux80 Datasheet

Pages: For LJLogUD version V1.21 and later, 5 additional pages of controls are added for Mux80/CB37 support, allowing for reads of up to 84 channels at once. By default Page 1 will perform a single-ended read of AIN0-AIN15, similar to older versions of LJLogUD. Pages 2-6 by default will perform single-ended reads of various channels for Mux80/CB37 connections in the alternate channel name format described above.

Ranges: Select the desired range, which is related to gain.  Not all devices support all ranges, but starting with UD V3.19 the driver will select the best range available (next higher range) rather than throwing an error.

The U3 does not support any range settings.

Valid U6 Ranges:

  • LJ_rgBIP10V: ±10 V i.e. Gain=x1

  • LJ_rgBIP1V: ± 1 V i.e. Gain=x10

  • LJ_rgBIPP1V: ±0.1 V i.e. Gain=x100

  • LJ_rgBIPP01V: ±0.01 V i.e. Gain=x1000

Valid UE9 Ranges:

  • LJ_rgUNI5V: 0-5 V, LabJackUD Default

  • LJ_rgUNI2P5V: 0-2.5 V (not supported with resolution=18)

  • LJ_rgUNI1P25V: 0-1.25 V (not supported with resolution=18)

  • LJ_rgUNIP625V: 0-0.625 V (not supported with resolution=18)

  • LJ_rgBIP5V: ±5 V

Note that due to the way this program and the UD driver parse the channels list, all rows with the same number in +Ch will use the range set by the last row with that same +Ch.

Scaling Equations: Should be something like y=a, where y is the scaled output and a is the input voltage of the 1st row.  b through p would be the input voltage of the rest of the rows. Everything after // is ignored, so use for comments.  A few examples:

y=c // Scaled value equal to raw value from 3rd ro

y=100*c // EI-1034/LM34 voltage to deg F

y=c-273.15 // deg K to deg C

y=((c-273.15)*9/5)+32 // deg K to deg F

y=TCVoltsToTemp[K:c:a] // Type K, t/c voltage from 3rd row, CJ temp from 1st row

For more details see the LJLog/Stream Scaling Equations page.

Note: For LJLogUD v1.21+ with multiple pages of channels, input voltage variables for Page 2 through Page 5 are a through p with their page number appended. For example, page 2 has the input voltage variables a2 through p2.

Save Current Config (v1.21+): Click this to save current experiment configurations. Once clicked, a pop up window will appear asking for a file name. clicking the OK button will write/overwrite a file in the current working directory with the selected file name and a .cfg file extension.

Write To File:  Click this to start and stop writing to file.  The resulting file is a tab-delimited ASCII file.  Files are written with a .dat extension.  To quickly open in Excel or Open Office Calc, change the extension to .xls or .ods.  To import to a Google Spreadsheet, make the extension .tsv before uploading.

The first column in the file is a timestamp of seconds since midnight January 1st (Universal Time), 1904.  For more information about presenting this timestamp in Microsoft Excel or Open Office Calc see the LJLogUD & LJLogM Timestamps page.

Each row of logged data typically requires ~18 bytes for the timestamp plus ~11 bytes per channel.  So it you log 8 channels once per second for 60 seconds that would be about (18 + 11*8) * 60 = 6360 bytes on the hard drive, and a 1 TB hard drive could hold a few hundreds of years of such data.

Data File Prefix:  LJLogUD uses this as the base string when it makes a file name.  When LJLogUD starts a new file, it appends a _# to the specified prefix, where # is the first unused number from 0-99999.

Max File Size (Bytes):  When the current data file exceeds this limit, it is closed and a new file is started.

Change Working Directory:  Click this to select the directory where the config file and data files will be saved.  After navigating to the desired directory in the pop-up window, click Select Cur Dir at the bottom-right.  For more details see the LJLog/Stream Working Directory page.

Graph History: Controls how many scans are shown on the graph.  The graph is similar to a strip chart, and simply shows the last n scans.

Revision History

1.04: Not compatible with older config files, so delete ljlogud.cfg before running the first time!  Changed config file delimiter to "#!#" instead of "," for better international compatibility.  Made maximum file size a user control.

1.05: Turned on scroll bars, for use on smaller monitors.

1.06:  No longer disables timers and counters.  Makes error display red if there is an error.

1.07:  Fixed the jumbled looking screen in Windows 7.  Fixed problem where Ch- was not set to analog resulting in errorcode #16.

1.12:  Added support for registry storage of working directory.  Fixed problem where Graph History setting was not remembered.  Comments now allowed in scaling equations starting with "//".

1.15:  Two changes.  The first is that it now supports a config file that lets you specify a particular device to open.  See the description of "Device Type & Address" above.  The second is that it now uses the filename of the application to specify the names of the config files and to specify the location of the working directory registry key.  The former means if you make a copy of LJLogUD.exe called LJLogUD2.exe, the config files will be LJLogUD2.cfg and LJLogUD2_open.cfg and thus each copy has its own config files.  The latter means you can use a different working directory for each copy, although you don't have to.

1.16:  Added "Write To File" control to items saved in config file, so the application will now remember how this control was last set.

1.17:  Changed all text to Segoe UI font so screen items are aligned regardless of system font size.  Changed to show scroll bars.

1.18:  Added support for SignedLSWMSW[lsw:msw] function in scaling equations to handle quadrature reads.  For efficiency, scaling equations now skipped if no scaling is needed (e.g. y=a).

1.19:Set minimum value of #Channels to 1.  Fixed problem where name of the exe was not detected properly.  Fixed issue where you could never decrease the number of channels shown on graph.  Changed version check sub-vi so it only shows prompt when new version available ... not on version check errors.

1.20:  Changed to grab the timestamp after data is read but before scaling is applied, rather than after scaling.  Fixed problem where -Ch array was not handled properly when non-analog channels (193+) were used, resulting in other analog channels sometimes returning binary values.

1.21:  Added additional pages to support up to 84 channels for Mux80/CB37 support. Added alternate channel naming convention to allow for easier mapping from names printed on Mux80/CB37 inputs to analog channel numbers. Added "Actual Interval (ms)" indicator to show how long each logging loop takes. Added configuration file selection and save options. Configuration files made in LJLogUD v1.21 are not compatible with old versions of LJLogUD if using the new alternate (string) channel names, but are compatible if numeric channel names are used.

JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.