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!

 

The configuration GUI works in windows…

All the libraries I chose are cross-platform (wxWidgets, libxml, libSDL…).

Thus, it’s pretty straightforward to port the configuration GUI to windows.

For now, it’s not very useful to use it in windows, since the sixaxis emulator doesn’t run natively in this OS (virtualization works, but it breaks down performances).

Trigger

Buttons

Axis

Above screen shots show the look and feel of the gui in windows.

I uploaded a binary on the project google code web page (direct download link).

I’m not sure I included all the required dll, so if it complains about a missing dll at the application startup, please tell me what dll it is.

Feel free to test it. A basic test is to make a configuration, save it into a file, close/restart the gui, open the file, and see if everything is correct.

Tell me what you think about it! You can start reporting bugs on the issue list.

Ugly windows solution

Running the whole sixaxis emulator in a Linux Virtual Machine (with VirtualBox) was my first try.

But I discovered the input devices mapping from the host to the guest is not adapted at all: the mouse and the keyboard are emulated by VirtualBox, making the latency of the mouse higher, and breaking the precision of a high-end mouse.

Then I realized that the client/server architecture allows to run the emu and emuclient processes on different machines.

As you can see in the below screenshot, I decided to run the emu (which sends data to the PS3) in a Linux Virtual Machine with a command-line only linux (slitaz-base), and the emuclient (which grabs input device events) in the host Windows machine. The emuclient connects and send data to the emu through TCP/IP. The installation of slitaz+sixaxis-emulator librairies takes about 350Mo of disk space.


It works (seems to be playable), but not as good as the Linux-only solution: there obviously is more latency.

EDIT: some details if you want to try that.

Notes:

– Perform the sixaxis emulator tutorial in a VM first (if step 1 doesn’t work, try that step with a livecd).

– The network interface of the VM has to be configured in “Host-only networking” (that’s how it is called in VirtualBox, see there). If you can ping the VM Guest Linux from the Host Windows and vice versa, it should work!

– The usb bluetooth dongle has to be added to the VM usb devices.

1/ [VM/Guest Linux] in emu.c, change that line in tcp_listen function:

addr.sin_addr.s_addr = htonl(INADDR_LOOPBACK); // Listen only on localhost

to

addr.sin_addr.s_addr = htonl(INADDR_ANY); // Listen on any interface

Recompile emu process (make).

2/ [Host Windows] Get http://www.libsdl.org/release/SDL-1.2.14-win32.zip

Extract it. Copy SDL.dll to C:\Windows

3/ [Host Windows] Get http://diyps3controller.googlecode.com/files/sixaxis-emu.exe

4/ [VM/Guest Linux] Launch emu process as in the sixaxis emulator tutorial. It should power on the PS3.

5/ [Host Windows] Launch sixaxis-emu.exe with the ip address of the VM/ Guest Linux as argument. It should connect to the emu process running in the Guest Linux.

Sixaxis emulator in a Virtual Machine

I recently was asked about running the sixaxis emulator in a VM (Virtual Machine).

As the sixaxis emulator is not designed to work in any other OS than Linux (mainly because the bluetooth stack is not as open in other OSes), running the sixaxis emulator in a VM could be a work-around for people that can’t (or don’t want to) install Linux on their machine.

With Windows Vista running VirtualBox/Ubuntu, I tried to perform the Sixaxis emulator tutorial.

Only step 1 doesn’t work: it seems the usb connection with the sixaxis doesn’t work as expected.

This is not a big issue since step 1 can be done once and for all with a livecd on any pc.

The only thing to care about is to disconnect usb devices from the VirtualBox before unplugging them.

With VirtualBox+Ubuntu, I get too much lag with the mouse, so that it can’t be used to play. I’m going to test other VMs.