Command line
Contents
Motivation
GIMX can be run from a Linux terminal without having to run a windowing system.
This improves performances, especially on small targets like the Raspberry Pi or thin clients.
It's also useful for other stuff like automation.
Linux + bluetooth
Set the dongle address
It is highly recommended to use a CSR Bluecore4-rom dongle. Check the compatibility list.
Plug a Sixaxis previously paired with the target PS3.
Type in a terminal:
sixaddr
Result:
Current Bluetooth master: ps3_bt_address Current Bluetooth Device Address: sixaxis_bt_address
Get the current dongle address:
bdaddr -i hciN
where N is the dongle index (type "hciconfig -a" to see all dongles).
Write it down so as to be able to restore it later.
Set the dongle address:
bdaddr -r -i hciN sixaxis_bt_address
Check the result:
bdaddr -i hciN
Run GIMX
In a terminal:
emu ps3_bt_address bt_device_index sixaxis_index
- ps3_bt_address
- This argument is mandatory.
- bt_device_index
- The bluetooth device index (ex : 0 for hci0, 1 for hci1, etc).
- This argument is optional, default device index is 0.
- sixaxis_index
- The sixaxis index (ex : 0 for sixaxis 1, 1 for sixaxis 2, etc).
- This argument is optional, default sixaxis index is 0.
In another terminal:
emuclient --config file_name
- file_name
- The name of the config file, in the ~/.emuclient/config directory (ex : toto.xml).
- This argument is mandatory.
- Use backslashes to escape spaces.
Linux or Windows + DIY USB adapter or GPP
In a terminal:
GIMX 0.51 or older: emuclient --config file_name --serial --port /dev/ttyUSBX --joystick --precision 16 --refresh 4
GIMX later than 0.51: emuclient --config file_name --port /dev/ttyUSBX --type joystick --refresh 4 or emuclient -c file_name -p /dev/ttyUSBX -t joystick -r 4
GIMX 1.10 and later: emuclient --config file_name --port /dev/ttyUSBX or emuclient -c file_name -p /dev/ttyUSBX
emuclient options:
- --config file_name
- The name of the config file, in the ~/.emuclient/config directory (ex : toto.xml).
- This argument is mandatory.
- --serial
- Only mandatory for the DIY USB adapter.
- This option is only applicable for GIMX 0.51 and older.
- --port /dev/ttyUSB0
- The serial port. Ex: /dev/ttyUSB0 in Linux, COM4 in windows.
- Only mandatory for the DIY USB adapter.
- --joystick / --GPP / --360pad / --PS2pad
- The type of USB adapter.
- --joystick is for the DIY USB adapter
- This option is only applicable for GIMX 0.51 and older.
- --type joystick/GPP/360pad/Sixaxis/PS2pad
- The type of USB adapter.
- joystick is for the DIY USB adapter with the joystick firmware
- Sixaxis is for the DIY USB adapter with the sixaxis firmware
- This option is only applicable for GIMX later than 0.51.
- Not required anymore since GIMX 1.10.
- --precision 16
- The axis precision. Joystick: 16, Other adapters: 8.
- This option is only applicable for GIMX 0.51 and older.
- --refresh 4
- The refresh period, in ms.
- Recommended values:
- joystick/GPP/360pad/Sixaxis: 4 (250Hz)
- PS2pad: 16 (62.5Hz)
- Not required anymore since GIMX 1.10.
General emuclient options
- --curses
- curses terminal display.
- Mouse calibration is available through this interface.
- --status
- Display controls in the terminal.
- --nograb
- Do not grab the mouse cursor.
- --force-updates
- Send button+axis status even if there is no change (for compatibility with games like DNF).
- --subpos
- Improve stick precision (counteract rounding issues).
- --keygen key
- Generate a key press at emuclient startup.
- The main use case for this is the automation of macro's execution.
- Events that are not generated by macros are ignored.
- The only way to quit is to add KEYDOWN LSHIFT and KEYDOWN ESCAPE at the end of the macro, or use --nograb and press ctrl+c into the terminal.
- Another use case is the sending of a single command (it requires to use a macro as no key up event is generated).
- --event "control(value)"
Since GIMX 1.10 it's possible to send controls to the console from the command line, without having to create a configuration and macros to use with the --keygen argument. Example:
emuclient -p /dev/ttyUSB0 --event "lstick x(127)" --event "rstick y(-128)" --event "circle(255)" --event "square(0)"
This moves the left stick right, the right stick forward, fully presses the circle button, and releases the square button. The state of all other controls is cleared, i.e. all other buttons and axes are released (in the above command, --event "square(0)" is not necessary). emuclient should complete in about 10ms. Names and value ranges: "lstick x", "lstick y", "rstick x", "rstick y": [-128,127] "acc x", "acc y", "acc z", "gyro": [-512,511] "select", "start", "PS": {0, 255} (only two values as these buttons are not pressure-sensitive) "up", "right", "down", "left", "triangle", "circle", "cross", "square", "l1", "r1", "l2", "r2", "l3", "r3": [0,255]