Hallo!
Nachdem ich nun endlich zum Ziel gekommen bin und LINVDR beigebracht habe, meine
Tasten an der Frontblende zu benutzen, möchte ich euch nicht vorenthalten, wie es geht.
An dieser Stelle möchte ich mich bei allen bedanken, die mir geholfen haben mit Tipps und Ideen.
Besonders MarcTwain, der das Joystick Plugin in seinem neuen Patch mit eingespielt hat.
Warum Joystick Plugin?
Der Gameport ist meist neben Com und Parport der einzige Freie Port, den
man zum Abfragen von Tasten benutzen kann. In der Version 0.0.3 kann man mit dem Plugin
4 Taster abfragen (4 mal Feuerknöpfe) und 4 Achsenbewegungen. Somit ist ohne Multiplexen eine Abfrage von 8 Knöpfen
problemlos möglich. Wer mehr braucht sollte mal bei powarman(Entwickler) vorbeischauen.
Mir gehts um die 6 Knöpfe an der Frontblende meines Lintec-Gehäuses.
Ein paar kleine Änderungen waren an der Hardware nötig, um dem System einen Joystick vorzugaukeln.
Man braucht also keinen Joystick auszuschlachten.
LINVDR 0.7 fehlt es in der Grundkonfiguration an folgenden Modulen, die benötigt werden:
ns558 (Modul für den gameport der Soundkarte) und analog (Modul für Analog Joysticks)
Es gibt noch eine Reihe anderer Module für diverse Joysticks z.B Sidewinder.
Die benötigen wir aber nicht für die Abfrage der Tasten.
ns558 ist das passende Modul für den gameport der Soundkarte und funktioniert mit den gängigsten Typen.
Allerdings gibst es auch Ausnahmen, z.B ältere Isa-Boards und einige Soundblaster-Karten.
Bei meiner On-Board AC97 kompatiblen Soundkarte gabs keine Probleme.
Wie kommen wir zu den Modulen?
Leider führt der Weg dorthin nur über das Neukompilieren des Kernels mit den aktivierten Modulen.
Falls jemand eine einfachere Idee hat, möchte er sie bitte mitteilen.
Jetzt mein Weg, der funktioniert hat:
Zuerst brauchen wir einen Compiler, welchen wir am besten nach der Anleitung von LINVDR.org installieren.
Q: Wie kann ich VDR neu Kompilieren ohne eine seperate Entwicklungsumgebung zu installieren?
Ein Compiler kann wie folgt installiert werden.
1)
debtool -u
debtool -i gcc-2.95 make libc6-dev cpp-2.95 libjpeg62-dev binutils libstdc++2.10-dev g++-2.95
ln -s /usr/bin/gcc-2.95 /usr/bin/gcc
ln -s /usr/bin/gcc /usr/bin/cc
ln -s /usr/bin/g++-2.95 /usr/bin/g++
2)
debtool -u
debtool -i debootstrap
debootstrap woody /opt/woody
cp -a /etc/resolv.conf /opt/woody/etc
Hier nicht vergessen sources.list nach /opt/woody/etc/apt
Hier die passende sources.list:
deb http://ftp.de.debian.org/debian/ stable main non-free contrib
deb-src http://ftp.de.debian.org/debian/ stable main non-free contrib
deb-src http://ftp.de.debian.org/debian/ testing main non-free contrib
deb http://ftp.de.debian.org/debian-non-US stable/non-US main contrib non-free
deb-src http://ftp.de.debian.org/debian-non-US stable/non-US main contrib non-fr
ee
deb http://security.debian.org/ stable/updates main contrib non-free
Dann:
chroot /opt/woody
apt-get update
apt-get upgrade
apt-get install g++ less make bzip2 wget
Kernelsourcen von http://kernel.org holen, nach /usr/src entpacken.
Symlink setzen
ln -s /usr/src/linux.2.6.9 /usr/src/ linux
Jetzt benötigen wir die "alte" config Datei, in denen die Einstellungen für den Kernel
von LINVDR hinterlegt sind. Die Datei legt in /proc und heisst config.gz.
Die Datei auspacken und nach /usr/src/linux-2.6.9/ kopieren. Die Datei muss .config heissen!!!
Nun editieren wir die .config
Leichter tun wir uns mit dem Midnight Commander, den wir wie unter Linvdr.org beschrieben installieren.
In der .config ändern wir:
#
# Input I/O drivers
#
CONFIG_GAMEPORT=m
CONFIG_SOUND_GAMEPORT=m
CONFIG_GAMEPORT_NS558=m # ns558 als Modul
# CONFIG_GAMEPORT_L4 is not set
# CONFIG_GAMEPORT_EMU10K1 is not set
# CONFIG_GAMEPORT_VORTEX is not set
# CONFIG_GAMEPORT_FM801 is not set
# CONFIG_GAMEPORT_CS461x is not set
CONFIG_SERIO=y
CONFIG_SERIO_I8042=y
CONFIG_SERIO_SERPORT=m
# CONFIG_SERIO_CT82C710 is not set
# CONFIG_SERIO_PARKBD is not set
# CONFIG_SERIO_PCIPS2 is not set
# CONFIG_SERIO_RAW is not set
#
# Input Device Drivers
#
CONFIG_INPUT_KEYBOARD=y
CONFIG_KEYBOARD_ATKBD=y
# CONFIG_KEYBOARD_SUNKBD is not set
# CONFIG_KEYBOARD_LKKBD is not set
# CONFIG_KEYBOARD_XTKBD is not set
# CONFIG_KEYBOARD_NEWTON is not set
# CONFIG_INPUT_MOUSE is not set
CONFIG_INPUT_JOYSTICK=y # bei Y werden wir bei make oldconfig nach dem Joystick befragt
CONFIG_JOYSTICK_ANALOG=m # analog als Modul
CONFIG_JOYSTICK_A3D=m
CONFIG_JOYSTICK_ADI=m
CONFIG_JOYSTICK_COBRA=m
CONFIG_JOYSTICK_GF2K=m
CONFIG_JOYSTICK_GRIP=m
CONFIG_JOYSTICK_GRIP_MP=m
CONFIG_JOYSTICK_GUILLEMOT=m
CONFIG_JOYSTICK_INTERACT=m
CONFIG_JOYSTICK_SIDEWINDER=m
CONFIG_JOYSTICK_TMDC=m
CONFIG_JOYSTICK_IFORCE=m
# CONFIG_JOYSTICK_IFORCE_USB is not set
# CONFIG_JOYSTICK_IFORCE_232 is not set
# CONFIG_JOYSTICK_WARRIOR is not set
# CONFIG_JOYSTICK_MAGELLAN is not set
# CONFIG_JOYSTICK_SPACEORB is not set
# CONFIG_JOYSTICK_SPACEBALL is not set
# CONFIG_JOYSTICK_STINGER is not set
# CONFIG_JOYSTICK_TWIDDLER is not set
# CONFIG_JOYSTICK_DB9 is not set
# CONFIG_JOYSTICK_GAMECON is not set
# CONFIG_JOYSTICK_TURBOGRAFX is not set
# CONFIG_JOYSTICK_JOYDUMP is not set
# CONFIG_INPUT_TOUCHSCREEN is not set
# CONFIG_INPUT_MISC is not set
Ich habe hier mehrere Joysticktypen probiert.
Nun die geänderte DAtei speichern und mit make oldconfig gehts los!
Sind noch Einstellungen unklar, kommt eine Abfrage.
Bitte genau lesen.
Nun compilieren wir mit make den Kernel. (Kaffepause...)
Dann die Module: make modules
Ist soweit alles durchgelaufen, können wir die Module installieren:
make modules_install
Das wars eigentlich schon. Das Kernelimage brauchen wir in diesem Fall nicht,
da wir ja sonst nichts geändert haben. (Schlagt mich, wenns nicht stimmt, aber bei mir läufst stabil!)
Jetzt haben wir die Module.
Leider fehlt auch das Testprogramm jstest und die devices js0 bis js3.
Wo kriegen wir die her?
Devices:
Anlegen wie in der Kernel Doku beschrieben:
cd /dev
rm js*
mkdir input
mknod input/js0 c 13 0
mknod input/js1 c 13 1
mknod input/js2 c 13 2
mknod input/js3 c 13 3
ln -s input/js0 js0
ln -s input/js1 js1
ln -s input/js2 js2
ln -s input/js3 js3
Das Programm jstest habe ich aus dem Joystick-Paket joystick-1.2.15, welches man hier
joystick-1.2.15 downloaden kann.
Nach /usr/src/ entpacken.
Im Verzeichnis /usr/src/joystick-1.2.15 kompilieren wir jstest:
make jstest (mehr brauchen wir aus diesem Paket nicht)
mit install -c jstest /usr/bin installieren wir das Programm.
So, nun wird ernst. Jetzt sollte der Joystick angeschlossen sein.
Wir laden die Module testweise von Hand:
modprobe gameport
modprobe ns558
modprobe analog
modprobe joydev
Gabs bis hier keine Fehlermeldung - alles ok.
Mit dmesg kann man jetzt überprüfen, ob ein Joystick gefunden wurde.
z.B:
gameport: NS558 ISA at 0x201 speed 1084 kHz
input: Analog 4-axis 4-button joystick at isa0201/gameport0 [TSC timer, 1294 MHz clock, 934 ns res]
Nun kommt das Programm jstest zum Einsatz:
jstest /dev/js0
Nun sollte die Ausgabe wie folgt aussehen:
Joystick (Analog 4-axis 4-button joystick) has 4 axes and 4 buttons. Driver version is 2.1.0.
Testing ... (interrupt to exit)
Axes: 0: 0 1: 0 2: 0 3: 0 Buttons: 0:off 1:off 2:off 3:on
Jeder Tastendruck oder Axenbewegung des Joysticks wird angezeigt.
Mit STRG-C beenden wir das Programm.
Alles ok? Prima!
Jetzt bringen wir LINVDR bei, die Module bei jedem Start automatisch zu laden:
Die Datei /etc/init.d/boot.local editieren oder neu anlegen, wenn nicht vorhannden.
Am Ende tragen wir ein:
#joystick driver
execute modprobe gameport
execute modprobe joydev
execute modprobe ns558
execute modprobe analog
somit werden die Module automatisch geladen.
So, nun muss man nur noch VDR beibringen, mit dem Joystick zu sprechen.
Dazu brauchen wir das Joystick Plugin, welches MarcTwain in seinem Patch
vom 14.04.2005 eingebaut hat: http://www.vdr-portal.de/board/thread.php?threadid=32838&sid=
Jetzt nur noch Anlernen, wie gewohnt und los gehts!
Noch ein Tipp wegen dem anlernen: Bei nur 6 Tasten hat man die ersten bereist mit Auf Ab und Menu belegt, die das Anlernprogramm für die Bedienung braucht. Die ändern wir einfach hinterher von Hand ab in der /etc/vdr/remote.conf. Dabei kann man sich die benötigte Funktion bei Keyboard oder LIRC abgucken. meine remote.conf (Joystick-teil):
Joystick.User1 Axis0Button0
Joystick.Down Axis1Button0
Joystick.Left Button0
Joystick.Pause Button1
Joystick.Right Button2
Joystick.Up Button3
(Ich habe hier die erste Taste über die keymacros.conf mit command 2 verknüpft, um damit die CD auszuwerfen)
Jene, welche den Kernel von DarkAngel verwenden müssen natürlich die entsprechenden Sourcen verwenden
und evt. DarkAngel um das config-file bitten!
Schön wäre es natürlich, wenn DarKAngel diese Module in seinem nächsten Kernel mit einbaut.
Wenns nicht klappt, fragen Sie Ihren Arzt oder Apotheker...
Falls jemand speziell zum Lintec Fragen hat oder zur Hardware für dieses
Projekt meldet Euch!
So long..