BlinkenLEDs Pro Graustufentreiber für Linux
BlinkenLEDs Pro Graustufentreiber für Linux
Hi,
hat schon mal jemand den bmdrv_leds-0.2 für die Graustufenausgabe des BlinkenLEDs Pro angepaßt?
Liebe Grüße, Oliver
hat schon mal jemand den bmdrv_leds-0.2 für die Graustufenausgabe des BlinkenLEDs Pro angepaßt?
Liebe Grüße, Oliver
Für BlinkenLedsPro kann man den LittleLights-Treiber verwenden:
http://1stein.blinkenarea.org/lldrv-1.1 ... 03.tar.bz2
Den habe ich gerade auch mal auf Linux 2.6 portiert...
http://1stein.blinkenarea.org/lldrv-1.1 ... 03.tar.bz2
Den habe ich gerade auch mal auf Linux 2.6 portiert...
Hallo, ich freue mich, dass mein BlinkenLEDsPro funktioniert (unter Windows getestet).
Unter Linux habe ich leider Probleme. Ich kann das LittleLights-Modul zwar kompilieren, aber nicht laden. Ich benutze den 2.6.10-gentoo-r4-Kernel. Die Fehlermeldung war:
Operation not permitted
Liebe Gruesse
Steffi
Unter Linux habe ich leider Probleme. Ich kann das LittleLights-Modul zwar kompilieren, aber nicht laden. Ich benutze den 2.6.10-gentoo-r4-Kernel. Die Fehlermeldung war:
Operation not permitted
Liebe Gruesse
Steffi
Dann müsste im Kenel-Log stehen, was da schief gegangen ist. Ich vermute einfach mal, dass beim insmod-Kommando kein io- und kein irq-Parameter angegeben wurde. So ist es z.B. auf den meisten PCs für den 1. Parallelport richtig:
Damit sollte sich das Modul dann auch laden lassen.
Gruß,
Stefan
EDIT: Vielleicht sollte ich direkt auch noch sagen, wie man dann einen Blinken-Stream zur Anzeige bringt:
Dann kann man an localhost:2323 einfach einen UDP-Blinkenlights-Stream senden (z.B. mit dem original blccc).
Code: Select all
insmod lldrv.ko io=0x378 irq=7
Gruß,
Stefan
EDIT: Vielleicht sollte ich direkt auch noch sagen, wie man dann einen Blinken-Stream zur Anzeige bringt:
Code: Select all
mknod /dev/lldrv c 176 0
netcat -u -l -p 2323 >/dev/lldrv
hi,
ich hab mir auf dem 22c3 den BlinkenLedsPro bausatz gekauft. schön gelötet und unter windows läufts auch einwandfrei. unter linux kriege ich weder mit dem lldrv noch dem bmdrv-leds kernelmodul kontrolle über die leds.
ich hab ein ibm x31 laptop und der (erste, einzige) parallel port ist laut bios unter 0x378 zu erreichen. das gebe ich beim modulladen auch mit an und alles scheint erfolgreich, nur es geht eben nichts raus aus dem port.
kernel: 2.6.13.4
ich hab es mit und ohne geladenem parport modul probiert. auch mit einem debian stock-kernel.
beispieltest:
# insmod bmdrv_leds.ko io=0x378
# mknod /dev/bmdrv.out c 176 0
# chmod 666 /dev/bmdrv.out
# cp test.bmbm /dev/bmdrv.out
--- hier kommt eine pause, ich nehme an genau die zeit des films
nur leider bleiben die leds aus bzw. an, je nach vorladung.
für den entscheidenden tipp wäre ich sehr dankbar!
im fall lldrv weiss ich nicht genau wie ich (mit dem blccc) einen geeigneten stream erzeuge, um das hörende netcat -> das device zu füttern...
ich hab mir auch mal die sourcen der treiber angeschaut, es werden doch in beiden fällen schon beim modulladen standardbilder angezeigt, die bleiben auch aus.
ich hab mir auf dem 22c3 den BlinkenLedsPro bausatz gekauft. schön gelötet und unter windows läufts auch einwandfrei. unter linux kriege ich weder mit dem lldrv noch dem bmdrv-leds kernelmodul kontrolle über die leds.
ich hab ein ibm x31 laptop und der (erste, einzige) parallel port ist laut bios unter 0x378 zu erreichen. das gebe ich beim modulladen auch mit an und alles scheint erfolgreich, nur es geht eben nichts raus aus dem port.
kernel: 2.6.13.4
ich hab es mit und ohne geladenem parport modul probiert. auch mit einem debian stock-kernel.
beispieltest:
# insmod bmdrv_leds.ko io=0x378
# mknod /dev/bmdrv.out c 176 0
# chmod 666 /dev/bmdrv.out
# cp test.bmbm /dev/bmdrv.out
--- hier kommt eine pause, ich nehme an genau die zeit des films
nur leider bleiben die leds aus bzw. an, je nach vorladung.
für den entscheidenden tipp wäre ich sehr dankbar!
im fall lldrv weiss ich nicht genau wie ich (mit dem blccc) einen geeigneten stream erzeuge, um das hörende netcat -> das device zu füttern...
ich hab mir auch mal die sourcen der treiber angeschaut, es werden doch in beiden fällen schon beim modulladen standardbilder angezeigt, die bleiben auch aus.
Mit Linux 2.6 gibt es mit den alten Modulen schonmal Probleme wegen Plug&Play...
Schau doch einfach zwei Beiträge höher:
(ohne parport-Modul)
Das Device-File legst du dann mit an (bmdrv.out vorher löschen)
Für die Ausgabe der Streams gibt es mittlerweile ein Programm (BlinkenOutput), so dass man nicht mehr mit netcat rumfummeln muss.
und zum senden der Filme
Diese beiden Programme sind Teil der BlinkenLib: http://1stein.blinkenarea.org/BlinkenLib/
Gruß,
Stefan
Schau doch einfach zwei Beiträge höher:
Code: Select all
insmod lldrv.ko io=0x378 irq=7
Das Device-File legst du dann mit
Code: Select all
mknod /dev/lldrv c 176 0; chmod 666 /dev/lldrv
Für die Ausgabe der Streams gibt es mittlerweile ein Programm (BlinkenOutput), so dass man nicht mehr mit netcat rumfummeln muss.
Code: Select all
BlinkenOutput -l 127.0.0.1:2323 -p MCUF -f 18x8-1/256 -d /dev/lldrv -o 500
Code: Select all
BlinkenSend -d 127.0.0.1:2323 -i movie.bml
Gruß,
Stefan
Vielen Dank für die Tipps!
Leider hat es das Problem aber noch nicht gelöst, ich habe genau deine Schritte befolgt und es gab auch keine Fehlermeldungen, aber die LEDs bleiben nach wie vor davon unbeeindruckt. Es scheint mir so, als gäbe es eine art Mauer am Parallel port. Ich werde es später nochmal mit dem neuen kernel 2.6.15 testen.
Danke nochmal!
Leider hat es das Problem aber noch nicht gelöst, ich habe genau deine Schritte befolgt und es gab auch keine Fehlermeldungen, aber die LEDs bleiben nach wie vor davon unbeeindruckt. Es scheint mir so, als gäbe es eine art Mauer am Parallel port. Ich werde es später nochmal mit dem neuen kernel 2.6.15 testen.
Danke nochmal!
nun mit kernel 2.6.15:
zunächst musste ich (in lldrv.c) die beiden aufrufe von "verify_area" in "access_ok" ändern, der symbolname im kernelcode hat sich geändert.
anschliessend:
insmod lldrv.ko io=0x378 irq=7
dmesg output:
lldrv: LittleLights driver
lldrv: kernel driver for LittleLights / BlinkenLEDs(Pro) / BLINKENmini
lldrv: version 1.2.1 date 2005-07-11
lldrv: Copyright (C) 2004-2005 ST <st@littlelights.de> & 1stein <1stein@schuermans.info>
lldrv: Copyleft: GNU public license - http://www.gnu.org/copyleft/gpl.html
lldrv: trying to load (io=0x378 irq=7 hw=0 gamma=10)...
lldrv: loaded (io=0x378 irq=7 hw=0 gamma=10)...
./BlinkenOutput -l 127.0.0.1:2323 -p MCUF -f 18x8-1/256 -d /dev/lldrv -o 500
receiving frames and outputting them to "/dev/lldrv"...
error reading from device
output to device stopped...
any idea?
zunächst musste ich (in lldrv.c) die beiden aufrufe von "verify_area" in "access_ok" ändern, der symbolname im kernelcode hat sich geändert.
anschliessend:
insmod lldrv.ko io=0x378 irq=7
dmesg output:
lldrv: LittleLights driver
lldrv: kernel driver for LittleLights / BlinkenLEDs(Pro) / BLINKENmini
lldrv: version 1.2.1 date 2005-07-11
lldrv: Copyright (C) 2004-2005 ST <st@littlelights.de> & 1stein <1stein@schuermans.info>
lldrv: Copyleft: GNU public license - http://www.gnu.org/copyleft/gpl.html
lldrv: trying to load (io=0x378 irq=7 hw=0 gamma=10)...
lldrv: loaded (io=0x378 irq=7 hw=0 gamma=10)...
./BlinkenOutput -l 127.0.0.1:2323 -p MCUF -f 18x8-1/256 -d /dev/lldrv -o 500
receiving frames and outputting them to "/dev/lldrv"...
error reading from device
output to device stopped...
any idea?
anscheinend verhält sich access_ok doch nicht identisch mit verify_area, hab diese Zeilen testweise ganz entfernt und damit funzt es (lldrv + BlinkenLib) an meinem Desktop-PC.
Das Problem mit dem Laptop hab ich auch endlich gelöst, und zwar war im BIOS für den parralel port "bi-directional" eingestellt, es musste aber "EPP" sein.
finally
Das Problem mit dem Laptop hab ich auch endlich gelöst, und zwar war im BIOS für den parralel port "bi-directional" eingestellt, es musste aber "EPP" sein.
finally
hier ist mein patch, nun mit korrektem einsatz von access_ok
Code: Select all
diff -u -N -r lldrv-1.2.1_2005-07-11/lldrv.c lldrv-1.2.1_2005-07-11-patched/lldr>v.c
--- lldrv-1.2.1_2005-07-11/lldrv.c 2005-07-11 21:20:59.000000000 +0200
+++ lldrv-1.2.1_2005-07-11-patched/lldrv.c 2006-01-03 16:28:32.000000000 +0100
@@ -353,7 +353,7 @@
return -EBADF;
//test buffer
- if( verify_area( VERIFY_READ, p_buffer, cnt ) != 0 )
+ if( !access_ok( VERIFY_READ, p_buffer, cnt ) )
//buffer not okay
return -EFAULT;
@@ -510,7 +510,7 @@
return -EBADF;
//test buffer
- if( verify_area( VERIFY_WRITE, BufferPtr, BufferLen ) != 0 )
+ if( !access_ok( VERIFY_WRITE, BufferPtr, BufferLen ) )
//buffer not okay
return -EFAULT;