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...
Antworten
citycat
BlinkenNewbie
BlinkenNewbie
Beiträge: 6
Registriert: So Jan 02, 2005 8:19 pm
Wohnort: Dresden
Kontaktdaten:

BlinkenLEDs Pro Graustufentreiber für Linux

Beitrag von citycat » So Jan 02, 2005 8:31 pm

Hi,
hat schon mal jemand den bmdrv_leds-0.2 für die Graustufenausgabe des BlinkenLEDs Pro angepaßt?
Liebe Grüße, Oliver

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

Beitrag von stefan » Mo Jan 03, 2005 4:35 pm

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
Beiträge: 2
Registriert: So Jan 23, 2005 10:36 pm

Beitrag von linse » So Jan 23, 2005 10:45 pm

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

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

Beitrag von stefan » Di Jan 25, 2005 3:42 pm

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

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

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
Beiträge: 2
Registriert: So Jan 23, 2005 10:36 pm

Danke

Beitrag von linse » Mi Jan 26, 2005 9:29 pm

Juchu, das war es wirklich. Jetzt geht's. :D
Herzlichen Dank.

led_fella
BlinkenNewbie
BlinkenNewbie
Beiträge: 6
Registriert: Mo Jan 02, 2006 7:05 pm

Beitrag von led_fella » Mo Jan 02, 2006 7:20 pm

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.

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

Beitrag von stefan » Mo Jan 02, 2006 9:55 pm

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

Code: Alles auswählen

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

Das Device-File legst du dann mit

Code: Alles auswählen

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

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

Code: Alles auswählen

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
Beiträge: 6
Registriert: Mo Jan 02, 2006 7:05 pm

Beitrag von led_fella » Di Jan 03, 2006 7:17 am

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
Beiträge: 6
Registriert: Mo Jan 02, 2006 7:05 pm

Beitrag von led_fella » Di Jan 03, 2006 1:28 pm

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
Beiträge: 6
Registriert: Mo Jan 02, 2006 7:05 pm

Beitrag von led_fella » Di Jan 03, 2006 1:40 pm

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
Beiträge: 6
Registriert: Mo Jan 02, 2006 7:05 pm

Beitrag von led_fella » Di Jan 03, 2006 2:30 pm

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
Beiträge: 6
Registriert: Mo Jan 02, 2006 7:05 pm

Beitrag von led_fella » Di Jan 03, 2006 4:36 pm

hier ist mein patch, nun mit korrektem einsatz von access_ok

Code: Alles auswählen

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;

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

Beitrag von stefan » Di Jan 03, 2006 10:55 pm

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

Antworten