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.

18 Replies to “Hidemulator Tutorial”

  1. Hello I am having trouble getting tryng to get this to work. Im using Ubuntu 9.10 with pygame 1.8.1. and pybluez 0.16-1 Does it matter which version of Pygame and pybluez I have installed?

    This is the error I get:

    trying to connect to ##:##:##:##:##:## on psm 0x11 (ctrl)
    Traceback(most recent call last):
    File"./pair.py", line 338, in
    s.connect
    File"./pair.py",line 42, in connect
    self.ctrl.connect((self.bt_addr,CTRL))
    File ", line 5, in connect
    bluetooth.btcommon.BluetoothError: (22, 'invalid argument')

    I am using a D-link dongle which is a csr. I appreciate any help you can give me as I am new to Linux. Thanks

  2. Hi,

    Nice to ear someone is testing it!

    I remember I had trouble using PyBluez-0.16, that's why I don't suggest to install PyBluez with aptitude. If PyBluez-0.16 is installed, I'd suggest you to uninstall it.

    I will post tonight something about using the work of jimparis (which is C code instead of Python).

    I managed to wrap keyboard and mouse events, but there is still some latency, and I'm working on it.

    Feel free to report your progress!

  3. Hello Matlo. It worked! It turned on the ps3 although it didnt respond to any button presses. This code is just to turn on the Ps3 correct?

    Sorry, Im not a programmer or anything like that. I dont think I installed pygame 1.9.1 and pybluez 0.18 correctly. I cant find them when I search for them. I type "dpkg -s PyBluez-0.18" and "dpkg -s PyBluez-1.9.1".

    Both tell me they are not installed. I think I made a duplicate of the pygame tar also by accident. Anyways at least I got it to turn on.

  4. Hi Joe,

    Did you try to press 'x' key to select user and up/down/right/left to navigate in the menu?

    If you followed the Pybluez and Pygame installation instructions, it should be installed. The installation is done from sources instead of being done from a package, this is why you can't see them with "dpkg -s".

    Don't worry about this python code, I will post tomorrow another tutorial to get the C code from Jim Paris work. I modified it to be able to play fps games, and it works fairly well.

  5. Hmmn maybe.. I pressed alot of random buttons to see if it would respond, including the arrow keys. I'll try again later.

    I had seen the discussion on forums.ps2dev.org. many months ago but I didnt know if that was a website only for programmers so I was hesitant to ask for help.

    Your tutorial awesome as it tells you everything you need to get started :). Thanks.

    Here is anther site that might interest you:

    http://www.corbac.com/page43.html

    I found it a few months back also. I havent used his program, I was afraid I would mess something up patching the kernel. Plus I couldn't find any info how to anyway.

    I did try it out though and it also turned on the ps3 but no response. I assumed it timed out because of the lack of the patch. Maybe it might be of interest to you.

  6. Thanks you for pointing out that interesting project!

    This "proxy" technique can be done with both hidemulator and code of Jim Paris.

    I'm not sure patching the kernel and using directly the hci layer is worthwhile. It will introduce less latency (the question is: how much?), as hci is below the l2cap layer in the bluetooth stack.

    Don't hesitate to ask for help to Linux users, the Linux community is based on knowledge sharing!

  7. Hey Joe, man it looks complicated, it would be nice if you made a video explain the process for us noobs. I'm a PC gamer and i always wanted a mouse and keyboard for ps3. I don't know s*** about linux, help.

  8. The only thing to do is to launch the ubuntu live cd (or install on the hard drive, see last note) and then follow the Sixaxis emulator tutorial. I'm sure you can do it.

  9. Hey Jay2K Here is a site that helped me some when I started to use Linux:

    http://linuxcommand.org/

    There are probably some better ones out there than that one but I think this one can help.Also you can check out youtube for some tutorials on Linux.

    Also be sure you have the right kind of dongle. Here is a site explaining which kind you want. The part about the chipset is what Im talking about.

    http://thewifihack.com/blog/?p=27

    Here is a list of some known to work. I dont remember where I found the list but I can verify the D-link works.

    I got blue/grey one but I think the orange/black one is better. They are on ebay.

    Fujitsu Siemens BLUETOOTH V2.0 USB-Stick
    Acer Bluetooth Stick – BC2-EXT
    Linksys USBBT100 Rev 1
    D-Link DBT-120 Rev C1
    DELOCK 61478
    A7 eb502-HCI
    Fujitsu Siemens BLUETOOTH V2.0 – BC4-EXT
    Toshiba PA3455U-1BTM
    Aircable Host XR
    Cellink BTA-6030 Bluetooth Adapter

    Let us know how it goes!

  10. Hi Joe,

    Did you performed the sixaxis emulator tutorial?

    Thanks for the list. These dongle have a CSR chip. I added a commentary in the "Requirements" part.

  11. Hi.
    Yes it worked the second time. Maybe I needed to reboot or something. It works pretty good. I tried it with Metal Gear, not online though as I dont want to update my ps3 and lose otheros.

    Remember those dongle have to have a bluecore**-ext chipset and not the bluecore**-rom. The ext is the one that allows you to flash it.

    I bought some of those cheap ones and they were CSR but they wouldn't work. I think those were the rom version.

    It would say "cannot write" "permission denied" or something like that. Maybe I was doing something wrong.

    I tried these commands

    sudo ./bd_addr ZZ:ZZ:ZZ:ZZ:ZZ:ZZ
    ./bdaddr -r ZZ:ZZ:ZZ:ZZ:ZZ:ZZ

    Maybe because Im having trouble signing in as root. Whenever I type my password it tells me command not found.

    I probably forgot it but it seems to work when I use Synaptic Package Manager so I dont know.

Leave a Reply

Your email address will not be published. Required fields are marked *