Need help with freeopcua?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

511 Stars 272 Forks GNU Lesser General Public License v3.0 1.3K Commits 118 Opened issues


Open Source C++ OPC-UA Server and Client Library

Services available


Need anything else?

Contributors list

Open Source C++ OPC-UA Server and Client Library

Build Status

LGPL OPC-UA server and client library written in C++ and with a lot of code auto-generated from xml specification using python.

Python bindings can be found in the python directory.

mailing list:!forum/freeopcua

Currently supported: * read, write, browse * translateBrowsePathToNodeId * DataChange Events * Events * Subscriptions * complete opc-ua address space generated from xml specification * Method call from client * Linux and Windows(VS13) support

Work in progress * StatusChange Events * Filtering * Documentation * Automatic generation of binary protocol from OPC schema files * * Methods on server side

Not implemented yet (patches are welcome) * History * Security: Authentication, Certificates handling, ..


Documentation is sparse but several examples are availables:

C++ examples in
Python examples in can also be a usefull source of information

Example minimal client in python

  client = opcua.Client(False)

objects = client.get_objects_node() print("Children of objects are: ", objects.get_children())

var = objects.get_child(["3:AnObject", "AVariable"]) print("Value of variable is: ", var.get_value())


Tested clients and servers with default settings

  • uaexperts client application
  • node-opcua (client and server tested)
  • ignition server
  • Beckhoff PLC (seems to be some issues, but mostly working)
  • ignition open-source sdk (server tested)
  • quickopc client sdk
  • prosysopc demo client
  • prosysopc demo server
  • unified automation sdk (client and server tested)


An environment supporting c++11 is necessary: gcc-4.8+, clang 3.4 or VS2013

Ubuntu (Debians)

There is a script debian.soft in the root for installing all required soft to build all repositories.

Using GNU autotools

autoreconf -f -i
./configure --prefix=/path/to/server
make check
make install
cd /path/to/server
LD_LIBRARY_PATH=./lib ./bin/opcuaserver

Using cmake


mkdir build
cd build
cmake ..
make test


Boost and libxml2 are necessary

rem compiling
mkdir build
cd build
cmake .. -DBOOST_ROOT=c:\boost_1_56
cmake --build
ctest -C Debug
cd bin\Debug


docker build .


C++ style * 2 spaces not tab * CamelCase * Local variables start with small letter * Global/member variables starts with capital letters * Use provided automatic formatter (Artistic Style) by invoking


python code and API should follows PEP8 (many places should be fixed)

Address space and most protocol code are auto-generated and should not be modified directly. Every auto-generated file starts with a mention that it should not be edited. There's a lot of old hand written protocol code left that should use the auto-generated code. This is done by uncommenting struct names in schemas/ and removing old code and files in src/protocol and include/opc/ua/protocol/

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.