Compatible CSR bluetooth dongles

Edit 24/06: Bluecore4-ROM dongles may work too!

It is quite difficult to tell if a usb dongle will work or not (even for CSR chips).

And not to make it easier, dongle manufacturers can change the chip without changing the product name… So be careful about hardware revisions!

I suggest CSR chips such as BlueCore2-ext and BlueCore4-ext. There is no guaranty it will work.

Older CSR chips may work (as the dongle I’m using – Cellink BTA-3000).

There is valuable information about BlueCore2-ext dongles and BlueCore4-ext dongles on that blog and that forum thread.

A list of dongles with BlueCore2-ext can be found there (p.98-104).

Playing FPS with a G5 on PS3 ;-)

I did it! That feels almost like playing a FPS on a PC ^^

I seriously hope console manufacturers and game developers will think about giving us the right controller for each type of game… But I think they won’t, as they actually seem to put all their efforts in those new controllers for casual gamers…

Tutoriel : Sixaxis emulator


Attention: ce tutoriel n’est plus à jour. Nouveau tutoriel : lien.

[spoiler]Introduction

Ce tutoriel explique comment contrôler une PS3 avec un clavier et une souris connectés à un PC sous Linux, en utilisant un dongle bluetooth.

Cela est possible grâce au travail de Jim Paris, dont j’ai repris et modifié le code source.

Pré-requis

  • une manette sixaxis déjà utilisée avec la PS3 à utiliser
  • un dongle bluetooth avec une puce dont la bdaddr (bluetooth device address) peut être changée. Pour découvrir si votre dongle marche, essayez simplement d’exécuter ce tutoriel.

Notes

Cette méthode est expérimentale, donc utilisez là à vos risques et périls. Je ne suis pas responsable des dégâts que vous pourriez causer à votre PC ou à votre PS3.

Les dongles CSR Bluecore4 trouvables sur ebay pour quelques euros sont rapportés comme utilisables. Bluecore4 est la première puce CSR implémentant l’EDR (Enhanced Data Rate), donc les mots clefs pour trouver ces dongles sont CSR et EDR.

Retirer tout autre dongle du PC (ou les désactiver).

Ne pas essayer d’utiliser le Sixaxis emulator et la manette sixaxis en même temps. Rétablir la bdaddr du dongle si elle n’est plus utilisée pour le Sixaxis emulator.

Ce tutoriel a été écrit en utilisant ubuntu depuis le live cd (rien n’est modifié sur le disque dur).

Ne pas oublier de noter la bdaddr de la PS3 dans l’étape 1, afin de ne plus avoir à répéter cette étape.

Une fois que l’étape 2 est réalisée, il n’y a plus lieu de la répéter puisque la modification de la bdaddr est permanente.

Comme les étapes 1 et 2 n’ont à être réalisées qu’une seule fois, une manière simple de démarer le Sixaxis emulator avec un live cd est de réaliser un script pour les étapes 3 et 4.

Installez ubuntu sur votre PC si vous le souhaitez ! Si vous avez un OS Windows déjà installé, vous pouvez lire ce tutoriel si vous voulez installer ubuntu sur votre disque dur sans supprimer l’OS Windows.

L’émulateur peut aussi être exécuté à partir d’un Ubuntu en Live USB persistent (lire ce post).

1 Déterminer la bdaddr du sixaxis et la bdaddr de la PS3

Connecter le sixaxis au PC avec un câble usb.

Dans un terminal (alt+F2, gnome-terminal) :

sudo apt-get install libusb-dev

wget http://diyps3controller.googlecode.com/svn/trunk/sixutils/sixaddr.c

gcc -o sixaddr sixaddr.c -lusb

sudo ./sixaddr

Current Bluetooth master: XX:XX:XX:XX:XX:XX
Current Bluetooth Device Address: YY:YY:YY:YY:YY:YY

“Current Bluetooth master” est la bdaddr de la PS3 (la noter).
“Current Bluetooth Device Address: ” est la bdaddr du sixaxis (la noter).

Déconnecter le câble usb. Le sixaxis devrait s’éteindre.

2 Modifier la bdaddr du dongle

sudo apt-get install libdbus-1-dev libglib2.0-dev

wget http://www.kernel.org/pub/linux/bluetooth/bluez-4.63.tar.gz

tar xzvf bluez-4.63.tar.gz

cd bluez-4.63

./configure –enable-test

make

(ne pas faire le traditionnel make install)

cd test

./bdaddr

Manufacturer: Cambridge Silicon Radio (10)
Device Address: 01:02:03:04:05:06

Noter l’adresse (pour pouvoir la rétablir).

sudo ./bdaddr ZZ:ZZ:ZZ:ZZ:ZZ:ZZ

(remplacer ZZ:ZZ:ZZ:ZZ:ZZ:ZZ avec la bdaddr du sixaxis découverte dans l’étape 1).

Déconnecter et reconnecter le dongle.

./bdaddr

Manufacturer: Cambridge Silicon Radio (10)
Device Address: ZZ:ZZ:ZZ:ZZ:ZZ:ZZ

Vérifier que la bdaddr a changé.

Si l’adresse est bien changée, aller à l’étape 3.

Sinon, changer de nouveau la bdaddr:

sudo ./bdaddr ZZ:ZZ:ZZ:ZZ:ZZ:ZZ

(remplacer ZZ:ZZ:ZZ:ZZ:ZZ:ZZ avec la bdaddr du sixaxis découverte dans l’étape 1).

Ensuite, essayer un “reset software” à l’aide de la commande suivante:

sudo hciconfig hci0 reset

Ceci ne change pas la bdaddr de manière permanente. La modification et le reset software doivent être réexécutés après chaque redémarrage du pc ou chaque rebranchement du dongle.

A ce moment, il n’y a pas de moyen (connu) de dire si cela va fonctionner ou non. Pour le savoir, continuer simplement le tutoriel.

3 Compiler le Sixaxis emulator

cd ~

sudo apt-get update

sudo apt-get install libbluetooth-dev libsdl1.2-dev subversion

svn checkout -r 134 http://diyps3controller.googlecode.com/svn/trunk/sixaxis-emu/ diyps3controller-read-only

cd diyps3controller-read-only

make

4 Démarrer le Sixaxis emulator

Démarrer le serveur:

sudo ./emu ZZ:ZZ:ZZ:ZZ:ZZ:ZZ

Si la commande n’est pas lancée avec sudo et que la PS3 est allumée, cela ne fonctionnera pas.

Remplacer ZZ:ZZ:ZZ:ZZ:ZZ:ZZ avec la bdaddr de la PS3 (découverte dans l’étape 1).

La PS3 devrait s’allumer.

Si un “reset software” a été réalisé dans l’étape 2, et que le message suivant s’affiche :

emu: can’t connect to control psm: Connection refused

alors cela signifie qu’il faut trouver un autre dongle (voir Notes).

Si le message “connected” s’affiche, alors continuer le tutorial.

Dans un autre terminal, démarrer le client:

cd ~/diyps3controller-read-only

./emuclient

Jouer, ou effectuer tout autre action avec la PS3.

Appuyer sur Echap pour quitter le client.

5 Contrôles clavier/souris

Les contrôles sont faits pour un clavier azerty, cela devrait probablement vous convenir.
Il est recommandé de changer les contrôles et de calibrer la souris pour chaque jeu.

Cette section décrit les paramètres qui peuvent être changés dans emuclient.c.

cd ~/diyps3controller-read-only

gedit emuclient.c

Modifier les contrôles!

make

N’oubliez pas cette dernière commande après chaque modification de emuclient.c !

Contrôles clavier

Modifier les contrôles après cette ligne:

void key(int sym, int down)

Contrôles par défaut:

right shift = ps
e = triangle
space = cross
left control = circle
r = square
tab = select
backspace = start
t = l2
k = l1
l = r1
g = r2
left shift = l3
f = r3

& = up
é = right
” = left
‘ = down

q = left stick left
z = left stick up
s = left stick down
d = left stick right

esc = quit emuclient

Quelques touches sont aussi utilisées pour calibrer la souris (voir Contrôles souris).

Contrôles souris

Les mouvements de la souris sont mappés sur le stick droit.

La zone morte est optimisée pour COD MW2.
Elle doit être changée pour chaque jeu (voir DEAD_ZONE au début du fichier).
Pour activer le mode de calibration de la zone morte, appuyer sur la touche 0 du pavé numérique (un nouvel appui sur cette même touche pour désactiver le mode).
Le mode de calibration applique un mouvement horizontal qui correspond à la valeur courante de la zone morte.
Si la position n’est pas stable, diminuer la zone morte en appuyant sur la touche / du pavé numérique jusqu’à ce que la position soit stable.
Si la position est stable, augmenter la zone morte en appuyant sur la touche * du pavé numérique jusqu’à la dernière position stable.

La valeur courante de la zone morte est affichée dans le terminal du processus emuclient.

Le multiplicateur par défaut pour les mouvements de la souris est 4 (voir DEFAULT_MULTIPLIER au début du fichier).
Les touches +/- du pavé numérique peuvent être utilisées pour augmenter/diminuer le multiplicateur.

La valeur courante du multiplicateur est affichée dans le terminal du processus emuclient.

Modifier les contrôles après cette ligne:

void clic(int button, int down)

Contrôles par défaut:

left button = r1
right button = l1
middle button = triangle
wheel up = r2
wheel down = l2
wheel right button = square
wheel left button = r3
side button = triangle

Pour les utilisateurs avancés connaissant la programmation en C

Si vous souhaitez modifier le code pour jouer avec d’autres périphériques d’entrée, vous pourrez trouver de la documentation ici.

6 Macros clavier

Il est possible d’exécuter des macros de clavier.

Un appui sur une touche peut générer une série d’événements, avec certains délais.

Les commandes sont les suivantes :
– key down (touche enfoncée)
– key up (touche relâchée)
– key press (key down + délai + key up)
– delay (délai, unité = ms)

Chaque macro doit être définie dans un fichier.

Exemple: macro_example.txt

#Defines the action that triggers the macro execution
MACRO F1
#Performs a keystroke (key down + delay 50ms + key up)
KEY e
#Sleep 50ms
DELAY 50
#Perform a key down
KEYDOWN SPACE
#Sleep 50ms (minimum delay between KEYDOWN and KEYUP)
DELAY 50
#Perform a key up
KEYUP SPACE

Les lignes qui commencent par # sont des commentaires.

Chaque fichier définissant une macro doit être référencé dans le ficher macros.txt.

Toutes les touches du clavier peuvent générer une macro. La liste complète peut être obtenue dans le fichier macro.c.

7 Résolution des problèmes / Feedbacks

Je partage mon projet gracieusement, merci de bien vouloir me donner un feedback si vous le testez.

Dites-moi si cela fonctionne ou non, et ajoutez en particulier les détails suivants :

  • la distribution Linux
  • les libraries (si différentes de celles suggérées dans ce tutoriel)
  • la version hardware de la PS3 (slim, fat 40Gb, fat 60Gb, …)
  • la version software de la PS3
  • le dongle bluetooth (modèle exact + révision s’il y en a une + résultat de “hciconfig -a hci0” et “sudo hciconfig hci0 revision”)
  • le hardware du PC (au moins le CPU et la quantité de RAM)

Écrivez cela dans un commentaire à ce post.

Et si cela ne marche pas, vérifiez d’abord que vous disposez du dernier code source. Ensuite rendez-vous dans la liste de bugs, regardez si vos problèmes sont déjà connus, et s’ils ne le sont pas, rapportez-les.[/spoiler]

Sixaxis emulator tutorial


This tutorial is deprecated. New tutorial: link.

[spoiler]Introduction

This tutorial explains how to control a PS3 with a keyboard and a mouse plugged on a PC running Linux and using a bluetooth dongle.

This is possible thanks to the work of Jim Paris. I applied some modifications to its source code.

Requirements

  • a sixaxis already used with the target PS3
  • a bluetooth dongle with a chip that can have its bdaddr (bluetooth device address) changed. Just perform the tutorial to discover if your dongle works.

Notes

Do it at your own risk. I’m not responsible for any damage you can cause to your PS3 or PC.

Cheap (a few $) CSR Bluecore4 dongles on ebay are reported to work. Bluecore4 is the first CSR bluecore chip that implements EDR (Enhanced Data Rate), so that the keywords to look for are CSR and EDR.

Unplug any other dongle from this PC (or deactivate them).

Don’t try to use the sixaxis emulator and the sixaxis at the same time, and restore the bdaddr of the dongle if you don’t use it with the sixaxis emulator anymore.

This tutorial was written running ubuntu from the live cd (nothing is saved on the hard drive).

Don’t forget to write down the bdaddr of the PS3 in step 1, so that you won’t need to perform that step again.

Once step 2 is done, you don’t need to do that step anymore since the bdaddr modification is permanent.

As steps 1 & 2 have to be done once, a easy way to launch the sixaxis emulator with a live cd is to write a script for steps 3 & 4.

Feel free to install ubuntu on your PC! If you have a Windows OS installed, you can read this tutorial if you want to install ubuntu on your hard drive without erasing the Windows OS.

Another way to use the sixaxis emulator is to run it from a Ubuntu Live USB Persistent Flash Drive (read this post).

1 Discover the bdaddr of the Sixaxis and the bdaddr of the PS3

Plug the sixaxis to the PC with a usb cable

In a terminal (alt+F2, gnome-terminal):

sudo apt-get install libusb-dev

wget http://diyps3controller.googlecode.com/svn/trunk/sixutils/sixaddr.c

gcc -o sixaddr sixaddr.c -lusb

sudo ./sixaddr

Current Bluetooth master: XX:XX:XX:XX:XX:XX
Current Bluetooth Device Address: YY:YY:YY:YY:YY:YY

“Current Bluetooth master” is the bd_addr of the PS3 (write it down).
“Current Bluetooth Device Address: ” is the bd_addr of the sixaxis (write it down).

Unplug the usb cable. The sixaxis should power off.

2 Modify the bdaddr of the dongle

sudo apt-get install libdbus-1-dev libglib2.0-dev

wget http://www.kernel.org/pub/linux/bluetooth/bluez-4.63.tar.gz

tar xzvf bluez-4.63.tar.gz

cd bluez-4.63

./configure –enable-test

make

(do not make install)

cd test

./bdaddr

Manufacturer: Cambridge Silicon Radio (10)
Device Address: 01:02:03:04:05:06

Write it down (so that it can be restored).

sudo ./bdaddr ZZ:ZZ:ZZ:ZZ:ZZ:ZZ

(replace the ZZ:ZZ:ZZ:ZZ:ZZ:ZZ with the bdaddr of the Sixaxis dicovered in step 1).

Unplug and replug the dongle.

./bdaddr

Manufacturer: Cambridge Silicon Radio (10)
Device Address: ZZ:ZZ:ZZ:ZZ:ZZ:ZZ

Make sure the bdaddr has been changed.

If it is changed: go to step 3.

If it is not, change the bdaddr again:

sudo ./bdaddr ZZ:ZZ:ZZ:ZZ:ZZ:ZZ

(replace the ZZ:ZZ:ZZ:ZZ:ZZ:ZZ with the bdaddr of the Sixaxis dicovered in step 1).

Then, try to perform a “soft reset” with the following command:

sudo hciconfig hci0 reset

This doesn’t change the bdaddr permanently. Modification and soft reset have to be done again after each time the pc is restarted or the dongle is replugged.

At this step, there is no (known) way to tell if it will work. To know that, just try to perform following parts.

3 Build the sixaxis emulator server and client

In a terminal (alt+F2, gnome-terminal):

cd ~

sudo apt-get update

sudo apt-get install libbluetooth-dev libsdl1.2-dev subversion

svn checkout -r 134 http://diyps3controller.googlecode.com/svn/trunk/sixaxis-emu/ diyps3controller-read-only

cd diyps3controller-read-only

make

4 Launch the sixaxis server & client

Launch the server:

sudo ./emu ZZ:ZZ:ZZ:ZZ:ZZ:ZZ

If the command is executed without sudo and the PS3 is already started, it will not work.

Replace ZZ:ZZ:ZZ:ZZ:ZZ:ZZ with the bdaddr of the PS3.

The PS3 should power on.

If you performed a “soft reset” at step 2, and if you get this error message:

emu: can’t connect to control psm: Connection refused

this means you have to try another dongle (see Notes).

If you get a “connected” message, then continue the tutorial.

In another terminal:

cd ~/diyps3controller-read-only

./emuclient

Play or do whatever you want with your PS3.

Press Escape to quit the client.

5 Custom mappings for mouse & keyboard

Most of you probably want to change the mappings, since I’m using an azerty keyboard.
It is recommended to change the mappings and to calibrate the mouse for each game.

This section describes the parameters that can be changed in emuclient.c.

cd ~/diyps3controller-read-only

gedit emuclient.c

Modify controls!

make

Don’t forget this last command after each modification of emuclient.c!

Keyboard controls

Modify the controls after this line:

void key(int sym, int down)

Default controls:

right shift = ps
e = triangle
space = cross
left control = circle
r = square
tab = select
backspace = start
t = l2
k = l1
l = r1
g = r2
left shift = l3
f = r3

& = up
é = right
” = left
‘ = down

q = left stick left
z = left stick up
s = left stick down
d = left stick right

esc = quit emuclient

Some keys are used to calibrate the mouse movements (see Mouse controls).

Mouse controls

The mouse movements are mapped to right stick.

The dead zone is optimized for COD MW2.
This has to be changed depending on the game (see DEAD_ZONE at the beginning of the file).
To enable calibration mode for the dead zone, press keypad 0 (keypad 0 again to disable).
The calibration mode applies an horizontal move movement that corresponds to the current dead zone value.
If the position is not stable, decrease the dead zone (keypad /) until the position is stable.
If the position is stable, increase the dead zone (keypad *) until last position that is stable.

The current value of the dead zone is displayed in the emuclient terminal.

The default multiplier for mouse movements is 4 (see DEFAULT_MULTIPLIER at the beginning of the file).
Keypad +/- can be used to increase/decrease (+/-0.25) the multiplier.

The current value of the multiplier is displayed in the emuclient terminal.

Modify the controls after this line:

void clic(int button, int down)

Default controls:

left button = r1
right button = l1
middle button = triangle
wheel up = r2
wheel down = l2
wheel right button = square
wheel left button = r3
side button = triangle

For advanced user that know C programming

If you want to modify the code so as to play with other input devices, you will find documentation there.

6 Keyboard macros

It’s possible to configure keyboard macros.

A key press will generate a series of events, with timing conditions.

Commands are the following:
– key down
– key up
– key press (= key down + delay + key up)
– delay (unit = ms)

Each macro has to be defined in a file.

Example: macro_example.txt

#Defines the action that triggers the macro execution
MACRO F1
#Performs a keystroke (key down + delay 50ms + key up)
KEY e
#Sleep 50ms
DELAY 50
#Perform a key down
KEYDOWN SPACE
#Sleep 50ms (minimum delay between KEYDOWN and KEYUP)
DELAY 50
#Perform a key up
KEYUP SPACE

Lines beginning with # are comments.

Each macro file has to be referenced in the macros.txt file.

All keys of the keyboard can trigger a macro. The complete list can be found in macro.c.

7 Troubleshooting / Feedback

I’m sharing my project for free, so please give me a feedback if you test(ed) it.

Tell me if it works or doesn’t work, and especially add the following details:

  • the Linux distribution
  • the libraries (if different from those suggested in the tutorials)
  • the PS3 hardware version (slim, fat 40Gb, fat 60Gb, …)
  • the PS3 firmware version
  • the bluetooth dongle (exact model + revision if there is one + output of “hciconfig -a hci0” and “sudo hciconfig hci0 revision”)
  • the hardware of the PC (at least the CPU and the amount of RAM)

Report that in commentary to this post.

And if it doesn’t work, first verify if you have the latest source code. Then look at the bug list, see if your problems are already known, and if it’s not, report them.[/spoiler]

Working with the C code of Jim Paris

After having tested the hidemulator python code, I decided to go further with the C code of Jim Paris.

This code produces two executable files:
– a server, that interfaces with the PS3, and that maintains the bluetooth connection
– a client, that interfaces with peripherals thanks to the SDL library, and that sends controls to the server

Pros:
– no need to interrupt the bluetooth connection when exiting the client => no need to restart the PS3 => easier to test
– no need to install python libraries
– better performance of C code over python
– client/server architecture allows developing other clients (imagine a mobile phone client!)

Cons:
– less portable than python code
– I already have strong C code knowledge, so that I’m not learning something new 😉

I did the following modifications to the server:
– send a report immediately after receiving a command from a client
– send a report if no command was received during 1 second

And to the client:
– poll for events each 10ms, and merge all received events (a single command is sent to the PS3)
– grab raw input from the mouse (i.e. relative position), and constrain the mouse into the window
– custom controls for mouse and keyboard (to play fps games)
– on-the-fly modifiable multiplier for mouse movements (to increase/decrease sensibility)

Remaining work:
scroll up/down generates two events (SDL_MOUSEBUTTONDOWN & SDL_MOUSEBUTTONUP) that should not be merged
write a tutorial
– …
– integration testing = play! 😉

Code is available there.

Hidemulator Tutorial


Introduction

This tutorial explains how to control a PS3 with a keyboard and a mouse plugged on a PC running Linux and using a bluetooth dongle.

This is possible thanks to the hidemulator (derived from the work of Jim Paris).

For gaming purposes, I suggest the sixaxis emulator tutorial instead. The hidemulator is not optimized for games.

Requirements

  • a sixaxis already used with the target PS3
  • a bluetooth dongle with a chip from one of these manufacturers: Ericsson, Cambridge Silicon Radio (CSR), Texas Instruments (TI), Zeevo or ST Microelectronics (ST)

There are cheap (a few $) CSR Bluecore4 dongles on ebay. These dongles will probably work. See that post.

Notes

Do it at your own risk. I’m not responsible for any damage you can cause to your PS3 or PC.

The PS3 has to be started using the hidemulator (if hidemulator is stopped, the PS3 has to be shut down and restarted with the hidemulator to get it work again).

Unplug any other dongle from this PC (or deactivate them).

Don’t try to use the hidemulator and the sixaxis at the same time, and restore the bdaddr of the dongle if you don’t use it with hidemulator anymore.

This tutorial was written running ubuntu from the live cd (nothing is saved on the hard drive).

Don’t forget to write down the bdaddr of the PS3 in step 1, so that you won’t need to perform that step again.

Once step 2 is done, you don’t need to do that step anymore since the bdaddr modification is permanent.

As steps 1 & 2 have to be done once, a easy way to launch the hidemulator with a live cd is to write a script for steps 3 & 4.

Feel free to install ubuntu on your PC! If you have a Windows OS installed, you can read this tutorial if you want to install ubuntu on your hard drive without erasing the Windows OS.

1 Discover the bdaddr of the Sixaxis and the bdaddr of the PS3

Plug the sixaxis to the PC with a usb cable

In a terminal (alt+F2, gnome-terminal):

sudo apt-get install libusb-dev

wget http://diyps3controller.googlecode.com/svn/trunk/sixutils/sixaddr.c

gcc -o sixaddr sixaddr.c -lusb

sudo ./sixaddr

Current Bluetooth master: XX:XX:XX:XX:XX:XX
Current Bluetooth Device Address: YY:YY:YY:YY:YY:YY

“Current Bluetooth master” is the bd_addr of the PS3 (write it down).
“Current Bluetooth Device Address: ” is the bd_addr of the sixaxis (write it down).

Unplug the usb cable. Sixaxis should power off.

2 Modify the bdaddr of the dongle

sudo apt-get install libdbus-1-dev libglib2.0-dev

wget http://www.kernel.org/pub/linux/bluetooth/bluez-4.63.tar.gz

tar xzvf bluez-4.63.tar.gz

cd bluez-4.63

./configure –enable-test

make

(do not make install)

cd test

./bdaddr

Manufacturer: Cambridge Silicon Radio (10)
Device Address: 01:02:03:04:05:06

Write it down (so that it can be restored).

sudo ./bdaddr ZZ:ZZ:ZZ:ZZ:ZZ:ZZ

(replace the ZZ:ZZ:ZZ:ZZ:ZZ:ZZ with the bdaddr of the Sixaxis dicovered in step 1).

Unplug and replug the dongle.

./bdaddr

Manufacturer: Cambridge Silicon Radio (10)
Device Address: ZZ:ZZ:ZZ:ZZ:ZZ:ZZ

Make sure the bdaddr has been changed.

3 Install python libraries

Note for users that don’t run ubuntu from the live cd: uninstall older versions of PyBluez and Pygame.

sudo apt-get install python2.6-dev libbluetooth-dev libsdl1.2-dev

cd ~

wget http://pybluez.googlecode.com/files/PyBluez-0.18.tar.gz

tar xzvf PyBluez-0.18.tar.gz

cd PyBluez-0.18

sudo python setup.py install

cd ~

wget http://www.pygame.org/ftp/pygame-1.9.1release.tar.gz

tar xzvf pygame-1.9.1release.tar.gz

cd pygame-1.9.1release

sudo python setup.py

4 Run the hidemulator

cd ~

sudo apt-get install subversion

svn checkout http://hidemulator.googlecode.com/svn/trunk/ hidemulator-read-only

cd hidemulator-read-only

chmod +x pair.py

gedit pair.py

Line 28, insert the bd_addr of the PS3 (discovered in step 1) between the quotes.

Make sure the PS3 is powered off.

./pair.py

The PS3 should power on!!!

To quit the hidemulator, just press Escape.

Note that the PS3 has to be started using the hidemulator.