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]

102 Replies to “Sixaxis emulator tutorial”

  1. The svn server is probably down because of the maintenance performed on googlecode today.

    I hope this will come back soon.

  2. Got it working, technically. Everything installed correctly, changed my mappings, recompiled. However every input I make has about a ten second lag. I also noticed on the term running emu there is a flood of 'emu: send_report: Cannot allocate memory' errors. Any insight on this?

    I'm on Ubuntu 10.04 LTS, running on a thinkpad T42.

    Thanks for all your effort thus far! 🙂

  3. I propose you to open a defect there: http://code.google.com/p/diyps3controller/issues/entry

    Perform a make clean, zip all your code, and attach it to the defect.

    Could you do the following actions too:
    – in both emu.c and emuclient.c, replace "static int debug = 0;" with "static int debug = 1;"
    – make
    – launch emu and emuclient (add "2>&1 emutrace.txt" at the end of the emu command line, and "2>&1 emuclienttrace.txt" at the end of the emuclient command line), perform some actions (mouse movements + keyboard presses), and stop both emuclient and emu.

    zip emutrace.txt and emuclienttrace.txt, and attach it to the defect.

    Then I'll try to figure out what's happening!

  4. Hi all!
    I try this tutorial for verify my USB Dongle. My Hardware is:

    Acer Aspire ONE
    PS3, of course!!
    A Sixaxis Controller
    USB Dongle: AIR BLUE by ROPER (ROBTC2-USB).

    My software is a SLAX booted by USB (http://www.slax.org/)

    I Followed the tutorial until step 2:
    my ./bdaddr command output is:

    Manufacturer: Broadcom Corporation (15)
    Device address: 00:0B:0D:4A:0C:45

    i try to change then with my PS3 sixaxis:

    root@slax:~/bluez-4.63/test# ./bdaddr 00:13:a9:9f:4e:0a
    Manufacturer: Broadcom Corporation (15)
    Device address: 00:0B:0D:4A:0C:45
    New BD address: 00:13:A9:9F:4E:0A

    but when i unplug/plug my dongle, i try again, but address doesn't change.

    Where i wrong? The chipset of dongle isn't compatible?
    My slax is not ok?

    I like very much try COD or other titles with mouse and keyboard 🙂

  5. nice, but what i want to know is if the bluetooth embedded in the ps3 can make the emulator work without buying an other bluetooth dongle
    Thx for your help

  6. @Del:
    1 – Turn off your PS3.
    2 – Run the server, it should turn on your PS3.
    3 – Run the client and you should be able to use your keyboard and mouse on your PS3.

  7. I bought a dongle, having checked it had a CSR chip. But when I try to change the address, I get:

    $ sudo ./bdaddr '00:26:43:97:67:5c'
    Manufacturer: Cambridge Silicon Radio (10)
    Device address: 00:1F:81:00:01:1C
    New BD address: 00:26:43:97:67:5C

    Can't write new address

    Is there anything I can try? Or do I just assume my dongle is not compatible?

  8. I don't know if this command works with '' around the bluetooth device address.

    Look at the output of the following command:
    sudo hciconfig hci0 revision

    Bluecore1 won't work, bluecore2 and bluecore4 are known to work.

  9. How do I know which version of Bluecore it uses? I ran the command you suggest. I'm now on my work machine which has a built in hci0, so for my dongle I see:

    $ sudo hciconfig hci1 revision
    hci1: Type: BR/EDR Bus: USB
    BD Address: 00:1F:81:00:01:1C ACL MTU: 1021:4 SCO MTU: 180:1
    Build 68

    I also tried this one:

    $ sudo hciconfig hci1 version
    hci1: Type: BR/EDR Bus: USB
    BD Address: 00:1F:81:00:01:1C ACL MTU: 1021:4 SCO MTU: 180:1
    HCI Version: 2.0 (0x3) Revision: 0x44
    LMP Version: 2.0 (0x3) Subversion: 0x3
    Manufacturer: Cambridge Silicon Radio (10)

  10. For CSR Bluecore1/2/4, there should be a line "Chip version:" in the output of this command.

    Where did you bought this dongle?

    What is the output of the command "hciconfig -a hci1"?

  11. Back home now, so it's hci0 again. 🙂

    But no chip version:

    # hciconfig -a hci0
    hci0: Type: USB
    BD Address: 00:1F:81:00:01:1C ACL MTU: 1021:4 SCO MTU: 180:1
    UP RUNNING PSCAN
    RX bytes:972 acl:0 sco:0 events:28 errors:0
    TX bytes:361 acl:0 sco:0 commands:27 errors:0
    Features: 0xff 0x3e 0x09 0x76 0x80 0x01 0x00 0x80
    Packet type: DM1 DM3 DM5 DH1 DH3 DH5 HV1 HV2 HV3
    Link policy: RSWITCH HOLD SNIFF PARK
    Link mode: SLAVE ACCEPT
    Name: 'piglet-0'
    Class: 0x4a0100
    Service Classes: Networking, Capturing, Telephony
    Device Class: Computer, Uncategorized
    HCI Ver: 2.0 (0x3) HCI Rev: 0x44 LMP Ver: 2.0 (0x3) LMP Subver: 0x3
    Manufacturer: Cambridge Silicon Radio (10)

    I got it from Amazon:

    http://www.amazon.co.uk/gp/product/B0013BFQUE/ref=oss_product

  12. This dongle could be a counterfeit.

    I googled about the bdaddr, and it seems other people have the same bdaddr for their dongles… that's surprising, since a bdaddr is supposed to be unique.

    The only thing you can do is to try another dongle.

  13. OK, I've ordered another dongle, paying a more sensible price this time. There's a lesson learnt!

    I'll be back in a week when it arrives!

  14. Right, the dongle I ordered 2 weeks ago (see my post 27th August) has finally arrived. And it works!

    My keyboard is different to yours, so I need to look at reconfiguration, but the PS3 does wake up when I start the emulator, and it does respond to various keypresses.

    I'll play with it this weekend. 🙂

  15. Well, I got a chance to play with it this evening. It starts up OK, and connects to the PS3 which powers up, then I see this:

    ./emu '00:26:5c:c9:6a:6a'
    connecting to 00:26:5c:c9:6a:6a psm 17
    connecting to 00:26:5c:c9:6a:6a psm 19
    connected

    I start the client in another window, and I can use the keyboard to operate the PS3. So far so good! But after about 30 seconds, in the first window, emu stops:

    emu: error on ctrl psm
    cleaning up

    I tried this about 10 times, trying slightly different sequences of keypresses and so on, and eventually I got it to stay running. Then I got to play MW2. 🙂

    So it works, but do you know why the emu program seems to want to stop with the "error on ctrl psm" error?

  16. hi!
    bit of an add question

    Im wondering if you can use the emu as a key-remapper

    Say for example, use the emu as a translator for the ps3 for remapping a dualshock3 / sixaxis controller.

    DS3 laptop running emu ps3

  17. The emulator gets hung on

    if (!initialize(SCREEN_WIDTH, SCREEN_HEIGHT, "Sixaxis Control"))

    err(1, "can't init sdl");

    When I try to run it, I installed all the packages I think :S

  18. As you might guess, there is a problem with the SDL library initialization.

    What is the output of the following command :

    sudo apt-get install libsdl1.2-dev

    ?

  19. Thanks 😀 I installed and reinstalled libsdl1.2-dev, now it works brilliantly. I do have the emu: error on ctrl psm problem, but if I start the ps3 with a different controller then quickly run emu and dont use any buttons till in game it seems to work

  20. Hi, I successfully tried your code so thought I would provide you with some feedback. My bluetooth dongle is a BlueNext BN01 which contains a Bluecore4-Rom chip and works perfectly.

    To give the macro function a thorough test, I tried it with Mortal Kombat vs DC Universe and the Kombo challenges as these require very precise timing. It does work to some extent but the commands don't seem to execute quick enough in complex sequences.

    If it's ok with you, I might have a little play around with the code to see if I can find out why the timing goes out.

    Is there a reason why the minimum delay is set to 50ms?

    Congratulations on a very interesting project.

  21. Hi,

    Thanks for the feedback. I need more feedbacks on that functionality, as I didn't tested it a lot.

    The delay only concerns keydown and keyup events for a same key. This means things like that should work:

    #A and B simultaneously
    KEYDOWN A
    KEYDOWN B
    DELAY 50
    KEYUP A
    KEYUP B

    #A, and B 25ms after A
    KEYDOWN A
    DELAY 25
    KEYDOWN B
    DELAY 25
    KEYUP A
    DELAY 25
    KEYUP B

    The reason for that delay:

    If a command is executed too quickly (less than the polling rate, which is 10ms), the keydown and the keyup events will be merged, and no resulting event will be sent to the PS3.

    Moreover, I discovered that some commands are lost if they last only 10ms. This is the case for mouse clics, and there is some ugly specific code to postpone the up event.

    I decided to set the value to 50ms after performing some tests (I had no lost events for that value).

    And I think it's impossible for a human to generate 20 of the same up/down in 1s.

    You can play with the code as much as you want, under the terms of the GPL 😉

    Let me know if you get something work reliably!

  22. Hi, I thought I'd give you a bit more feedback on my findings regarding the macro functionality. I decided not to try modifying your code as my C knowledge is too limited (my language is VB). I did however alter the REFRESH_PERIOD setting in emuclient from 10000 to 5000, not sure if this made a great deal of difference.

    I could get macros which performed certain combo moves consistently but it was not able to deal with certain combinations where very precise timing is required (in the MK vs DC game they are known as pro-moves). A way round it was to set up two separate macros for such situations so you could press say F1 to initiate the first part of a combo and then press F2 at the precise moment the second part is required.

    I'm not sure why it works with two separate macros but doesn't when combined, maybe you might have an idea why?

    An example of such a situation would be where you do a combo DOWN, LEFT, X – at a very precise interval afterwards you then have to do DOWN, RIGHT, X. It sounds simple but it just would not work in one macro, the second part just can't be done quick enough.

  23. Hi,

    I think it's probably not a good idea to decrease the REFRESH_PERIOD since 10000 (10ms) matches the refresh period of a real sixaxis.

    You will probably have trouble (events lost by the PS3) if your macro generates 2 events that are caught in two successive polling periods.

    Could you please post your macro files here? I can't guess what's going wrong without that.

  24. Hi,

    Macro 1 contains:

    MACRO F1

    KEYDOWN DOWN
    KEYDOWN LEFT
    DELAY 25
    KEYDOWN SPACE
    DELAY 25
    KEYUP SPACE
    KEYUP LEFT
    KEYUP DOWN

    Macro 2 contains:

    MACRO F2

    KEYDOWN DOWN
    KEYDOWN RIGHT
    DELAY 25
    KEYDOWN SPACE
    DELAY 25
    KEYUP RIGHT
    KEYUP LEFT
    KEYUP DOWN

    The time between macro 1 running and then needing to run macro 2 is just under half a second but combining them and trying to add the delay doesn't work. If I combine them but have the command DELAY 450 between them, the second command fires too late, if I change the command to DELAY 440 (or even 445 etc.), the second command doesn't fire at all.

    The only way to get the second part to fire at the correct time is to place it in a separate macro and also by holding the key down for that macro. In other words, press F1 and then close to the point when the second part needs to run press and hold down F2. This holding down of F2 seems significant, hope that helps.

  25. Ok, I'll tried your macros this evening. I will activate some traces and see what the difference between running one macro and running two macros. I'll keep you informed.

  26. Thanks, I'll let you know if I find anything else out also. I think the macro feature will probably work perfectly fine in most games, I am just being awkward by trying it on a feature of a game where the timing is extremely tight 🙂

    Another small point, if you have more than one macro when you run emuclient, you get a message saying "macro MACRO defined twice"

  27. Problem should be fixed.

    Please let me know if it works now!

    The trace "macro MACRO defined twice" means you defined two macros for the same key (the key will now appear instead of the "MACRO" string, that was a small mistake).

    It's a current limitation, as I don't see any interest to have two macros for a same key (a single macro could probably run both).

    If you define two macros for the same key, only the first one will be active.

  28. Hi, I tested the latest code and it has fixed the 'macro MACRO defined twice' issue. It is unfortunately still unable to accurately perform some key functions in the game I mentioned unless they are defined in separate macros. I think this is probably just a problem with this type of game where some key sequences are very tight on time. An example would be where a certain macro would work with a delay of 410 between 2 particular key presses but wouldn't work with a delay of 405. So 5 milliseconds makes a difference between working and not working!

    This being the case, I think it's safe to say it's not really an issue with the macros, just a case that the macro function can't replicate all sequences completely.

    Thank you for your time and effort on this 🙂

  29. Hi,

    I think it's impossible for a human to perform combos with a +/- 5ms accuracy and a 100% hit.

    There's probably remaining problems in the macro functionality or in your macro definition.

    If you want to go further:
    – line 41 in emuclient.c, change debug from 0 to 1
    – comment lines 78 & 79
    – recompile
    – launch the sixaxis emulator
    => In the emuclient process terminal, you should see traces of all commands sent to the emu process. It should be easy to observe the difference between a hit and a miss.

  30. Hi, I totally agree that it's imposible to hit with that sort of accuracy and this game is known for it's combos being ridiculously hard.

    The combo isn't expecting you to have lightning reflexes to within 5ms as the delay is almost half a second but it is giving an extremely small window of when the next button can be classed as pressed at the right time, too early and it will be ignored, too late and it will be actioned at the wrong time.

    Does the trace show the time when the command was actioned as this is probably the decisive factor? I'll test it with debugging tonight and let you know what I find.

  31. Hi, I tried the macros with debug enabled and the good news is that it was the macros which were wrong and not the code. I tried a simple macro which I couldn't get to work which involved pressing DOWN, LEFT, X and then pressing DOWN, RIGHT, X at an unspecified precise interval afterwards.

    When I was initially testing as one macro, a delay of 1000 performed the second part too late but a delay of 900 didn't perform the second part at all. My assumption from this was that the correct delay must be between 900 and 1000 but it would not work no matter what I set it to and the only way to get it to work was to set up two macros, one for each command.

    On checking the debug trace, it actually showed that the delay between the two commands was 600 so it turns out I was looking in the completely wrong place! I set up a new combined macro with the delay set to 600 and it worked perfectly.

    Thank you for your time on this and I can confirm that the macro function is working properly.

  32. Updated (r108):

    The sixaxis emulator can be started even if the PS3 is already started.

    The emu command has to be executed with sudo:

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

    is replaced by

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

  33. Hello Matlo,

    Français ou English ?
    Anyway thanks a lot / merci beaucoup 🙂

    I'm having an isue when trying to build the sixaddr.c with the gcc command (step 1 ….) on a freshly installed Ubuntu 10.10 (usb key boot).

    I'm having the following message :
    /usr/lib/gcc/i686-linux-gnu/4.4.5/../../../../lib/ctrl.o: In function '_start':
    (.text+0x18): undefined reference to 'main'
    colmect2: ld returned 1 exit status

    Une idée ?
    Tom.

  34. Hi Bruno,

    Yes this is a command (orange color).

    You probably got an error for a previous command.
    I suggest you to perform again step 3 from the beginning (copy-paste each command in your terminal, to be sure there is no typo), and carefully check if a command gives an error.

    If that doesn't help, copy the terminal output and paste it into a post, so that I can read what the exact error is.

  35. hey matlo

    thanks for responding. it was the missing blank after the …emu/

    now i am stucked with step 4:

    ubuntu@ubuntu:~/diyps3controller-read-only$ sudo ./emu 00:1B:FC:12:D1:79
    default bt device number 0 is used
    connecting with hci0 = 00:19:C1:87:A5:44 to 00:1B:FC:12:D1:79 psm 17
    emu: can't connect to control psm: Host is down
    ubuntu@ubuntu:~/diyps3controller-read-only$

    can you help me again, please. thanks.

  36. sorry for filling your blog… 🙂

    i managed the macros as well – it works perfect.

    the last thing i would like to know, is it possible to loop makro execution?

    thanks again for your tutorial and your help.

  37. You can make an infinite loop if you add the macro key at the end of the file: for ex if the trigger is F1, add key F1 at the end of the macro file.

    There is no easy way to write a non-infinite loop. The easiest way is to trigger X time a macro with another macro.

  38. I just wanted to do the same on fedora 14, because ubuntu sucks on my laptop (several graphic freezes according to plymouth [i think])

    But compiling fails with:

    gcc -Wall -lSDL -o emuclient emuclient.o sixaxis.o dump.o macros.o
    /usr/bin/ld: macros.o: undefined reference to symbol 'pthread_create@@GLIBC_2.1'
    /usr/bin/ld: note: 'pthread_create@@GLIBC_2.1' is defined in DSO /lib/libpthread.so.0 so try adding it to the linker command line
    /lib/libpthread.so.0: could not read symbols: Invalid operation
    collect2: ld returned 1 exit status
    make: *** [emuclient] Error 1

    Do you have any ideas?

    Kind regards,
    Sven

  39. hi folks,

    solved my problem.
    Editing the makefile helped.

    You have to edit following line:
    emuclient: emuclient.o sixaxis.o dump.o macros.o
    to
    emuclient: emuclient.o sixaxis.o dump.o macros.o /lib/libpthread.so.0

    After that change i could compile emuclient.

    Now i'm testing if the emu works. My playstation starts after running ./emu ZZ:ZZ:ZZ:ZZ:ZZ, so it looks good now.

    Kind regards,
    Sven

  40. Hi,

    The clean way to do is to add -lpthread the next line.

    As an alternative, you can try the new tutorial, using the rpm I just added there: link.

    There is a tool called 'alien' that can convert a deb package into a rpm package (and vice versa).

  41. Le plus simple est d'installer la version 0.23 et d'utiliser l'outil "replace mouse DPI" pour modifier la conf suivante : lien.

    old mouse dpi = 5700 (G500 = ma souris)
    new mouse dpi = 1800 (ta souris)

  42. J'ai trouvé "old multiplier * (old DPI / new DPI) ^ exponent" d'une réponse de vous à une autre personne. Je comprends l'anglais mais pour une raison il n'est pas bon dans le jeu pour moi. :S

  43. Bon laisse tomber la v0.23 elle a un gros pb, le mieux c'est de la désinstaller et de remettre la v0.22.

    Pour 1800dpi je mettrais les valeurs suivantes (obtenues avec le "replace mouse dpi") :

    configuration 1 :
    axe x : multiplier = 13.32, exponent = 0.39
    axe y : multiplier = 38.08, exponent = 0.39

    configuration 2 :
    axe x : multiplier = 1.76, exponent = 0.80
    axe y : multiplier = 3.02, exponent = 0.80

  44. Hey matlo,

    I have a just bought a Sitecom CN-516 Bluetooth dongle for 10 euro, the transmission speed is 3 mbps.
    The sixemugui says the manufacturer is:
    Cambridge Silicon Radio (10)
    And the Chip version is:
    BlueCore4-ROM

    I have a 1800dpi mouse and i'm using your the configuration you posted
    ——————————————–
    configuration 1 :
    axe x : multiplier = 13.32, exponent = 0.39
    axe y : multiplier = 38.08, exponent = 0.39

    configuration 2 :
    axe x : multiplier = 1.76, exponent = 0.80
    axe y : multiplier = 3.02, exponent = 0.80
    ——————————————–

    I have a FAT ps3 (80 gb) and my pc specs are:
    – 1gb ddr5 vid card
    – 3 gb RAM
    – 2.66 GHz dual core processor

    I am having a problem, when i move my mouse, the camera moves a bit laggy.
    When i enable calibrate and press rctrl + f5, the y direction moves normally and i can't move to the x can't move.
    And when i press rctrl + f6, the x direction moves normally and i can't move to the y direction.

    Could it be that my dongle isn't working properly with the program?

  45. First of all, great job Malto, you have done very well.

    Secondly, I wouldnt mind a bit of help from you or from anyone who has got this going. I know Malto that you are busy so dont want to bother you, but would be great if you can find some time.

    I have got ubuntu and bluetooth dongle setup to play Bad Company 2. I got most of the settings right except the mouse axis x and y. I have followed all the sample settings and still can get it to work. I have a Lenovo mouse and it seems to work pretty well elsewhere.

    Any help/tutorial would be higly appreciated.
    Thanks

Leave a Reply

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