3Dconnexion input devices

3Dconnexion SpaceNavigator

Driver installation

Linux

FreeCAD supports drivers from project Spacenav. This is a project aiming to create an open-sourced driver which is compatible with the proprietary drivers from 3Dconnexion.

Install from repo

Ubuntu
sudo apt-get install spacenavd

Note, however, that version 0.6 available on Ubuntu 20.04 (and probably older ones) does not seem to work. You then have to compile spacenavd from source as explained below.

Fedora
sudo yum install spacenavd
Debian
apt-get install spacenavd libspnav-dev

Spacenav needs these permissions:

cp ~/.Xauthority /root/

Restart spnavd and FreeCAD

/usr/bin/spnavd_ctl x11 stop
/usr/bin/spnavd_ctl x11 start
openSUSE
sudo zypper install spacenavd

Compile Spacenav from source

This is recommended if your distribution might provide an outdated version.

./configure
make
make install
./setup_init
/etc/init.d/spacenavd start
tail -n100 -f /var/log/spnavd.log
Device detection, parsing /proc/bus/input/devices
trying alternative detection, querying /dev/input/eventX device names...
  trying "/dev/input/event1" ... Power Button
  trying "/dev/input/event2" ... 3Dconnexion SpaceNavigator
using device: /dev/input/event2
device name: 3Dconnexion SpaceNavigator
./configure
make
fatal error: gtk/gtk.h: No such file or directory
sudo apt-get install libgtkmm-2.4-dev
make install

Starting spacenavd as a systemd service at boot

If you want to start spacenavd at boot using systemd, do the following:

This is only necessary for the installation from source.

Restarting spacenavd

If sometimes SpaceNavigator stops working, it is good to restart driver. To restart it, go to Terminal and execute:

sudo xhost +
sudo /etc/init.d/spacenavd restart

After that restart FreeCAD. On some distros this is necessary at each boot.

Known Issues

A user reported on the forum they saw the following:

 Spacenav daemon 0.6
 failed to open config file /etc/spnavrc: No such file or directory. using defaults.
 adding device.
 device name: 3Dconnexion SpacePilot
 using device: /dev/input/event5
 No protocol specified
 failed to open X11 display ":0.0" 

The workaround that worked for them:

sudo cp ~/.Xauthority /root/
sudo spnavd_ctl x11 start
sudo systemctl restart spacenavd

MacOS

3Dconnexion input devices are supported on macOS, provided FreeCAD is built and used on a system with the 3Dconnexion drivers installed. You may need 3DxWare 10.7.2 or greater for macOS 12 Monterey.

Windows

As of version 0.13, 3D mouse is supported under Windows. You need to have 3Dconnexion drivers installed. In FreeCAD version 1.0 a new integration with 3Dconnexion devices has been introduced. If compiled with that integration, only recent hardware is supported: to support older devices users will need to self-compile with the FREECAD_3DCONNEXION_SUPPORT cMake variable set to "Raw Input". Windows users should be aware that 3Dconnexion's driver (not the code in FreeCAD) contains a telemetry package that communicates information about your installed software back to 3Dconnexion.

Known Issues

Setting up FreeCAD

1.0 and above: The 3Dconnexion manipulator can be set up in its driver app (3DxWare software).

0.21 and below: If a Spaceball is detected the following tabs in the Customize dialog can be used to change settings:

Spaceball Motion

In this tab you have ability to set up some of general space mouse settings. They include:

Other than this, for each axes you have ability to set:

Spaceball Buttons

When you open this tab for the first time, it will be empty and unavailable. To activate it, you must press one of your space mouse buttons. After you do, list of buttons will appear on the left side, and list of commands will be available on the right side.

To connect certain command with a button, select button on the left side, and it's command on the right side. To clear commands from button, press "Clear".

Troubleshooting

Check if your FreeCAD installation links to the spacenav library. The best way to check this is by running FreeCAD from the command line terminal FreeCAD --log-file /tmp/freecad.log and close it immediately again. Then open the file /tmp/freecad.log and search for the messages:

Connected to spacenav daemon

or

Couldn't connect to spacenav daemon. Please ignore if you don't have a spacemouse.

If none of them appears then your FreeCAD build doesn't link to the spacenav library. If the former message appears then it basically works. The latter message means there is probably a problem with the spacenav daemon.

Related