BlinkenLEDS, Kernel 2.6.11.7 und der bmdrv_led

hier kann alles besprochen werden, was BLINKENmini betrifft - siehe auch http://blinkenmini.schuermans.info/ oder https://blinkenmini.schuermans.info/
Post Reply
dsiggi
BlinkenNewbie
BlinkenNewbie
Posts: 8
Joined: Sat May 21, 2005 12:30 pm

BlinkenLEDS, Kernel 2.6.11.7 und der bmdrv_led

Post by dsiggi »

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:

Code: Select all

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:

Code: Select all

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
An was kann das liegen?
User avatar
stefan
Blinkenizer
Blinkenizer
Posts: 234
Joined: Wed Oct 09, 2002 9:45 pm
Location: Aachen
Contact:

Post by stefan »

Hallo dsiggi,

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.

Gruß,
Stefan
dsiggi
BlinkenNewbie
BlinkenNewbie
Posts: 8
Joined: Sat May 21, 2005 12:30 pm

Post by dsiggi »

Hi,
also ich hab mal die beiden Zeilen aus der bmdrv_leds.c gelöscht und noch mal ./build26 ausgeführt.
Nun bekomme ich aber folgenden Fehler:

Code: Select all

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:1: error: stray '\357' in program
/home/siggi/Desktop/bmdrv_leds-0.2.1/bmdrv_leds.c:1: error: stray '\273' in program
/home/siggi/Desktop/bmdrv_leds-0.2.1/bmdrv_leds.c:1: error: stray '\277' in program
/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'
dsiggi
User avatar
stefan
Blinkenizer
Blinkenizer
Posts: 234
Joined: Wed Oct 09, 2002 9:45 pm
Location: Aachen
Contact:

Post by stefan »

Hallo dsiggi,

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?

Gruß,
Stefan
dsiggi
BlinkenNewbie
BlinkenNewbie
Posts: 8
Joined: Sat May 21, 2005 12:30 pm

Post by dsiggi »

Hi,
also hab mir noch mal die bmdrv_leds.c angeschaut. Die erste zeile lautete so:

Code: Select all

 /* bmdrv_leds.c
Hab dann mal das / entfernt und noch mal build26.sh ausgeführt.
Jetzt kommt folgende Meltung:

Code: Select all

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'
dsiggi
User avatar
stefan
Blinkenizer
Blinkenizer
Posts: 234
Joined: Wed Oct 09, 2002 9:45 pm
Location: Aachen
Contact:

Post by stefan »

Nein, das "/*" am Anfang ist schon richtig so, das zeigt den Beginn von Kommentar an...

Ich weiss jetzt auch nicht, was genau da schief' läuft. Ich habe mal eine angepasste Version gemacht:

http://blinkenmini.schuermans.info/bmdr ... .2.tar.bz2

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...

Bin mal gespannt, was jetzt schief geht... *g

Gruß,
Stefan
dsiggi
BlinkenNewbie
BlinkenNewbie
Posts: 8
Joined: Sat May 21, 2005 12:30 pm

Post by dsiggi »

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:

Code: Select all

nsmod: can't read 'bmdrv_out.ko': No such file or directory
An was liegt das nun?

dsiggi
User avatar
stefan
Blinkenizer
Blinkenizer
Posts: 234
Joined: Wed Oct 09, 2002 9:45 pm
Location: Aachen
Contact:

Post by stefan »

Verbesserte Version ist gut... Ich habe im Prinzip nur die Zeilen MOD_INC/DEC_USE_COUNT für Kenels ab 2.4 aufwärts rausgenommen...

Unter Linux-2.6 heißen die Kernel-Module nun "*.ko". Das heißt, es muss "insmod bmdrv_leds.ko io=0x378" heißen.

Gruß,
Stefan
User avatar
stefan
Blinkenizer
Blinkenizer
Posts: 234
Joined: Wed Oct 09, 2002 9:45 pm
Location: Aachen
Contact:

Post by stefan »

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.

Gruß,
Stefan

[1] http://1stein.blinkenarea.org/lldrv/
[2] http://1stein.blinkenarea.org/lldrv/lld ... 10.tar.bz2
dsiggi
BlinkenNewbie
BlinkenNewbie
Posts: 8
Joined: Sat May 21, 2005 12:30 pm

Post by dsiggi »

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:

Code: Select all

insmod: error inserting 'lldrv.ko': -1 Operation not permitted
So weit ich des verstehe, habe ich keine Rechte dazu.

dsiggi
User avatar
stefan
Blinkenizer
Blinkenizer
Posts: 234
Joined: Wed Oct 09, 2002 9:45 pm
Location: Aachen
Contact:

Post by stefan »

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...

Gruß,
Stefan
Post Reply