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/
Antworten
dsiggi
BlinkenNewbie
BlinkenNewbie
Beiträge: 8
Registriert: Sa Mai 21, 2005 12:30 pm

BlinkenLEDS, Kernel 2.6.11.7 und der bmdrv_led

Beitrag von dsiggi » Fr Jul 08, 2005 5:56 pm

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: Alles auswählen

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: Alles auswählen

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?

Benutzeravatar
stefan
Blinkenizer
Blinkenizer
Beiträge: 234
Registriert: Mi Okt 09, 2002 9:45 pm
Wohnort: Aachen
Kontaktdaten:

Beitrag von stefan » Fr Jul 08, 2005 7:42 pm

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
Beiträge: 8
Registriert: Sa Mai 21, 2005 12:30 pm

Beitrag von dsiggi » Fr Jul 08, 2005 8:16 pm

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: Alles auswählen

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

Benutzeravatar
stefan
Blinkenizer
Blinkenizer
Beiträge: 234
Registriert: Mi Okt 09, 2002 9:45 pm
Wohnort: Aachen
Kontaktdaten:

Beitrag von stefan » Sa Jul 09, 2005 12:53 pm

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
Beiträge: 8
Registriert: Sa Mai 21, 2005 12:30 pm

Beitrag von dsiggi » Sa Jul 09, 2005 2:24 pm

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

Code: Alles auswählen

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

Code: Alles auswählen

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

Benutzeravatar
stefan
Blinkenizer
Blinkenizer
Beiträge: 234
Registriert: Mi Okt 09, 2002 9:45 pm
Wohnort: Aachen
Kontaktdaten:

Beitrag von stefan » So Jul 10, 2005 3:54 pm

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
Beiträge: 8
Registriert: Sa Mai 21, 2005 12:30 pm

Beitrag von dsiggi » So Jul 10, 2005 6:34 pm

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: Alles auswählen

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

dsiggi

Benutzeravatar
stefan
Blinkenizer
Blinkenizer
Beiträge: 234
Registriert: Mi Okt 09, 2002 9:45 pm
Wohnort: Aachen
Kontaktdaten:

Beitrag von stefan » So Jul 10, 2005 9:46 pm

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

Benutzeravatar
stefan
Blinkenizer
Blinkenizer
Beiträge: 234
Registriert: Mi Okt 09, 2002 9:45 pm
Wohnort: Aachen
Kontaktdaten:

Beitrag von stefan » Mo Jul 11, 2005 12:29 am

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
Beiträge: 8
Registriert: Sa Mai 21, 2005 12:30 pm

Beitrag von dsiggi » Mo Jul 11, 2005 4:52 pm

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: Alles auswählen

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

dsiggi

Benutzeravatar
stefan
Blinkenizer
Blinkenizer
Beiträge: 234
Registriert: Mi Okt 09, 2002 9:45 pm
Wohnort: Aachen
Kontaktdaten:

Beitrag von stefan » Mo Jul 11, 2005 5:07 pm

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

Antworten