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.