Frequently Asked Questions (FAQ)

Back to the main page


Table of Contents

  1. What is spacenav?
  2. Device driver huh? Do I have to recompile my kernel?
  3. What's wrong with the driver and SDK provided by 3Dconnexion?
  4. What is provided by the spacenav project?
  5. Which platforms are supported?
  6. Do you plan to support MS Windows too?
  7. Is this driver only for the "Space Navigator" device?
  8. The spacenavd daemon is running, but the device LED doesn't turn on.
  9. Spacenavd starts, but it doesn't generate any events.
  10. Spacenavd starts, but fails to connect to the X server (xauth errors in /var/log/spnavd.log).
  11. I've not configured the space navigator as an XInput device but it still won't generate any events
  12. I've got an old serial maggelan space mouse and it doesn't work.
  13. Can I use two (or multiple) 6dof devices at once for 12dof input?
  14. Can spacenavd send 6dof events to external devices (MIDI, OSC, etc)?
  15. Are web-based CAD applications like OnShape supported?

1. What is spacenav?

The spacenav project provides a free, compatible alternative, to the proprietary 3Dconnexion device driver and SDK, for their 3D input devices (called "space navigator", "space pilot", "space traveller", etc).

For more details about 3Dconnexion and their devices: visit their website.

2. Device driver huh? Do I have to recompile my kernel?

Not really, the linux kernel already provides an interface for USB input devices which adhere to the HID specifications. So, this driver, like the original driver, runs in user-space as a daemon.

3. What's wrong with the driver and SDK provided by 3Dconnexion?

The driver provided by 3Dconnexion (a daemon called 3dxserv) has a lot of issues. Some of the most important are the following:

The SDK provided by 3Dconnexion (a library called Magellan) also has some important issues:

4. What is provided by the spacenav project?

This project provides free alternatives to both the 3dxserv daemon, and the magellan library (SDK). The new daemon is called spacenavd and the accompanying library: libspnav.

The spacenavd daemon (replacement driver)

The spacenavd daemon can be used directly as a drop-in replacement. It can communicate with the official magellan SDK, and thus any program compiled with it can work with spacenavd transparently without any change or need of recompilation.

Also, spacenavd provides an alternative communication protocol, for programs that use libspnav, that doesn't require an X server, as the original protocol does.

The libspnav library (replacement SDK)

The libspnav library is provided as a replacement of the magellan library. It provides a cleaner, and more orthogonal interface. libspnav supports both the original X11 protocol for communicating with the driver, and the new alternative non-X protocol. Programs that choose to use the X11 protocol, are automatically compatible with either the free spacenavd driver or the official 3dxserv, as if they were using the magellan SDK.

Also, libspnav provides a magellan API wrapper on top of the new API. So, any applications that were using the magellan library, can switch to libspnav without any changes. And programmers that are familliar with the magellan API can continue using it with a free library without the restrictions of the official SDK.

5. Which platforms are supported?

Spacenavd (as of version 0.6) supports all USB 3Dconnexion 6dof devices on GNU/Linux and FreeBSD. Serial spaceball devices are supported on all UNIX systems.

6. Do you plan to support MS Windows too?

It is not inconceivable, some half-baked attempts have been made in the past to support MS Windows, but no one is currently working on it, and there are no immediate plans.

7. Is this driver only for the "Space Navigator" device?

No. Any current or future USB-based input device from 3Dconnexion should work fine with this driver, plus all serial spaceballs, magellan space-mice, and the space explorer. We would also like to support 6-dof devices from other vendors in the future.

If you own a 3Dconnexion device which does not work with spacenavd, please let us know by filing a bug report.

8. The spacenavd daemon is running, but the device LED doesn't turn on.

If you're using an old version of spacenavd (<0.2) or an old linux kernel, the LED won't turn on. However that's not a problem, the device will still function just fine. The LED is not really an indicator, it's only there to make the device look cool.

9. Spacenavd starts, but it doesn't generate any events.

Make sure you have not configured your X server to communicate with the space navigator through XInput. If you have something like the following in your xorg.conf, and a corresponding "ServerLayout" entry, remove or comment them out:

Section "InputDevice"
	Identifier	"SpaceNav"
	Driver		"evdev"
	Option		"Name"	"3Dconnexion SpaceNavigator"
	Option		"Mode"	"relative"
	Option		"XRelativeAxisMap"		"0"
	Option		"YRelativeAxisMap"		"1"
	Option		"ZRelativeAxisMap"		"2"
	Option		"RXRelativeAxisMap"		"3"
	Option		"RYRelativeAxisMap"		"4"
	Option		"RZRelativeAxisMap"		"5"
	Option		"ZRelativeAxisButtons"	"off"
EndSection
		

We're planning to add XInput support to spacenavd at some future release, but until then, you'll have to choose either spacenavd or XInput. If you want to contribute the necessary changes to make spacenavd to also get XInput events if available, please contact me.

10. Spacenavd starts, but fails to connect to the X server ("failed to open X11 display" error in /var/log/spnavd.log).

This problem manifests itself when spacenavd is started from init, and then, when X is started, it tries to connect to the X server.

Since spacenavd runs as root, you must make sure that root can connect to the X server. The X authentication model depends on MIT-MAGIC-COOKIES, stored in your ~/.Xauthority file. If there isn't an .Xauthority file in the root user's home directory (commonly /root) then you must symlink your user's .Xauthority there, to allow root connect to the X server.

Note that this problem doesn't happen when you just use "su" or "sudo" to gain temporary root priviledges to launch the daemon. That's because the XAUTHORITY environment variable still points to your user's .Xauthority file, not root's.

11. I've not configured the space navigator as an XInput device but it still won't generate any events.

Older versions of spacenavd (<0.4) do not actively grab the device, thus it might be the case that the X server automatically detects the space navigator and tries to use it as an XInput device, which results in the spacenav daemon not getting any USB HID events.

In that case you need to create a HAL fdi policy file, that'll instruct the X server to not try and use the space navigator device. Create a file spacenav.fdi under /etc/hal/fdi/policy/:

<?xml version="1.0" encoding="ISO-8859-1"?>
<deviceinfo version="0.2">
    <device>
        <match key="info.product" contains="3Dconnexion">
            <remove key="input.x11_driver"/>
        </match>
    </device>

</deviceinfo>

Thanks to Jaroslaw Bulat for that information

12. I've got an old serial magellan space mouse and it doesn't work.

Make sure you're using the latest version of spacenavd (v0.8 or newer).

Older versions of spacenavd supported only serial Spaceballs, and not Magellan SpaceMice. The serial device code was re-written from scratch in v0.8, and should support all devices.

Also if you're trying to use it with a USB-serial adaptor, try a different one. The magellan space-mice use a serial frame with 2 stop bits, which is uncommon, and not well supported by some cheap adaptors. Try looking for an FTDI FT232-based one to maximize your chances. Some *but not all* pl2303-based adaptors are also known to work.

13. Can I use two (or multiple) 6dof devices at once for 12dof input?

No. At the moment it's not possible to handle multiple devices and send events to client programs in a way that would allow distinguishing which device sends which event. Such a capability was not envisioned originally, and it's not built into the spacenavd UNIX domain socket protocol, nor is it possible with the original 3Dconnexion X11-based protocol which spacenavd also supports.

This feature has been requested multiple times, and will be taken into account when a new, more flexible, communication protocol is designed for spacenav v2.

14. Can spacenavd send 6dof events to external devices (MIDI, OSC, etc)?

Not natively, but it's a simple matter to write a bridge program that receives 6dof events from spacenavd, and forwards them using the OSC protocol or MIDI commands to the appropriate device. There are already some projects doing that, like:

15. Are web-based CAD applications like OnShape supported?

No. OnShape, being a web application, is not capable of receiving 6-dof input in the usual way, and 3Dconnexion has devised a new protocol based on websockets for it. Spacenavd does not currently provide an implementation of this new protocol, nor is it in our immediate plans to implement it any time soon, unless someone interested in web protocols steps up to do it.


Back to the main page