Need drivers for non-iOS platforms? Look here!


The Structure Sensor has been designed from the beginning to work with multiple platforms. In addition to the USB Hacker Cable and downloadable CAD to design custom brackets, we’ve also ensured that the Structure Sensor is compatible with the latest OpenNI2 drivers. These drivers will allow the Structure Sensor to communicate with OpenNI2 compatible programs for Linux, Windows, OS X and Android (including ones you may want to build yourself!).

Here’s where to find the latest OpenNI2 drivers:

In addition, you may need to make a few minor changes to config files based on what platform you plan to use. To learn about these changes, please download our Quick Start Guide to using the Structure Sensor with OpenNI2.

Update: In mid-2014, we decided to take over active maintenance of OpenNI2. In doing so, we are able to help the broader OpenNI community, even people not using Structure Sensor, as well as maintain and improve an open driver for Structure Sensor. We have already adopted many pull requests from the community, and made our own improvements. We encourage you to contribute issues and pull requests on our OpenNI2 repository on Github!

Xnonidevice can't initialize stream of type 3
Scanning the room
Welcome To The Structure Sensor & Structure SDK Forums - Read Me First!

This topic is now pinned. It will appear at the top of its category until it is either unpinned by a moderator, or the Clear Pin button is pressed.


What would be the most provident choice for the foreseeable future, to write a software for the Structure Sensor on Linux platform: use the forked OpenNI2 version or wait for an opensource driver, that according to your previous plans, is being implemented?

Thank you in advance for any updates.


Hi! Since we began actively maintaining OpenNI in April, we have been working on improving OpenNI2 in our fork, so we have prioritized this effort more highly. For now, using OpenNI2 is the best way to get started with Structure Sensor on Linux, and we’ll be ready to help you get through any issues you might find. Please feel free to post comments here, or as issues on the OpenNI2 fork, and we’ll get right on it! Thanks!


Thank you, Jeff! I am sure a lot of people will appreciate the news you are even improving OpenNI.


Just a quick note: we have updated the Quick Start Guide to using the Structure Sensor with OpenNI2 with regards to development on Android.


Hi! I’m running Debian Wheezy and I can’t change the “/etc/openni/GlobalDefaults.ini” file mentioned in the Quick Start Guide as it doesn’t exist. Any ideas? Despite not having it, I’m still able to run ./NiViewer in the Tools folder with only a warning about “USB events thread - failed to set priority. This might cause loss of data…”. Any help would be much appreciated :slight_smile:


Hi micknapp

Sounds to me that the USB interface is not necessary the issue, but could be a pthread issue.
Unfortunately it’s not very clear to me what the issue is right now
can you provide more debug information? It will be helpful.

In “XnLinuxUSB.cpp” and “XnLinuxThreads.cpp” there are some errors return when setting thread to “XN_PRIORITY_CRITICAL” that shows this error message that you provided.
If you can modify the code there, it should be able to print out more information

Hope you can help us figure out the issue!



If anyone has an Android app ready for testing, please contact me (mebalzer@slo3dcreators). I tried the OpenNI apk on GitHub but it crashes. I am on 4.44 and using an Samsung S4 with Cyanogenmod. My real goal is to see what can be done with Nivida K1 based phones and tablets.



What all changes have to be done to the globaldefaults.ini file

I made the changes but I am still unable to open the NiViewer tool
I get the error message “Device not connected”
Should I install other things


The STL files for bracket and sensor are helpfull to create a print design for Samsung Galaxy Tab3 10.1". Here are a few concerning questions;

What position should the sensor have related to the Samsung camera eye?

Does the Galaxy Tab4 10.1" have the same dimensions?
Suggestions wellcome to come to a more universal Android bracket system

Last but not least: are there already existing designs for Tab3 and Tab4?

Forum input is wellcomed!


Hi Occipital,
We were really impressed by the device when we discovered it, and bought two for our lab-application. The single most interresting point about the sensor, besides having a specified better precision, size, and near-cutoff than the Kinects we are currently using, is that there should be real, free, and open drivers for Linux for the sensor. Now, some 1 year after this first posting, I still do not find any repository, documentation, progress reports, or roadmap for such, hopefully, FLOSS drivers. Where do I find such information?
With the hope of getting to use our Structure Sensors really soon,
Morten Lind.



Please take a look at the links at the top of this Topic and let us know if you need additional information.



Hi Jim,

Thanks for the reply. It is the following passus at the intro of this topic which interests me:

“After Apple stops supporting OpenNI2 on April 23rd, 2014, we’ll be working on creating new open source Structure Sensor drivers for Android, Linux, Windows and OS X that will not be based on OpenNI. If you’d like to contribute to these drivers, just let us know by responding to this post.”

I.e., I do not need all the fat OpenNI2-stuff, just a driver to get depths, or, better, point clouds, into a floating point array or a Python ndarray. Besides, the initial tests I made with occipital/OpenNI2 did not succeed. I can try again, if you say that you will not develop open drivers for the sensor …

Morten Lind.



Thanks for catching this! We just made an official update to the post. In short, we changed our plans and decided to take OpenNI2 under our wing, and maintain it for the entire community rather than let it rot and create separate drivers.

Here’s our updated post:

A number of people are successfully using OpenNI2 with Structure Sensor now on Linux, Android, and Windows. However, as these platforms evolve, and as new hardware varieties appear, new issues crop up.

We’re actively working to stomp out issues on various platforms and devices. Could you let us know what issues you’ve faced, so we can work to address them directly within OpenNI?

@jim_selikoff, @forrest, and @philnelson in particular have all played a bit with OpenNI2 + Structure on Linux. For starters, please make sure you start with the develop branch on GitHub, that’s where our latest work goes until it is deemed stable.

Let’s collaborate to get this working on your system!



Hi Jeff,

Thanks for clarifying that. I will test the OpenNI2-framework more thoroughly tomorrow.

One problem I do have with the OpenNI2-approach is more or less design-aesthetical: I would really like to have a minimal driver for just getting point clouds from the device into a, say, Numpy array, and do som basic control of the parameters of the device. This is because we do not use the OpenNI features at all in any of our use cases.

I will probably look into pulling out the minimal code of the OpenNI2-framework to build my own driver, and distribute it side by side with the OpenNI2 code. How does that sound? And of course I wish to generally help with OpenNI2 in the future!

Morten Lind.



Fantastic. I too agree that OpenNI2 can feel a bit heavy-weight for just capturing point clouds, but actually it is pretty performant and already much much cleaner than OpenNI1 was. Maybe we can also try to ensure there are simple-enough samples that take away as much complexity as possible.

Rather than building your own driver (which is totally fine of course), it might be interesting to figure out a way to modify the compile script for OpenNI2 to be more lightweight, stripping out more things that are un-needed to get it down the the bare minimum.





Yes, that would be a much better solution. I will look into the code and build system soon.



Did you make any strides in pulling together a driver for just acquiring the point clouds? I would be interested. I’m trying to run this with an Odroid.


Hi, No, I did not. However, based on the driver capability in OpenNI2 and the Cython-based “cyni” project on gihub (, look at the pull requests from oroulet or mortlind) we pretty much got what we wanted. This seems to work, though it drags with it all the fat from OpenNI2. Btw., we are working on Debian and Ubuntu.

Odroid platform