T7 Quickstart Tutorial | LabJack
« Close

Datasheets and User Guides

App Notes

Software & Driver


T7 Quickstart Tutorial

T7 Quickstart Overview

1. Install the appropriate LabJack driver and software bundle.

The installer covers UD devices (U3, U6, UE9) and LJM devices (T-series, Digit), so not all installed applications will work with the T7. The following applications work with the T7:

  • Kipling,
  • LJLogM, and
  • LJStreamM.

Only run 1 application at a time.

If there is an installation problem, see the Windows Installer Troubleshooting (App Note)

2. Connect the T7 to the computer or hub via USB.
The status LED should blink at power up and then stay solid on to indicate successful enumeration. If Windows asks about installing new hardware accept the defaults. If the device does not enumerate see item F on the USB Communication Failure App Note.
3. Run Kipling.
Kipling is a free application installed along with the driver. You should be able to find it in the Start Menu links.
4. Click "Refresh Devices" if the desired connection is not listed.
5. Click the connection (e.g. "USB").
6. Navigate to the Dashboard.

7. Connect a jumper wire securely from DAC0 to AIN0.

For a guaranteed valid connection, a conductor must be clamped securely in the screw-terminal, not just touching some part of the screw-terminal.

DAC stands for "Digital to Analog Converter", AIN stands for "Analog Input".

8. While still in the Dashboard, read the voltage level of AIN0.

Adjust the DAC0 analog output voltage, and you will see AIN0 follow DAC0 if the jumper wire is installed.

9. Connect one end of the jumper wire to GND, touching the other end inside the FIO3 terminal.
GND stands for Ground. Try connecting and disconnecting the FIO3 end of the jumper wire.
10. The Dashboard will read the current state of the digital input.
Digital inputs have an internal weak pull-up resistor that holds them high when nothing is connected. When the GND wire is connected to FIO3, the digital input will change from logic level High to logic level Low.


Moving forward from here...

Basic Functionality Examples:

Connecting via Ethernet or WiFi:

Software Options:


On-board Lua Scripting:

Getting Support:



Will the T7-Pro Real Time Clock be set by NTP, PTP or manually?  PTP would be awesome, but usually requires certain CPUs.  It would also be great if it could stream and log at the same time based on an autostart script.

Right now we have only set the RTC manually.  We will look at NTP and PTP, but just not sure at this point.

I'm not sure what exactly you are saying with "stream and log at the same time based on an autostart script".  Let us know a little more about what you have in mind.

I would like the T7-Pro to power up, configure itself (channels, ranges, rates) based on a file and then log that data as well as stream it realtime.  It would either stream UDP or make a connection (per the config file) and stream to that device.  It would appear that a startup script would be required to accomplish this; either stored in flash or on the SD card with the config file.  The config file would be on the SD card so different configurations could be on separate SD cards.  This may be asking too much, but it would also be neat if it could stream to a NAS.  While I'm piling it on, POE would be nice too.  It would also be nice to be able to reclaim the 2 internalized channels to have a standard 16 channel DAQ.

I haven't actually used it, but I have looked at how it works and I'm glad to see that you've chosen LUA as your scripting engine.

Some places (like mine) have a big problem with WiFi.  I'm sure it's in there pretty tight so it wouldn't be an easy thing to actually remove.  We should be able to get around it since it can be turned off (I'm guessing).

Can't say exactly when/if we would support this, but it does not sound unreasonable.  Script initiated sampling is definitely routine.  Writing that data to uSD and/or sending it out spontaneously is also expected behavior in general.  Not sure about streaming to NAS at this point.
POE is not built into the device.  If we can't find a suitable POE splitter that splits to USB, we might make our own.
You can expand from 14 to 84 analog inputs using the Mux80.
The WiFi can be powered down easily, and you can make that the reset default.  If it is really a hurdle, we could figure out how to offer a T7 with RTC and uSD but no WiFi installed.

Can we use DAQFactory to connect T7 over Ethernet? I have a U6 at the moment, but we need to have ethernet communication for a new project. I was just about to purchase a UE9 when I saw the new T7. Please let me know if DAQFacotry support T7. Thanks

You should be able to use the T7 using TCP and Modbus in DAQFactory. As for direct T7 support in DAQFactory we will look into the status of this and get back to you.

Thanks so much for the prompt reply. Along with my other analog sensors, I need to interface a GPS through SPI to Labjack T7 as well. Will you enable SPI communication soon? I read in the support page that SPI is still not supported. Thanks again...

SPI is in firmware, so we just need to document it and make a simple example.  Email us at [email protected] when you need to use SPI on the T7.

We have talked to AzeoTech.  They have a basic example of how to talk to the LJM driver using DAQFactory's ability to call external DLL functions.  This you can do now with current DF.  They have also started added special support for LJM and can likely provide something pretty quick ... you might contact AzeoTech for an update on that.  SPI will likely still require some script code, at least, to handle the arrays that need to be passed back and forth, so LabJack/AzeoTech would need to provide extra help in the form of an example.

Thank you very much.. I will contact when  I need help

I've got a T7. How do I access the I2C communication functionality? I2C is mentioned as beta feature, but there is nothing in the manual nor in the example code. Thanks.

Please email [email protected] and we will help get you going with I2C on the T7.


If I have T7 can I generate pulses for step motor or I need to buy extended module? And what is the frequency range this DAQ device can support?

Do you have a stepper motor controller?  I suggest you search labjack.com using the term "stepper motor".  The controller does 2 things:

    - Provides the higher power needed to drive the motor.

    - You simply provide a pulse to move the motor forward or reverse, and the controller figures out the correct phase sequencing for the motor.

The T7 uses the DIO-EF system to create pulse outputs.  I suggest you contact us at [email protected] or post on the forum to get into more details.  Let us know how many pulses you want to create per software command, what pulse width, and what pulse period.

Once my T7 is installed it will be difficult to reach via USB - only ethernet will be available.  I may need to adjust watchdog settings.

Can the watchdog timeout (and actions) be set programmatically (in C)?  If so, is there an example?

Thank you.



Yes, watchdog can be set programmatically in C. For an example, please see the examples files download here:


read_watchdog_config.c and write_watchdog_config.c are available in the watchdog directory.


For more information, the watchdog documentation for the T7 is available here:


Thank you. 

Something is not right.  Running your sample code (write_watchdog_config.c) I get this error:


I have installed the library from:  LabJackM-1.0300-Ubuntu-Linux-x86_64.tar_.gz

This appears to be mismatched with the examples.


Are you running the sample code in LabJackM-1.0300-Ubuntu-Linux-x86_64/examples/watchdog/write_watchdog_config.c or in C-C++-LJM-1.0300-examples-2014-02-07/examples/watchdog/write_watchdog_config.c?

In short:

C-C++-LJM-1.0300-examples-2014-02-07 contains the currently correct watchdog examples;

LabJackM-1.0300-Ubuntu-Linux-x86_64 does not contain correct watchdog examples.


C-C++-LJM-1.0300-examples-2014-02-07/examples/watchdog/write_watchdog_config.c does not contain WATCHDOG_OPTIONS_DEFAULT or WATCHDOG_KEY_DEFAULT, while LabJackM-1.0300-Ubuntu-Linux-x86_64/examples/watchdog/write_watchdog_config.c unfortunately does. Sorry for the inconvenience, but LabJackM-1.0300-Ubuntu-Linux-x86_64/examples/watchdog/write_watchdog_config.c was accidentally released with the incorrect watchdog register names.

OK, thank you.  I will look at the example code in C-C++-LJM-1.0300-examples-2014-02-07/examples.

However, here's your online datasheet:



If those names are invalid, why are they on the datasheet?


Those were old Watchdog names/addresses which have changed. We've updated the page to have the current settings which the examples use.

I successfully installed T7-Pro software on two desktop systems; one is Windows 7 64 bit and the other is Windows XP 32 bit. Kipling was able to configure both T7-Pro LabJacks which I recently purchased. Now I am trying to install on a Windows XP 32 bit Laptop. Software and drivers installed successfully. Kipling returns an error "This application has failed to start because the application configuration is incorrect. Reinstalling the application may fix this problem". Reinstalling did not fix it. LJStreamM does communicate with the T7-Pro. What do I need to do to get this working on the Laptop?

These kinds of errors can be caused by a few factors.  The best thing to do is email us at [email protected] so we can troubleshoot your particular one.  It is probably due to some configuration factor on the PC.

The T7-PRO is great!  Add 10VDC range to the on board DAC and this unit is unstoppable.

Great job guys!

Thanks for the feedback.  You can add +/-10V analog outputs with the LJTick-DAC, but we will consider built-in 10V DACs in the future.

Do any of the LabJack devices support on-board data logging, or is connectivity of some kind required?


PS: Great devices, by the way!

The T7-Pro does support standalone logging, but that functionality is considered beta and for advanced users at this time.  You use the Scripting ability to acquire data and store to the uSD card, and many applications will make use of the RTC to provide proper timestamps for the data.  If you want to try it contact us at [email protected].  The normal T7 also supports scripting, but does not have the uSD card (easy to add) or RTC (not so easy to add). 

Hi guys i just got a Labjack T7 and i am finding it difficult to connect with my labview software even after downloading the installer file, when i check the Instrument I/O on Labjack, the T7 is not visible. Any ideas pls




Questions for Labjack T7

1) Can it be used to collect the accumulate pulses from a tipping bucket precipitation (rain) gauge? If so, where is it (What is "Input" label for this)? For example U12 model the input labeled as "CNT"

2) Analog Input range is 0  to+12 V typical. Can T7 be used for analog input above +10 V?

3) Is Modbus TCP protocol used in Labjack product a low bandwidth protocol in comparison to other protocol?

4) Linux drive/software provided for Labjack products (i.e for T7). Is it compatible to Redhat Linux?

1. You would use a DIO Extended Feature to count the pulses.  Likely one of the counter features.

2. To measure above 10 volts you can use an LJTick-Divider.  The -UNI10V would let you measure up to 14 volts, and custom options are available for higher voltages.

3. No.  Modbus TCP is not a bottleneck.  The main source of time delays is USB/Ethernet/WiFi overhead and time to actually sample analog inputs.  The T7 only supports Modbus TCP, but if it used some other super-efficient protocol besides Modbus TCP the time difference would be negligible.  See the Data Rates Appendix.

4.  You can talk to the T7 directly using Modbus TCP, or through the LJM library.  If you talk directly using Modbus TCP you can do so from any platform that supports TCP/IP.  As for LJM on Redhat, I do not know the answer to that so please ask on the LJM page and I will have someone else reply there.

Thank you for quick response. Below are my follow-ups:

1) As your advise to use DIO Extend Feature for collecting the accumulate pulses from a tipping bucket precipitation (rain) gauge, Can I use "CIOx" --> High speed counter (to detect rising edge of tipping bucket pulse)? Please advise.

2) Now let assume that I don't use LJTick-Divider for monitoring > 10VDC (Let say +12 VDC), can I get the "valid" data reading for +12 VDC for single-ended input since Vout max can be up to 3.5 VDC? Anything I need to do?

3) Can I use T7 with LJTick-Divider to monitor 110 VAC (R1=360K; R2=360K; R3=15K)? if so, please advise what resistor type can be used in this application?

4) Have Labjack done any failure analysis for Labjack product (particularly for T7)? If so, what is its MTBF?

1.  There are various DIO extended features you can use, but "High-Speed Counter" is a likely choice.  If the signal has bounce, you might want to use "Interrupt Counter with Debounce".

2.  The LJTick-Divider-UNI10V will divide 0-14V, and the T7 can measure the 0-3.5V signal just fine.

3.  That is possible, but you are pushing the limits of the LJTD.  I suggest the option we call -BIP200V which has R1+R2=720k and R3=R4=9.1k.  Recommended resistors are the RG20P series from Digikey.  If you make any mistakes such as letting the high-voltage wire bump into a T7 terminal, you will likely destroy the T7 and things connected to the T7 such as your computer.  If using USB, add an isolator to at least protect your computer.  Also realize that the LJTD does not have any safety ratings for high-voltage, and such voltages can be dangerous, so only qualified individuals should work with high voltages.  Consider passing the high-voltage through a step-down transformer first.

4.  We have not done an MTBF specific analysis or testing ourselves for any of our devices.  The T7 is just made of normal semiconductor components, and nothing with a rating in terms of limited lifetime.  It is rare for a T7 to fail on its own, and in fact I can't say we have ever seen a failed T7 where the failure was not most likely attributed to damage due to an external influence.  Overwhelmingly, all failed T7s we see have damage attributed to an out-of-spec voltage/current that has been introduced to the T7 from some external source.  That is the nature of a DAQ device like ours that has so many user controlled connections (communication/power, ground, and lots of I/O).

The following mentions a DoD document that might provide a way to come up with an MTBF number based on models, but we have not pursued it:


We do get asked about MTBF occasionally.  Last time, it was someone from a major university that asked, and they later responded to us with:

"Typically, for an electronic device such as yours, with off the shelf components, and with an approximate number of parts-by-count of roughly 50, I should expect an MTBF of 30K~75k hours. I'll probably utilize some figure within that range."

50k hours is about 6 years of continuous use, which I can say from experience is too low.  I would estimate the correct statistical MTBF is more like 100 years, which is 876k hours.  That is, if you operated 100 devices continuously for 10 years you could expect 10 failures not due to external forces (still more than I would really expect) to happen over that time.  So my estimate for MTBF would be 500k hours.

Couple follow-up questions regarding to Labjack T7:

1) Since AC/DC power supply (USB) included in T7 order, AC/DC power supply operation temperature spec is NOT -40 C. Can we connect 5 VDC to one of VS terminal (and NOT using 5 VDC from USB port for neither 5VDC or communication instead supplying 5VDC via VS port and data comm via ethernet)? Anything between 5 VDC at USB port and VS (i.e like diode) ?

2) How big memory (T7) for data storage (before new data overwriting old data)?

3) We ordered LJTick-Divider BIP10V for differential input. Can R4 (RA4 & RB4) resistors be removed to use it as UNI10V since the only difference between BIP10V and UNI10V is R4 (180 KOhms) being installed for BIP10V?


1.  Even if you are not using USB, it is recommend to bring in power through the USB connector, or if you really don't want to do that you can use J5:



2.  In most applications the host is storing the data, so the limitation is the hard drive on your host.

3.  Yes, you can remove the R4 resistors to change a LJTD-BIP10V to LJTD-UNI10V.  Note that the inputs on the LJTD are single-ended, not differential.  I think the term you meant to use is bipolar:


1) Follow-up on 5 VDC pwr supply to T7 using Vs connection (NOT USB). To my understanding, +5 VDC to T7 can be either connected to J5-pin 1 or USB port: J5-pin 1 is in series with R21 (0.1 Ohms) and USB (+) is also in series with R15 (0.1 Ohms). Then at the other ends, R21 and R15 are connected together to become "Vs". My question is if possible to supply +5 VDC to T7 via one of "VS" terminals without any damage? (Of course, making sure that USB and J5-1 are left OPEN).

2) T7 has built-in temp sensor (LM9402 connected to internal analog input channel 14 (AIN14???). Does it suppose to be AIN13 as labeled   for analog input channel 14 since 14 analog channels labeled as AIN0 - AIN13 (not AIN14)? Where should I use voltmeter to read "voltage" as result of internal temperature data? Converting to T7 temperature in Kevin  using formula volts*-92.6 + 467.6? 


1) It is not recommended to attempt to power the device using the screw terminals labeled "VS".  Instead, connect your 5V power supply to the header location J5, and remove resistor R15(just to prevent simultaneous USB power).  If USB is not connected, and J5 is not connected, then you could try to connect 5V to the VS terminals for power, but this setup may cause the device to perform out of specification, so it is not recommended.  For more ino on the OEM power connector J5, see the T7 datasheet: http://labjack.com/support/datasheets/t7/oem-versions

2) A reading from AIN14 returns volts from the temperature sensor.  e.g. In C++:

LJM_eReadName(handle, "AIN14", &voltage);

For additional info on the temp sensor, see the T7 datasheet: http://labjack.com/support/datasheets/t7/internal-temp-sensor

I am using labview to communicate with the labjack T7. I have two T7's, one is used for a Labview program that is currently functional. However, the other (new) T7 will not use the same labview programming (as used with the first T7) to read a thermocouple. The one T7 will read the thermocouple, and the other (new) T7 will not. Is there something I need to do to program the new T7 to get it to read a thermocouple program from Labview? Any suggestions for what is happening?


Perhaps you are using the AIN-EF technique and for the first T7 you configured it using Kipling3 or some other configuration tool?  Are you reading AIN# or AIN#_EF_READ_A?  See the Thermocouples with the T7 App Note.

I'm pretty sure that I am just using the Kipling Technology for both, and not the AIN-EF technique.

I am afraid I don't understand what you mean by that.  Can you look at your LabVIEW program and see if you are reading AIN# or AIN#_EF_READ_A?

That suggests you are using the traditional technique (see the Thermocouple with the T7 App Note) where you read the raw voltage and do the math in software.  See the Troubleshooting Tips at the end of the main Thermocouple App Note.

One common issue:  To get good readings from a thermocouple you need to set the range to something smaller than the default of +/-10V.  A typical range would be +/-0.1.  If you are not setting the range in your LabVIEW program, then perhaps for your other T7 you used Kipling to set the range and then saved the power-up defaults.

To get into further troubleshooting details, I would suggest a forum topic rather than comments here.

Hi there,

I'm using a T7 to receive pulses. I would like to link to it un interrupt routine program which increment a counter at every pulse.

I'm working on a raspberry pi whith debian using the T7 Library LabJackM-1.0700-Raspbian-Linux-armv6l.

I'm using a C program.

Is there any example of such a thing ?

Thank you!

Sounds like you are trying to implement a counter in your software.  Is there a reason you don't use a hardware counter feature instead?  See the DIO Extended Features (DIO-EF) Section.

Why not, it would be better. Actually I'm looking for examples of using such a thing in a C program, I mean how to configure the T7 to link a counter to un input of pulses...

For example, how to set the parameter DIO#_EF_ENABLE – 0 = Disable, 1 = Enable with my library.

Thank you !

Lets say you decide to use the Interrupt Counter Feature described in Section 13.1.9.  The example on that page shows how to configure a counter on FIO0.  You need to do 3 register writes (DIO0_EF_ENABLE = 0, then DIO0_EF_INDEX = 8, then DIO0_EF_ENABLE = 1), and then whenever you want read the register DIO0_EF_READ_A to get the current count.  For the 3 configuration writes you could use 3 calls to eWriteName or a single call to eWriteNames.  For the reads use a call to eReadName().  See the C examples for eWriteName, eWriteNames, and eReadName.

To discuss more detail, I suggest posting on an applicable page of the T7 Datasheet or LJM User's Guide, or post in our Forum.


I am trying to find a way to connect a LabJack T7 Pro to an Arduino Uno using the Wifi connection. Assuming I connect using the open network option with the Arduino, how can I transmit commands to the Arduino using the LabJack? I only need to send up to 8 simple commands, and the connection is 2 way so there is feedback as well.

The LabJack itself will get the commands from the computer, of which I am having trouble doing as well for now.

Thank you

The WiFi module on the T7-Pro has to connect to a wireless access point (AP).  Can the Arduino provide an access point (i.e. does it broadcast a network name or SSID)?  If not, the Arduino and T7-Pro will both have to connect to some other access point so they can talk to each other.

I believe that the new series of Arduino Wireless shields do allow the use of an independent access port.

Looking at the Arduino Wifi library, Arduino can act as a server, will this accomplish the same goal?

You mean that the Arduino can act as an HTTP server?  No, that does not help in making a WiFi connection.

Ranger_DeVill's picture


I have a Labjack T7 card connected to a series of sensors. My data agregation setup uses the LabJack StreamM software to register data locally.

My problem is with reading conuter data from the flow sensor. I only use Kipling to configure the T7. Couldsomeone please tell me how to configure the CIO0/1/2/3 inputs to store counter data?

 I can read the state change on the CIO2 (from 1 to 0), but the DIO18_EF_Read_A returns huge values (like 2345 or 1245).

Can someone tell me what I'm doing wrong?


labjack support's picture

Information about how to use counters can be found here: https://labjack.com/support/datasheets/t7/digital-io/extended-features/h...

To configure through Kipling we need to use the register matrix. The hardware counters only need two registers: DIO#_EF_INDEX and DIO#_EF_ENABLE. Add both of those registers for each channel, 16,17,18, and 19 to the list (click the circle with a check-mark in it). Set the enable to zero, then set the index to 7, then set enable to 1. That's it the counter will now be running and waiting for pulses. We will need to add DIO#_EF_READ_A to our register matrix list if you want to see the count here.

When using hardware counters noise can create a lot more counts than we were expecting. If you were to tap a wire or use a push-button there will be a lot of noise on the line while it is transitioning. To get around this we need to provide a clean signal. Some options include R-C filter, Schmidt trigger, comparator. Depending on the expected pulse rate we can also use an InterruptCounter with debounce. Debounce allows us to specify a blackout window during which additional pulses will be ignored.

Information about using Debounce: https://labjack.com/support/datasheets/t7/digital-io/extended-features/i...