To my english readers
Todays blog entry is in german, since its about a piece of hardware which as far as i know is only sold to the german market.
If i’m wrong, and you own a Fritz!Box Fon WLAN 7320, and you don’t understand german, feel free to leave a comment, i will translate the post then.
WICHTIG! Zuerst lesen!
Dieser Blogeintrag beschaeftigt sich damit die Fritz!Box 7320 dazu zu bringen, mit dem eingebauten Mediaserver ein bestimmtes Verzeichnis auf einer angeschlossenen USB Festplatte zu verwenden.
Die hier gezeigte “loesung” ist ein Hack, der nicht von unerfahrenen Anwendern gemacht werden sollte. Im laufe des ganzen wird die Konfiguration im Flash Speicher der Fritz!Box modifiziert,
wer da nicht dabei einen groben fehler macht, z.b. weil er sich nicht mit der Materie auskennt riskiert das Ding ausser Gefecht zu setzen. Ich selbst bin bereits viele Jahre mit Linux-Systemen vertraut, und traue mir daher zu das Risiko fuer mein Geraet zu tragen, aber ich uebernehme keine Verantwortung falls jemand sein Geraet damit unbrauchbar macht – wer dem hier erklaerten Weg folgt traegt allein selbst die Verantwortung!
Warum eigentlich
Ich habe gestern meine Fritz!Box im Rahmen meines DSL Vertrages erhalten, zwar wird meine Leitung erst naechste Woche geschaltet, aber irgendwie konnt ich meine Finger nicht von dem Geraet lassen.
Die Fritz!Box kommt mit einem eingebauten, sehr rudimentaeren upnp medienserver, der – so er denn eingeschaltet ist – per default die ganze Platte indexiert und alle Medienfiles mit denen er etwas anfangen kann sucht.
hat man nun den Wunsch vieleicht nicht alle Verzeichnisse im Medienserver haben zu wollen, z.b. weil man auf der Platte auch seine webpage sourcen liegen hat und nicht alle bilder von da auch im medienserver haben will, so hat man keine Moeglichkeit das ueber die Weboberflaeche einzustellen.
Eine Suche nach einer Loesung hat mich zwar auf das grandiose Wiki von wehavemorefun.de gestossen, wie auch auf viele Foren (in denen diverse Leute nach Loesungen suchten), aber leider auf keine Antwort. Also hab ich halt dokus gewaelzt, die Kommandozeile bemueht, etc. und siehe da, die Loesung ist nah!
Ein paar Informationen, die hilfreich sein koennten
- Die Fritz!Box laeuft auf einem embeded Linux namens BusyBox.
- Auf der BusyBox laeuft ASH als shell (Achtung, unterschiede zu denen die Bash gewohnt sind!)
- Fuer die Flash-Configs sieht man zwar Dateien unter /var/flash, diese habe ich aber mit regulaeren tools nicht oeffnen koennen
- Die Pfade koennen auf anderen Firmware Versionen abweichen, oder auch auf anderen Fritz!Box Geraeten, es empfiehlt sich daher zu pruefen was wo ist bevor man blind Kommandos ausfuehrt!
Vorbereitung
Um auf die Shell der Fritzbox zu kommen muss man zunaechst Telnet einschalten, dazu gibt es zwei Loesungen, eine per angeschlossenem Telefon, und eine die den Updatemechanismus der Firmware missbraucht, beide sind im Wiki von wehavemorefun.de beschrieben.
Der Akt
Das erste was getan werden muss ist die config aus dem Flash auszulesen und in eine Datei zu schreiben, dazu gibt es je nach Konfigurationsfile das man anpassen moechte ein entsprechendes Tool auf der Fritz!Box.
In unserem Fall wollen wir die USB Konfiguration aendern, denn hier wird der versteckte homedir key in der media sektion gespeichert. Dieser ist per default “”, also ein leerer String.
Einen einzelnen key aus der Flash-Konfiguration auszulesen (es ist immer eine gute Idee das vorher und auch das nachher zu pruefen) geht wie folgt:
echo media.homedir | usbcfgctl -s
Daher, wir pipen den string “media.homedir” auf das kommando usbcfgctl -s. In diesem Fall sollten wir als Ergebnis “” bekommen.
Auf diese weise einen Key setzen koennen wir allerdings nicht, daher laden wir uns die ganze Konfiguration in eine Datei, mit folgendem Kommando:
usbcfgconv -o /var/media/NEW_LINK/usb.cfg
nach diesem Kommando sollte eine usb.cfg im obersten Verzeichnis unserer externen USB Platte liegen. ACHTUNG: Vorher mit ls pruefen ob der Symlink /var/media/NEW_LINK/ vorhanden ist und tatsaechlich
auf die Festplatte zeigt. Unter umstaenden muss die Platte noch in der Weboberflaeche aktiviert werden, oder der Link traegt einen anderen Namen (einige Forum Posts nennen NEW-LINK oder NEWLINK), auch weiss ich nicht wie sich das ganze bei mehreren Angeschlossenen Platten verhaelt.
Dieses Verzeichnis ist auch fuer den weiteren Verlauf noch wichtig!
Der naechste Schritt ist die neu angelegte Datei zu oeffnen, entweder mit dem vi der auf der Fritz!Box installiert ist, oder mit einem Editor der Ueber einen Netzwerkmount auf die Festplatte zugreift.
In Datei befinden sich mehrere Sektionen, die die uns interessiert sieht in etwa wie folgt aus:
media {
media_server_enabled = yes;
homedir = "";
}
Hier muessen wir nun lediglich die homedir Variable anpassen.
Doch Achtung der Pfad hier ist ein Stolperstein, denn es muss ein Pfad im busybox linux sein, welcher relativ zu /var/media/ftp/ liegt.
Unter /var/media/ftp/ ist die USB Platte, und auch andere Storage Einheiten gemounted, Ich habe eine Toshiba USB Platte, daher habe ich einen Pfad “/var/media/ftp/Toshiba-StorEHDD-01″, moechte ich also das das verzeichnis “mediastuff” auf meiner USB Platte verwendet wird, so koennte ich homedir auf “Toshiba-StorEHDD-01/mediastuff/” setzen.
Ich persoenlich habe zwei USB Platten von verschiedenen Herstellern, davon aber jeweils eine angeschlossen – nun moechte ich nicht jedesmal wenn ich die Platte wechsel die ganz Konfiguration anpassen – daher habe ich mich entschieden als Pfad “../NEW_LINK/mediastuff/” zu verwenden.
Achtung: Fallstrick, niemals einen absoluten Pfad eingeben, oder der mediaserver wird nicht starten!
Nun da die Konfiguration angepasst ist, wird es Zeit diese wieder in den Flashspeicher zurueck zu schreiben, das geht mit dem selben Tool das wir auch zum auslesen verwendet haben:
usbcfgconv -O /var/media/NEW_LINK/usb.cfg
Der unterschied ist das wir statt -o wie output -O wie Overwrite verwenden. Nun sollten wir ueberpruefen ob die aenderung funktioniert hat.
echo media.homedir | usbcfgctl -s
Sollte in meinem Fall nun “../NEW_LINK/mediastuff” ausgeben. (das Verzeichnis mediastuff auf der Festplatte sollte man spaetestens jetzt erzeugen!).
Der letzte Schritt den wir nun ausfuehren ist ein reboot der Fritz!Box
reboot
andernfalls ueberschreibt die Weboberlaeche unsere aenderungen am Flash-Speicher, und die ganze Muehe war umsonst. Ist die Fritz!Box fertig mit dem booten, so sollte der Mediaserver das von uns genannte Verzeichnis verwenden. (Wenn nicht zurueck auf die Konsole, Flash-Konfiguration mit usbcfgctl etc. durchchecken, ueberpruefen, ob pfade vorhanden sind und Logik in dem /sbin/start_mediaserver Script nachverfolgen!
Nachtrag
Ich habe kurz darueber nachgedacht die Anleitung in das Wiki von dem ich Mehrfach gesprochen habe einzustellen, aber irgendwie kann ich mich nicht dazu aufraffen mich fuer einen Eintrag zu registrieren. Solltest du einen Account dort haben, fuehl dich frei den Blogeintrag rueber zu kopieren, und mir (Peter Petermann) einen kleinen Gruss zu hinterlassen!
Noch ein Nachtrag
Ja, es ist moeglich das ganze auf andere Weise zu loesen, wenn man eine eigene / andere Firmware auf die Fritz!Box aufspielt – aber das ist nicht noetig um zu diesem Ergebnis zu kommen, und auch eher etwas fuer ausgemachte Fritz!Box-Bastler.
und noch einer
seit gestern abend Zeigt die Fritz!Box mir in der Weboberfläche folgende Meldung “Vom Hersteller nicht unterstützte Änderungen: Weitere Informationen.” – der Betrieb scheint davon aber nicht gestoert.