My new joystick is not recognized by Descent 3 Linux version

For system help, all hardware / software topics NOTE: use Coders Corner for all coders topics.

Moderators: Krom, Grendel

Post Reply
User avatar
Atrax
DBB Cadet
DBB Cadet
Posts: 4
Joined: Mon Aug 07, 2006 8:20 pm
Location: Athens, Greece

My new joystick is not recognized by Descent 3 Linux version

Post 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.
User avatar
Xamindar
DBB Admiral
DBB Admiral
Posts: 1498
Joined: Sun Jun 06, 2004 2:44 am
Location: California
Contact:

Post 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.
Why doesn't it work?
User avatar
Atrax
DBB Cadet
DBB Cadet
Posts: 4
Joined: Mon Aug 07, 2006 8:20 pm
Location: Athens, Greece

Post by Atrax »

Running the game as root leads exactly to the same problems with simple users.
User avatar
Atrax
DBB Cadet
DBB Cadet
Posts: 4
Joined: Mon Aug 07, 2006 8:20 pm
Location: Athens, Greece

Post 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...
User avatar
Xamindar
DBB Admiral
DBB Admiral
Posts: 1498
Joined: Sun Jun 06, 2004 2:44 am
Location: California
Contact:

Post 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.
Why doesn't it work?
User avatar
Atrax
DBB Cadet
DBB Cadet
Posts: 4
Joined: Mon Aug 07, 2006 8:20 pm
Location: Athens, Greece

Post 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...
User avatar
FunkyStickman
DBB Ace
DBB Ace
Posts: 309
Joined: Wed Apr 20, 2005 2:26 pm
Location: 'Nawlins

Post 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.
User avatar
SkyNet
DBB Ace
DBB Ace
Posts: 78
Joined: Mon Jul 19, 2004 3:56 pm
Location: Spartanburg, South Carolina
Contact:

Post 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.
User avatar
The Lion
DBB Ace
DBB Ace
Posts: 197
Joined: Mon Apr 17, 2006 2:13 pm
Location: The Netherlands

Post 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.
User avatar
DCrazy
DBB Alumni
DBB Alumni
Posts: 8826
Joined: Wed Mar 15, 2000 3:01 am
Location: Seattle

Post 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.
User avatar
Xamindar
DBB Admiral
DBB Admiral
Posts: 1498
Joined: Sun Jun 06, 2004 2:44 am
Location: California
Contact:

Post by Xamindar »

Hey thanks, Dcrazy. That is very usefull.
Why doesn't it work?
Post Reply