Deutsches Tutorial


Umgestellt: Link.

[spoiler]Die erste Ãœbersetzung war von cool&fast geschrieben.
Paddy hat diese Ãœbersetzung geschrieben.
Danke!

Einleitung

Diese Anleitung beschreibt, wie man die PS3 über eine Tastatur oder Maus, welche an einen PC angeschlossen sind, steuert.

Die Weiterentwicklung basiert auf der Arbeit von Jim Paris, vielen Dank dafür!

Ich habe einige Änderungen am Quellcode gemacht, eine GUI für eine einfachere Konfiguration erstellt und die Installationsschritte für Debian-basierende Linux Distributionen wie Ubuntu vereinfacht.

Falls Du sehen möchtest, wie es funktioniert, schau Dir dieses Video von McKack an:

PS3 games with keyboard & mouse - Sixaxis Emulator v0.11

Vorraussetzungen

  • Ubuntu Live CD (oder jede andere auf Debian basierende Linux-Distribution)
  • ein Sixaxis, der bereits mit der Ziel-PS3 verwendet wird
  • ein Bluetooth Dongle mit einem Chip, bei dem man die bdaddr (bluetooth device address / Bluetooth Geräteadresse) ändern kann. Für einfach das Tutorial aus, um festzustellen, ob dein Bluetooth Dongle geeignet ist.

Anmerkungen

Durchführung auf eigene Gefahr!
Ich bin NICHT verantwortlich für etwaige Schäden, die an Deiner PS3 oder am PC entstehen könnten

Billige (ein paar €) CSR Bluecore4 Dongles, bei denen gemeldet wurde, dass sie funktionieren, sind auf ebay erhältlich.
Bluecore4 ist der erste CSR bluecore chip, welcher EDR (Enhanced Data Rate) unterstützt, also sind die Schlagwörter für die Suche CSR and EDR.
Achtung: viele ebay CSR Dongles sind Fälschungen!
Bitte beachte, dass ich NICHT für nicht-funktionierende Dongles verantwortlich bin, die Du kaufst!

Versuche nicht, den Sixaxis Emulator und den Sixaxis Controller zur selben Zeit zu verwenden und setze die BDADDR zurück, wenn Du den Sixaxis Emulator nicht mehr verwendest.

Die Anleitung ist für UBUNTU geschrieben, gestartet von der CD, es wird nichts auf der Festplatte gespeichert.

Du kannst Dir Ubuntu auf deinem PC installieren! Falls Du ein Windoows Betriebssystem hast, dann kannst du in diesem Tutorial nachlesen, wie Du Ubuntu installieren kannst, ohne Windows zu löschen.

Eine weitere Möglichkeit ist, den Sixaxis Emulator von einem Ubuntu Live USB Persistent Flash Drive zu starten (lies dazu diesen Post).

1 Installation

Füge “universe” zur Paketverwaltung hinzu:
– Klicke auf System>Systemverwaltung>Synaptic Packetverwaltung.
– Klicke
auf Einstellungen>Paketquellen.
– Wähle universe aus, schliesse das Fenster.
– Klicke auf
Neu laden und schliesse den Packetmanager.

Lade folgende Dateien herunter:

Installiere (Doppelklick, dann installieren).

2 Schnellstart

Schliesse den Bluetooth Dongle und den Sixaxis an den PC an.
Starte sixemugui (Verknüpfung: Anwendungen>Spiele>Sixemugui).

  1. Wähle den Sixaxis aus
  2. Wähle den Bluetooth Dongle aus
  3. Setze die Dongleaddresse (vergiss nicht, die alte Adresse aufzuschreiben)
  4. Wähle wieder den Sixaxis und den Bluetooth Dongle aus
  5. Zieh den siaxis raus und falls er sich nicht von alleine abschalte, drücke den PS3-Knopf, bis er sich von alleine ausschaltet
  6. Stell die Parameter für den emuclient ein
  7. Wähle das Konfigurationsfile aus, welches verwendet werden soll
  8. Starte emu (emuclient selbst startet, falls die Verbindung erfolgreich ist)
  9. Spiele mit deiner PS3 (Drücke Escape um den Emulator zu beenden)
  10. Stoppe den emu

Anmerkung: File>Save speichert deinen Sixaxis- und PS3-Adresse, dann musst Du den Sixaxis danach nicht mehr anschliessen.

3 Eigene Einstellungen für Maus, Tastatur und Joysticks

Es wird empfohlen, die Tastatur- und Mauseinstellungen für jedes Spiel einzustellen und abzuspeichern.

Konfigurationsdateien müssen im Verzeichnis ~/.emuclient/config gespeichert werden (~ ist das Home-Verzeichnis).

Starte sixemuconf (Verknüpfung: Anwendungen>Spiele>Sixemuconf).

Screenshots meiner Konfiguration für COD: Black Ops:


Es ist möglich, eine Konfiguration fürs Zielen mit der Maus zu definieren: kopiere die Konfiguration #1 zur Konfiguration #2, definiere die rechte Maustaste as Konfigurations #2 Trigger um zurückzuschalten und stelle die Mausmultiplikatoren und -exponenten ein.

Folgenden Auswahlpunkte aus dem Menu “Edit” ermöglichen eine Konvertierung der Konfiguration:

Im Menüpunkt “Replace Mouse” kann der Mausname und die ID geändert werden.
Im Menüpunkt “Replace Keyboard” kann der Tastaturname und die ID geändert werden.
Im Menüpunkt “Replace Mouse DPI” kann der Mausmultiplikator in Bezug auf die alten/neuen DPI-Werte (je höher, desto besser) eingestellt werden.

4 Maus Kalibration

Bevor die Maus kalibriert wird, stelle sicher, dass die in-game Sensitivität maximal eingestellt ist und dass die Maus DPI auf den größten Wert gesetzt wird.
Um den emuclient mit Mauskalibrationsmodus zu starten, wähle Mouse>Calibrate in der sixemugui Anwendung aus und starte dann den emuclient.

Die aktuellen Mauskalibrationswerte werden im “Mouse calibration”-Teil der GUI angezeigt.

Diese Kalibrationsmodus erlaubt eine Kalibration für jede Maus unabhängig voneinander. Es liest die Werte der geladenen Konfiguration. Um die Werte zu ändern, drücke rechte Strg (rctrl) + FX-Taste und verwende das Mausrad.

Der Dead-Zone-Wert muss auf den größtmöglichen, stabilen Wert gesetzt werden.
Verschiedene Dead-Zone-Werte für x und y machen nur Sinne für eine rechteckige Dead-Zonen-Bereich.
Der Dead-Zonen-Bereich sollte auf die stabilsten Werte gesetzt werden.

5 Tastaturmakros

Es ist möglich, die Tastaturmakros zu konfigurieren.

Ein Tastendruck generiert eine Reihe von Events mit zeitlichen Abhängigkeiten.

Die Kommandos sind die folgenden:
– Taste runterdrücken (key down)
– Taste loslassen (key up)
– Taste drücken (= Taste runterdrücken + warten + Taste loslassen) (press key)
– warten (delay) (Einheit = ms)

Jedes Macro muss in einer Datei gespeichert werden, die im Verzeichnis ~/.emuclient/macros liegt(ist das Home Verzeichnis/Persönlicher Ordner, der Ordner .emuclient ist versteckt).

Beispiel: macro_example.txt

#Definiert die Aktion/Taste, die das Makro startet
MACRO F1
#führt einen Tastendruck aus (Taste runterdrücken + 50ms warten + Taste loslassen)
KEY e
#warte 50ms
DELAY 50
#drücke eine Taste runter

KEYDOWN SPACE
#warte 50ms (minimale Verzögerung zwischen Taste runterdrücken und wieder loslassen)
DELAY 50
#Taste loslassen
KEYUP SPACE

Zeilen, die mit # beginnen, sind Kommentare.

Alle Tasten der Tastatur können ein Makro auslösen.
Die vollständige Liste kann in folgender Datei nachgelesen werden: conversion.c.

6 Fehlerbehebung / Feedback

Ich stelle das Projekt kostenlos zur Verfügung, gib mir also ein Feedback.

Schreib mir, ob es funktioniert oder nicht, insbesondere folgende Details:

  • die Linux Distribution
  • die PS3 Hardware Version (Slim, Fat 40Gb, Fat 60Gb, …)
  • die PS3 Firmware Version
  • den Bluetooth Dongle (exaktes Model + Revision, falls es eine gibt + die Ausgabe der Kommandos “hciconfig -a hci0” und “sudo hciconfig hci0 revision” in einem Terminal)
  • Die Hardware deines PCs (zumindest CPU und die Menge an RAM)

Schreibe mir das als Kommentar in diesen Blog.

Und falls es nicht funkioniert, überprüfe zuerst, ob du die aktuellste Version hast.
Dann schaue in der FAQ (English) und in der Bug liste nach, ob das Problem bereits bekannt ist, und falls nicht, melde sie.
Paypal Spendenlinks sind rechts oben in der Ecke dieser Seite.[/spoiler]

Mouse mapping improvement

Each polling period (=10ms=sixaxis refresh rate), emuclient processes all queued events.
This means that depending on the mouse refresh rate, emuclient may process one or several mouse motion events.

Examples:

  • (rate=100Hz) => 1 event max
  • (rate=500Hz) => 5 events max
  • (rate=1000Hz) => 10 events max

In a single polling period, emuclient may receive several events, but only performs a single sixaxis status refresh. Therefore, mouse motion events have to be merged into a single one that is the average mouse motion event. This allows to reach a better precision since no event is ignored.

The average mouse motion event is translated to a sixaxis axis thanks to the following formula:

res=sign(val)*mul*pow(abs(val),exp)

I usually use exp=1 so that the simplified formula is:

res=mul*val

The dead zone has also to be removed:

if res>0: res=res+dz
if res<0: res=res-dz

Different multipliers, exponent and dead zones may be set for x and y mouse motions.
This calculation supposes the dead zone is rectangular.

Following to the suggestion of a reader, I decided to test a different dead zone shape.

With a circular dead zone:

if x!=0 and y!=0:
dz_x=dz*cos(atan(abs(y/x)))
dz_y=dz*sin(atan(abs(y/x)))
else:
dz_x=dz
dz_y=dz

I also improved the result precision by storing each intermediate result as a double (and not an integer). Only the final result is converted to an integer.

I built a test package for people that want to try these new things.
Just remember to set the same value for both x and y dead zones.
Let me know the results of your tests!

Tutoriel en français


Déplacé : lien.

[spoiler]Attention : ce tutoriel est mis à jour fréquemment. Ne le copiez pas. Donnez un lien vers cette page.

Merci de noter que je n’offre pas de support pour autre chose qu’Ubuntu fonctionnant sur une machine non-virtuelle.

Introduction

Ce tutoriel explique comment contrôler une PS3 avec des périphériques PC (clavier, souris, joystick) connectés à un PC sous Linux, en utilisant un dongle bluetooth.

Cela est possible grâce au travail préliminaire de Jim Paris.

J’ai appliqué de nombreuses modifications à son code source, développé des interfaces pour faciliter le lancement et la configuration, et simplifié l’installation pour les distributions Linux à base de debian telles que Ubuntu.

La vidéo suivante réalisée par
McKack montre le sixaxis emulator en fonctionnement (version 0.11):

PS3 games with keyboard & mouse - Sixaxis Emulator v0.11


Pré-requis

  • ubuntu Live CD (ou toute autre distribution Linux si vous êtes à l’aise avec Linux)
  • une manette sixaxis déjà utilisée avec la PS3 à utiliser
  • un dongle bluetooth avec une puce dont la bdaddr (bluetooth device address) peut être changée. Pour découvrir si votre dongle marche, essayez simplement d’exécuter ce tutoriel.

Notes

Cette méthode est expérimentale, donc utilisez là à vos risques et périls. Je ne suis pas responsable des dégâts que vous pourriez causer à votre PC ou à votre PS3.

Les dongles CSR Bluecore4 trouvables sur ebay pour quelques euros sont rapportés comme utilisables. Bluecore4 est la première puce CSR implémentant l’EDR (Enhanced Data Rate), donc les mots clefs pour trouver ces dongles sont CSR et EDR.Attention : la plupart de ces dongles sont des contrefaçons. Je ne suis pas responsable de l’achat d’un dongle incompatible.

Ne pas essayer d’utiliser le Sixaxis emulator et la manette sixaxis en même temps. Rétablir la bdaddr du dongle si elle n’est plus utilisée pour le Sixaxis emulator.

Ce tutoriel a été écrit en utilisant ubuntu depuis le live cd (rien n’est modifié sur le disque dur).

Installez ubuntu sur votre PC si vous le souhaitez ! Si vous avez un OS Windows déjà installé, vous pouvez lire ce tutoriel si vous voulez installer ubuntu sur votre disque dur sans supprimer l’OS Windows.

L’émulateur peut aussi être exécuté à partir d’un Ubuntu en Live USB persistent (lire ce post).

1 Installation

Ajouter”universe” aux dépôts:
– Cliquer sur Système>Administration>Gestionnaire de paquets Synaptic.
– Cliquer sur Configuration>Dépôts.
– Sélectionner universe, et fermer.
– Cliquer sur recharger, et fermer.

Télécharger le fichier suivant:

Installer ce fichier (double clic, puis installer).

2 Démarrage rapide

Brancher le sixaxis (et le dongle bluetooth, si externe) au PC.
Lancer sixemugui (raccourci: Applications>Jeu>Sixemugui).

Note: il y a un problème depuis Ubuntu 11.04. Au lieu de démarrer Sixemugui depuis le raccourci, démarrer-le depuis un terminal: Applications>Accessoires>Terminal. Puis taper sixemugui dans ce terminal, et presser entrée. Je travaille sur ce problème!

  1. Sélectionner le sixaxis
  2. Sélectionner le dongle bluetooth
  3. Cliquer sur “Set Dongle Address” (ne pas oublier de sauver l’ancienne adresse)
  4. Re-sélectionner le sixaxis et le dongle bluetooth
  5. Débrancher le sixaxis et s’il ne s’éteint pas de lui-même, appuyer sur le bouton PS3 jusqu’à ce qu’il s’éteigne
  6. Sélectionner les paramètres d’emuclient
  7. Sélectionner le fichier de configuration à utiliser
  8. Démarrer emu (emuclient démarre automatiquement si la connexion est établie)
  9. Jouer (appuyer sur Echap pour quitter emuclient)
  10. Arrêter emu.

Note: File>Save permet de sauver les adresses du sixaxis et de la PS3, ce qui évite d’avoir à connecter le sixaxis avant chaque utilisation.

3 Configurer les contrôles souris, claviers et joysticks

Il est recommandé de changer les contrôles et de calibrer la souris pour chaque jeu.

Les fichiers de configuration doivent être sauvegardés dans le répertoire ~/.emuclient/config directory (~ est le répertoire de l’utilisateur).

Lancer sixemuconf (raccourci: Applications>Jeu>Sixemuconf).

Captures d’écran de ma configuration pour COD: Black Ops:


Il est possible de définir une configuration de visée : copier-coller la configuration #1 sur la configuration #2, définir le bouton droit de la souris comme “trigger” avec “switch back” pour la configuration #2, et ajuster les “multipliers” & “exponents”.


Outils du menu “Edit” permettant de convertir une configuration :


L’outil “Replace Mouse” permet de changer le nom et l’id de la souris.
L’outil “Replace Keyboard” permet de changer le nom et l’id du clavier.
L’outil “Replace Mouse DPI” permet d’ajuster les multipliers en fonction des ancien/nouveau réglages dpi de la souris (la plus haute valeur est la meilleure).

Contrôle de l’intensité du stick pour les mappings de button à stick :

Voir le post suivant pour plus de détails sur cette fonctionnalité : lien.

4 Calibration de la souris

Avant de calibrer la souris, s’assurer que la sensibilité est réglée au maximum dans le jeu, et régler la sensibilité de la souris au maximum (max dpi).

Pour démarrer emuclient avec le mode de calibration de la souris activé, sélectionner Mouse>Calibrate dans l’application sixemugui. Ensuite, démarrer emuclient.

Les valeurs courantes de calibration apparaissent dans la partie “Mouse calibration”.

Ce mode de calibration permet de configurer chaque souris indépendamment. Les valeurs sont lues à partir de la configuration chargée. Pour modifier les valeurs, utiliser les combinaisons ctrl droit + FX, et utiliser la molette de la souris.

La zone morte doit être fixée à la plus haute position stable.
Des valeurs différentes pour x & y n’ont de sens que pour une dead zone “rectangle”.
La “dead zone shape” doit être fixée à celle qui est la plus stable.

5 Macros clavier

Il est possible d’exécuter des macros de clavier.

Un appui sur une touche peut générer une série d’événements, avec certains délais.

Les commandes sont les suivantes :
– key down (touche enfoncée)
– key up (touche relâchée)
– key press (key down + délai + key up)
– delay (délai, unité = ms)

Chaque macro doit être définie dans un fichier.

Exemple: macro_example.txt

#Defines the action that triggers the macro execution
MACRO F1
#Performs a keystroke (key down + delay 50ms + key up)
KEY e
#Sleep 50ms
DELAY 50
#Perform a key down
KEYDOWN SPACE
#Sleep 50ms (minimum delay between KEYDOWN and KEYUP)
DELAY 50
#Perform a key up
KEYUP SPACE

Les lignes qui commencent par # sont des commentaires.

Chaque fichier définissant une macro doit être référencé dans le ficher macros.txt.

Toutes les touches du clavier peuvent générer une macro. La liste complète peut être obtenue dans le fichier conversion.c.

6 Résolution des problèmes / Feedbacks

Je partage mon projet gracieusement, merci de bien vouloir me donner un feedback si vous le testez.

Dites-moi si cela fonctionne ou non, et ajoutez en particulier les détails suivants :

  • la distribution Linux
  • la version hardware de la PS3 (slim, fat 40Gb, fat 60Gb, …)
  • la version software de la PS3
  • le dongle bluetooth (modèle exact + révision s’il y en a une + résultat de “hciconfig -a hci0” et “sudo hciconfig hci0 revision”)
  • le hardware du PC (au moins le CPU et la quantité de RAM)

Écrivez cela dans un commentaire à ce post.

Et si cela ne marche pas, vérifiez d’abord que vous disposez des derniers paquets. Ensuite rendez-vous dans la FAQ (en anglais pour l’instant…) et dans la liste de bugs, regardez si vos problèmes sont déjà connus, et s’ils ne le sont pas, rapportez-les.

Pour contribuer à ce projet, voir cette page.
Un lien paypal est disponible pour les dons, il est situé en haut de cette page à droite.
[/spoiler]

New packages released

New packages are available there: link.

It fixes issues 24, 25, 31, 19.

There is a new package (sixemugui_0.1-1_i386.deb) that contains the sixemugui tool.

Package installation now adds shortcuts for sixemuconf and sixemugui in the Application>Game menu.

Quick instructions:

  1. Plug you sixaxis and bt dongle
  2. Select the sixaxis
  3. Select the bt dongle
  4. Set the dongle address (don’t forget to write the old one down)
  5. Re-select the sixaxis and the bt dongle
  6. Start emu (a popup will tell you if connection is succesful)
  7. Start emuclient
  8. Enjoy!

As I won’t be available next week, I didn’t updated the tutorial.

So if you use them and find some issues, please report them, but don’t expect to have a quick answer or a quick fix.

Left and right mouse button lag

In my previous post I told that I was experiencing about 50ms latency for left and right mouse clics. After some investigations I discovered that the problem was located in xorg.

It appears it’s not a bug, it’s a functionality called “3rd button emulation” that is useful with a 2 button mouse. Xorg waits up to 50ms to see if both left and right buttons are pressed, and in case it is, it generates a middle button press.

It’s nothing to say that this implementation is lame and should be disabled by default.

Following bug reports were filled by people complaining about that behavior:

Although a real middle button press is enough to disable the functionality (not persistent), it’s possible to disable it by default (works for Ubuntu 10.10):

sudo gedit /usr/share/X11/xorg.conf.d/20-mouse.conf

Copy-paste to following lines:

Section “InputClass”
Identifier “Mouse0”
MatchIsPointer “true”
Option “Emulate3Buttons” “false”
EndSection

Save, and Restart!

Another post about latency

My previous work on that subject

I already worked on measuring how much latency the sixaxis emulator is adding compared to a real sixaxis. I did that using a microphone, measuring the overall response time for a gunshot.

Assuming we have:
R=C+G
R=overall response time
C=controller latency
G=game latency

For the real sixaxis:
R1=C1+G
For the sixaxis emulator:
R2=C2+G

Assuming G is constant:
R2-R1=C2-C1

To estimate the controller latency difference, which is C2-C1, I just had to subtract the overall response time.
The result was about 15ms, which is not that bad compared to the overall response time (>100ms) and the human response time (>100ms).

A way to estimate the latency of the sixaxis emulator

The basic idea is to measure the time between a usb packet coming from the mouse (or any other usb controller) and a packet sent to the usb bt dongle.

For ex, the time between the usb packet for a left clic and the usb packet that sends the R1 button press (via the bluetooth dongle).

A great tool provided with the Linux kernel is usbmon, which allows to sniff the usb traffic. It’s possible to use it with wireshark (with root user rights), but it’s better to play in a terminal to automate extraction of valuable information.

The usbmon documentation is available there: link.

First of all, what the lsusb output says:

matlo@matlo-hcpc:~/hack/test$ lsusb
Bus 004 Device 002: ID 050d:0200 Belkin Components
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 009: ID 054c:0268 Sony Corp. Batoh Device
Bus 003 Device 008: ID 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode)
Bus 003 Device 006: ID 054c:0268 Sony Corp. Batoh Device
Bus 003 Device 005: ID 046d:c041 Logitech, Inc. G5 Laser Mouse
Bus 003 Device 003: ID 046d:c517 Logitech, Inc. LX710 Cordless Desktop Laser
Bus 003 Device 002: ID 058f:9254 Alcor Micro Corp. Hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 002 Device 003: ID 046d:0809 Logitech, Inc. Webcam Pro 9000
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

What is useful there is the bus and device ids. The G5 mouse is device 5 on usb bus 3, and the bt dongle is device 8 on usb bus 3.

To start the capture:

matlo@matlo-hcpc:~/hack/test$ sudo cat /sys/kernel/debug/usb/usbmon/0u > test

Generate left clics into the sixaxis emulator, and stop the capture (ctrl+c).

Then, to display the mouse packets:

matlo@matlo-hcpc:~/hack/test$ cat test.txt | grep “3:005”

And for the bt dongle packets:

matlo@matlo-hcpc:~/hack/test$ cat test.txt | grep “3:008”

Both these commands may give a huge amount of data.

To only display packets that correspond to left clicks:

matlo@matlo-hcpc:~/hack/test$ cat test.txt | grep “3:005:1 0:1 10 = 01000000 00000000 0000”
f6747a40 967102843 C Ii:3:005:1 0:1 10 = 01000000 00000000 0000
f6747a40 968852805 C Ii:3:005:1 0:1 10 = 01000000 00000000 0000
f6747a40 970341772 C Ii:3:005:1 0:1 10 = 01000000 00000000 0000
f6747a40 971609742 C Ii:3:005:1 0:1 10 = 01000000 00000000 0000
f6747a40 972760716 C Ii:3:005:1 0:1 10 = 01000000 00000000 0000

To only display packets that correspond to R1 button presses:

matlo@matlo-hcpc:~/hack/test$ cat test.txt | grep “3:008:2 -115 58 = 2b203600 32004300 a1010000 08000080 80808000 00000000 00000000 0000ff00”
f32e2640 967105205 S Bo:3:008:2 -115 58 = 2b203600 32004300 a1010000 08000080 80808000 00000000 00000000 0000ff00
f32e2640 968861926 S Bo:3:008:2 -115 58 = 2b203600 32004300 a1010000 08000080 80808000 00000000 00000000 0000ff00
f32e2640 970345964 S Bo:3:008:2 -115 58 = 2b203600 32004300 a1010000 08000080 80808000 00000000 00000000 0000ff00
f3a904c0 971618231 S Bo:3:008:2 -115 58 = 2b203600 32004300 a1010000 08000080 80808000 00000000 00000000 0000ff00
f3a90ac0 972769407 S Bo:3:008:2 -115 58 = 2b203600 32004300 a1010000 08000080 80808000 00000000 00000000 0000ff00

What is to be extracted from this is the timestamp in microseconds, which is the second column.

matlo@matlo-hcpc:~/hack/test$ cat test.txt | grep “3:005:1 0:1 10 = 01000000 00000000 0000” | awk ‘{ print $2 }’
967102843
968852805
970341772
971609742
972760716

matlo@matlo-hcpc:~/hack/test$ cat test.txt | grep “3:008:2 -115 58 = 2b203600 32004300 a1010000 08000080 80808000 00000000 00000000 0000ff00” | awk ‘{ print $2}’
967105205
968861926
970345964
971618231
972769407

Then, it’s easy to copy-paste this data into a spreadsheet, compute the difference, compute the average, and the standard deviation.

For this example (with 5 more samples), it gives a 7.6ms average difference, with a 2.9ms standard deviation. The max difference is about 12ms.

It has to be reminded that the event polling period is 10ms (equal to the sixaxis report period), so that the maximum latency added by the event polling is 10ms, and the average is 5ms. Thus, the processing time is in average 7.6-5=2.6ms. It has to be noticed that I’m using a Linux kernel with realtime/low latency capabilities.

It’s also possible that there is some more latency added by the usb stack and the bt dongle, but it’s probably less than the 7.6ms processing time.

Conclusion:

– it’s probably not possible to have a lower response time with a sixaxis emulation (bt or usb)
– to lower the controller latency, the only potential way is to use a usb device to usb device controller (a custom usb link between the PC and the PS3), with a report period lower than 10ms

Thanks to that work I found a latency issue (about 50ms) that only impacts left and right mouse clics. The work-around -I’m not joking!- is to press the middle button after the mouse is plugged to the PC (see next post).