ubuntuusers.de

Rohdaten eines "USB Human Interface Device" auslesen/verarbeiten

Status: Gelöst | Ubuntu-Version: Nicht spezifiziert
Antworten |

mr_bunnyman

Anmeldungsdatum:
3. Juli 2009

Beiträge: Zähle...

Hallo Forum,

ich stehe vor einem kleinen Problem, bei dem ich hier ein paar Anregungen erfragen wollte. Kurz gesagt: Ich würde gerne von einem USB-HID (eine 6-Achsen "Space Maus") die Eingabedaten direkt in einem Userspace Programm auswerten können. Mit dem Ding ist es möglich, alle 6 Freiheitsgrade in einem Eingabegerät zu nutzen. Es gibt Linux Treiber, wenn ich die Space Maus einstecke funktioniert sie direkt als Eingabegerät.

Auf welchem Weg komme ich nun aber an die direkten "Rohdatenpakete"? Mich interessiert statt der jeweiligen Mauszeigergeschwindigkeit in der Richtung eines Freiheitsgrades eher dessen Ableitung/Position – aber das ist eigentlich nur ein "verrechnen" der Rohdaten. Als normale Maus soll das Ding gar nicht arbeiten, sondern voll meinem Programm gehören. Zu beachten ist, das das Gerät an einem embedded-System betrieben wird, sprich an Infrastruktur so gut wie nichts vorhanden ist (kein X-Server!). Welche Schnittstelle im System könnte man am besten anzapfen? Wenn das ganze mit möglichst wenig Anpassungen am Kernel möglich ist, umso besser – spricht im Userspace würd ich gerne bleiben, mit C komme ich halbwegs zurecht. Mit einem USB-Sniffer (usbmon/whireshark) konnte ich schon mal ein bisschen mithorchen, ist natürlich unpraktisch auf Dauer...

Könnte mir jemand Hinweise geben, in welche Richtung, bei welchen Werkzeuge und bei welchen Schnittstellen ich mich am ehesten umgucken könnte?

Um das Bild abzurunden, hier nochmal kurz die Syslogmeldungen für das ein/ausstecken:

Jun 12 10:30:24 my kernel: [ 3136.177077] usb 1-2: new low speed USB device using uhci_hcd and address 2
Jun 12 10:30:25 my kernel: [ 3136.407889] usb 1-2: configuration #1 chosen from 1 choice
Jun 12 10:30:25 my kernel: [ 3136.561319] usbcore: registered new interface driver hiddev
Jun 12 10:30:25 my kernel: [ 3136.761357] input: 3Dconnexion SpaceNavigator as /devices/pci0000:00/0000:00:1d.0/usb1/1-2/1-2:1.0/input/input9
Jun 12 10:30:25 my kernel: [ 3136.763306] generic-usb 0003:046D:C626.0001: input,hidraw0: USB HID v1.10 Multi-Axis Controller [3Dconnexion SpaceNavigator] on usb-0000:00:1d.0-2/input0
Jun 12 10:30:25 my kernel: [ 3136.763358] usbcore: registered new interface driver usbhid
Jun 12 10:30:25 my kernel: [ 3136.763365] usbhid: v2.6:USB HID core driver
Jun 12 10:31:00 my kernel: [ 3171.594255] usb 1-2: USB disconnect, address 2

Vielen Dank und mit allerbesten Grüßen

Der Bunnyman

mr_bunnyman

(Themenstarter)

Anmeldungsdatum:
3. Juli 2009

Beiträge: 2

Um das hier zu Beenden:

Nach weiterer Recherche habe ich schliesslich einen passenden freien Treiber gefunden, der sehr genau das tut was ich wollte. Die anderen Varianten habe ich mir auch angesehen, bringen aber keine Vorteile. Kleines demoprogramm hab ich schon fertig, das ganze muss jetzt nur noch auf ARM portiert werden... Aber das wird schon, da weis ich zumindest wo ich anfangen muss.

Einen schönen Abend noch!

Antworten |