GIMX PS4 support – status 7

I managed to send touchpad inputs using a button and two axes (a mouse). The button controls the finger presence, and the axes control the finger coordinates. This allows me to control the drone modes in Killzone! The source code needs some refactoring before landing into the git repository.

A few products (venom x, xim4, titan) have announced PS4 support over USB. They are mixing the USB transfers from the Hori pad and from the DS4. They all lack touchpad support, and there is no evidence touchpad inputs can work over USB.

The 360 controller spoof works in Windows

I made the 360 spoof work in Windows 🙂

It requires to replace the stock 360 controller driver with the libusbk driver (winusb and libusb-win32 do not work).
This can easily be done using Zadig.

I built beta versions of the software and firmwares:

  • GIMX setup
  • firmwares

(files removed since GIMX 1.10 is out)
This software cannot be used with older firmwares, and these firmwares cannot be used with older softwares!


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).