BlinkenLEDs Pro Graustufentreiber für Linux

Dieses Forum ist für alle 144-Pixel-Projekte, die noch kein eigenes Forum haben, wie z.B. BlinkenLEDs, LittleLights, BlinkStröm...
Post Reply
citycat
BlinkenNewbie
BlinkenNewbie
Posts: 6
Joined: Sun Jan 02, 2005 8:19 pm
Location: Dresden
Contact:

BlinkenLEDs Pro Graustufentreiber für Linux

Post by citycat »

Hi,
hat schon mal jemand den bmdrv_leds-0.2 für die Graustufenausgabe des BlinkenLEDs Pro angepaßt?
Liebe Grüße, Oliver
User avatar
stefan
Blinkenizer
Blinkenizer
Posts: 234
Joined: Wed Oct 09, 2002 9:45 pm
Location: Aachen
Contact:

Post by stefan »

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...
linse
BlinkenNewbie
BlinkenNewbie
Posts: 2
Joined: Sun Jan 23, 2005 10:36 pm

Post by linse »

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

Post by stefan »

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:

Code: Select all

insmod lldrv.ko io=0x378 irq=7
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:

Code: Select all

mknod /dev/lldrv c 176 0
netcat -u -l -p 2323 >/dev/lldrv
Dann kann man an localhost:2323 einfach einen UDP-Blinkenlights-Stream senden (z.B. mit dem original blccc).
linse
BlinkenNewbie
BlinkenNewbie
Posts: 2
Joined: Sun Jan 23, 2005 10:36 pm

Danke

Post by linse »

Juchu, das war es wirklich. Jetzt geht's. :D
Herzlichen Dank.
led_fella
BlinkenNewbie
BlinkenNewbie
Posts: 6
Joined: Mon Jan 02, 2006 7:05 pm

Post by led_fella »

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

Post by stefan »

Mit Linux 2.6 gibt es mit den alten Modulen schonmal Probleme wegen Plug&Play...
Schau doch einfach zwei Beiträge höher:

Code: Select all

insmod lldrv.ko io=0x378 irq=7
(ohne parport-Modul)

Das Device-File legst du dann mit

Code: Select all

mknod /dev/lldrv c 176 0; chmod 666 /dev/lldrv
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.

Code: Select all

BlinkenOutput -l 127.0.0.1:2323 -p MCUF -f 18x8-1/256 -d /dev/lldrv -o 500
und zum senden der Filme

Code: Select all

BlinkenSend -d 127.0.0.1:2323 -i movie.bml
Diese beiden Programme sind Teil der BlinkenLib: http://1stein.blinkenarea.org/BlinkenLib/

Gruß,
Stefan
led_fella
BlinkenNewbie
BlinkenNewbie
Posts: 6
Joined: Mon Jan 02, 2006 7:05 pm

Post by led_fella »

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!
led_fella
BlinkenNewbie
BlinkenNewbie
Posts: 6
Joined: Mon Jan 02, 2006 7:05 pm

Post by led_fella »

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?
led_fella
BlinkenNewbie
BlinkenNewbie
Posts: 6
Joined: Mon Jan 02, 2006 7:05 pm

Post by led_fella »

So ein test an meinem Desktop-PC lief halb-erfolgreich, nach dem laden von lldrv leuchtet das "L L" startbild. BlinkenOutput bricht aber mit der selben Fehlermeldung ab wie in meinem letzten Beitrag beschrieben.

Danke nochmal für die Mühe!
led_fella
BlinkenNewbie
BlinkenNewbie
Posts: 6
Joined: Mon Jan 02, 2006 7:05 pm

Post by led_fella »

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 :lol:
led_fella
BlinkenNewbie
BlinkenNewbie
Posts: 6
Joined: Mon Jan 02, 2006 7:05 pm

Post by led_fella »

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

Post by stefan »

Danke.

Ich wusste noch gar nicht, dass das jetzt endgültig rausgeflogen ist...
Ohje - da muss ich ja knapp 10 Kernel-Module ändern und neu releasen...
Vielleicht am Wochenende...
Post Reply