This page describes how to talk to a GIMX instance that is listening for UDP packets on a specific port.
See the "--src IP:port" argument on the Command line page to learn how to start such a GIMX instance.
Protocol starting from version 7.1
One problem with the earlier protocol was that backward compatibility was broken each time a new axis was added to the controller map.
The new protocol allows to send any number of axis values.
Get controller type
It's possible to send a packet to get the controller type from the remote GIMX.
Request
byte |
value
|
|
0 |
0x00
|
1 |
0x00
|
Answer
byte |
value
|
|
0 |
0x00
|
1 |
0x01
|
2 |
value
|
value |
type
|
|
0x00 |
JOYSTICK
|
0x01 |
360 PAD
|
0x02 |
SIXAXIS
|
0x05 |
DS4
|
0x06 |
Xbox One PAD
|
0x07 |
T300RS PS4
|
0x08 |
G27 PS3
|
0x09 |
G29 PS4
|
0x0A |
Driving Force PS2
|
0x0B |
Driving Force Pro PS2
|
0x0C |
GT Force PS2
|
Send report
All axes are unsigned 32-bit integers (network byte order).
The Controller Maps page describes the axes and the value ranges corresponding to each controller type.
Report
byte |
value
|
|
0 |
0x01
|
1 |
number of axes to follow
|
2 |
bit 7
|
bit 6
|
bit 5
|
bit 4
|
bit 3
|
bit 2
|
bit 1
|
bit 0
|
0 for rel_axis
1 for abs_axis
|
axis index e.g. 0 for abs_axis_0 or for rel_axis_0
|
|
3-6 |
axis value
|
... |
repeat 2 and 3-6 for each axis to update
|
Protocol for versions up to 6.11
Get controller type
It's possible to send a packet to get the controller type from the remote GIMX.
Request
byte |
value
|
|
0 |
0x11
|
1 |
0x00
|
Answer
byte |
value
|
|
0 |
0x11
|
1 |
0x01
|
2 |
value
|
value |
type
|
|
0x00 |
JOYSTICK
|
0x01 |
360 PAD
|
0x02 |
SIXAXIS
|
0x05 |
DS4
|
0x07 |
T300RS PS4
|
0x08 |
G27 PS3
|
0x09 |
G29 PS4
|
Send report
All axes are signed integers.
The Controller Maps page describes the axes and the value ranges corresponding to each controller type.
Report
byte |
value
|
|
0 |
0xff
|
1 |
0x9C = 156
|
2-5 |
axis 0
|
6-9 |
axis 1
|
... |
|
158-161 |
axis 39 (changed in GIMX 6.10)
|