Page 1 of 1

My new joystick is not recognized by Descent 3 Linux version

Posted: Mon Aug 07, 2006 11:03 pm
by Atrax
This is my first post here. I'm proud to be part of this community!

Now, let's discuss about my problem.

I run SuSE Linux 10.0 (planning to change it to Kubuntu Dapper Drake very, very soon) and I have the Loki Linux version of Descent 3 (1.4b version) installed.

Yesterday, I bought a great new joystick by Saitek (model Saitek Cyborg Evo Force Feedback).

The operating system recognizes it perfectly and matches it with the device file /dev/input/js0.

Also, all the games I tested it, including Descent 1 and 2, work with it perfectly, always on the same operating system.

All, expept Descent 3.

Because, when I run Descent 3 I get the message (from console):

SIGNAL 8 caught, aborting

and the game fails to load.

This happens almost always, when I have the joystick plugged and I don't have any problem at all when I unplug the joystick.

There are a very few times that Descent 3 runs without the error message at all (I don't know why the game changes behavior these very few times), while the joystick is connected, but when I configure controls for joysticks from options the game says \"0 joysticks recognized\" and when I press buttons in joystick to change the control buttons, the game doesn' t accept them.

Notice that the Linux version of Descent 3 recognized and worked perfectly with my previous controller, a Microsoft Freestyle Pro gamepad.

Both joystick and gamepad are USB (of cource).

Is this a bug of Linux version of Descent 3?

Do you have any idea that could help?

\"./descent3 --help\" didn't help me.

I need desperately to make this joystick work with Linux version of Descent 3. This game is the main reason I bought the joystick!

If you know anything to solve the problem, please post it here.

Thanks for reading this.

Posted: Mon Aug 07, 2006 11:44 pm
by Xamindar
try linking /dev/input/js0 to /dev/js0

Code: Select all

ln -s /dev/input/js0 /dev/js0
You have to run that command as root of course. You will also have to run it again every time you reboot so it would be a good idea to put it in your local.rc startup file, wherever that file is in suse.

I think when D3 was made the joystick device location wasn't standardized to d3 looks for it in /dev/js0 instead of the proper /dev/input/js0 location.

EDIT: re-reading your post it looks like there might be a different problem. Will the game run as root? Sometimes logging in as root and running the game will help you to narrow down the problem to a permission issue.

Posted: Tue Aug 08, 2006 12:14 am
by Atrax
Running the game as root leads exactly to the same problems with simple users.

Posted: Tue Aug 08, 2006 1:17 am
by Atrax
OK, that linking (as root) solved the problem!

Thanks a lot!

Just tell me now what to do, so that I will not have to type it over and over again every time I boot.

Thanks again...

Posted: Tue Aug 08, 2006 1:55 am
by Xamindar
I believe the standard location is /etc/rc.d/rc.local
It will be somewhere under the /etc directory in the startup scripts location. I am running Gentoo Linux which DOES NOT have it in the most common location. Mine is under /etc/conf.d/local.start.
You should just be able to add that link command to the end of the \"local\" script, wherever it is on your system.

The reason I chose that script is because it is the last one that is run on startup on a Linux system. Your command will be the last thing to be executed.

Please let me know if I need to be more clear. I have no idea how familiar you are with Linux.

Posted: Tue Aug 08, 2006 3:38 am
by Atrax
OK, that linking (as root) solved the problem!

Thanks a lot!

Just tell me now what to do, so that I will not have to type it over and over again every time I boot.

Thanks again...

Posted: Tue Aug 08, 2006 6:37 am
by FunkyStickman
Welcome to the Descent/Linux family. Once you've gotten a handle on D3 in Linux, make sure to check out Munk's Linux Checksum Bugfix Thread so you can play ALL the levels with other Descenters running Windows. Don't be afraid to ask questions! I'm using pretty much nothing but Suse Linux (since version 9.0) so there's a good possibility I've been there before...

Again, welcome.

Posted: Tue Aug 15, 2006 4:57 pm
by SkyNet
Xamindar wrote:ln -s /dev/input/js0 /dev/js0

You will also have to run it again every time you reboot.
I'm curious as to why this command is needed at each reboot? If my memory serves correct, then this is a symlink to /dev/input/js0. If this command is issued as root, then it should be a permanent file.

Posted: Tue Aug 15, 2006 7:04 pm
by The Lion
On most recent systems, /dev is a RAM-disk; it starts from scratch
at each boot and device files are created on-demand by a daemon
such as udev. So, manual tweaks to /dev are lost when the machine
shuts down or reboots.

Doing a Google search for \"udev\" will help you find out more.

Posted: Tue Aug 15, 2006 9:50 pm
by DCrazy
If you're using udev, then the line:

Code: Select all

KERNEL==\"js[0-9]*\", SYMLINK+=\"%k\"
will automatically create a symlink called /dev/js[0-9] pointing at /dev/input/js[0-9]. For Ubuntu, the proper place to put that line is in /etc/udev/rules.d/60-symlinks.rules; SLED probably uses a different filename. If/when you switch to K/Ubuntu, you'll have to add that line.

Posted: Wed Aug 16, 2006 12:20 pm
by Xamindar
Hey thanks, Dcrazy. That is very usefull.