- windows version (usb connection only)
- “set dongle address” tool of sixemugui is fixed
- “replace mouse dpi” tool of sixemuconf is fixed
All corrected issues:
- ubuntu package – i386 – amd64 – updated June 16
- windows setup (usb connection only)
- firmwares-0.23.zip (avr usb firmwares for the usb connection)
- CP2102 windows drivers
- [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…
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).
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++:
I had to deal with 2 problems:
- Rx and Tx pins are for the target device.
- 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).
» Outdated content «
Warning: I’m not responsible for any wrong hardware you can buy, or anything you can do with this.
- a usb to serial TTL converter – 1Mbps recommended – chip examples: FT232R, CP2102
- a usb development board with a chip among the following: at90usb82, at90usb162, at90usb646, at90usb647, at90usb1286, at90usb1287, atmega16u4, atmega32u4
USB to serial TTL converter:
- CP2102 converters on ebay (as low as 4$)
- FT232R converters on ebay (as low as 15$)
- CP2102 converter at sparkfun (22$ excl. shipping costs)
- FT232R converter at sparkfun (15$ excl. shipping costs)
- Some devices like the arduino have an on-board usb to serial chip
- A second usb development board can also be programmed as a usb to serial converter.
USB development board:
- Teensy board (atmega32u4, 16$ excl. shipping costs)
- Boards used for the psgroove hack (check the on-board chip).
The hardware I used for my tests is the following:
- Arduino duemilanove (on-board FT232RL) + Bumble-b (discontinued, at90usb162)
- Arduino duemilanove (on-board FT232RL) + Teensy++ (at90usb1286)
- CP2102 board (from ebay) + Teensy 2.0 (atmega32u4)
I suggest the CP2102 converter from ebay (very low price, but unknown quality and probably low delivery) and the Teensy board (low price, good quality, and standard delivery). I didn’t tested this hardware myself, and I will test it as soon as I receive it.
So, you have a usb to serial TTL converter, and a compatible usb dev board?
I/ Load the firmware on the usb dev board
The following archive contains all firmwares: link. I only tested the at90usb162, at90usb1286 and atmega32u4 firmwares.
sudo dfu-programmer at90usb162 erase ; sudo dfu-programmer at90usb162 flash at90usb162.hex
II/ Connect the two devices
The only thing you have to do is to solder 3 wires between these two devices:
GND <–> GND
RX <–> TX
TX <–> RX
The example below shows how to connect a CP2102 converter (left) to a Teensy board (right):
Warning: Rx and Tx may be inverted on the usb to serial TTL board.
The CP2102 converter in the above example has inverted Rx and Tx.
If you use the arduino on-board USB to serial converter, Rx and Tx are inverted.
III/ Connect it & use Sixemugui-serial
Connect the USB to serial converter to your PC, and connect the usb dev board to your ps3. Turn the PS3 on (the ps3 button is not working yet). The ps3 should detect a joystick (turn a sixaxis on, it should be detected as controller #2).
If it’s not already done, install the sixemu package (v0.23 or higher).
Start emuclient & play!
- Don’t set the frequency to a value higher than the mouse frequency (ask google about your mouse frequency, or let the value to 100Hz).
- It’s not recommended to run at 500Hz or 1000Hz, unless you have a realtime linux kernel (running at 500Hz with a 500Hz mouse may generate some small glitches).
- For details about the installation & the configuration of the sixemu software, read the sixaxis emulator tutorial.
- Multiple usb connections should work (not tested).
- The calibration GUI lags for frequencies higher than 100Hz.
- All buttons are “digital” (i.e. value is 0/1, not in 0-255).
- No PS3 button yet.
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)
- usb connection
- the calibration mode automatically saves the configuration
- calibration test for the 1:1 translation
All corrected issues: