Hi,
ich hab auf meinem PC SuSE Linux 9.2 mit dem Kernel 2.6.11.7. Hab hier im Forum ein bisschen gesucht und eine angepasste Version des Kernelmodules "bmdrv_leds" gefunden.
In der README heißt es man soll ./build26 ausführen. Als ich das gemacht habe kam folgende Meltung:
make: *** /usr/src/linux-2.6: Datei oder Verzeichnis nicht gefunden. Schluss.
Darauf hin habe ich einen Link Namens linux-2.6 erstellt der auf das Verzeichnis linux-2.6.11.7 verweist. Dann habe ich ./build26 noch mal ausgeführt und bekomme nun folgende Meltung:
make: Entering directory `/usr/src/linux-2.6.11.7'
CC [M] /home/siggi/Desktop/bmdrv_leds-0.2.1/bmdrv_leds.o
/home/siggi/Desktop/bmdrv_leds-0.2.1/bmdrv_leds.c:141: Warnung: function declaration isn't a prototype
/home/siggi/Desktop/bmdrv_leds-0.2.1/bmdrv_leds.c: In Funktion »BmDrvOutFileOpen«:
/home/siggi/Desktop/bmdrv_leds-0.2.1/bmdrv_leds.c:217: error: `MOD_INC_USE_COUNT' undeclared (first use in this function)
/home/siggi/Desktop/bmdrv_leds-0.2.1/bmdrv_leds.c:217: error: (Each undeclared identifier is reported only once
/home/siggi/Desktop/bmdrv_leds-0.2.1/bmdrv_leds.c:217: error: for each function it appears in.)
/home/siggi/Desktop/bmdrv_leds-0.2.1/bmdrv_leds.c: In Funktion »BmDrvOutFileClose«:
/home/siggi/Desktop/bmdrv_leds-0.2.1/bmdrv_leds.c:267: error: `MOD_DEC_USE_COUNT' undeclared (first use in this function)
make[1]: *** [/home/siggi/Desktop/bmdrv_leds-0.2.1/bmdrv_leds.o] Fehler 1
make: *** [_module_/home/siggi/Desktop/bmdrv_leds-0.2.1] Fehler 2
bmdrv_leds ist veraltet und leider noch nicht wirklich auf Kernel 2.6 portiert. Schmeiss einfach die Zeilen mit MOD_INC/DEC_USE_COUNT raus (das gibt es im Kernel 2.6 nicht mehr und das wird auch nicht benötigt). Die Warnungen kannst Du ignorieren.
da scheinen auf einmal komische Sonderzeichen in der Zeile 1 aufgetaucht zu sein. Könnte es sein, dass Du die da beim Editieren der Datei irgendwie hingebaut hast?
ake: Entering directory `/usr/src/linux-2.6.11.7'
CC [M] /home/siggi/Desktop/bmdrv_leds-0.2.1/bmdrv_leds.o
/home/siggi/Desktop/bmdrv_leds-0.2.1/bmdrv_leds.c:1: error: Fehler beim Parsen before '.' token
/home/siggi/Desktop/bmdrv_leds-0.2.1/bmdrv_leds.c:4:33: ungültiger Suffix »stein« an Ganzzahlkonstante
In file included from include/linux/kernel.h:10,
from /home/siggi/Desktop/bmdrv_leds-0.2.1/bmdrv_leds.c:21:
/usr/lib/gcc-lib/i586-suse-linux/3.3.4/include/stdarg.h:105: error: Fehler beim Parsen before "va_list"
In file included from /home/siggi/Desktop/bmdrv_leds-0.2.1/bmdrv_leds.c:21:
include/linux/kernel.h:84: error: Fehler beim Parsen before "va_list"
include/linux/kernel.h:84: Warnung: function declaration isn't a prototype
include/linux/kernel.h:87: error: Fehler beim Parsen before "va_list"
include/linux/kernel.h:87: Warnung: function declaration isn't a prototype
include/linux/kernel.h:90: error: Fehler beim Parsen before "va_list"
include/linux/kernel.h:90: Warnung: function declaration isn't a prototype
include/linux/kernel.h:94: error: Fehler beim Parsen before "va_list"
include/linux/kernel.h:94: Warnung: function declaration isn't a prototype
include/linux/kernel.h:104: error: Fehler beim Parsen before "va_list"
include/linux/kernel.h:104: Warnung: function declaration isn't a prototype
/home/siggi/Desktop/bmdrv_leds-0.2.1/bmdrv_leds.c:141: Warnung: function declaration isn't a prototype
make[1]: *** [/home/siggi/Desktop/bmdrv_leds-0.2.1/bmdrv_leds.o] Fehler 1
make: *** [_module_/home/siggi/Desktop/bmdrv_leds-0.2.1] Fehler 2
make: Leaving directory `/usr/src/linux-2.6.11.7'
Allerdings habe ich hier mit Kernel 2.6 noch ein paar Probleme beim Zugriff auf den Parallelport in Zusammenhang mit diesem "hotplug" - der schaltet mit immer per PnP den Parallelport weg, wenn ich die "parport_pc" und "parport" Module rauswerfe um "bmdrv" zu laden...
Hi,
also deine verbessert Version hat jetzt soweit funktioniert.
Ich hab jetzt "./build26" ausgeführt und dann die Dateien "bmdrv_leds.ko und bmdrv_leds.o" nach /lib/modules/2.6.11.7/bmdrv_leds kopiert. Auf die Datei "bmdrv_leds.o" hab ich dann chmod 666 angewandt. Dann hab ich "mknod bmdrv.out c 176 0" im Verzeichnis dev ausgeführt und darauf chmod 666 angewandt. Bei dem Befehl "insmod bmdrv_leds.o io=0x378" bekomme ich nun folgende Meltung:
Ich hatte ja erwähnt, dass ich Probleme unter Linux 2.6 habe, da Linux mit den Parallelport per PnP abschaltet, wenn ich parport_pc entlade...
Ich habe dieses Problem jetzt gelöst und diese Lösung in den schon länger hier fast fertig herumliegenden Treiber "lldrv" [1] eingebaut. Ab der Version 1.2 [2] unterstützt "lldrv" nun alle Arten von 18x8-Parallelport-Blinkereien (LittleLights, BlinkenLEDs, BlinkenLEDsPro, BLINKENmini). Man muss nur beim Laden des Moduls ein paar Optionen angeben.
Mit "lldrv" ist dann auch das Format von "/dev/lldrv" direkt das Streaming-Protokoll. D.h. man kann die Streams mit "netcat -w 86400 -l -u -p 2323 >/dev/lldrv" direkt empfangen und benötigt kein eigenes Konverter-Programm mehr.
Für ein normales BlinkenLEDs ohne Graustufen sollte "insmod lldrv.ko io=0x378" und "mknod /dev/lldrv c 176 0; chown 666 /dev/lldrv" den gewünschten Erfolg bringen. Da ich keine BlinkenLEDs habe, kann ich das hier leider nicht testen, aber mit BLINKENmini und "io=0x378 irq=7 hw=1 gamma=20" läuft es hier wunderbar.
Hi,
entschuldigung das ich scho wieder mit einem Fehler nerve, aber ich kenn mich halt mit Linux noch nicht so super aus.
Das "make" hat diesmal einwandfrei funktioniert. Den alten Parallelporttreiber konnte ich nicht entladen das Modul "paraport_pc" nicht existiert. Okay, hab ch mit "insmod lldrv.ko io=0x378" bekomme ich nun folgende Meltung:
Dieser Fehler kommt immer, wenn ein Modul sich nicht laden will. - Aber prinzipiell hast Du schon Recht, der Fehler bedeutet eigentlich, dass man keine Rechte zu etwas hat.
"lldrv" gibt im Kernel-Log Hinweise aus, warum es sich nicht laden will. Ich weiss gerade nicht genau, wo unter Suse der Kernel-Log landet, aber "tail /var/log/kern.log" oder "tail /var/log/messages" oder sowas, sollte die letzten 10 Zeilen der Kernel-Logs an Licht befördern.
Ich schick' dir mal per PN ein paar Instant-Messenger-Daten von mir - dann geht das etwas schneller...