Test package for Duke Nukem Forever

Instead of using the left stick state to compute movement (the standard way), DNF is using events.

As a result, there is no more movement if the left stick is kept in a position. This is due to the fact that the sixaxis emulator doesn’t flood the PS3 with useless events like a real sixaxis. If there is nothing to send, an event is only sent after 1s so as to keep the connection alive…

I built a test package for DNF players: link (i386).

Some more videos by McKack!

Many people might remember the first video showing the sixaxis emulator in action. It was made by McKack with sixemu v0.11 (Linux+bluetooth).

McKack has made some new videos with the sixemu v0.23 (Linux+bluetooth):

Infamous, Wii Classic Controller

inFAMOUS, Wii Classic Controller - Sixaxis Emulator v0.23

Call Of Duty: Black Ops, Keyboard + Mouse

CoD: Black Ops - Nuketown - Sixaxis Emulator v0.23

CoD: Black Ops - Kowloon - Sixaxis Emulator v0.23

Thanks McKack!

I added these videos to the “Videos” page of this blog. If you make some videos like that, please give me the links so that I can add them!

Version 0.23 released

Main improvements:

  • windows version (usb connection only)
  • “set dongle address” tool of sixemugui is fixed
  • “replace mouse dpi” tool of sixemuconf is fixed

All corrected issues:

Download links:

Known issues:

  • [linux] the sixstatus gui generates movement glitches (work-around: use 100Hz or lower for the calibration)
  • [windows] the COM port is not detected (work-around: check the proper COM port in the device manager)
  • [usb] the controller state is wrong (work around: unplug/replug the teensy board)
  • [usb] game compatibility: there are some compatibility issues with games like GT5 and Fallout: New Vegas. These games seem to have compatibility issues with gamepads other than the sixaxis/dualshock 3 controllers. Considering game compatibility, it seems the best solution is to emulate a true wired sixaxis/dualshock 3 controller. My first releases won’t do that, and I will work on that later.
  • [usb] buttons can’t work as pressure-sensitive buttons: it’s useless to configure them in the “Axis” tab of Sixemuconf
  • [windows] extra mouse buttons are not working

About the windows port

I got a few issues to solve for the windows port. It turned out the official SDL 1.2 library (cross-platform) isn’t providing raw events from the mouse. No problem, I checked out the manymouse library and built a custom SDL library that provides raw mouse events.

Many people see the sixaxis emulator only as a mouse+keyboard converter. But it does a lot more than that. It also allows to use ANY game controller (gamepad/wheel…) with custom control mappings. It especially allows to use the XBox 360 controllers that work out-of-the-box (except the X button). What about the sixaxis/dualshock 3 controllers? I wrote a post about QtSixA some time ago. This software allows to use the sixaxis/dualshock 3 controllers in Linux, and can be used with the sixaxis emulator as it emulates a standard game controller. There also is a software that allows to use sixaxis/dualshock 3 controllers in windows, it’s called Motioninjoy. It’s not open-source, and there are some ads in the GUI, but it’s free, comes with signed bluetooth drivers, and is very complete: motion sensing (tested – I managed to control the crosshair in COD:BO…), rumble, but also macros and rapid fire…

Teensy 2.0 + CP2102 board

I received my Teensy 2.0 board. I ordered it to check that the hardware I am suggesting (for the usb connection) works.
Delivery was very quick, it took a week from the US to my home (France).
The Teensy 2.0 works fine with the CP2102 board I tested in my previous post.

My PC to PS3 usb controller:

I directly soldered the Rx and Tx pins of the CP2102 board on the Teensy. I added a small wire for the grounds.

Note that this assembly requires to be handled with care: if you plug the Teensy, then hold the Teensy, and if you plug the CP2102 board, then hold the CP2102 board. If you don’t do that, each board can be damaged (in the long term) near the Rx-Tx pins.

Warning: this hardware solution doesn’t work with sixemu <= v0.22 because the serial connection doesn’t work at the right speed (v0.23 solves this).

CP2102 USB to serial TTL converter

I received my CP2102 usb to serial TTL converter bought on ebay from China for 2.8€ (about 4$). The delivery from China to my home (France) usually takes about 3-4 weeks, but this time I was lucky as it arrived in less than 2 weeks 🙂

As showed in the following picture, I connected it to my Teensy++:

Blue outlined, the CP2102 board, and red outlined, the Teensy++.
First tests were not so hopeful, as it doesn’t work as-is with the latest sixemu package (v0.12).

I had to deal with 2 problems:

  1. Rx and Tx pins are for the target device.
  2. The max speed reachable by the Linux driver is 921600 bit/s and not 1 Mbit/s as written in the datasheet.

I inverted two wires, and changed both the emitter (CP2102) and receiver (Teensy++) speed to 500Kbit/s.

My benchmark program shows that we can reach about 45bytes/ms only writing and about 40bytes/ms writing and reading at the same time. This is good enough for the application. Running at 250Hz, I measured a 6.7ms worst latency, and a 5ms average latency.

Conclusion: this cheap CP2102 converter from ebay seems usable! I will test it further playing over a long time to see if it’s reliable.

Warning: this hardware solution doesn’t work with sixemu v0.22 because the serial connection doesn’t work at the right speed (next release will solve this).

DIY pc to ps3 usb controller


Moved: link.

» Outdated content «

Version 0.22 released

If you are upgrading from v0.15 or lower, read this post first: link.

Warning: this release wasn’t tested deeply…

New configuration example installed in the /etc/emuclient folder:

  • CallOfDuty:BlackOpsG500i2.xml (1:1 translation attempt)

Main improvements:

  • usb connection
  • the calibration mode automatically saves the configuration
  • calibration test for the 1:1 translation

All corrected issues:

Download links:

Sixemugui-rs232 layout:


More details about how to use this coming soon!