3DxWare in Debian

Questions and answers about 3Dconnexion devices on UNIX and Linux.

Moderator: Moderators

nomad
Posts: 4
Joined: Mon Dec 11, 2006 7:19 pm

3DxWare in Debian

Post by nomad »

It's so empty in here! I feel all lonely. :P

I had sent a support request in for this issue, and got a couple of emails from 'John' at the helpdesk email addy. It sort of appears that my replies from gmail aren't getting back to him, though, so I'll post here, where other folks might find it useful too.

So here's the rub. Initially, the 3DxWare daemon would complain about a missing libXm.so.3 when trying to start it. This was resolved by installing OpenMotif - which, it should be noted, doesn't always play well with other Debian packages (I don't recall which, I'll have to check again). Anyway, 3dxsrv is happier, but finds no 'spaceball' device in /dev. The SpaceTraveler does show up with lsusb, and it does appear in /proc/bus/input/devices:

Code: Select all

I: Bus=0003 Vendor=046d Product=c623 Version=0311
N: Name="3Dconnexion SpaceTraveler USB"
P: Phys=usb-0000:00:1d.1-2/input0
S: Sysfs=/class/input/input5
H: Handlers=event5
B: EV=7
B: KEY=ff 0 0 0 0 0 0 0 0
B: REL=3f
Distro is Debian stable, custom kernel 2.6.18. Is it as simple as doing a 'mknod /dev/spaceball' with the appropriate major/minor, or am I more likely missing kernel support for something important?
UtaSH
Moderator
Moderator
Posts: 3754
Joined: Mon Nov 27, 2006 10:34 am
Location: Munich, Germany
Contact:

Post by UtaSH »

Hi nomad!

Good to see that we have interested users on Unix/Linux as well ;-)

If you don't tell the daemon where to look for the device it assumes that the device is connected to /dev/spaceball. This could be a link to the port where the device is connected. Actually this makes sense for a serial device

Code: Select all

ln -s /dev/ttyS0 /dev/spaceball
But for a USB device like your Space Traveler this only makes sense until you do not disconnect it. If you unplug and plug it in again the "port" will be another one (i.e.: /proc/bus/usb/002/001 and then /proc/bus/usb/002/002)

The best is if you start the driver with -d usb:

Code: Select all

/etc/3DxWare/daemon/3dxsrv -d usb
Uta Ludwig
3Dconnexion
nomad
Posts: 4
Joined: Mon Dec 11, 2006 7:19 pm

Post by nomad »

Ah - sorry, I had tried that too, but to no avail. I should have said so originally. Starting 3dxsrv with '-d usb' gives: "Error: Could not open USB port or no supported device found." Also, /proc/bus/usb turns up empty. Plugging it in does create a new device named something like '/dev/usbdev1.1_ep81', but pointing 3dxsrv there gives the same error.
UtaSH
Moderator
Moderator
Posts: 3754
Joined: Mon Nov 27, 2006 10:34 am
Location: Munich, Germany
Contact:

Post by UtaSH »

Our driver addresses the device via the usbfs. Please make sure it is mounted. You can find this information in our readme:
Please make sure you mount the usbfs to get support for the USB controller.
To mount USBFS, please do (as root user):
mount -t usbfs none /proc/bus/usb
You should enter a line for usbfs in your /etc/fstab to have USBFS
mounted at boot time.

You might also find useful hints about USB on Linux here:
http://www.linux-usb.org/USB-guide/c122.html
http://www.linux-usb.org/USB-guide/x173.html
We only tested Red Hat EL WS and SuSE as we shorten our official support to those distributions.

Uta Ludwig
3Dconnexion
nomad
Posts: 4
Joined: Mon Dec 11, 2006 7:19 pm

Post by nomad »

Ah hah. That's what I was missing. Don't I feel brilliant. :lol:

Thanks very much.
hraith
Posts: 4
Joined: Thu Dec 21, 2006 7:03 am
Location: Germany

Same Problem with Suse Linux 10.2

Post by hraith »

Hi,

I've got the same problems with Suse Linux 10.2 (OpenLinux 10.2).

... same problem with OpenMotif but I have had installed the package. It was already installed by default. Named libXm.so.4 and not the requested libXm.so.3. I solved it with ' ln -s libXm.so.4 libXm.so.3'. OK it's not very correct but satisfies 3dxsrv. :?

... NEXT. /proc/bus/input/devices shows also:

Code: Select all

I: Bus=0003 Vendor=046d Product=c623 Version=0311
 N: Name="3Dconnexion SpaceTraveler USB"
 P: Phys=usb-0000:00:1d.3-1.3/input0
 S: Sysfs=/class/input/input4
 H: Handlers=event4
 B: EV=7 
 B: KEY=ff 0 0 0 0 0 0 0 0
 B: REL=3f
but 'mount -t usbfs none /proc/bus/usb'
returns 'mount: mount point /proc/bus/usb does not exist'

If I have a look at /proc/bus there is:
'input' and 'pci' nothing else. :cry:

... May be helpful: If I do 'cat /dev/input/event4'
I get something like: "E�E,▒E...." always I Move the SpaceTraveler.

Do I really have to build a user defined kernel? Hopefully not !!

Please help me. Thanks in advance.
jakedh
Posts: 3
Joined: Mon Jan 08, 2007 3:50 pm

Post by jakedh »

I have the same problem. I have SuSE 10.2 and apparently they dropped support for usbfs. Please tell me there is a solution for this and a plan to have 3dxsrv use something other than the old, insecure usbfs...
I really don't want to downgrade my OS just so I can use outdated software.
UtaSH
Moderator
Moderator
Posts: 3754
Joined: Mon Nov 27, 2006 10:34 am
Location: Munich, Germany
Contact:

Post by UtaSH »

Hello all!

We finally had to learn that it is not possible to mount easily the usbfs with SuSE 10.2. :(

But we found out that it is possible to address the device via /dev/bus/usb (instead of /proc/bus/usb).
:!: This is not supported by the actual driver, but we will implement it in our next release. :!:

For now I have a workaround for those who are interested:
Please check with the command lsusb where the system locates the device. On my machine it looks like this:
  • # lsusb
    Bus 005 Device 001: ID 0000:0000
    Bus 004 Device 001: ID 0000:0000
    Bus 003 Device 006: ID 046d:c623 Logitech, Inc.
    Bus 003 Device 004: ID 046d:c024 Logitech, Inc.
    Bus 003 Device 003: ID 413c:2002 Dell Computer Corp. SK-8125 Keyboard
    Bus 003 Device 002: ID 413c:1002 Dell Computer Corp. Keyboard Hub
    Bus 003 Device 001: ID 0000:0000
    Bus 002 Device 001: ID 0000:0000
    Bus 001 Device 001: ID 0000:0000
This means that the Space Traveler (046d:c623) is device 006 at bus 003. Thus the driver can locate it at
  • /dev/bus/usb/003/006
Start the driver as follows:
  • :idea: /etc/3DxWare/daemon/3dxsrv -d /dev/bus/usb/003/006
Note that the location of the device changes as soon as you unplug and re-plug it. Or if you boot the machine.

This are the codes for our supported devices:
  • c603 - SpaceMouse Plus [XT]
    c621 - SpaceBall 5000
    c623 - Space Traveler
    c625 - SpacePilot
    c627 - SpaceExplorer
Uta Ludwig
3Dconnexion
jakedh
Posts: 3
Joined: Mon Jan 08, 2007 3:50 pm

Post by jakedh »

Here is the automated form of your fix:
/etc/3DxWare/daemon/3dxsrv -d /dev/bus/usb/`lsusb |grep "Logitech, Inc."|sed -e 's/Bus //' -e 's/ Device /\//' -e 's/:.*//'`
Can you give us an idea of when the next release might be? I am not sure how much time I should spend on making this hack work for fifty users.

Thanks,
Jake
UtaSH
Moderator
Moderator
Posts: 3754
Joined: Mon Nov 27, 2006 10:34 am
Location: Munich, Germany
Contact:

Post by UtaSH »

Great! Thanks, Jake!

I recommend to grep for the number of the device and not "Logitech". This could fail if you have other Logitech devices (mouse, keyboard, ...) that are listed before the navigation controller.

For the next release I have no exact date, but it should come out within the next months. If you are interested I can send a beta to you when we have it.

Uta Ludwig
3Dconnexion
hraith
Posts: 4
Joined: Thu Dec 21, 2006 7:03 am
Location: Germany

Post by hraith »

Thank You Very Much, Uta and Jake,

Great support. Now it works quiet nice on my 10.2 Suse.

Uta, I would be also interested in a beta version if available.

Thanks,
Hans :D
jakedh
Posts: 3
Joined: Mon Jan 08, 2007 3:50 pm

Post by jakedh »

You are right. For those who can't follow Linux commands very well here is the modified one-liner. Replace "insert device code here" with your device code.
c603 - SpaceMouse Plus [XT]
c621 - SpaceBall 5000
c623 - Space Traveler
c625 - SpacePilot
c627 - SpaceExplorer

/etc/3DxWare/daemon/3dxsrv -d /dev/bus/usb/`lsusb | grep "Logitech"|grep "insert device code here"|sed -e 's/Bus //' -e 's/ Device /\//' -e 's/:.*//'`

I would be happy to test a beta.
UtaSH
Moderator
Moderator
Posts: 3754
Joined: Mon Nov 27, 2006 10:34 am
Location: Munich, Germany
Contact:

Betaversion

Post by UtaSH »

For those who don't want to wait for the next release and who don't want to struggle with the workaround: we do have a beta version for this problem. If you want to have it please send a private message to me with your email address.


Uta Ludwig
3Dconnexion
simon
Posts: 7
Joined: Thu Dec 14, 2006 5:51 pm

Post by simon »

I just wanted to chime in and make everyone aware, that udev is a powerful tool to map dynamically changing device files to fixed locations - see the thread on the spacenavigator for linux.
Udev is a standard on all recent linux distributions AFAIK. I am however not sure if it supports symlinking into the /dev/usb hierarchy, but it is pretty flexible and it would probably help to investigate this in detail.

Bye,
Simon
rob
Posts: 3
Joined: Fri Mar 09, 2007 1:13 am
Location: Netherlands

Spaceball under OpensSuse 10.2: libXm.so.3 still problematic

Post by rob »

Hello, with thanks for the tips found here so far, it didn't help me out: even defining the link from libXm.so.4 -> libXm.so.3 the loading of the driver fails while telling me it can't find it.
Just to be sure I added the /usr/lib to the PATH environment, but that didn't help either.
Any ideas?

Rob :?:
Post Reply