Jump to content

Joystick am RED Brick.


Recommended Posts

Frage an unsere Linux Gurus.

Ich habe einen USB Joystick am RED Brick installiert mit

apt-get install xserver-xorg-input-joystick

 

Dieser funktioniert auch. Aber nur solange man als "root" angemeldet ist. Ich tippe mal auf ein Rechte Problem .

Was muss ich tun um ihn auch unter den normalen User nutzen zu können.

Da wird dieser nämlich nicht gefunden.

Sobald ich aber als root angemeldet bin ist alles ok.

 

Noch eine Frage nebenbei. Wo muss ich eintragen das mein Programm beim Rechnerstart automatisch gestartet wird? Hab ich noch nicht gefunden.

Link to comment
Share on other sites

Hmm, ich habe noch nie einen Joystick unter Linux angeschlossen.

 

Aber die Input-Devices (wie auch die Maus) sind mit Devices unter "/dev/input" verknüpft und hier sind in der Regel nur Rechte für root. Da der X-Server unter root läuft kann der drauf zugreifen ...

 

Das Problem scheinen schon mehrere gehabt zu haben, z. B.:

http://developer.x-plane.com/2012/09/linux-joystick-permissions/

Link to comment
Share on other sites

Danke hat funktioniert.  ;D

 

apt-get install xserver-xorg-input-joystick
sudo apt-get install input-utils
sudo lsinput

Listet  alle / dev / input / event 's auf
Joystick suchen

Beispiel:
/dev/input/event0
   bustype : BUS_I2C
   vendor  : 0x0
   product : 0x0
   version : 0
   name    : "axp152"
   phys    : "sunxi-i2c.0"
   bits ev : EV_SYN EV_KEY
/********************Joystick***********************/
/dev/input/event1
   bustype : BUS_USB
   vendor  : 0x68e
   product : 0x105
   version : 273
   name    : "CH Products HF USB"
   phys    : "usb-sw-ehci-1.2/input0"
   uniq    : ""
   bits ev : EV_SYN EV_KEY EV_ABS EV_MSC

/dev/input/event2
   bustype : BUS_USB
   vendor  : 0x68e
   product : 0x105
   version : 273
   name    : "CH Products HF USB"
   phys    : "usb-sw-ehci-1.2/input1"
   uniq    : ""
   bits ev : EV_SYN EV_KEY EV_MSC EV_REP

/dev/input/event3
   bustype : BUS_USB
   vendor  : 0x68e
   product : 0x105
   version : 273
   name    : "CH Products HF USB"
   phys    : "usb-sw-ehci-1.2/input2"
   uniq    : ""
   bits ev : EV_SYN EV_KEY EV_REL EV_MSC
/********************Joystick***********************/
/dev/input/event4
   bustype : BUS_USB
   vendor  : 0x24ae
   product : 0x2000
   version : 257
   name    : "RAPOO RAPOO 2.4G Wireless Device"
   phys    : "usb-sw-ehci-1.3/input0"
   uniq    : ""
   bits ev : EV_SYN EV_KEY EV_MSC EV_LED EV_REP

/dev/input/event5
   bustype : BUS_USB
   vendor  : 0x24ae
   product : 0x2000
   version : 257
   name    : "RAPOO RAPOO 2.4G Wireless Device"
   phys    : "usb-sw-ehci-1.3/input1"
   uniq    : ""
   bits ev : EV_SYN EV_KEY EV_REL EV_ABS EV_MSC

/dev/input/event6
   bustype : BUS_USB
   vendor  : 0x4d8
   product : 0xc02
   version : 273
   name    : "Microchip Technology Inc. AR1100"
   phys    : "usb-sw-ehci-1.4/input0"
   uniq    : ""
   bits ev : EV_SYN EV_KEY EV_ABS EV_MSC


gebraucht werden    
   vendor  : 0x68e
   product : 0x105

Datei Namens "99-X-Plane_10_Joystick.rules" im /lib/udev/rules.d/ Verzeichnis erstellen.
mit folgendem Eintrag pro gewünschten USB Gerät

KERNEL=="event*", ATTRS{idProduct}=="0105", ATTRS{idVendor}=="068e", MODE="0666"

Dannach Neustart durchfüren

 

Jetzt fehlt nur noch das das Programm automatisch startet beim Systemstart.

Link to comment
Share on other sites

Darüber lade ich mein Programm ständig hoch.

Aber das Compilieren hat noch nie funktioniert. Das mache ich immer über die Console.

Wie gesagt. es geht auch alles. Nur den Programmstart beim Systemsatrt hab ich noch nicht geschafft. Trotz Eintrag in ./etc/init.d und Linkerzeugung im Run Level

Link to comment
Share on other sites

Warum machst du dann nicht noch einen neuen Thread auf, um das Compile Problem genauer zu beschreiben. Ich vermute es ist ein C/C++ Projekt ? Ev. ist da remotecontrol schon weiter !?

 

Das gleichzeitige Compilieren habe ich bisher nur mit Pascal Projekten erfolgreich gemacht. Fertige C Compilate deploye ich aber auch über den BrickViewer und stelle das Verhalten über den Scheduler ein. Eleganter geht es nicht mehr :)

Link to comment
Share on other sites

@Flying Doc

Um was für ein Programm handelt es sich denn, welches du mit init.d starten willst. Normalerwesie werden hier nur sogenannte Dämonen gestartet, die keine Ein-Ausgabe haben und nur still und stumm im Hintergrund arbeiten.

 

Ansonsten einmal in /var/log/messages nachsehen oder in deinem Programm ein paar Zeilen für das Log ausgeben, damit du sehen kannst, warum das Teil nicht gestartet wird.

Link to comment
Share on other sites

@Flying Doc

Ok, dann ist es klar. Du kannst das Programm nicht als Dämon starten, das wird nicht klappen, da die Dämonen keine Ausgabe machen können. ( Natürlich gibt es da noch Wege, aber das hilft dir nicht. )

Startest du irgendwo einen X-Server, der dir die grafischen Sachen überhaupt erst ermöglicht? Diese X-Server haben meistens einen Autostartmodus, d.h. du kannst NACH dem starten des X-Servers ein weiteres  Programm starten, welches dann die normalen Ein-Ausgaben ermöglicht.

Zum Systemstart brauchst du das Programm ja auch nicht wenn ich es verstanden habe, es würde dann nach dem X-Server starten und dann z.B. auf deinem Desktop erscheinen. Willst du sowas in der Art??

Link to comment
Share on other sites

Rischdisch. Der Gandidad had hunderd Bungde. ;)

 

Der RED fährt in der Console hoch und soll dann über ne Btach in das Verzeichniss wechseln und das Programm mit startx ./Programmname starten.

 

Wenn ich in der Console das von Hand eingebe geht auch alles richtig.

 

Ich seh bei Linux da noch nicht richtig durch. Komme eher aus der Windwosrichtung und programiere  erst seit relativ kurzer Zeit im Linux. ;D

Link to comment
Share on other sites

@Flying Doc.

OK, die Idee mit startx Programmname sollte eigentlich nicht funktionieren, da startx nicht unbedingt auf das angefügte Programm reagiert.

ABER ....

es gibt eine Datei mit Namen .xinitrc. Schau dir das ganze mal unter :

http://www.x.org/archive/X11R6.8.1/doc/startx.1.html

an, dann sollte das mit deinem Programm sofort und ohne Probleme laufen.

 

Link to comment
Share on other sites

Das Programm hat eine graphische Oberfläche und ist unter QT entwickelt.

Es ist auch lauffähig und lässt sich aus der Console mit "startx ./Touch" starten.

 

Dabei ist es egal ob das Desktop Environment schon gestartet ist oder nicht.

Wenn der RED nur in der Console startet läst sich das Programm starten in dem man in das Verzeichnis wechselt und dann mit dem oberen Aufruf also "startx ./Touch" ausführt.

 

Es geht darum das der RED automatisch bis in das Programm hochfährt ohne das der "normale" User etwas machen muß oder darf.

Link to comment
Share on other sites

So. Hab endlich zum laufen gebracht.

Ich hatte zwar vorher schon die Display Variable mit eingetragen, da ging es aber kommischer Weise nicht.

Hab es jetzt nochmal probiert und es geht.

Es ist zwar noch nicht ganz so wie ich es mir vorgestellt habe, der Desktop ist kurz zu sehen, aber es funtioniert.

 

Wenn ich aus der Console mit startx ./Touch starte bekommt man den Desktop garnicht erst zu Gesicht und bei Programmende ist er auch nicht zu sehen.

 

Könnte man sowas nicht als Startparameter hinterlegen.

Sozusagen gibt man an ob das Programm den Desktop vorher starten soll.

z.B. "RunGUI    Yes" oder ähnlich. :o

Link to comment
Share on other sites

Mit "startx ./Touch" startest du dein Touch Programm als graphische Oberfläche anstatt des LXDE Desktops. Das ist so von uns erstmal nicht direkt vorgesehen.

 

Vorgesehen ist, das der LXDE Desktop startet und dann dein Programm darauf angezeigt wird.

 

Was du testen kannst ist folgendes:

 

- Auf dem Services Tab den Desktop abstellen

- Dein Programm als Shell Programm hochladen

- Beim Shell Programm "Command" statt "Script" wählen und dort "startx ./Touch" eintragen

- Unter Environment nicht DISPLAY angeben, weil dann der redapid darauf wartet, dass der LXDE Desktop gestartet ist, bevor er dein Programm startet.

 

Das sollte so funktionieren, ich habe es aber nicht getestet.

Link to comment
Share on other sites

Hab gerade noch einmal geschaut was der Fehler bedeutet.

 

Ist wieder eine Rechte Sache.

 

Laut Info

tf@red-brick:~/programs/PTZ$ ls -l ~/.Xauthority
-rw------- 1 tf tf 0 Dec 10 04:15 /home/tf/.Xauthority
tf@red-brick:~/programs/PTZ$ sudo chown user ~/.Xauthority
[sudo] password for tf:
chown: invalid user: ‘user’
tf@red-brick:~/programs/PTZ$

 

Link to comment
Share on other sites

Wenn dann muss es

 

sudo chown tf ~/.Xauthority

 

lauten. Mit chwon änderst du den Besitzer einer Datei. Den Nutzer user gibt es nicht auf dem RED Brick. Der Nutzer heißt tf.

 

Das wird potentiell nicht helfen. Du kannst testweise xauth auch abstellen mittels "xhost +". Damit hat dann jeder Zugriff auf den X Server. Dafür "startx ./Touch" durch

 

xhost +; startx ./Touch

 

für das Starten deines Programms ersetzen.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...