Spacemouse support?

B

blindcoder

Guest
Hi all.

I'm considering getting myself a Logicad Magellan Spacemouse for WC:pR. I know that there's a module for this in the joystick section of the Linux kernel. Anyone has experience with this?
 
Only since you kindly helped me with getting it working. Thank you very much for that!

Now, considering its price the SpaceMouse is a rather noble device if used for gaming, therefore I don't expect many players to post in this thread.

Still, for those that do have one, lets syndicate our efforts here!
I'll make the start with the basic configuratin:

Part 1: get the kernel drivers working:
1.1 Serial support:
If you use a stock (distribution) kernel it is very likely that the serial support is already enabled. On IBM-PCs, the module is called 8250 (or 8250_acpi or 8250_pci).
If you roll your own kernels, the Serial drivers are under Device Drivers --> Character Devices -->Serial Drivers --> 8250/16550 and compatible serial support.

1.2 USB:
I don't have an USB version of the SpaceMouse so I can't give and advice here. However, there is tons of documentation on how to get USB working under Linux out there. I am sure you will find it.
My guess is the crucial setting is Device Drivers --> USB support --> USB Human Interface Device (full HID) support, and *maybe* USB Serial Converter support --> USB Generic Serial Driver​

1.3: SpaceMouse driver:
Go to Device Drivers --> Input Device Support and enable (at least) "Event Interface", "Joysticks" and "LogiCad3d Magellan/SpaceMouse 6dof controllers"
Save your config, rebuild, install and boot the new kernel.

1.4 Loading the modules:
modprobe 8250
modprobe magellan
check your dmesg (or /var/log/messages) output, it should read something like this:
Code:
Mar 18 22:55:58 scourge kernel: Serial: 8250/16550 driver $Revision: 1.90 $ 8 ports, IRQ sharing enabled
Mar 18 22:55:58 scourge kernel: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
Mar 18 22:55:58 scourge kernel: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A

1.5 Get the inpututils installed.
This is the part where I needed blindcoders help! So to give credit, I'll just quote him here:
blindcoder said:
| Could you provide some help with this?
Sure. The inputattach program is part of the linuxconsole project.
http://sf.net/projects/linuxconsole

I've been using the debian package though (though I'm not using debian :) )
since the CVS checkout didn't compile for me:
http://packages.debian.org/stable/utils/joystick
Download the joystick-*.orig.tar.gz and extract it.
The inputattach program can then be found in the utils subdirectory after
running `make' in there.
Use it like this:
./inputattach -mag /dev/tts/1 &
Or wherever your Spacemouse is attached. This creates a /dev/input/eventX
interface which you can then use in privateer.

This worked fine for me on Gentoo, on Debian you would obviously just install the package and I am sure the other major distributions have it packaged as well.

After giving the inputattach command, check dmesg again, it should now read:
Code:
Mar 19 12:53:01 scourge kernel: input: LogiCad3D Magellan / SpaceMouse on ttyS0/serio0
Mar 19 12:53:01 scourge kernel: serio: Serial port ttyS0
You can now do "cat /dev/input/eventX" and wiggle the SpaceMouse to find out which device it got attached to.
Part 2: Privateer Configuration:
In the setup screen (/usr/share/games/privateer/bin/setup) I set "No Mouse" and "Backwards Joy 3 Axes and Throttle" and the SpaceMouse automatically worked in the game.
However I am not fully satisfied with the controlls, as "roll" it set to the SpaceMouse y-axis a.k.a "moving knob forward and back", and tilting it forward and sideways doesn't do anything at all. I have yet to find out how to configure more axes, if someone has a better working setup please post it!

This concludes the guide for now, HTH, and I will post updates as they happen.
 
Glad to help :)

Btw, I've been able to get a useful configuration running:

Code:
                <bind joystick="0" player="0" button="0" modifier="none" command="FireKey" />
                <bind joystick="0" button="1" modifier="none" command="FireKey" />
                <bind joystick="0" button="2" modifier="none" command="MissileKey" />
                <bind joystick="0" button="3" modifier="none" command="DecelKey" />
                <bind joystick="0" button="4" modifier="none" command="AccelKey" />

                <bind joystick="0" button="5" modifier="none" command="NearestTargetKey" />
                <bind joystick="0" button="6" modifier="none" command="ReverseNearestTargetKey" />
                <bind joystick="0" button="7" modifier="none" command="SheltonKey" />
                <bind joystick="0" button="8" modifier="none" command="ABKey" />

                <axis name="z" joystick="0" axis="0" inverse="false" />
                <axis name="y" joystick="0" axis="1" inverse="false" />
                <axis name="x" joystick="0" axis="2"/>

I haven't found out what "SheltonKey" means but also couldn't find anything else useful to put there so I kept it as it is.

The only thing I still have trouble with is calibrating the Spacemouse. Right now if I move it all the way to the left it overflows to right. I'm hoping for an answer from the linuxconsole guys.

Otherwise the Spacemouse works just fine and considering I got it for under 100 € I'm really happy now :D
 
Back
Top