FAQ | LabJack
« Close

Datasheets and User Guides

App Notes

Software & Driver


Free Shipping for U.S. Orders $150+   |   5-year Warranty   |   Try Our Devices & Support for 60 Days, Risk Free  |   50 of 54 Products In-Stock Now


Technical Questions

  • What products do you recommend for new applications?
  • Where is the datasheet I need?

Ordering / Sales

  • How soon do your products ship?
    • Items in stock generally ship within 0-1 business days. See Current Availability for more information.
  • What LabJack items are in stock?
    • For the item you're interested in, check the Stock Status indicator near the Add To Cart button. See Current Availability for more information.
  • What compliance certifications do LabJack devices have?
    • All LabJack-branded products are CE, REACH, RoHS2, and CFM (conflict-free minerals) compliant. See Compliance.

Warranty / Returns / Repairs / Exchanges

  • What is the LabJack warranty?
    • All LabJack hardware is covered by a 5-year limited warranty, covering products and parts against defects in material or workmanship. See the warranty page for more information.


Having seen LabJack at a contractors we use I am looking to purchase either a U12 or UE9.  I believe the LabJack digital IO can function as an I2C bus master and presumably slave and that you can supply Visual basic drivers for these functions.  What maximum I2C clock speed will LabJack support?  Is it limited by the 50Hz per IO?  Thanks.  Martin.

Sounds like you are considering bit banging I2C from the application layer. I recommend using our I2C function. With the I2C function the clock is limited to about 50kHz. The actual maximum will vary between devices and can change with firmware versions. Other concurrent operations such as timers, counters, stream will also affect the maximum speed.

The LabJack U3, U6, and UE9 can function as a bus master, not a slave. The U12 does not have I2C support.

We provide a driver that can be called by VB and VB examples to work from. You can grab the examples here: http://labjack.com/support/ud/examples


VB or C# ?

Whats your recommendation ?

I had some experience programming in C before but I feel that VB has some better and resolved high level funtions like for GUI or humen interface or fylesystem managment ? or Am I Worng ?, on the other side VB doesnt have Byte or binary shift operators probaly a lot usefull in this application ?

C is more compact more clear for engineers.

In terms of language I know both are fully object oriented and only syntax is basically the difference.

In terms of support which one you support most ?

In terms of flexibility which one will be the best ?

In terms of speed ?

Which one to shoose if youa to start ?



Between VB.net and C#.net, our preference would definitely be C#.  We feel like VB is old news and constrained by its origins and find it to be cumbersome and slow.  I have a theory that the main reason VB hangs around is that the "B" stands for "basic" and thus gives the false impression that VB is easier/simpler than other languages.


How labjack works in terms of external events ?

If I'm measuring something or controlling anything in a different I/O's and some other I/O has a Switch or signal that change the state for some ms like a pulse did I miss it in that time when I was controlling other stuff ? or remains the info some king of interrupt register or something ?

IF not, in that case how should I program in windows C or VB in a never ending While loop checking all inputs all the time ?

Where is it done in windows programming in the Load Form Event ? whih event is always running like that ?


You have to look at the length of an event.  For events that last less than 1 ms, you need to use hardware to catch them, so that typically means using a timer or counter or stream mode.  For example, connect the switch to a counter which increments an internal hardware register for each falling edge it sees and your software can then read that register whenever convenient.  For longer events, you can consider whether you can poll fast enough even while doing other things, but it depends on the particulars.

Here you mention the poll fast enough, wher is this poll loop placed ina Windows Form application ? Which Windows event is a loop to poll constantly for events in the Labjack IO's ?


If you are using an event-driven language like VB, you might use a timer event.  For example, set the timer to 100 ms, and every time the event fires call eAIN (to read an analog input) and eDAC (to set an analog output).  For more programming specifics, move this discussion to the forum or email.


I've a question on this, in my case i'm using U3 with VB6 for encoding quadrature inputs. I've configured two timers for quadrature signal, so it starts to monitor and  increment or decrements as per signal. And i can read this value at any time.

After the configuration quadrature monitor, i am working on Some digital IO and Dac etc. and after some time i am reading quadrature value.

Is this works fine or working on other IOs will affect monitoring quadrature signal?

Thanks in advance..,

It's a question of processing power. The LabJack is reading your quadrature signals and processing USB packets. At some rate of incoming packets and quadrature pulses the processor will be overwhelmed and quadrature edges will be missed. If you stay within the edge rate specs and keep your polling down to around 10Hz it should be safe. It should would work at higher rates, but that is tough to determine.

How connect Labjack  U12 with Scilab ?

For Windows?  A better place for this question would be the U12 Windows Driver Documentation, the U12 Windows Examples, or the LabJack Forum.  I don't know of anyone using the U12 with Scilab, but the place to start would be by looking at the U12 Matlab support.

Also, moving forward, our newer devices (U3/U6/UE9) are more likely to have easy Scilab support.

Is this compatible with Python

Yes, we support Python.  Go to our main software page or directly to the LabJackPython page.

hi I need a temporary and cheap solution for my Motion device that's damaged. my main goal is to be able to measure physical dimensions in small components. need to: 1. capture 2 quadrature encoders and calculate some physical dimensions using Labview 2. read 2 analog signals from joysticks and command moves to my servos ( pulse/direction) Any clue if I can use the U6 as a temporary solution??

The U6 has 4 timers that can monitor 2 quadrature encoders, and has analog & digital I/O, so it does sound like a solution for you.  You might want to give us some information about speed of the inputs and outputs so we can comment on that.

Should be good then.  See Section 2.9.2 for the timer edge rate limits.

ok.. but do I need external hardware for this device to generate the pulses for my servo drive( Step/Direction) ????since all 4 timers would be reading the encoders????

You would be using all 4 timers for your 2 quadrature inputs.  That means you would do software commands to create the step pulses.  I think you would always use a software command to set the direction output high/low.

It takes roughly 1 ms to execute a command through software, and you could do a handful of pulses in 1 command, so that gives you and idea of the speed you could get making the steps in software.

Timers/counters are part of the DIO EF system on the new T7, and it looks like you can do quadrature on FIO2/3 & FIO6/7, leaving FIO0/4/5 available for PWM or pulse output.  So the T7 might be something to consider.


We are planning to use LabJack on non-x86 processors, such ARM(android, etc)

Can we have support and drivers for Android Platforms?

Thanks in advance 


At this time, we only support USB on Windows, Mac, and Linux.  For other environments, the best option is to use the Ethernet interface on the T7 (or WiFi on the T7-Pro), as you can talk to the device directly using TCP and do not need any drivers.


I tried downloading the drivers and software for my newly bought U6. The download seems to stop at 48.5Mb i.e 99% and gets downloaded after a while. Upon execution the file gives an error. Did it using various browsers but still the same issue. U6 is just sitting on my desk doing nothing. Please provide an alternate link or solution.


What is the time (expressed in seconds) referenced to in the LJLogger data file?

The timestamp is seconds since midnight January 1st (Universal Time), 1904.  See forum topic #9.

Hi, I just ordered 2 of the Digit-TL data loggers, and I have a (kinda dumb) question about the alarms. I'm using these for field research and don't want to use the alarms because these will be placed in animal habitats and I'm trying to be as un-intrusive as possible. Am I able to disable the use of any alarms/sounds while the loggers are collecting data?

There are no speakers or other sound-emitting electronics on the Digit-TL. The alarms (when triggered) will simply produce a different LED behavior when you plug it into a powered USB port.  Furthermore, the alarms are disabled by default, and it is fairly straightforward to turn them on/off within software.


Recently, i've been using Labjack U3-LV and using Flowstone as a prog language. However, i found difficulty in configure the U3 UART for asynchronous communication in flowstone. Therefore, would u like to explain more about it? Additionally, is it possible for me to use 2 timers and U3 UART simultaneously? Thx :)

>> use USB<=>RS232 which connecting to the Arduino then it controls
>> digital input of U3 Labjack, is it make any sense?

No, that does not make sense to me.  Software sends some command out RS232, which goes to an Arduino, then the Arduino sets some of its digital outputs, which are connected to digital inputs on the U3, and software reads those digital inputs.  I don't see the point of that.  I suggest posting on our forum to discuss this further if needed.

>> Actually i need 4 DAC, as U3 only provides 2 DAC

Yes, you can use the 2 timers on the U3 to produce PWM output which you filter (providing 0-3.3V DACs), or you could buy an LJTick-DAC.  See Section 2.7.

Thank you for your fast respond, information and suggestion,.i'll try to figure it out and find the solution, thx :)

Hey guys i am trying to read the input value of the labjack AIN0 using the following code. It is connected to a voltage source with a constant 0.800 mV

The value it gives though is not very accurate and it fluctuates a lot

import u6, time

d = u6.U6()


... <more code deleted>

If you need help with your python code I would suggest posting on our forum.  Perhaps try using d.getAIN(0) to get started.

First grab readings with AIN0 jumpered to GND.  You should get noise levels similar to what is in Appendix B.  Once you get that working correcting connect your signal wires back up to AIN0 and GND.

I just did that and by using d.getAIN(0) it reads the value of voltage but on my voltage source the value is 0.300 and the one shown on the computer is 0.295 is there any way to get a more accurate result ? i cant find anything on the forums.

Thanks for your help.

The U6 is very accurate, so most likely it is correct.  I suggest you jumper DAC0 to an analog input.  Set DAC0 to some voltage such as 3.0 volts.  Note the voltage reported by the U6, and at the same time use a DMM to measure the voltage from AINx to GND, and you should see that the match (except that the DMM is likely not as accurate as the U6).

For further troubleshooting I suggest starting a topic on our forum rather than posting comments on this FAQ page.


I try to execute LJTest.exe. Therfore I need Labview Runtime 6x.

I have no admin rights to install. On our system Labview 2012, 2013 is installed.

Where can i find the Ljtest.vi or Ljtest.exe for Labview 2012, 2013 ?





LJtest.exe, an application for the LabJack U12, is compiled in LabVIEW 6.0.2 (or LabVIEW 7.1 in an upcoming U12 installer).  To run it you have to have the matching LabVIEW RTE installed:




I was wondering which of your models had analog I/Os that could handle continuous +/- 15V and also atleast 20-30mA currents? Thank you very much.

I was remotely updating the firmware on a machine we have in Germany when the updater showed a error as he couldn't erase some page and suggested trying again. Done that, I lost completely comunication to the labjack EU9 so I can't restore any previous version or use the instrument attached to that is on a production site. 

The problem came when updating using the UE9control_226_04092012.bin. On the contrary the update using the UE9comm_158_10142013.bin went correctly.

Is there any way to get back control over the labjack?

The UE9 update process will sometimes need to be restarted, but it is very unlikely that the device became bricked or un-recoverable from an update.  Do any LEDs come on when the device receives power?  Can you open a connection to the UE9 using LJControlPanel or LJSelfUpgrade?  Try USB if you were previously using Ethernet, because Ethernet settings will be erased when updating from very old firmware versions.

Also, please read through the troubleshooting options listed on this page. http://labjack.com/support/ue9/users-guide/1.2

We purchased new T7 and I'm trying to configure using the examples.

I succeeded to change IP address of the device but I can't change the name using the same function as in the example:


                str = "SSB - 111";

                _LjmError = LJM.eWriteNameString(handle, "DEVICE_NAME_DEFAULT", str);

                _LjmError = LJM.eReadNameString(handle, "DEVICE_NAME_DEFAULT", ref str);

                Console.WriteLine("\nDevice NEW name : " + str);


I get the old name. 

If I'm using the Kipling app it is done well. 



On the T7, a name change doesn't take effect until power cycle or reset.  To make it appear changed in Kipling, it stores a local copy of the new name(in addition to writing it to the device) so that users see the new name without a power cycle or reset.  This behavior is to prevent users from changing the name in a loop and breaking flash by exceeding the write endurance.  Rest assured that when you write a new name, the device will remember it, you just can't read the result until after a power cycle or reset.

marcogovo's picture

Hi, i would like to try T7-OEM for reading 2 signals, one from an accelerometer sensor and one from a tachometric sensor. The point is that i need to sample it simultaneously or however something close to. I don't find information about simultaneous sampling in T7 board, so i ask here if someone could help me.

Thank you so much

labjack support's picture

Our products send all signals on one path behind multiplexers.  There are no sample-and-hold circuits, so there will always be some time between sampling 2 different channels.  This is called "interchannel delay" and is as low as 8us on the T7.

See Appendix A-1:


In command-response mode, the "AIN Sample Time" will be your minimum interchannel delay.  In stream mode, the interchannel delay is shown in Table A1.5.

kevins@reoinc.com's picture


I'm trying to plot a temperature using a thermocouple connected to AIN0. I've configured kipling using the T7 thermocouple app note and a valid temperature is displayed in Kipling under analog inputs. When I try to plot the data in LJLogM, it displays an amplitude instead of the temperature. How do I correct this? Tried entering AIN0_EF_READ in the name field but it generates LabJack Error #1294.



labjack support's picture

After configuration in Kipling, in LJLogM use AIN0_EF_READ_A instead. The "Getting Started" instructions in the Thermocouples with the T7 App Note mentions AIN0_EF_READ by mistake and is not a valid channel name. I corrected the App Note regarding this.

ISOMA's picture



labjack support's picture

I haven't used Unity, but I believe you can use the U6's driver, UD, with it. We don't have specific examples for Unity, but the the following will help point you in the right direction.

Unity supports the C# language, which you can try to use with our .NET interface for the UD library. The .NET assembly is LJUDDotNet.dll located in the "\Program Files (x86)\LabJack\Drivers" folder after installing our software. This page mentions how to use a .NET (managed) dll in Unity:


Our C# examples can be found here:


If for some reason LJUDDotNet.dll cannot be used in Unity, you can import the UD driver, LabJackUD.dll, directly in C#. General UD driver documentation can be found here:


Also, here is a forum topic where someone is using Unity with the U3 and UD driver using the direct dll method:


Menno Marrenga's picture

I purchased your LabJack U12 and I am not yet familiar with it.

I want it for thermal cyceling: the input parameters are an analog signal from a thermometer T actual and a desired temperature T desired, both varying in time. I can define the desired temperature either as a mathematical function, or as a numerical table - whatever most convenient for the LabJack. And the LabJack shoud try to match the actual temperature to the desired temperature, for example by the instruction:

if T actual < T desired + 5 degrees, then heater on,

if T actual > T desired - 5 degrees, then heater off.

This should be simple, I am not (yet) even talking about PID control  that is the next step.

The trigger setup of the LJlogger offers an option to do this for fixed values of T desired, but the operands can be only numbers - not functions. 

How should I proceed?

labjack support's picture

LJlogger is too simple a program for that.  I suggest you consider DAQFactory or develop your own application:



Also note that most new applications would not use the U12, although it is a great device if it meets your needs:


Robert Howard's picture

I need to measure multiple voltages >350Vdc. Do you provide any guidance using the U6 with high voltage probes (100:1 for instance)? Can I just connect high voltage scope probes to the LabJack U6 inputs or must I terminate the probes at the interface?

labjack support's picture

Disclaimer:  You are in the realm of dangerous voltages, far beyond what our products are designed to work with.  The following information is provided in the interest of providing good service, but should only be acted on by someone with the proper expertise.

I believe that a high voltage scope probe simply provides a series resistor which forms a voltage divider with the 1 Meg resistor to ground that is inside the scope.  The U6 has high-impedance inputs, so you would need to add a 1 Meg to GND to simulate what is happening with a scope.  You would likely then have problems due to the high source impedance caused by the 100:1 probe and would then need the LJTick-InBuff.

As an alternative, I would consider using the LJTick-Divider.  It has a voltage divider followed by an op-amp buffer.  You can add extra resistance in front to increase the division:


For example, the LJTD-25 has 876k in series with 36.5k to ground, which gives an attenuation of 36.5/(36.5+876) = 0.04.  If you add extra series resistance you can easily increase the attenuation as desired.  You want to add the resistance externally to get rid of extra voltage before hitting the LJTD screw-terminal, which could be as simple as clamping one end of a resistor in the LJTD screw-terminal and connecting the other end of the resistor to your signal.

You might consider a USB isolator in case you make a mistake.  You might damage the U6, but hopefully the isolator will protect your host computer: