Setup
=====
Prerequisites
-------------
To access a Space Navigator (or compatible) device in Linux, you need
to run a daemon in the background. The official 3dconnexion drivers
provide such a server, but the open source `spacenav
`_ project provides a vastly
superior daemon that I highly recommend.
``spacenavd`` can communicate input events with client software using
either the X11-based protocol supported by the 3dconnexion drivers, or
a local UNIX socket-based protocol. The ``libspnav`` client library,
also produced by the `spacenav` project, can use either protocol.
If you are using Ubuntu 11.04, you can install ``spacenavd`` and
``libspnav`` with the following command::
sudo apt-get install spacenavd libspnav0
Otherwise, you will need to download the sofware from:
http://spacenav.sourceforge.net
and install it manually.
Package Installation
--------------------
The ``spnav`` Python module can installed from PyPI with the command::
sudo easy_install spnav
or installed from `source `_ by
running the usual Python installation procedure::
sudo python setup.py install
The ``spnav`` module requires ``ctypes``, which is standard in Python 2.5 and
later, although I have only tested spnav with Python 2.7.
Tips
----
* ``spacenavd`` supports USB devices with no additional configuration
file, but serial devices do need the port name set in
``/etc/spnavrc``.
* Neither ``spacenavd`` nor the 3dconnexion damon support more than
one Space Navigator device connected to a single computer.
* Serial devices may have a different convention for the orientation
of the y and z axes. You might need to flip them in the
configuration file.
* The X11-based protocol works automatically with X11 forwarding and
SSH, allowing you to send input events to software running on a
remote computer. Note that ``libspnav`` and the ``spnav`` Python
module need to be installed on the remote computer for this to work.
* If you experience strange permission problems when the ``spacenavd``
daemon is started automatically by the Ubuntu boot scripts. If you
are having trouble, stop the daemon::
sudo service spacenavd stop
and then start the daemon manually from a X terminal window::
sudo spacenavd
Alternatively, try using the direct UNIX socket protocol.