OpenViBE Documentation

Frequently asked questions

On this page, you will find the most frequently asked question. If you don't find what you need here, feel free to ask on the forum.

What do I find in this FAQ ?

In this FAQ, you will find the following information :

What is OpenViBE ?

OpenViBE is a software platform that enables to design, test and use Brain-Computer Interfaces. Brain-Computer Interfaces (BCI) are communication systems that enable users to send commands to computers only by means of brain activity. BCI are gaining interest inside the Virtual Reality (VR) community as they have appeared as promising interaction devices for Virtual Environments (VE).

What does the ViBE stand for ?

Well, intially, OpenViBE was for "Open Virtual Brain Environment"... We no longer want to limit the use of OpenViBE to Virtual Environments... So you could now just take OpenViBE as a noun, it's no longer an acronym :)

What is the licence of OpenViBE ?

The licence for OpenViBE basically is L-GPL, see Licence for details about this licence. Some OpenViBE plugins are based on GPL libraries. Consequently, those plugins are GPL.

What is the current status of OpenViBE ?

OpenViBE is quite a young software. The development began from scratch in 2006. It already offers several complete processing pipelines. It has been successfully used by the authors in different contexts, including motor imagery interactions and basic neurofeedback experiments. Currently available functionalities are far from complete, but the plugin architecture should facilitate the integration of new functionalities and limit the number of changes to the API (which is bound to evolve in the next few months anyway, if only to be improved). Additionally, it is expected that external contributions will soon help enlarge OpenViBE functionalities.

For now, this software should be considered as being in alpha stage with a reasonably stable API.

What kind of computer / operating system do I need to run OpenViBE ?

OpenViBE currently runs on standard desktop PCs and compiles on differents targets. Note that even if OpenViBE has been reported to compile / run on many different platforms, we can't provide support for all of them at the same time... On windows, we support the latest version of visual C++ express. On the linux side, we basically support both the latest Long Term Support (LTS) and latest non-LTS version of Ubuntu on one hand and the two latest Fedora on the other hand.

The following table shows a summary of these different configurations... and of the configrations we officially support.

The following target platforms have been tested
CPU Operating System Distribution Compiler Status Officially supported
x86 Windows XP SP2 Visual C++ 2008 Express OK (last built 2010/09) Yes
Visual C++ 2005 Express SP1 OK No
Vista Visual C++ 2005 Express SP1 OK No
Linux Ubuntu 10.10 Maverick GCC 4.4.5 OK (last built 2010/09) No
Ubuntu 10.04 LTS LucidGCC 4.4.3 OK (last built 2010/09) Yes
Ubuntu 9.10 Karmic GCC 4.4.1 OK (last built 2010/09) Yes
Ubuntu 9.04 Jaunty GCC 4.3.3 OK (last built 2010/04) No
Ubuntu 8.10 Intrepid GCC 4.3.2 OK No
Ubuntu 8.04 LTS Hardy GCC 4.2.4 OK (last built 2010/04) No
Fedora 13 GCC OK (last built 2010/09) Yes
Fedora 12 GCC 4.4.2 OK (last built 2010/09) Yes
Fedora 11 GCC 4.4.1 OK (last built 2010/04) No
Fedora 10 GCC 4.3.2 OK (last built 2009/12) No
Fedora 8 GCC ? OK No
Fedora Core 5 GCC ? OK No
Fedora Core 4 GCC ? OK No
Fedora Core 3 GCC 3.4.3 No 3D visualisation No
Debian 5 GCC 4.3.2 OK No
x86_64 Windows Any Untested (feedbacks welcome) No
Linux Ubuntu 10.10 Maverick GCC 4.4.5 OK No
Ubuntu 10.04 LTS LucidGCC 4.4.3 OK (last built 2010/09) Yes
Ubuntu 9.10 Karmic GCC 4.4.1 OK Yes
Ubuntu 9.04 Jaunty GCC 4.3.3 OK (last built 2010/04) No
Ubuntu 8.10 Intrepid GCC 4.3.2 OK No
Ubuntu 8.04 LTS Hardy GCC 4.2.4 OK No
Fedora 13 GCC OK Yes
Fedora 12 GCC 4.4.2 OK Yes
Fedora 11 GCC 4.4.1 OK No
Fedora 10 GCC 4.3.2 OK No
Fedora 9 GCC 4.3.0 OK No
Gentoo GCC ? Dependencies installation fails No
Arch 2009.08 GCC ? Needs some tuning on dependencies installation No
Gentoo GCC ? Dependencies installed manually with native packages No

If you have tested OpenViBE on another platform, please fill free to report its status for this platform.

What are the current functionalities of OpenViBE ?

Here is a non exhaustive list of OpenViBE functionalities :
The following functionnalities are already integrated
Category Box
File reading and writing Generic files (r/w)
GDF files (r/w)
BCI Competition IIIb (r)
Brainamp files (r)
CSV files (w)
Preprocessing Time based epoching
Stimulation based epoching
Moving average
Windowing
Channel selection
Simple DSP
Temporal filter
Downsampling (in progress)
Feature extraction Spectral analysis
Spatial filter
Classification Linear Discriminant Analysis
Support Vector Machine
Stimulation presentation Graz-like motor imagery presentation
P300 Speller
P300 Magic Card
P300 Identifier
Visualisation Simple levels
Raw signal
Spectrum
Time/Frequency analysis
2D/3D topography
Connection to external software VRPN integration (Virtual Reality Peripheral Network)
TurboFieldTrip integration (r/w, in progress)

What acqusition devices are compatible with OpenViBE ?

The following table sums up current device integration in OpenViBE :
The following devices have been integrated
Manufacturer Amplifier Driver Name OS StatusOfficially supported
ANT Neuro ASALAB EEG / ERP amplifier Either MindMedia Nexus32B or TMSi drivers has been reported to work no
Others TMSi derived devices Either MindMedia Nexus32B or TMSi drivers untested no
Brain Products V-Amp Brain Products V-Amp stable yes
Brainamp series Brain Products Brainamp Standard (through Vision Recorder) unstable community :
  • Emmanuel Maby (INSERM)
  • Pierre-Emmanuel Aguera (INSERM)
Brainamp series Brain Products Brainamp Series stable
multi amp missing
community :
  • Yann Renard
CTF/VSM MEG CTF/VSM MEG unstable community :
  • Emmanuel Maby (INSERM)
  • Pierre-Emmanuel Aguera (INSERM)
gTec gUSBamp g.Tec gUSBamp stable
multi amp missing
yes
gMobilab+ gTec gMOBIlab+ stable community :
  • Lucie Daubigney (Supelec)
Emotiv EPOC Emotiv EPOC stable yes
Micromed SD LTM Micromed SD LTM (through SystemPlus Evolution) stable yes
MindMedia NeXus32 MindMedia Nexus32B stable yes
Neurosky Mindset NeuroSky MindSet stable yes
OpenEEG MonolithEEG OpenEEG Modular EEG P2 stable community :
  • Christoph Veigl (University of Applied Sciences Technikum Wien)
  • Yann Renard
ModularEEG OpenEEG Modular EEG P2 stable community :
  • Christoph Veigl (University of Applied Sciences Technikum Wien)
  • Yann Renard
TMSi Porti32 Either MindMedia Nexus32B or TMSi drivers stable yes
Refa32 Either MindMedia Nexus32B or TMSi drivers stable yes
Others Either MindMedia Nexus32B or TMSi drivers untested no
The following devices are currently being integrated
You can contact us for beta tests
Manufacturer Amplifier Driver Name OS StatusOfficially supported
Mitsar EEG 202 Mitsar EEG 202 unstable community :
  • Guillaume Lio (GipsaLab)
Neuroscan SynAmps2 Neuroscan SynAmps2 (through Scan 4.3) unstable community :
  • David White (Swinburne University of Technology)
The following devices are not yet supported
Manufacturer Amplifier Driver Name OS StatusOfficially supported
Biosemi All . . none no
Brainquiry QPET9 Brainquiry Qpet-9 . development is stalled no
Legacy amplifiers All . . none no

How can I use the Emotiv Driver ?

We provide an acquisition driver for the Emotiv EPOC headset, with some constraints:

  • You must have the Emotiv Research SDK (or any superior version)
  • You need to build the driver from sources. Look here for a dedicated documentation.

The build scripts look in C:/Program Files/Emotiv/Emotiv Development Kit_v1.0.0.3-PREMIUM or C:/Program Files/Emotiv Development Kit_v1.0.0.3-PREMIUM to find the SDK. If you want to modify this path, modify the file cmake-modules/FindThirdPartyEmotivAPI.cmake.

Please note that you can't use both Emotiv Control Panel and the OpenViBE driver at the same time.

I want to use "partially supported" acquisition drivers but they do not appear in the acquisition server driver combo box.

Those drivers are flagged as unstable in the sense they will work only in some specific conditions. In order to make them appear, you will have to edit the configuration file and add it this line

AcquisitionServer_ShowUnstable = true

Your configuration file is HOME/.openviberc under linux and USERPROFILE/openvibe.conf under windows.

Please come on the forum / IRC to discuss what conditions should be considered in order to use those drivers successfully.

I want to use "partially supported" boxes but they do not appear in the designer box tree.

Those boxes are flagged as unstable in the sense they will work only in some specific conditions. In order to make them appear, you will have to edit the configuration file and add it this line

Designer_ShowUnstable = true

Your configuration file is HOME/.openviberc under linux and USERPROFILE/openvibe.conf under windows.

Please come on the forum / IRC to discuss what conditions should be considered in order to use those boxes successfully.

I'm a scientist and I wan't to cite OpenViBE, how should I proceed ?

Please use the following refence to cite OpenViBE in your publications : Y. Renard, F. Lotte, G. Gibert, M. Congedo, E. Maby, V. Delannoy, O. Bertrand, A. Lécuyer, "OpenViBE: An Open-Source Software Platform to Design, Test and Use Brain-Computer Interfaces in Real and Virtual Environments", Presence : teleoperators and virtual environments, vol. 19, no 1, 2010

Why did you favor GTK over Qt ?

People often wonder why GTK was chosen to handle $OpenViBE$ GUI requirements, arguing that Qt presents a number of advantages over GTK, particularly under Windows. This choice comes from the authors decision not to distribute the OpenViBE platform under a GPL licence, which would make it possible for private companies to base their software on OpenViBE without their having to release their source code. Even though Qt probably has better support and better implementation/integration under Windows, using this library would have required most OpenViBE components to be distributed under the GPL. Since the OpenViBE platform is developed in an open source spirit, the GTK library was found to better fit the context of the project.

Where can I download OpenViBE sources ?

The latest unstable sources can be downloaded with subversion from the gforge at https://gforge.inria.fr/projects/openvibe . Alternatively, you may want to download the latest stable source package from http://openvibe.inria.fr

Where can I download OpenViBE precompiled binaries ?

Some probably outdated windows binaries could be found at http://www.irisa.fr/bunraku/OpenViBE/binaries/win32 . These precompiled versions are not officially supported yet so don't expect regular updates.

Additionnaly we are looking for a smart solution to have precompiled packages for Linux on several distribution. If you have any advice, please feel free to share. See Contact for how to contact us.

I have problems compiling OpenViBE, what should I do ?

First, make sure you followed the install procedure described in Install . If problems persist, you can get some help from the people involved in this project. See Contact for how to contact us.

Is it possible to build and run OpenViBE with Eclipse ?

Well, it's almost possible yes :)

After, you have made a project for OpenViBE under Eclipse. you can used the OpenViBE commands files with the Eclipse's function "External Tools".

All configuration is located in the menu "Run > External Tools > External Tools Configuration...". First, make a new "Program" and choose a name for it.

  • Example: "Openvibe-Build"

In the tab "Main", fill next fields (for Linux):

  • Location: "${workspace_loc:/openvibe/trunk/scripts/linux-build}"
  • Working directory: "${workspace_loc:/openvibe/trunk/scripts}"

For Windows, it's the same process but the value of fields change.

  • Location: "${workspace_loc:/openvibe/trunk/scripts/win32-build.cmd}"
  • Working directory: "${workspace_loc:/openvibe/trunk/scripts}"

Now, if you want run OpenViBE under Eclipse it's the same process. For Linux, only one "Program" is necessary. create a new "Program" with a different name and fill fields.

  • Example name : "openvibe-linux-test"
  • Location: "${workspace_loc:/openvibe/trunk/scripts/linux-test}"
  • Working directory: "${workspace_loc:/openvibe/trunk/scripts}"

For Windows, if you want lauch the "Acquisition Server" and the "Designer", you must create 2 "Program":

  • Example name : "openvibe-test-acquisition-server"
  • Location: "${workspace_loc:/openvibe/trunk/dist/test-acquisition-server.cmd}"
  • Working directory: "${workspace_loc:/openvibe/trunk/dist}"

And for the "Designer":

  • Example name : "openvibe-test-designer"
  • Location: "${workspace_loc:/openvibe/trunk/dist/test-designer.cmd}"
  • Working directory: "${workspace_loc:/openvibe/trunk/dist}"

Then, you can launch the builder and runners with this same menu "Run > External Tools > External Tools Configuration...". Select the "Program" you want execute and use the button "Run" at the down of the dialog box.

Compiling OpenViBE is far too long especially on Windows, what could I do to speed it up ?

You have to build the whole software at least once...

Then suppose you are working on a classification plugin, simply edit your win32-init_env_command.cmd or linux-init_env_command and remove all the projects of the build order (at the end of the file) except the openvibe classification plugin project.

Now when you call win32-build.cmd or linux-build, only your project will be checked, compiled and installed.

Warning: You should use this functionnality with care because it won't guarantee a perfect behavior. For example, if you are modifying the toolkit, all the projects depending on the toolkit will have to be rebuilt. Additionnaly, if you clean everything with win32-clean.cmd or linux-clean, you will have to reactivate all the projects back in win32-init_env_command.cmd or linux-init_env_command to have a new working environment. You've been warned, use with care !

The branch changes are not considered at compilation time, why is that ?

Don't forget to clean everything before editing your win32-init_env_command.cmd or linux-init_env_command to switch your developements to other branches. If you don't do this, cmake will keep compiling the software in the old branches because of its cache. Cleaning everything will cause the header and library files to be removed and thus force cmake to search for them again.

More generally here is the correct way to work with our branches : * clean * svn update / branch switch / whatever eventually involves the structure of the code * re-build

I have problems using OpenViBE, what should I do ?

A good place to start learning about the platform is to read the existing documentation. Several documentation files are dedicated to explaining the use of the platform and its associated tools.

If still having problems after this reading, you may contact the community to discuss the problem. Visit the forum or send a message to the mailing lists.

I think I found a bug, what should I do ?

If you think you found a bug, please take a few minutes to fill a bug report at http://openvibe.inria.fr/tracker/bug_report_page.php . You will first want to check that your bug is not already listed in the tracker. If it is not, then you may fill in a complete bug report. Try to provide detailed information regarding the conditions in which the bug occured, this will help us reproduce it. We will typically want to know what hardware you have, the name/version of your operating system and compiler. Additional data such as a sample scenario and/or EEG record may also prove useful. Overall, the more information you provide in your bug report, the easier it is for us to try to solve the bug.

How can I contribute to OpenViBE ?

There are many ways in which you can contribute to OpenViBE :

  • developers : you can implement new boxes, new algorithms, new drivers
  • documentation : you can enhance the existing documentation or write new tutorials
  • testing : you can help test new features, new operating systems, new hardware, and send us feedback or fill bug reports when needed
  • support : you can provide help to the community by regularly visiting the forum and joining the IRC and mailing lists
  • packaging : you can build RPMs, DEBs or whatever package your linux distro uses

In any case, you should start by reading the Contribution rules . If you still have questions, you can also Contact us.

Are there any existing connections with other BCI platforms ?

A bridge with TurboFieldTrip is currently being implemented.

Other connections are not planned yet, but feel free to Contact us if you think a connection with your software could be a plus.

On Windows, launching OpenViBE complains about missing d3dx9_33.dll, d3dx9_38.dll or d3dx9_42.dll what should I do ?

This message is a generic message that Windows prints when a DLL should be loaded and can't be found. The d3dx9_33.dll, d3dx9_38.dll and d3dx9_42.dll files are part of DirectX (Microsoft 3D acceleration API) which is used by Ogre3D. The best thing to do is to actually install DirectX on your computer. You can find it searching for Direct X redist on google (or following this link http://www.google.fr/search?q=directx+redist+site%3Amicrosoft.com). Be carefull with the release date because you still can find 2004 versions of DirectX and these versions may be proposed first.

Anyway, if you don't want or can't install DirextX, Ogre3D will use OpenGL and just work with no limitation. You will just have to click the OK button each time you try to launch OpenViBE.

On Windows, I can drag and drop the boxes but I can't select / click / connect / configure anything, what should I do ?

Your screen is probably configured with a bad color depth. You should consider changing the color depth to 24 or 32 bits. In order to do that, right clik on the desktop, chose "properties" and go in the "parameters" tab. You can change the colore depth on the right side of this panel. Restart OpenViBE when the change is done.

Why did you write this crappy dependency installation script for Linux ?

OK, most Linux users will wonder what this installation script was created for in the first place.

First, it was estimated at the start of the project that the installation of dependencies in one click would be a plus for a certain category of users. While this is the standard way of installing an application under Windows, it isn't under Linux, where most distributions come with their own packaging system, be it rpm or apt-get. However, some of our dependencies (e.g VRPN) do not appear in the official packages of common Linux distributions, or their version could vary from a distribution to another. Second, it was decided that the installation process should not require users to have root access to their computer to install the OpenViBE dependencies. Third, minor patches are applied to some of the installed dependencies. Last, using such a script guarantees that all Linux users have the same version of the dependencies.

These are the reasons why an installation script is used. However, it is still possible that dependencies are handled differently in the future, especially if precompiled packages for dedicated distributions are made available. Until then, one should rather go for the installation script rather than official precompiled packages.

Also, one might want to know why this script installs so many low level packages such as Xlib, xproto and so on. In fact, it was decided to keep the number of required preinstalled dependencies to a minimum (including compiling tools such as g++, gfortran, autotools etc...) and to compile everything from scratch. The script was conceived so that everything can be built from a very basic configuration, e.g. from a fresh Ubuntu installation, with build-essentials, g77, and subversion the only required tools before a user may proceed with the installation of OpenViBE.

On Linux, MATLAB filter keeps saying 'Can't start MATLAB engine', what do I do ?

In order to get MATLAB filter to work properly on Linux, you need csh to be installed. This is not always the case, notably on Ubuntu distributions.

How many questions does this FAQ contains ?

You will be asked this question when you request support from the development team, in order to make sure you actually read this FAQ! (the answer to this question currently is 28!)