Pyload auf Fritzbox 7270 - möglich?

RAMler

Mitglied
Mitglied seit
22 Mrz 2010
Beiträge
787
Punkte für Reaktionen
0
Punkte
18
Schönen guten Morgen,

hat sich hier mal jemand daran versucht Pyload auf einer Fritzbox aus zu führen bzw. ist dies überhaupt möglich?

Der Antwort "Es gibt doch Fritz!Load" möchte ich mit dem Funktionsumfang von Pyload vorbeugen.

- Sehr umfangreiches Webinterface
- Support für (wenige) Linkseiten
- DLC Support
- Captcha Eingabe per Webinterface (!)

Usw.

SuFu habe ich genutzt, aber nichts dazu gefunden. Wenn es schon jemand am laufen haben sollte und/oder weiß ob/das es geht, wäre eine Rückmeldung sehr nett.

Ich habe zwar eine 7270, aber da darüber unser NGN Anschluss läuft, ist ein wildes rumbasteln nicht drin. :(

Viele Grüße

RAMler
 
Hallo,
du wunderst dich bestimmt, dass jetzt noch jemand auf deine Frage antwortet.
Ich habe die Fritzbox 7270v1 und habe es geschafft PyLoad darauf mit WebInterface zum laufen zu bekommen. Ich habe es mit Rapidshare und Youtube getestet.
Die Geschwindigkeit vom Webinterface ist auch akzeptabel. Es gibt nur eine leichte Verzögerung. Verwenden werde ich es aber voraussichtlich nicht, da ich Fritz!Load verwende.

So kannst du es auch hinbekommen:
Kompiliere Python für die Fritzbox. Ich habe Version 2.6.6 genommen
Code:
# python --version
Python 2.6.6
Achte darauf, dass für die Module alle Voraussetzungen erfüllt werden, da sie sonst einfach weggelassen werden. Bei mir fehlte anfangs _sqlite3
Kompiliere noch zusätzlich pycurl und django (für das Webinterface)
Damit sollte eigentlich schon ausreichen. Für mehr Funktionen kannst du noch pycrypto, pil und tesseract kompilieren.
Kopiere nun die entsprechenden Dateien auf einen Stick (oder Festplatte), der an der Fritzbox angeschlossen ist.
Setze ein paar Umgebungsvariablen.
Code:
export PYTHONHOME=/var/media/ftp/USB2-0-USBFlashDrive-01/fritzpython
export PATH=${PATH}:${PYTHONHOME}/bin
export LD_LIBRARY_PATH=${PYTHONHOME}/lib
export HOME=/var/media/ftp/USB2-0-USBFlashDrive-01/fritzpython
Die Home-Zeile ist nur dafür da, dass du Pyload mit Standardparametern starten kannst.

Ein Hinweis: Bei mir lief Pyload nicht richtig vom FAT32-Stick (wahrscheinlich wegen der Codepage). Ich habe es einfach nach /var/tmp kopiert und von da gestartet. NTFS und ext2 habe ich nicht getestet, müssten aber wahrscheinlich gehen.

Ich lade vermutlich mein kompiliertes Python nicht hoch, da es zusammen mit Django doch recht groß geworden ist. Natürlich könnte ich unnötige Dateien noch aussortieren, aber es würde immer noch groß bleiben.
 
Zuletzt bearbeitet:
Ich lade Python 2.6.6 doch mal hoch, da ich das Paket wesentlich kleiner gemacht habe.
Ich habe sämtliche *.pyo und *.pyc Dateien gelöscht und ein paar "unwichtige" Module gelöscht.
Beim ersten Gebrauch der Module müssen die *.pyo und *.pyc Dateien von der Fritzbox neu erzeugt werden. Dadurch dauert der Start von Pyload beim ersten mal wesentlich(!!!) länger.

Im Paket enthalten sind:
* python-2.6.6
* django-1.2.3 (mit ein paar gelöschten Sprachdateien)
* python-pycurl-7.19.0
* pycrypto-2.3
* tesseract-2.04 (mit TIF getestet)
* python-imaging-1.1.7 (mit folgenden Optionen)
Code:
--------------------------------------------------------------------
PIL 1.1.7 SETUP SUMMARY
--------------------------------------------------------------------
*** TKINTER support not available
--- JPEG support available
--- ZLIB (PNG/ZIP) support available
*** FREETYPE2 support not available
*** LITTLECMS support not available
--------------------------------------------------------------------
Zusätzlich sind ein paar Libraries enthalten. Es könnten aber noch welche fehlen und ein paar könnten unnötig sein.

Zum einfachen Test kann man das Archiv in einen Ordner entpacken und von dort einfach setvar.sh aufrufen. Danach sind python und tesseract im Pfad und man kann zum Beispiel pyload nach /var/tmp kopieren und von dort starten. Man es natürlich auch woanders hin kopieren oder sogar auf dem Stick eine Ext2-Image-Datei erstellen.
Code:
python pyLoadCore.py
Das WebInterface ist mit den Standardeinstellungen unter
Code:
http://fritz.box:8000/
erreichbar.

Getestet habe ich von Pyload mit meinem Paket
* DLC
* Youtube

Ich denke, selbst wenn ich Pyload nicht dauerhaft nutzen werde, kann man python-imaging für Fritzload verwenden, da es doch wesentlich flexibler ist als Imagemagick. Tesseract hat auch keine schlechte Erkennung.

Das Paket habe ich mit 7z gepackt und die Endung .zip hinzugefügt. Diese muss vorher entfernt werden.
 

Anhänge

  • fritzpython.7z.001.zip
    4 MB · Aufrufe: 145
  • fritzpython.7z.002.zip
    3.9 MB · Aufrufe: 134
Hat das schon jemand auf der FritzBox 7390 ans laufen bekommen?
 
Greetings all, I write English but do not understand German:).

I downloaded and installed python on Fritzbox, now I want to start pyload as indicated on the post above but I tried all pyload downloaded from the developer's website without success. Someone would be so kind as to help in the installation of pyload? Thanks Fritzbox 7270v2.
 
Hat das schon jemand auf der FritzBox 7390 ans laufen bekommen?
Schließe mich an! Habe heute mit der hier geladenen Pythonversion auf meiner 7390 einen Fehler bekommen (...MIPS wird nicht unterstützt...).
 
Auf Wunsch von Fox.Mulder deute ich kurz an, wie ich damals Python kompiliert habe. Ich habe mich im Grunde an folgende Anleitung gehalten: http://randomsplat.com/id5-cross-compiling-python-for-embedded-linux.html
Eleganter dürfte jedoch die Methode mit dem Python-Freetz-Paket, das im oberen Post verlinkt wurde, sein. Möglicherweise kann man auch das Freetz-Paket mit Hilfe der Anleitung, die ich damals verwendet habe, anpassen. Ich hoffe das reicht an Hinweisen.
 
Besten Dank. Mit dem angegebenen Link habe ich schon mal Python kompilieren können. Kannst Du mir bitte noch einen Hinweis geben, wie ich die zusätzlichen Module übersetzen kann? Ich denke, dass diese ja auch irgenwie in der Target Umgebung und demzufolge crosscompiliert werden müssen.
 
Kein Problem. Schön, dass es geklappt hat. Die zusätzlichen Module musst du nicht crosscompilieren, da es ich dabei um Python-Quellcode bzw. Python-Bytecode handelt. Du kannst die Module beispielsweise ganz normal mit deinem Hostpython, das natürlich in der selben Version vorliegt wie dein crosscompiliertes Python, erstellen.
 
War leider nur teilweise erfogreich:

Django-1.3.1: Build OK
Pycurl-7.19.0: Buld OK
Pycrypto-2.4.1: Fehler beim Einbinden von struct.py
Code:
  File "setup.py", line 46, in <module>
    import struct
  File "/home/fritz/Python-2.7.2/_install/lib/python2.7/struct.py", line 1, in <module>
    from _struct import *
ImportError: /home/fritz/Python-2.7.2/_install/lib/python2.7/lib-dynload/_struct.so: cannot open shared object file: No such file or directory
tesseract-3.01: benötigt leptonica-1.68: Fehler beim Linken
Code:
/bin/bash ../libtool --tag=CC   --mode=link mipsel-linux-gcc  -g -O2  -Wl,--as-needed  -o xtractprotos xtractprotos.o liblept.la 
libtool: link: mipsel-linux-gcc -g -O2 -o .libs/xtractprotos xtractprotos.o  -Wl,--as-needed ./.libs/liblept.so -Wl,-rpath -Wl,/home/fritz/freetz-trunk/toolchain/target/mipsel-linux-uclibc/lib
./.libs/liblept.so:(.got+0x0): multiple definition of `_GLOBAL_OFFSET_TABLE_'
collect2: ld returned 1 exit status
make[2]: *** [xtractprotos] Fehler 1
make[2]: Verlasse Verzeichnis '/home/fritz/leptonica-1.68/src'
make[1]: *** [all-recursive] Fehler 1
make[1]: Verlasse Verzeichnis '/home/fritz/leptonica-1.68'
make: *** [all] Fehler 2
PIL-1.1.7: Fehler beim Einbinden von struct.py
Code:
  File "setup.py", line 8, in <module>
    import glob, os, re, struct, string, sys
  File "/home/fritz/Python-2.7.2/_install/lib/python2.7/struct.py", line 1, in <module>
    from _struct import *
ImportError: /home/fritz/Python-2.7.2/_install/lib/python2.7/lib-dynload/_struct.so: cannot open shared object file: No such file or directory
Traceback (most recent call last):
  File "selftest.py", line 8, in <module>
    from PIL import Image
  File "./PIL/Image.py", line 70, in <module>
    import ImagePalette
  File "./PIL/ImagePalette.py", line 19, in <module>
    import array
ImportError: /home/fritz/Python-2.7.2/_install/lib/python2.7/lib-dynload/array.so: cannot open share

Bei einem Paket von pyload-0.4.9 für Synology NAS wurden noch einige weitere Pakete hinzugefügt: http://www.synology-forum.de/showthread.html?25457-pyLoad-0.4.9-.spk-(armv5tejl)&p=205587
 
Zuletzt bearbeitet:
Das, was ich im oberen Beitrag behauptet habe, stimmt nicht ganz. Für PIL müssen schon ein paar Bibliotheken crosscompiliert werden. Ich weiß aber nicht mehr, wie ich das damals gemacht habe. Um sich zukünftig etwas Arbeit zu sparen, kannst du versuchen, ein Freetz-Paket zu erstellen. Eventuell kannst du bei OpenWRT etwas abschauen und/oder auch Freetz-Entwickler um Hilfe bitten. Ich selber habe eigentlich wenig Erfahrung mit dem Erstellen von Paketen.
 
Wenn ich das fertig kompilierte Python von dir, roadman17, herunterlade,entpacke und auf der Box setvar.sh aufrufe erhalte ich folgenden Fehler:

Code:
# pwd
/var/media/ftp/WD-Elements1023-01/binaries/python
# chmod -R 777 *
# /var/media/ftp/WD-Elements1023-01/binaries/python/setvar.sh
You can now test python and tesseract.
Can't modify /var/media/ftp/WD-Elements1023-01/binaries/python/lib/libc.so.0's text section. Use GCC option -fPIC for shared objects, please.

Kann man da Abhilfe schaffen? Hätte mich gerne mit Python ein wenig gespielt auf der Box :)
 
Du könntest eine Datei start.sh mit folgendem Inhalt im pyload Verzeichnis anlegen und dort ausführen:

start.sh:

#!/bin/sh
export PYTHONHOME=$(pwd)
export PATH=${PATH}:${PYTHONHOME}/bin
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${PYTHONHOME}/lib
export HOME=$(pwd)/home
export TESSDATA_PREFIX=${PYTHONHOME}/share/
cd home
python pyLoadCore.py --daemon

Solltest Du eine gefreezte Box haben, könntest Du eine autorun.sh Datei im Hauptverzeichnis des USB Speichers anlegen:

autorun.sh:

#!/bin/sh
cd ${part}/pyload
./start.sh

Um Änderungen der Konfiguration vornehmen zu können, habe ich noch eine pyLoad.sh Datei angelegt:

pyLoad.sh:

#!/bin/sh
export PYTHONHOME=$(pwd)
export PATH=${PATH}:${PYTHONHOME}/bin
export LD_LIBRARY_PATH=${PYTHONHOME}/lib
export HOME=$(pwd)/home
export TESSDATA_PREFIX=${PYTHONHOME}/share/
cd home
python pyLoadCore.py $1

Aufruf: ./pyLoad.sh --help oder ./pyLoad.sh -s
 
Zuletzt bearbeitet:
Danke für deine Antwort.
Ich habe kein Freetz drauf.
Wenn ich deine start.sh aufrufe kommt ein ähnlicher / gleicher Fehler:
Code:
Can't modify /var/media/ftp/WD-Elements1023-01/binaries/python/lib/libc.so.0's text section. Use GCC option -fPIC for shared objects, please.

Es sollte doch jetzt eigentlich möglich sein, auf der Konsole mit dem Befehl python zu arbeiten, aber irgendwas läuft beim Laden wohl schief...
 
Zuletzt bearbeitet:
@roadman17:
Ich habe nochmal nachgesehen und bin zu folgendem Ergebnis bzgl. der _struct.so Fehlermeldungen gekommen:
Code:
  File "setup.py", line 46, in <module>
    import struct
  File "/home/fritz/Python-2.7.2/_install/lib/python2.7/struct.py", line 1, in <module>
    from _struct import *
ImportError: /home/fritz/Python-2.7.2/_install/lib/python2.7/lib-dynload/_struct.so: cannot open shared object file: No such file or directory

Die Datei _struct.so ist im angegebenen Verzeichnis zwar vorhanden, passt aber vermutlich nicht zum hostpython Binary, da sie ja beim Crosscompilieren entstanden ist. Die Frage wäre, ob man das Python Modul in einer kompletten Target Python Umgebung erzeugen sollte, statt nur das Binary zu verwenden.
 
Du hast recht: Für manche Module genügt nicht nur das Hostpython-Binary. Du könntest es so machen wie bei Openwrt und ein Hostpython in einem separaten Verzeichnis mit eigenen Modules zu instaliieren. Das kannst du dann verwenden um dann auch andere Module zu kompilieren.
https://dev.openwrt.org/browser/packages/lang/python/Makefile
 
Hallo erstmal,

ich habe ganz neu eine Frizibox 7390.
Ich kenne mich weder mit Programmieren noch mit der Firmware vom Router besonders aus :(

Ich habe aber bisher Pyload auf meinem PC benutzt und würde es gerne auf meiner Fritzbox zum Laufen bringen.

Gibt es irgendwelche Schritt für Schritt Anleitungen oder sonstige TUTs bei denen man sich einlesen kann?
Ich weiß, dass es auch FritzLoad! gibt, aber ich würde gerne weiterhin Pyload verwenden.

Für eure Hilfe wäre ich sehr dankbar.
 
@Apology11
Was hast du eigentlich für eine Firmware-Version?
Wenn du Glück hast könnte folgendes funktionieren:
Wechsel auf der Fritzbox (per Telnet oder SSH) in ein Verzeichnis mit genügend Platz (interner Speicher, USB) und gib folgende Befehle ein
Code:
wget -O openwrt-chroot.sh http://pastebin\.com/raw.php\?i=fqQTsTSz
sh openwrt-chroot.sh
opkg install pyload
 
Zuletzt bearbeitet:
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.