Jun 122013
 

linux-playstation2

Thanks to all the Indie games, Steam and Humble Bundle recently the market of games for Linux has become most active than ever and so I’ve bought some arcade/action/platform games.

Perhaps it’s just me but I don’t like too much to manage around 10 different keys on the keyboard and remember all the combo that I’ve to do with them, a joypad it’s a much simpler way to play that kind of games, and what’s the best joypad around ?

In my opinion Playstation joypads are some of the best you can find around, probably Xbox are good too, but I’ve an unused playstation 2 and so I’ve choose to go in that direction.

And I must say that with a great surprise everything worked fine without too much problems !!



Please note I’ve tested this on my Linux Mint 14, that uses the same Kernel (3.5.x) and software of an Ubuntu 12.10.

Playstation 2 to USB adapter

As first thing you have to buy an adapter from the Playstation 2 joypad to a standard USB port.
I’ve bought the following model from Ebay for 3€, I’ve choose this for 2 reasons:

  • It’s really cheap
  • It can be used to plug in 2 joypads

usb-play2

Once plugged in your linux box run from a terminal the command lsusb, you should see an output like this one:

mint-desktop tmp # lsusb
Bus 001 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 002 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 003: ID 0951:1643 Kingston Technology DataTraveler G3 4GB
Bus 001 Device 004: ID 058f:6364 Alcor Micro Corp. AU6477 Card Reader Controller
Bus 002 Device 003: ID 0424:2524 Standard Microsystems Corp. USB MultiSwitch Hub
Bus 002 Device 004: ID 2001:3c19 D-Link Corp. DWA-125 Wireless N 150 Adapter(rev.A3) [Ralink RT5370]
<strong>Bus 002 Device 009: ID 0810:0001 Personal Communication Systems, Inc. Dual PSX Adaptor
</strong>Bus 002 Device 006: ID 050d:3201 Belkin Components F1DF102U/F1DG102U Flip KVM
Bus 002 Device 008: ID 046d:c01d Logitech, Inc. MX510 Optical Mouse
Bus 002 Device 007: ID 046d:c315 Logitech, Inc. Classic New Touch Keyboard

This means that so far is all good.

Test the Joypad within Linux

Connect the joipad of your Playstation 2 to the adapter, now how you can test it ?
A software that does this work is jstest, so install the package that contains it with the command:

sudo apt-get install joystick

Or equivalent if you are not using a .deb Linux distribution.
Now you can run the following command from a terminal:

#jstest /dev/input/js0
Driver version is 2.1.0.
Joystick (Twin USB Joystick) has 6 axes (X, Y, Z, Rz, Hat0X, Hat0Y)
and 12 buttons (Trigger, ThumbBtn, ThumbBtn2, TopBtn, TopBtn2, PinkieBtn, BaseBtn, BaseBtn2, BaseBtn3, BaseBtn4, BaseBtn5, BaseBtn6).
Testing ... (interrupt to exit)
Axes:  0:     0  1:     0  2:     0  3:     0  4:     0  5:     0 Buttons:  0:off  1:off  2:off  3:off  4:off  5:off  6:off  7:off  8:off  9:off 10:off 11:off

Now if you push the direction buttons or some other buttons you should see some changes:

#jstest /dev/input/js0
Driver version is 2.1.0.
Joystick (Twin USB Joystick) has 6 axes (X, Y, Z, Rz, Hat0X, Hat0Y)
and 12 buttons (Trigger, ThumbBtn, ThumbBtn2, TopBtn, TopBtn2, PinkieBtn, BaseBtn, BaseBtn2, BaseBtn3, BaseBtn4, BaseBtn5, BaseBtn6).
Testing ... (interrupt to exit)
Axes:  0:<strong>-32767</strong>  1: <strong>32767</strong>  2:     0  3:     0  4:     0  5:     0 Buttons:  0:off  1:<strong>on</strong>   2:<strong>on</strong>  3:off  4:off  5:off  6:off  7:off  8:off  9:off 10:off 11:off

If while pushing the buttons you see some number changing from off to on you’re done, that’s how the different buttons are mapped in Linux.

Note: At first this was not working for me, I switched the connection of the Joypad in the adapter and everything started to works, so apparently there is in the adapter a port 1 and a port 2 and you have to use port 1.

How to map the joypad buttons on keys

The most simple thing to do to use the joypad is to map every button with a keyboard key, in this way you’ll be able to use it with all games that don’t have a native support for joypad, a good software that can do this is QjoyPad.
QJoyPad takes input from a gamepad or joystick and translates it into key strokes or mouse actions, letting you control any XWindows program with your game controller.

Its main features are

  • Move and click the mouse with your joystick
  • Auto-detects how many joysticks you have and how many buttons and axes each supports
  • Support for devices with more than two axes
  • Save as many layouts as you want and switch between them quickly
  • Swap layouts on the fly from the command line or from a script
  • Set or reset all the keys at once in a flash
  • Adjust the sensitivity of every axis independently
  • Quietly hides in your system tray, running in the background without taking up space
  • For window managers without a system tray, QJoyPad can run without the tray icon.
  • Make an axis “Gradient” so that a light push does a little and a harder push does more – now with customizable curves!
  • Make a button “Sticky” if you don’t feel like holding it down all the time
  • Turn on Rapid Fire so you don’t wear out your gamepad!
  • Native tray icon code making putting it in your start up entry simple
  • To install it on Debian, Ubuntu and Mint open a terminal and run the command
sudo apt-get install qjoypad

Now you should find the qjoypad icon on the game menu, or you can start it from a terminal with the command qjoypad, in both way you should see a new joypad icon on your system tray.

If you left click on it the main window of qjoypad will open:

qjoypad

From this window you can configure the keys for axis1 (Horizontal) and axis2 (vertical) and all the buttons, and save them in a layout.
Once done save and … start your favorite game.

Conclusions

To be honest I was very skeptical about this solution, but in really few time I’ve been able to configure the joypad and use it with Shank 2 a game unplayable with just the keyboard (at least for me).
To me this demonstrate once more that the Gnu/Linux system is mature and setting up peripherals is now not harder than some years ago.


Popular Posts:

Flattr this!

  6 Responses to “How to use a Playstation 2 joypad with Linux”

  1. It doesn’t load a configuration window for me, it just puts the icon in the tray and does jack shit. I’ve read through the documentation and it has not helped. I have tried left and right clicking it and…nothing.

  2. QJoyPad ormai sembra abbandonato, perciò segnalo a te e ai tuoi lettori questo: http://www.webupd8.org/2013/09/map-keyboardmouse-input-to-your-gamepad.html
    Ora passo alla domanda impertinente 😀
    Ho intenzione di comprarne uno anch’io e siccome come dici tu costa solo 3€, è un baracchino? Il tuo funziona ancora dopo 3 mesi?

    • Grazie per il link, per il momento qjoypad funziona ancora, ma appena riesco faccio un test anche con quel software.

      Per rispondere alla domanda, per 3 € mi aspettavo un baracchino, ed in effetti lo è, il mio fortunatamente funziona ancora dopo 3 mesi 🙂

      Grazie a questo ho iniziato ad usare il pad della ps2 con Linux.

      Ciao

      • Grazie della risposta. Ne ho preso uno anch’io (plastica diversa, stesso dispositivo stando a lsusb) e devo dire che funziona veramente bene, levette analogiche incluse. Lo sto usando con soddisfazione con un joypad PS1 che prendeva la polvere da più di 15 anni.

  3. could you further explain your Note: At first this was not working for me, I switched the connection of the Joypad in the adapter and everything started to works, so apparently there is in the adapter a port 1 and a port 2 and you have to use port 1.
    porcedure to get it working?
    because mine is not working either, i can’t have both controllers LED’s light up at the same time. only one of them works.

  4. thanks for the info. i just bought an adapter that’s *probably* exactly the same today. i say probably because your image doesn’t load anymore ! and i see this post was made 3 years ago

 Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

(required)

(required)

*