Forum: PC Hard- und Software [Tutorial] billigstes Display für Statusanzeige


von Torsten M. (neorulez)


Angehängte Dateien:

Lesenswert?

hallo an alle!

dieser beitrag richtet sich an alle linux-user, die gerne ein paar 
statusinformationen an ihrem heimischen server per kleinem lcd-display 
ausgeben wollen. dazu nutzen wir einen digitalphotoframe - kurz: dpf

was wir benötigen:
-einen linux-rechner
-ein display dieser sorte (http://www.pearl.de/a-HPM1184-5618.shtml 
damit funktionierts ;) )
-eine internetverbindung
-ein wenig mut (ich übernehme keine haftung für irgendwelche schäden 
oder zerstörte displays. jeder muss selbst wissen, was er tut und was 
nicht!)

ich möchte mich bei der anleitung an section5 anlehnen 
(http://tech.section5.ch/news/?p=68)


zunächst ist es erforderlich alle abhängigkeiten zu installieren.
das tun wir mit:
1
 sudo apt-get install libtool automake autoconf zlib1g-dev libssl-dev python-dev libc6 libusb-dev libibus-dev subversion libgd2-noxpm-dev libgd2-noxpm

nun holen wir uns den hack, damit wir später unsere daten auf dem dpf 
anzeigen können. anschließend wird kompiliert:
1
 wget http://tech.section5.ch/files/dpfhack-0.1alpha.tgz
2
tar -xvzf dpfhack-0.1alpha.tgz
3
cd dpf/src
4
make
wenn das fertig ist, wird lcd4linux geladen und gebaut:
1
 cd ..
2
wget http://tech.section5.ch/files/dpf-lcd4linux.tgz
3
tar -xvzf dpf-lcd4linux.tgz
ja, es ist richtig, dass das im gleichen verzeichnis landet.
nun nehmen wir einen editor unserer wahl und passen die datei 
build-dpf-lcd4linux.sh an:
1
 ./configure --with-drivers='DPF' --with-plugins='all'
nun kann konfiguriert und für unseren dpf gebaut werden:
1
 ./build-dpf-lcd4linux.sh ../src/dpflib/
nun wird währenddessen auch quellcode vom svn-repo heruntergeladen. dazu 
muss das zertifikat bestätigt werden.
anschließend machen wir:
1
 cd lcd4linux
2
sudo checkinstall
das system wird euch sagen, dass ihm die version nicht passt. ändert das 
einfach in was beliebiges ab ;)

jetzt kommen wir zur eigentlich kritischen stelle: das HACKEN ;)
wir gehen in den ordner dpf/src. wenn ihr genau der anleitung folgt, 
sollte euch
1
 cd ../src
 in den richtigen ordner navigieren.
jetzt also den dpf mit der menü-taste einschalten, mittels usb-kabel mit 
dem rechner verbinden und dann im menü des dpf <mit pc verbinden> 
auswählen.
mit dmesg sollte eine ähnliche ausgabe wie hier erfolgen:
1
[2253982.425032] usb 1-1.4.2: new full speed USB device using orion-ehci and address 8
2
[2253982.589490] usb 1-1.4.2: New USB device found, idVendor=1908, idProduct=0102
3
[2253982.596763] usb 1-1.4.2: New USB device strings: Mfr=2, Product=3, SerialNumber=0
4
[2253982.604457] usb 1-1.4.2: Product: Digital Photo Frame
5
[2253982.609742] usb 1-1.4.2: Manufacturer: BUILDWIN
6
[2253982.616487] usb 1-1.4.2: configuration #1 chosen from 1 choice
7
[2253982.631374] scsi2 : SCSI emulation for USB Mass Storage devices
8
[2253982.640509] usb-storage: device found at 8
9
[2253982.640519] usb-storage: waiting for device to settle before scanning
10
[2253987.636081] usb-storage: device scan complete
11
[2253987.639707] scsi 2:0:0:0: CD-ROM            buildwin  Photo Frame     1.01 PQ: 0 ANSI: 2
12
[2253987.695643] sr0: scsi3-mmc drive: 40x/40x writer cd/rw xa/form2 cdda tray
13
[2253987.702641] Uniform CD-ROM driver Revision: 3.20
14
[2253987.708999] sr 2:0:0:0: Attached scsi CD-ROM sr0
15
[2253987.747559] sd 0:0:0:0: Attached scsi generic sg0 type 0
16
[2253987.755670] sd 1:0:0:0: Attached scsi generic sg1 type 0
17
[2253987.763703] sr 2:0:0:0: Attached scsi generic sg2 type 5
bitte genau darauf achten, welche geräte eingebunden wurden!!!
nun wird der hack ausgeführt (solltet ihr das falsche gerät wählen, wird 
abgebrochen):
1
 sudo python hackit.py /dev/sg2
wenn das skript durchgelaufen ist, können wir das display abziehen, 
wieder anstecken und danach 2-3sek menü halten. das display sagt uns 
dann wieder mit pc verbunden.
jetzt nochmal dmesg machen:
1
[2254203.863656] usb 1-1.4.2: new full speed USB device using orion-ehci and address 9
2
[2254204.028121] usb 1-1.4.2: New USB device found, idVendor=1908, idProduct=0102
3
[2254204.035391] usb 1-1.4.2: New USB device strings: Mfr=2, Product=3, SerialNumber=1
4
[2254204.043083] usb 1-1.4.2: Product: USB-Display
5
[2254204.047670] usb 1-1.4.2: Manufacturer: hackfin
6
[2254204.052309] usb 1-1.4.2: SerialNumber: 0000
7
[2254204.058826] usb 1-1.4.2: configuration #1 chosen from 1 choice
wenn das soweit geklappt hat, sind wir mit der eigentlichen arbeit 
fertig.
nun gehts an das konfigurieren von lcd4linux. dies geschieht über die 
datei /etc/lcd4linux.conf, die wir mit sudo öffnen.
ein erstes einfaches beispiel:
1
 Display dpf {
2
    Driver     'DPF'
3
    Port       'usb0'
4
    Font       '6x8'
5
    Foreground 'ffffff'
6
    Background '000000'
7
    Basecolor  '000066'
8
}
9
Widget hallo {
10
    class 'Text'
11
    expression 'Hallo Welt!'
12
    width 54
13
    align 'L'
14
    update 5000
15
    Background 'ffffff'
16
    Foreground  '000000'
17
}
18
Display 'DPF'
19
20
Layout myLayout{
21
    Row01.Col01  'hallo'
22
}
23
24
Layout 'myLayout'
eine vollwertige lcd4linux.conf ist im anhang zu finden ;)
bilder können so dargestellt werden:
1
 Widget bild {
2
    class    'Image'
3
    file     '/bilder/pfad/meinbild.png'
4
    update   10000
5
    reload   1
6
    visible  1
7
    inverted 0
8
}
wichtig ist, dass die lcd4linux.conf dem ausführenden benutzer gehört 
und mindestens die rechte 600 besitzt. dies wird gemacht mit:
1
 sudo chown user:users /etc/lcd4linux.conf
2
sudo chmod 700 /etc/lcd4linux.conf
nun können wir lcd4linux neustarten:
1
 sudo killall lcd4linux && sleep 1 && sudo lcd4linux
lcd4linux läuft als daemon und wir werden keine ausgabe sehen. aber 
prinzipiell sollte das display laufen. eine ausgabe von fehlern usw 
erfolgt  mit lcd4linux -F

ein nettes feature ist das automatische starten und beenden von 
lcd4linux via udev-regeln.
dazu erstellen wir die datei /etc/udev/rules.d/70-dpf.rules und 
schreiben diese 2 regeln hinein:
1
 BUS=="usb", ACTION=="add",SYSFS{idProduct}=="0102", SYSFS{idVendor}=="1908", RUN+="/usr/local/bin/lcd4linux"
2
SUBSYSTEM=="usb", ACTION=="remove", ENV{ID_MODEL_ID}=="0102", ENV{ID_VENDOR_ID}=="1908", RUN+="/usr/bin/killall lcd4linux"
nun noch udev neustarten und die regeln sollten funktionieren:
1
 sudo /etc/init.d/udev restart

viel spaß euch allen ;)

von Sebastian G. (gilly) Benutzerseite


Lesenswert?

Danke erstmal für deine Arbeit.

Ich habe hier so ein kleines System mit einer 512MB CF Karte von der ich 
Booten kann. Ich hab mal Voyage MPD raufgespielt da das system später 
mal nen MP3 Player werden soll. Voyage basiert auf Debian, also dachte 
ich mir kannst ja mal die Anleitung durchgehn. Nur hatte ich nicht dran 
gedacht vieviel Software man da noch für installieren muss. Das System 
ist etwa 250MB groß. Alleine die Tools die man laut Anleitung braucht 
sind über 300MB groß.

Heute abend werd ich mal versuchen das Display an einem "richtigen" 
Rechner zum laufen zu bringen und dann mal schaun ob ich dann nur die 
wirklich benötigten teile auf das kleine System übernehmen kann.

Ich nehme an bei dir ist Platz nicht das Problem oder?

von Torsten M. (neorulez)


Angehängte Dateien:

Lesenswert?

ja richtig. platz ist bei mir kein problem...
lcd4linux ist bei mir compiliert für arm. ich weiß ja nicht, was du für 
ein system hast, aber vll hilft dir das paket weiter.
ansonsten musst du vll cross-compilieren für dein system oder so.

von Gilly (Gast)


Lesenswert?

hm ich scheiter grad daran auf debian squeeze sdcc zu installieren....

von Gilly (Gast)


Lesenswert?

hm beim "hacken" schein was schief gegangen zu sein
1
...
2
...
3
...
4
Patching at offset 000002ab, chunk size 12
5
Patching at offset 000002b7, chunk size 2
6
Patching at offset 000002b9, chunk size 1
7
Read 503 bytes
8
Analyzing module 37...
9
10
calling SCSI ioctl(): No such device
11
Traceback (most recent call last):
12
  File "hackit.py", line 139, in <module>
13
    ret = patch(d, dpf)
14
  File "hackit.py", line 121, in patch
15
    if not patch_module(d, i, buf):
16
  File "hackit.py", line 71, in patch_module
17
    data = d.readFlash(flashaddr, l)
18
SystemError: 126:(ffffffff): Unknown error
19
root@fly:~/tmp/dpf/src#


und dann im dmsg nach abziehn und anstecken
1
[ 3972.112072] usb 1-1: reset full speed USB device using uhci_hcd and address 2
2
[ 3987.224071] usb 1-1: device descriptor read/64, error -110
3
[ 4002.440070] usb 1-1: device descriptor read/64, error -110
4
[ 4002.656069] usb 1-1: reset full speed USB device using uhci_hcd and address 2
5
[ 4017.768079] usb 1-1: device descriptor read/64, error -110
6
[ 4032.984073] usb 1-1: device descriptor read/64, error -110
7
[ 4033.200071] usb 1-1: reset full speed USB device using uhci_hcd and address 2
8
[ 4043.608069] usb 1-1: device not accepting address 2, error -110
9
[ 4043.720070] usb 1-1: reset full speed USB device using uhci_hcd and address 2
10
[ 4054.128068] usb 1-1: device not accepting address 2, error -110
11
[ 4054.128150] usb 1-1: USB disconnect, address 2
12
[ 4054.135711] sr 2:0:0:0: Device offlined - not ready after error recovery
13
[ 4054.135739] sg_rq_end_io: device detached

von Gilly (Gast)


Lesenswert?

also unter windows scheint das teil noch zu funktionieren .... ne idee 
wie ich das neu flashen kann ohne da was anzuschrauben und zu löten.

von Mario E. (mario_e)


Lesenswert?

Hier mal die Url zum "hack" und Tut.
http://geekparadise.de/2011/04/digitaler-bilderrahmen-von-pearl-als-statusdisplay-fur-dockstar/

Ich habe es auch am laufen, allerdings ist mir die Schrift mit 8x6 viel 
zu klein und mit den .png will nicht wirklich bei mir. Da meckert er 
immer.
Im VDR sehe ich es als eher sinnvoll an :)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.