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
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 ;)