USB Analog and Digital IO Modules

LucidControl USB IO Modules

  • Data acquisition and control

  • Cost effective and flexible

  • Platform independent

  • Windows® and Linux

  • Compatible with RPi and Beagle Bone

  • Clippable on DIN-Rail

Read More ...

  • Industrial & home automation

USB Digital Input Module

USB Digital Input Module

LucidControl Product Series

  • 4 digital inputs

  • 3 voltage level options

  • Opto insulated contacts

  • Counters and edge detectors

Read More ...
USB Digital Output Module

USB Digital Output Module

LucidControl Product Series

  • Opto insulated option

  • 4 digital outputs

  • Relay module option

  • Pulse width modulation and timers

Read More ...

  • Switching and power control applications

USB Analog Input Module

USB Analog Input Module

LucidControl Product Series

  • Measurement range options

  • 4 analog inputs

  • e.g. 0 ~ 10 V or -10 ~ 10 V

  • 14 bit resolution

Read More ...

  • Acquisition of sensor signals

USB Analog Output Module

USB Analog Output Module

LucidControl Product Series

  • 4 analog outputs

  • Output range options

  • e.g. 0 - 10 V or 4 - 20 mA

  • 12 bit resolution

Read More ...

  • 4 - 20 mA current interfaces

USB RTD Input Module

LucidControl Product Series

  • 4/8 Pt1000/Pt100 RTD inputs

  • Temperature range: -180 ~ 180 °C or 0 ~ 360°C

  • 0.1 °C resolution

  • Heat control applications

Read More ...

  • Logging of temperatures

Plug & Play USB IO

Turn your computer with LucidControl Plug & Play IO Modules to a powerful data acquisition, monitoring and control system within minutes.

Data Acquisition & Control

Ready for many automated applications. Control your home, garden or caravan with the outstanding LucidControl IO devices.

Remote IO Device

Access LucidControl remotely over the Internet and get full power over your applications – secure and wherever you are.

Customized Solutions

Realization of customer specific solutions with the flexible LucidControl hardware and software platform.

LucidControl USB IO Modules in a Nutshell RSS

LucidControl DO4 - 4 Channel Digital Output USB Module

LucidControl DO4 – 4 Channel Digital Output USB Module

What is LucidControl?

The LucidControl product family consists of powerful Plug-and-Play USB IO devices turning a computer to a modular digital and analog data acquisition and control system.

LucidControl captures and generates analog and digital signals like voltages, temperatures, resistances and logic. The host computer can make use of this data e.g. for logging, monitoring or control tasks.

Additionally, LucidControl devices are able to generate output signals and they are ready to control power loads like lamps, fans or pumps simply via USB.

Are you looking for cost effective and easy to use control devices?

All LucidControl USB IO modules are controlled by using the same software which makes working with the modules extremely simple. Once a module is connected to the computer it starts working immediately.

LucidControl needs only to be connected to a computer via Universal Serial Bus. The power required by the devices is supplied by USB what makes the modules most cost effective since no additional components like power supplies or adapters needed.

Using LucidControl USB IO modules is absolutely straightforward. Utilizing the provided command line tool, the Java and the Python API give full access to all functions of the modules where it does not matter how many devices are connected to the computer.

Industrial ready design for a lowest costs

Providing high reliable industry standard connectors in combination with the possibility to fit the modules on DIN-Rails make LucidControl a perfect solution for automation projects and switch cabinets.

Professional data acquisition and control with Windows® and Linux

LucidControl USB IO modules are portable and work on Microsoft Windows® as well as on Linux. Thanks to a standardized device driver which is included in most operating systems, out of the box installation is very easy and the modules are ready within minutes.

LucidControl modules are compatible with the popular Raspberry Pi® and Beagle Bone Black computers which extends the number of possible applications to a maximum. Monitoring and mobile web services are only two examples of the versatility of the USB IO modules.

Changing your Computer to a modular Control System

Highlights Modular IO data acquisition and control system
Processing of various analog and digital signals
No power supply needed
Most simple installation
Consistent and easy usage for the whole series
Applications Building services
Control engineering
Energy management
Logging and Monitoring
Camping and hobby
Portability Platform independent
Works with Windows® and Linux
Compatible with popular Raspberry Pi® and Beaglebone Black
API for Java® and Python
Services Web applications
Internet remote access
Smartphone access
DIN-rail mountable
Switchboard assembly
Reliable Connectors

LucidControl – User Manual

Latest News

New Product available: LucidControl RI8 RTD 8 Channel Temperature Measurement Device

RI8 RTD Measurement Unit

We extended the LucidControl USB IO Module series by the new RI8 RTD Temperature measurement device.

LucidControl RI products are reasonable priced temperature measurement devices compatible with Pt100 or Pt1000 sensors. They are offered for two temperature ranges of -180°C ~ +180°C and 0°C to 360°C.

The reasonable priced USB IO Modules are USB powered and can be mounted onto DIN-Rails in a switch cabinet.

For more information please visit the RI product page, see the documentation links below or contact us.

RI4/RI8 – User Manual LucidControl – User Manual

Read more about the LucidControl Product Series

Interesting Article

Accessing a USB IO Module in a Network by using Linux and socat

The LucidControl USB IO Modules can be shared over a network by using a network device server running ser2net. The network device server can be any computer running Linux like e.g. the Raspberry Pi.

Network Device Server and Client Computer

Network Device Server and Client Computer

As it can be seen in the illustration, the application on the client computer is routing the data through the TCP socket. This kind of connection makes it necessary that the application running on the client supports socket connections. In our case the LucidIoCtrl command line tool and the dotNet library offer currently support of TCP socket connection in addition to the standard virtual serial port connection.

For client applications that rely on local serial devices there exists a a flexible method which creates virtual devices on the client computer that are connected to a remote device on a network device server. This allows e.g. using existing software working with local serial ports without adaption of the source code.

USB IO Module Network Device Server with socat and ser2net

USB IO Module Network Device Server with socat and ser2net

The picture shows the principle of this method. On the network device server there is no change necessary and ser2net is running with the same options explained in the last article.

On the client computer the Linux tool socat comes into the game. It is a powerful program that can redirect data streams in general. socat establishes bidirectional data streams between files, pipes, devices (serial line or a pseudo terminal) and different kind of sockets (UNIX, IP4, IP6 – raw, UDP, TCP and SSL).

More information on socat including many examples can be found here and here.

I concentrate in the following on using socat in order to create a virtual serial device on a client computer which is routed to a TCP socket created on the network device server by ser2net.

Installing and configuring socat

socat can be installed by

apt-get install socat

After installation, socat can be started on the client side and the complete configuration is done by command line parameters.

socat pty,link=/dev/lio0,nonblock,raw,echo=0,ignoreof,waitslave tcp:RPI-AZ-2:4001

This instruction creates a device /dev/lio0 which is connected to port 4001 of the network device server RPI-AZ-2. The option nonblock opens the device in non-blocking mode, raw instructs socat to send data unprocessed and echo=0 switches local echo off. In our tests these three options could be omitted without any influences. But, the option ignoreof is important and causes that socat stays active after the port was closed by the client application. Since e.g. the LucidIoCtrl command line tool closes the serial port when it returns, socat must not close the device in order to be responsive for further calls.

As a short form the following call of socat is working well:

socat pty,link=/dev/lio0,ignoreof,waitslave tcp:RPI-AZ-2:4001

Calling socat blocks the terminal and it is also not useful to start socat in a script this way because it does not return.

(socat pty,link=/dev/lio0,ignoreof,waitslave tcp:RPI-AZ-2:4001) &

By calling socat this way a background process is started. The prompt returns immediately after the process has been installed and a script running this line does also not block anymore.

Note: It might be necessary to run socat as root. In this case socat assigns the root user as owner of the created device what prevents other users from accessing the device. This is not desired as it would require all applications accessing the created virtual port need to have root permissions.

(socat pty,link=/dev/lio0,user=klaus,group=dialout,mode=660,ignoreof,waitslave tcp:RPI-AZ-2:4001) &

The parameters user, group and mode make it possible to specify the privileges of the created device. In this example the device /dev/lio0 belongs to the user klaus, the group dialout and can be accessed by the user and the group. All users accessing any serial port must be member of the group dialout, so it makes sense to create also the virtual device with this group assigned.

When socat is running, the virtual device is accessible and LucidIoCtrl can communicate with the remote device like this:

Accessing a remote USB Analog Input Module connected to a Network Device Server

Accessing a remote USB Analog Input Module connected to a Network Device Server

This instruction runs the LucidIoCtrl command line tool on the client. It connects through the remote network device server to the USB IO module and requests device information of the USB analog input module.

socat as ser2net Alternative on the Network Device Server

Since socat is a bidirectional relay for data streams it can also be used on the network device server as a substitution for ser2net. While ser2net is a quick and convenient solution which is easy to setup, socat offers more options and supports SSL encryption.

socat tcp-l:4001,fork,keepalive,nodelay,reuseaddr /dev/ttyACM0,b115200,raw

This call uses the local device /dev/ttyACM0 and listens to TCP port 4001. It routes all data for this port to the device like ser2net does. The parameter fork creates a child process, the parameter keepalive supports TCP keepalive packets, nodelay opens the port with non-delay options and reuseaddr allows reusing an address even if it is already used by socat. Raw data transmission is used and the baudrate is set to 115200bps. Since the USB IO modules are virtual serial devices, which do not need an initialization of the serial port parameters, some parameters can be omitted.

I use a reduced parameter set which works without any implications, and we start a background process listening on TCP port 4001.

(socat tcp-l:4001,keepalive,reuseaddr /dev/ttyACM0) &

Note: If ser2net is already running on the system it must be disabled before socat is used by calling:

/etc/init.c/ser2net stop

Encrypting Data Streams with socat

Opening a TCP port that is routed to a device can become a security leak and there is a potential risk that data are eavesdropped, intercepted or injected from a manipulating communication partner. This could result e.g. in wrong temperatures being transmitted or unintentional changes of the state of a digital output by some fraudulent computer.

If security aspects are important for a relayed port, socat supports encryption based SSL certificates that can be created by using OpenSSL. Beside of the data encryption this method allows also to grant different access rights to some USB IO modules connected to a network device server. These access rights can be granted on module level what means that e.g. an USB analog output module and a USB analog input module, both connected to the same computer, can have different access privileges.

USB IO Module Network Device Server with socat and SSL Data Encryption

USB IO Module Network Device Server with socat and SSL Data Encryption

The picture shows the principle how the data encryption works. All configuration for the data encryption is done by socat parameters and it is not necessary to change the application running on the client computer when adding secure data encryption.

SSL is consists of a private key and trust certificates that can be distributed on any computer that is trustworthy.

OpenSSL is used in order to create private keys and trust certificates for the network device server and all client computers. A good tutorial for this can be found here.

The created trust certificates can be exchanged between all communication partners. The generated private key files and the merged PEM files must be securely saved on the related computer.

After the certificates have been distributed, socat is ready for SSL encryption.

(sudo socat openssl-listen:4001,keepalive,reuseaddr,cert=$HOME/server.pem,cafile=$HOME/client.crt /dev/ttyACM0)&

This command starts the network device server listening on SSL port 4001. It encrypts the data with the server private key stored in server.pem and it trusts all clients whose trust certificates are stored in the file client.crt.

(sudo socat pty,link=/dev/lio0,user=klaus,group=dialout,mode=660,nonblock,raw,ignoreof, waitslave openssl-connect:RPI-AZ-1:4001,cert/$HOME/client.pem,cafile=$HOME/server.crt) &

This command creates a virtual device /dev/lio0 on the client computer. All data sent to this device are encrypted with the client private key stored in client.pem.

Compared to the calls of socat explained earlier, the last two calls are only extended by the parameters cert and cafile. The parameter cert refers to the PEM file which contains the private key and the public certificate of the communication partner. The parameter cafile links to a file which contains all trusted certificates.


In this article I have shown how a USB IO module can be shared within a network as a device having an entity in the /dev folder. The advantage of this method over the TCP port sharing is that existing software, which is using device names, can be used without adaption.

socat is a powerful tool that can create bidirectional redirections of data streams. In the first part of the article I have shown how a client running socat can connect to a network device server running ser2net what is a very convenient way.

In the second part of this article I explained how to use socat on the client computer as well as on the network device server replacing ser2net on the network device server. The reason for this was that employing socat on the network device server offers more functionality such as data encryption.

The SSL encryption supported by socat adds more security to the transmitted data and is the foundation of the further work.