Lcd4linux DPF Easy Hacking - TNG

Aus Zebradem WIKI
Zur Navigation springenZur Suche springen

ZD-Logo.png
Das Board mit Freiheiten





----

Zebradem Fritzbox Wiki >> Lcd4linux DPF Easy Hacking - TNG Magyar, Nederlands, Italiano, English
Community Modelle Freetz Fritzbox Tipps & Tricks

Einführung Freetz Pakete Freetz Addons Freetz Tipps Freetz chroot Freetz Images Freetz Faqs

DPF Easy Hacking - The Next Generation

Hier nun endlich die versprochene Neuauflage vom Howto Pearl DPF Easy Hacking. Fragen / Lob / Beschimpfungen bitte ab jetzt nur noch hier.

Worum geht es? Es geht darum ein billiges DPF ("Digital-Photo-Frame") als Status-Display am Linux-PC zu missbrauchen. Das Ganze begann für mich mit einem extrem billigen DPF von der Firma Pearl. Mit dem genialen Firmware-Hack dpf-ax von hackfin ließ sich das Ding als Status-Display z.B. mit lcd4linux oder dem VDR Plugin graphlcd betreiben. Hat nicht lange gedauert und wir hatten es geschafft Pearl leerzukaufen. Es gibt aber ne ganze Menge Alternativen, die sogenannten "China-Displays", die das selbe Design wie das Pearl verwenden. Allerdings haben die meisten ein anders LCD und/oder einen anderen Flashchip. Deshalb sind die nicht 100 % kompatibel und brauchen jeweils eine eigene Firmware. Welche Displays aktuell unterstützt werden steh in Dpf-ax - Supported Types.

Die dpf-ax Firmware ersetzt die original Firmware des Displays und hat u.a. diese Features:

Optimiert für den Betrieb als Statusdisplay am Linux-PC.
Regelung der Hintergrundbeleuchtung. *
Regelung des Displaykontrastes. **
Anzeige nach dem Einschalten konfigurierbar: Weiß / Schwarz / Splashscreen.
Eigene Splashscreens ladbar.
Testscreen zur Beurteilung der Displayqualität.
  • Einige Displays unterstützen nur Hintergrundbeleuchtung an/aus.
    • Nur bei einigen Displays im Menü einstellbar.

GANZ WICHTIG: Macht UNBEDINGT einen Backup der original Firmware! Ohne diesen Backup steht Ihr im Regen falls was schiefgeht oder das Display (noch) nicht von dpf-ax unterstützt wird! Wenn Ihr euch an die folgende Anleitung haltet wird der Backup automatisch so nebenbei von identify.py mitgemacht. Ansonsten verwendet unbedingt das Tool "fulldump.py" bevor Ihr anfangt zu spielen! Ist bei den Downloads für Linux und Windows dabei. Hab Ihr einen Backup, kann fast nix passieren. Wenn was nicht geht - einfach wieder die original Firmware drauf. Sagte ich das schon? Macht UNBEDINGT einen Backup der original Firmware!

Was brauch ihr?

Ein DPF das von dpf-ax unterstützt wird, z.B. das hier (128 x 128 Pixel), das hier (128 x 128 Pixel) oder das hier (320x240 Pixel). Achtung: auch wenn Ihr eins von denen kauft ist nicht sicher, dass das auch wirklich auf Anhieb geht. Die Lieferanten mischen munter verschiedene Hardware unter der selben Bestellnummer. Manchmal bekommt man sogar in der selben Bestellung verschiedene Hardware! Also auf jeden Fall und für *JEDES EINZELNE* Displays eine Typerkennung durchführen!

Ein gutes USB-Kabel.
Nehmt NICHT das Billigst-Kabel das dem Display beiliegt. Für den Betrieb mag das zur Not noch reichen aber beim Flashen würde ich auf Nummer sicher gehen!


Typerkennung / Backup / Flashen der Firmware

Das Ganze geht unter Linux und eingeschränkt unter Windows. Für die Windows-Variante braucht Ihr zusätzlich zum Ausführen der dpf-ax Tools einen Python 2 Interpreter und zum Flashen der Firmware ein Programm, das aus dem SDK des Herstellers der original Firmware stammt. Das Programm nennt sich "ProgSPI.exe". Wie Ihr da rankommt steht im Windows-Teil dieses Howtos.


Wenn Ihr Linux verwenden wollt :) gehts im 2. Post weiter. Wenn Ihr Windows verwenden wollt :( gehts im 3. Post weiter.


Sorry, no matching dpf found

Wenn Ihr diese Meldung von identify.py bekommt wird das Display (zur Zeit) nicht von dpf-ax unterstützt. Es gibt jetzt zwei Möglichkeiten:

Ihr postet den Dump der original Firmware in diesem Thread oder - for our english readers - hier. Gebt bitte wenn möglich noch an wo Ihr das Display gekauft habt (Link) und/oder den Hersteller. Ihr versucht das Display selbst in dpf-ax einzubauen. Das geht nur unter Linux. Holt euch die aktuelle dpf-ax SVN-Version von Sourceforge und versucht zu verstehen wie das Ganze zusammenhängt und was da in den Sourcen so vorgeht (etwas Erfahrung mit 8052 Assembler und C sowie ein paar Wochen Zeit wären da sehr hilfreich.) Tipp: versucht mal identify.py mit dem "-d" Parameter aufzurufen.

Typerkennung, Backup und Flashen unter Linux

Die Beschreibung ist für eine (einigermaßen) aktuelle Debian basierende Distri (Ubuntu, Mint, yaVDR, ...)

Als Erstes stellt sicher, dass Ihr eine vernünftige Entwicklungsumgebung habt:

sudo apt-get install build-essential libusb-dev python-dev


Besorgt euch von http://sourceforge.net/projects/dpf-ax/files/:

 - Die Sourcen für Linux (dpf-ax_JJJJMMTT.tgz.)
 - Die fertige Firmware für alle bekannten DPFs (dpf-ax_firmware_JJJJMMTT.zip.)
  1. Nehmt immer die dpf-ax Dateien mit dem neuesten Zeitstempel.
  2. Die Firmware Sourcen (dpf-ax_firmware-src_JJJJMMTT.tgz) braucht Ihr nicht.
  3. Alles entpacken und übersetzen:
 tar xfvz dpf-ax*.tgz
 unzip dpf-ax_firmware*.zip
 cd dpf-ax
 make
  1. Jetzt das Display an USB anstecken.
  2. Öffnet eine zweites Terminal-Fenster und startet die Beobachtung der Sysmeldungen:
tail -f /var/log/syslog

Am Display MENÜ drücken und den Menüpunkt "Mit PC verbinden"/"Connect to PC"/"USB Connect"/... wählen (sollte der erster Menüpunkt sein). Im Fenster mit den Sysmeldungen kriegt Ihr sowas wie:

usbcore: registered new interface driver usb-storage
USB Mass Storage support registered.
scsi 6:0:0:0: CD-ROM            buildwin  Photo Frame     1.01 PQ: 0 ANSI: 2
sr1: scsi3-mmc drive: 40x/40x writer cd/rw xa/form2 cdda tray
sr 6:0:0:0: Attached scsi CD-ROM sr1
sr 6:0:0:0: Attached scsi generic sg2 type 5


   Wichtig ist der Device-Name in der Zeile mit dem "Attached scsi generic ..." (hier in der letzte Zeile: "sg2") - merken!

Typenerkennung und Backup

  1. Wechselt in den dpf-ax tools Ordner und gebt ein:
"sudo ./identify.py /dev/X".
  1. Ersetzt "X" durch den Devicenamen von oben.
  2. Ihr solltet dann eine Ausgabe in der Form erhalten:
$ cd tools
$ sudo ./identify.py /dev/sg2
Detecting & reading dpf flash...
Opening generic SCSI device '/dev/sg2'
Manufacturer: Winbond
Size        : 2 MB
Reading 200000 bytes from flash...
Flash written to file 'fulldump_20130531-150540.bin'.
Looking for firmware.............: Found (buildwin, 320x240 px).
Looking for Openwin..............: Found.
Looking for LcdIniTbl............: Found.
Looking for backlight & contrast.: Found, Found.
Looking for known signatures.....: Found.
Your dpf is compatible with model ['pearl_custom'].


Klasse! Euer Display wird unterstützt UND Ihr habt einen Backup der Firmware unter "fulldump_20130531-150540.bin". Dabei ist "20130531-150540" ein Zeitstempel, der bei euch logischerweise anders aussieht.

Kriegt Ihr stattdessen sowas:

Looking for known signatures.....: None.
Sorry, no matching dpf found.


... dann bitte unter "Sorry, no matching dpf found" im ersten Post weiterlesen!


Flashen der Firmware

Wenn es nicht noch dran ist: Display an USB anstecken. DRÜCKT NICHT MENÜ! WÄHLT NICHT DEN MENÜPUNKT "Mit PC verbinden"! Jetzt kommt der Trick: das Display wird in den "Bootloader Mode" versetzt. Drückt die RESET-Taste am Display (kleines Loch auf der Rückseite oben links, am besten ne Büroklammer rein bis es "klick" macht), haltet die Taste gedrückt und jetzt MENÜ drücken, RESET loslassen, MENÜ loslassen. Wenn die Reihenfolge gestimmt hat, wird das Display jetzt schwarz und in dem Fenster mit den Sysmeldungen kommt sowas wie:

generic-usb 0003:1908:3318.0007: hiddev0,hidraw5: USB HID v2.01 Device [BUILDWIN BL206v1.0.0] on usb-0000:00:1a.0-1.6/input0

Sucht die passende Firmware im "dpf-ax/src" Ordner, die zu dem von identify.py ausgegebenen Typ passt (hier: "fw_pearl_custom.bin"). Dann:

sudo ./hiddetach
sudo ./restore.py ../src/fw_pearl_custom.bin -f

Das Ihr dabei "fw_pearl_custom.bin" durch die Firmware für euren Typ ersetzt ist klar, oder? Als Dank erhaltet Ihr diese Ausgabe:

 Found AX206 DPF (bootloader)
 Manufacturer: Winbond
 Size        : 2 MB
 Erase full flash...
 Flashing sector 0...
 Flashing sector 1...
 Flashing sector 2...
 Flashing sector 3...
 Flashing sector 4...
 Flashing sector 5...
 Executing applet..


  1. Danach macht das Display automatisch einen Reset und zeigt einen Splashscreen (je nach Displaygröße und Ausrichtung entweder ein Paar Augen, viele Augen oder ein Cocktailglas).
  2. Jetzt zur Sicherheit noch mal den RESET Knopf mit der Büroklammer bearbeiten.
  3. Fertig.

Typerkennung, Backup und Flashen unter Windows

Getestet unter Windows XP und Windows 7. Windows 8: keine Ahnung.

Besorgt euch erstmal:

Das Flashprogramm für Windows: AX206 HW Bootflasher.
Einen Python 2 Interpreter inklusive der "Pythonwin Extensions" (die dpf-ax Tools sind in Python geschrieben).
Achtung: es muss Python 2 sein - Python 3 GEHT NICHT!.
Wenn Ihr noch keinen habt, nehmt den: ActivePython Community Edition 2.7.
Von http://sourceforge.net/projects/dpf-ax/files/:
Die dpf-ax Tools für Windows (dpf-ax_windows_JJJJMMTT.zip.)
Die fertige Firmware für alle bekannten DPFs (dpf-ax_firmware_JJJJMMTT.zip.)
Nehmt immer die Dateien mit dem neuesten Zeitstempel.

Typerkennung und Backup

  1. Wenn Ihr Python noch nicht installiert habt: jetzt ist der richtige Zeitpunkt.
  2. Danach erstmal alles entpacken: den Bootflasher, die dpf-ax Tools und die Firmware.
  3. Jetzt das Display an USB anstecken.
  4. Am Display MENÜ drücken und den Menüpunkt "Mit PC verbinden"/"Connect to PC"/"USB Connect"/... wählen (sollte der erster Menüpunkt sein.)

Windows legt jetzt eine schöpferische Pause ein und irgendwann erscheint eine neues CD-ROM in der Liste der Laufwerke: "CD-Lauwerk <Laufwerksbuchstabe>: DPFMate".

  1. Das Programm DPFMate.exe müsst Ihr NICHT ausführen!
  2. Öffnet eine Eingabeaufforderung ("cmd" im Suchfeld des Startmenüs.)
  3. Wechselt in den Ordner in dem Ihr die dpf-ax Tools entpackt habt und dann in den Ordner "dpf-ax\tools". Beispiel: "cd Downloads\dpf-ax\tools".
  4. Gebt jetzt in der Eingabeaufforderung ein: "python identify.py X". Ersetzt "X" durch den Laufwerksbuchstaben des CD-Laufwerks von oben:
C:\Users\xxxx\Downloads\dpf-ax\tools>python identify.py E:
Running on windows - unable to detect flash size
Reading 100000 bytes from flash...
Flash written to file 'fulldump_win_20130531-150540.bin'.
Looking for firmware.............: Found (buildwin, 320x240 px).
Looking for Openwin..............: Found.
Looking for LcdIniTbl............: Found.
Looking for backlight & contrast.: Found, Found.
Looking for known signatures.....: Found.
Your dpf is compatible with model ['pearl_custom'].


Klasse! Euer Display wird unterstützt UND Ihr habt einen Backup der Firmware unter "fulldump_win_20130531-150540.bin". Dabei ist "20130531-150540" ein Zeitstempel, der bei euch logischerweise anders aussieht. Kriegt Ihr stattdessen sowas:

Looking for known signatures.....: None.
Sorry, no matching dpf found.


... dann bitte unter "Sorry, no matching dpf found" im ersten Post weiterlesen!

Flashen der Firmware

  1. Öffnet jetzt den Explorer, wechselt in den Ordner in den Ihr den Bootflasher entpackt habt und startet dort das Programm ProgSPI.exe.
  2. Geht zuerst auf "Settings" und überprüft, dass "Program" gewählt und "Reset" angekreuzt ist.
  3. Jetzt auf "Browse" und die Firmware auswählen. Geht in den Ordner mit den runtergeladenen fertigen Firmwaredateien und wählt die, die dem oben ausgespuckten Typ entspricht (in diesem Fall die "fw_pearl_custom.bin".)
  4. Wenn es nicht noch dran ist: Display an USB anstecken.
  5. DRÜCKT NICHT MENÜ! WÄHLT NICHT DEN MENÜPUNKT "Mit PC verbinden"!
  6. Jetzt kommt der Trick: das Display wird in den "Bootloader Mode" versetzt. Drückt die RESET-Taste am Display (kleines Loch auf der Rückseite oben links, am besten ne Büroklammer rein bis es "klick" macht), haltet die Taste gedrückt und jetzt MENÜ drücken, RESET loslassen, MENÜ loslassen.
  7. Wenn die Reihenfolge gestimmt hat wird das Display jetzt schwarz und im Bootflasher wird das Kästchen hinter "Channel 1" grün.
  8. Jetzt "Execute" drücken.
  9. Im Statusfenster erscheint "Programming..." und das Kästchen hinter "Channel 1" wird blau. Wenn stattdessen im Statusfenster nur "Please wait for checking Flash ID" steht und eine Fenster "Probe-Flash" mir ner chinesischen Meldung kommt: siehe Anmerkung unten!
  10. Bitte etwas Geduld - das Programmieren dauert ca. 2-3 Minuten...
  11. Danach macht das Display automatisch einen Reset und zeigt einen Splashscreen (je nach Displaygröße und Ausrichtung entweder ein Paar Augen, viele Augen oder ein Cocktailglas).
  12. Jetzt zur Sicherheit noch mal den RESET Knopf mit der Büroklammer bearbeiten.
  13. Fertig.

Anmerkung: Wenn beim Programmieren im Statusfenster nur "Please wait for checking Flash ID" steht und eine Fenster "Probe-Flash" mir ner chinesischen Meldung kommt, kennt ProgSPI den Flash Chip des Displays nicht. Sucht hier im Portal nach dem Text "FlashLib.ini" und ladet euch die neueste Version die Ihr finden könnt herunter. ProgSPI beenden, FlashLib.zip entpacken und die FlashLib.ini in den Ordner kopieren, in dem ProgSPI.exe ist (die bestehende FlashLib.ini überschreiben.) Wenn es dann immer noch nicht geht, schreibt die Ausgabe des ProgSPI Statusfensters ab (oder macht einen Screenshot davon) und postet die Ausgabe hier. Natürlich könnt Ihr auch die nötigen Flash Infos selbst in die FlashLib.ini eintragen (wenn Ihr wisst was Ihr tut.)


Quellenangaben

http://www.vdr-portal.de/board18-vdr-hardware/board11-displays/119203-howto-dpf-easy-hacking-tng/