GIMX stands for Game Input MultipleXer or Game Input MatriX. The purpose of this software is to control a video game console with a PC. It works with the PS3, the Xbox 360, and the PS4.
¤ over bluetooth: works with Linux (PS3, PS4) only. A compatible bluetooth dongle is required.
¤ over usb: works with Linux and Windows (PS3, 360). A USB adapter is required.
The application gets data from the PC peripherals (mice, keyboards and joysticks) and sends controls to the game console over bluetooth or usb. Other controls such as gesture or voice are possible through the use of external software that emulate PC peripherals.
Fundraising for PS4/Xbox One support: http://blog.gimx.fr/fundraising-for-gimx-ps4-xbox-one-support/
I pushed gimx-config & gimx-fpsconfig updates in the git repository.
In gimx-config, there is a new “Type” menu that allows to change the controller type. Setting the right controller type allows to display controller-specific axis and button names.
I will now work on merging gimx-serial and gimx-bluetooth in a unified launcher that will also support the PS4.
I pushed touchpad support in the git repository.
People that already cloned the source can run the following commands to update GIMX:
sudo make install
I wrote a configuration for KillZone Shadow Fall that showcases this touchpad support. It can be downloaded via gimx-serial or gimx-bluetooth, using the “Help>Get Configs” menu (the file is named PS4_KillZoneShadowFall.xml). Key ‘f’ controls finger presence and the mouse axes control finger coordinates.
I will now work on updating the GUIs.
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.
Things are going slowly. Touchpad support is on its way.
I wrote a helper script to simplify the setup. The PS4 wiki page explains how to use it.
As it may take some time before everything can be run from a GUI, I wrote a few instructions for anyone wanting to try early PS4 support in GIMX.
Those instructions can be read on the wiki.
It may seem quite complex, but once the pairing is done, starting GIMX is as simple as running a single command in a terminal.
GIMX is only able to run at 100Hz for now, I’ll try to improve this later. I’m currently working on adding touchpad support.
GIMX is now able to talk to a PS4
I worked on adding bluetooth proxy capabilities to GIMX. Before connecting to the PS4, GIMX waits for a Dualshock 4 to connect. Then it forwards HID control transfers, and it directly handles SDP and HID interrupt transfers.
I had to solve an issue with the SDP: the DS4 sends a 708-byte service attribute search response, which is larger than the 672-byte outgoing L2CAP MTU. As the Linux kernel rightly refuses to send L2CAP packets larger than the outgoing L2CAP MTU, I had to go to a lower level in the bluetooth stack so as to directly send ACL packets.
I now have to see how to achieve a high packet rate (800 packets per second). It seems a single bluetooth dongle will not be enough to handle twice this packet rate (from the DS4 + to the PS4).