Done:
- write a clean joystick interface: 4 axes with 16-bit precision, 12 buttons (no PS3 button yet), and a hat (d-pad). This uses the excellent LUFA framework from Dean Camera.
- configure an interrupt for the serial reception (great tutorial from Dean Camera)
- write a RS232-capable emu process (docs).
- write a new Sixemugui
- 2ms update period = 500Hz update frequency (same as my G500 mouse) – not sure the PS3 can drive a usb device at that speed – not sure running as fast is relevant considering the Linux latency
- measured worst latency between a usb packet received by the PC from a peripheral (like a mouse) and the usb packet received by the device the joystick is connected to (for easiness, the PC – should be the PS3) is about 4.7ms, average latency is about 3.6ms
Notes:
- It’s probably better to avoid connecting both the mouse and the USB to serial device to the same usb bus.
- A kernel with realtime capabilities could probably lower the worst latency.
- It’s not good to work at a frequency higher than the mouse frequency (no mouse report in the last period => stick is set to the center => jerky movements).
- The dead zone
doesn’t seem to beis proportional to the max absolute axis value. - The report period is probably not constant without a realtime kernel (2ms is probably too low considering the Linux latency).
- For performance reasons, emu & emuclient could be merged in a single process.
Next tasks:
- build a package
Outstanding! I am really looking forward to future updates on this particular idea. I think I might start to redesign the PS3Jailbreak dongle that I built to accommodate a second MCU.
Great…can't wait for a package.
16-bit? Wow! Wikipedia says the sixaxis sticks only have 10-bit. 🙂
Wikipedia says it's 10-bit because Sony says it's 10-bit. But it's not, it's only 8-bit like the 360 pad. Only motion sensing controls are 10-bits.
16-bit is probably not required (something like 10 or 12-bit could be enough), but it makes my life easier because it's exactly two bytes.
I still need to see if this really allows us to reach more positions.
Hey. Love your work!! but Will you release this for people on 64bit Ubuntu ??
I will try to. I had issues building the version 0.21 for 64 bit Ubuntu. I have to work back on that.